Users: Add acceptance tests for admin role #98
This commit is contained in:
parent
f94744eee1
commit
dd600aabd5
1 changed files with 213 additions and 0 deletions
213
frontend/tests/acceptance-private/admin-role.js
Normal file
213
frontend/tests/acceptance-private/admin-role.js
Normal file
|
@ -0,0 +1,213 @@
|
|||
import { Selector } from "testcafe";
|
||||
import testcafeconfig from "../acceptance/testcafeconfig";
|
||||
import Page from "../acceptance/page-model";
|
||||
|
||||
fixture`Test admin role`.page`${testcafeconfig.url}`;
|
||||
|
||||
const page = new Page();
|
||||
test.meta("testID", "authentication-000")(
|
||||
"Time to start instance (will be marked as unstable)",
|
||||
async (t) => {
|
||||
await t.wait(5000);
|
||||
}
|
||||
);
|
||||
|
||||
test.meta("testID", "admin-role-001")("Access to settings", async (t) => {
|
||||
await page.login("admin", "photoprism");
|
||||
await page.openNav();
|
||||
await t.expect(Selector(".nav-settings").visible).ok();
|
||||
await t
|
||||
.click(Selector(".nav-settings"))
|
||||
.expect(Selector(".input-language input", { timeout: 8000 }).visible)
|
||||
.ok()
|
||||
.expect(Selector("div.p-page-photos").visible)
|
||||
.notOk()
|
||||
.click(Selector("#tab-settings-library"))
|
||||
.expect(Selector("form.p-form-settings").visible)
|
||||
.ok()
|
||||
.expect(Selector("div.p-page-photos").visible)
|
||||
.notOk()
|
||||
.click(Selector("#tab-settings-advanced"))
|
||||
.expect(Selector("label").withText("Read-Only Mode").visible)
|
||||
.ok()
|
||||
.expect(Selector("div.p-page-photos").visible)
|
||||
.notOk()
|
||||
.click(Selector("#tab-settings-sync"))
|
||||
.expect(Selector("div.p-accounts-list").visible)
|
||||
.ok()
|
||||
.expect(Selector("div.p-page-photos").visible)
|
||||
.notOk();
|
||||
});
|
||||
|
||||
test.meta("testID", "admin-role-002")("Access to archive", async (t) => {
|
||||
await page.login("admin", "photoprism");
|
||||
const PhotoCountBrowse = await Selector("div.is-photo", { timeout: 5000 }).count;
|
||||
await page.openNav();
|
||||
await t.click(Selector(".nav-browse + div")).expect(Selector(".nav-archive").visible).ok();
|
||||
await t
|
||||
.click(Selector(".nav-archive"))
|
||||
.expect(Selector("div.is-photo").withAttribute("data-uid", "pqnahct2mvee8sr4").visible)
|
||||
.ok();
|
||||
const PhotoCountArchive = await Selector("div.is-photo", { timeout: 5000 }).count;
|
||||
await t.expect(PhotoCountBrowse).gte(PhotoCountArchive);
|
||||
});
|
||||
|
||||
test.meta("testID", "admin-role-003")("Access to review", async (t) => {
|
||||
await page.login("admin", "photoprism");
|
||||
const PhotoCountBrowse = await Selector("div.is-photo", { timeout: 5000 }).count;
|
||||
await page.openNav();
|
||||
await t.click(Selector(".nav-browse + div")).expect(Selector(".nav-review").visible).ok();
|
||||
await t
|
||||
.click(Selector(".nav-review"))
|
||||
.expect(Selector("div.is-photo").withAttribute("data-uid", "pqzuein2pdcg1kc7").visible)
|
||||
.ok();
|
||||
const PhotoCountReview = await Selector("div.is-photo", { timeout: 5000 }).count;
|
||||
await t.expect(PhotoCountBrowse).gte(PhotoCountReview);
|
||||
});
|
||||
|
||||
test.meta("testID", "admin-role-004")("Access to private", async (t) => {
|
||||
await page.login("admin", "photoprism");
|
||||
const PhotoCountBrowse = await Selector("div.is-photo", { timeout: 5000 }).count;
|
||||
await page.openNav();
|
||||
await t.expect(Selector(".nav-private").visible).ok();
|
||||
await t
|
||||
.click(Selector(".nav-private"))
|
||||
.expect(Selector("div.is-photo").withAttribute("data-uid", "pqmxlquf9tbc8mk2").visible)
|
||||
.ok();
|
||||
const PhotoCountPrivate = await Selector("div.is-photo", { timeout: 5000 }).count;
|
||||
await t.expect(PhotoCountBrowse).gte(PhotoCountPrivate);
|
||||
});
|
||||
|
||||
test.meta("testID", "admin-role-005")("Access to library", async (t) => {
|
||||
await page.login("admin", "photoprism");
|
||||
const PhotoCountBrowse = await Selector("div.is-photo", { timeout: 5000 }).count;
|
||||
await page.openNav();
|
||||
await t.expect(Selector(".nav-library").visible).ok();
|
||||
await t
|
||||
.click(Selector(".nav-library"))
|
||||
.expect(Selector(".input-index-folder input").visible)
|
||||
.ok()
|
||||
.expect(Selector("div.p-page-photos").visible)
|
||||
.notOk()
|
||||
.click(Selector("#tab-library-import"))
|
||||
.expect(Selector(".input-import-folder input").visible)
|
||||
.ok()
|
||||
.expect(Selector("div.p-page-photos").visible)
|
||||
.notOk()
|
||||
.click(Selector("#tab-library-logs"))
|
||||
.expect(Selector("p.p-log-debug").visible)
|
||||
.ok()
|
||||
.expect(Selector("div.p-page-photos").visible)
|
||||
.notOk()
|
||||
.click(Selector(".nav-library + div"))
|
||||
.expect(Selector(".nav-originals").visible)
|
||||
.ok()
|
||||
.click(Selector(".nav-originals"))
|
||||
.expect(Selector("div.p-page-files").visible)
|
||||
.ok()
|
||||
.expect(Selector("div.p-page-photos").visible)
|
||||
.notOk()
|
||||
.expect(Selector(".nav-hidden").visible)
|
||||
.ok()
|
||||
.click(Selector(".nav-hidden"));
|
||||
const PhotoCountHidden = await Selector("div.is-photo", { timeout: 5000 }).count;
|
||||
await t
|
||||
.expect(PhotoCountBrowse)
|
||||
.gte(PhotoCountHidden)
|
||||
.expect(Selector(".nav-errors").visible)
|
||||
.ok()
|
||||
.click(Selector(".nav-errors"))
|
||||
.expect(Selector("div.p-page-errors").visible)
|
||||
.ok()
|
||||
.expect(Selector("div.p-page-photos").visible)
|
||||
.notOk();
|
||||
});
|
||||
|
||||
test.meta("testID", "admin-role-006")("private/archived photos in search results", async (t) => {
|
||||
await page.login("admin", "photoprism");
|
||||
const PhotoCountBrowse = await Selector("div.is-photo", { timeout: 5000 }).count;
|
||||
await page.search("private:true");
|
||||
const PhotoCountPrivate = await Selector("div.is-photo", { timeout: 5000 }).count;
|
||||
await t.expect(PhotoCountPrivate).eql(2);
|
||||
await t
|
||||
.expect(Selector("div.is-photo").withAttribute("data-uid", "pqmxlquf9tbc8mk2").visible)
|
||||
.ok();
|
||||
await page.search("archived:true");
|
||||
const PhotoCountArchive = await Selector("div.is-photo", { timeout: 5000 }).count;
|
||||
await t.expect(PhotoCountArchive).eql(3);
|
||||
await t
|
||||
.expect(Selector("div.is-photo").withAttribute("data-uid", "pqnahct2mvee8sr4").visible)
|
||||
.ok();
|
||||
await page.search("quality:0");
|
||||
const PhotoCountReview = await Selector("div.is-photo", { timeout: 5000 }).count;
|
||||
await t.expect(PhotoCountReview).gte(PhotoCountBrowse);
|
||||
await t
|
||||
.expect(Selector("div.is-photo").withAttribute("data-uid", "pqzuein2pdcg1kc7").visible)
|
||||
.ok();
|
||||
});
|
||||
|
||||
test.meta("testID", "admin-role-007")("Upload functionality", async (t) => {
|
||||
await page.login("admin", "photoprism");
|
||||
await t
|
||||
.expect(Selector("button.action-upload").visible)
|
||||
.ok()
|
||||
.click(Selector(".nav-albums"))
|
||||
.expect(Selector("a.is-album").visible)
|
||||
.ok()
|
||||
.expect(Selector("button.action-upload").visible)
|
||||
.ok()
|
||||
.click(Selector("a.is-album").nth(0))
|
||||
.expect(Selector("div.is-photo").visible)
|
||||
.ok()
|
||||
.expect(Selector("button.action-upload").visible)
|
||||
.ok()
|
||||
.click(Selector(".nav-video"))
|
||||
.expect(Selector("button.action-upload").visible)
|
||||
.ok()
|
||||
.click(Selector(".nav-favorites"))
|
||||
.expect(Selector("button.action-upload").visible)
|
||||
.ok()
|
||||
.click(Selector(".nav-moments"))
|
||||
.expect(Selector("a.is-album").visible)
|
||||
.ok()
|
||||
.expect(Selector("button.action-upload").visible)
|
||||
.ok()
|
||||
.click(Selector("a.is-album").nth(0))
|
||||
.expect(Selector("div.is-photo").visible)
|
||||
.ok()
|
||||
.expect(Selector("button.action-upload").visible)
|
||||
.ok()
|
||||
.click(Selector(".nav-calendar"))
|
||||
.expect(Selector("a.is-album").visible)
|
||||
.ok()
|
||||
.expect(Selector("button.action-upload").visible)
|
||||
.ok()
|
||||
.click(Selector("a.is-album").nth(0))
|
||||
.expect(Selector("div.is-photo").visible)
|
||||
.ok()
|
||||
.expect(Selector("button.action-upload").visible)
|
||||
.ok();
|
||||
await page.openNav();
|
||||
await t
|
||||
.click(Selector(".nav-places + div"))
|
||||
.click(Selector(".nav-states"))
|
||||
.expect(Selector("a.is-album").visible)
|
||||
.ok()
|
||||
.expect(Selector("button.action-upload").visible)
|
||||
.ok()
|
||||
.click(Selector("a.is-album").nth(0))
|
||||
.expect(Selector("div.is-photo").visible)
|
||||
.ok()
|
||||
.expect(Selector("button.action-upload").visible)
|
||||
.ok()
|
||||
.click(Selector(".nav-folders"))
|
||||
.expect(Selector("a.is-album").visible)
|
||||
.ok()
|
||||
.expect(Selector("button.action-upload").visible)
|
||||
.ok()
|
||||
.click(Selector("a.is-album").nth(0))
|
||||
.expect(Selector("div.is-photo").visible)
|
||||
.ok()
|
||||
.expect(Selector("button.action-upload").visible)
|
||||
.ok();
|
||||
});
|
Loading…
Add table
Reference in a new issue