194 lines
7.7 KiB
JavaScript
194 lines
7.7 KiB
JavaScript
import { Selector } from "testcafe";
|
|
import { Role } from "testcafe";
|
|
import testcafeconfig from "../acceptance/testcafeconfig";
|
|
import Page from "../acceptance/page-model";
|
|
|
|
fixture`Test link sharing`.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", "sharing-001")("View shared albums", async (t) => {
|
|
await page.login("admin", "photoprism");
|
|
await page.openNav();
|
|
await t.click(Selector(".nav-albums"));
|
|
const FirstAlbum = await Selector("a.is-album").nth(0).getAttribute("data-uid");
|
|
await page.selectFromUID(FirstAlbum);
|
|
const clipboardCount = await Selector("span.count-clipboard");
|
|
await t
|
|
.expect(clipboardCount.textContent)
|
|
.eql("1")
|
|
.click(Selector("button.action-menu"))
|
|
.click(Selector("button.action-share"))
|
|
.click(Selector("div.v-expansion-panel__header__icon").nth(0));
|
|
await t
|
|
.typeText(Selector(".input-secret input"), "secretForTesting", { replace: true })
|
|
.click(Selector(".input-expires input"))
|
|
.click(Selector("div").withText("After 1 day").parent('div[role="listitem"]'))
|
|
.click(Selector("button.action-save"));
|
|
const Url = await Selector("div.input-url input").value;
|
|
const Expire = await Selector("div.v-select__selections").innerText;
|
|
await t.expect(Url).contains("secretfortesting").expect(Expire).contains("After 1 day");
|
|
let url = Url.replace("2342", "2343");
|
|
await t.click(Selector("button.action-close"));
|
|
await page.clearSelection();
|
|
await t.click(Selector(".nav-folders"));
|
|
const FirstFolder = await Selector("a.is-album").nth(0).getAttribute("data-uid");
|
|
await page.selectFromUID(FirstFolder);
|
|
await t
|
|
.click(Selector("button.action-menu"))
|
|
.click(Selector("button.action-share"))
|
|
.click(Selector("div.v-expansion-panel__header__icon").nth(0));
|
|
await t
|
|
.typeText(Selector(".input-secret input"), "secretForTesting", { replace: true })
|
|
.click(Selector(".input-expires input"))
|
|
.click(Selector("div").withText("After 1 day").parent('div[role="listitem"]'))
|
|
.click(Selector("button.action-save"))
|
|
.click(Selector("button.action-close"));
|
|
await page.clearSelection();
|
|
await t.navigateTo(url);
|
|
await t
|
|
.expect(Selector("div.v-toolbar__title").withText("Christmas").visible)
|
|
.ok()
|
|
.click(Selector("button").withText("@photoprism_app"))
|
|
.expect(Selector("div.v-toolbar__title").withText("Albums").visible)
|
|
.ok();
|
|
const countAlbums = await Selector("a.is-album").count;
|
|
await t.expect(countAlbums).gte(40).useRole(Role.anonymous());
|
|
await t.navigateTo(url);
|
|
await t
|
|
.expect(Selector("div.v-toolbar__title").withText("Christmas").visible)
|
|
.ok()
|
|
.click(Selector("button").withText("@photoprism_app"))
|
|
.expect(Selector("div.v-toolbar__title").withText("Albums").visible)
|
|
.ok();
|
|
const countAlbumsAnonymous = await Selector("a.is-album").count;
|
|
await t.expect(countAlbumsAnonymous).eql(2);
|
|
await t.navigateTo("http://localhost:2343/browse");
|
|
await page.login("admin", "photoprism");
|
|
await page.openNav();
|
|
await t
|
|
.click(Selector(".nav-albums"))
|
|
.click(Selector("a.is-album").withAttribute("data-uid", FirstAlbum))
|
|
.click(Selector("button.action-share"))
|
|
.click(Selector("div.v-expansion-panel__header__icon").nth(0))
|
|
.click(Selector(".action-delete"))
|
|
.useRole(Role.anonymous())
|
|
.expect(Selector(".input-name input").visible)
|
|
.ok();
|
|
await t.navigateTo("http://localhost:2343/s/secretfortesting");
|
|
await t.expect(Selector("div.v-toolbar__title").withText("Albums").visible).ok();
|
|
const countAlbumsAnonymousAfterDelete = await Selector("a.is-album").count;
|
|
await t.expect(countAlbumsAnonymousAfterDelete).eql(1);
|
|
await t.navigateTo("http://localhost:2343/browse");
|
|
await page.login("admin", "photoprism");
|
|
await page.openNav();
|
|
await t
|
|
.click(Selector(".nav-folders"))
|
|
.click(Selector("a.is-album").withAttribute("data-uid", FirstFolder))
|
|
.click(Selector("button.action-share"))
|
|
.click(Selector("div.v-expansion-panel__header__icon").nth(0))
|
|
.click(Selector(".action-delete"))
|
|
.useRole(Role.anonymous())
|
|
.expect(Selector(".input-name input").visible)
|
|
.ok();
|
|
await t.navigateTo("http://localhost:2343/s/secretfortesting");
|
|
await t
|
|
.expect(Selector("div.v-toolbar__title").withText("Christmas").visible)
|
|
.notOk()
|
|
.expect(Selector("div.v-toolbar__title").withText("Albums").visible)
|
|
.notOk()
|
|
.expect(Selector(".input-name input").visible)
|
|
.ok();
|
|
});
|
|
|
|
test.meta("testID", "sharing-002")("Verify anonymous user has limited options", async (t) => {
|
|
await t.navigateTo("http://localhost:2343/s/jxoux5ub1e/british-columbia-canada");
|
|
// check album toolbar
|
|
await t
|
|
.expect(Selector("div.v-toolbar__title").withText("British Columbia").visible)
|
|
.ok()
|
|
.expect(Selector("button.action-edit").visible)
|
|
.notOk()
|
|
.expect(Selector("button.action-share").visible)
|
|
.notOk()
|
|
.expect(Selector("button.action-upload").visible)
|
|
.notOk()
|
|
.expect(Selector("button.action-reload").visible)
|
|
.ok()
|
|
.expect(Selector("button.action-download").visible)
|
|
.ok();
|
|
//check photo context menu
|
|
await page.toggleSelectNthPhoto(0);
|
|
await t
|
|
.click("button.action-menu")
|
|
.expect(Selector("div.v-speed-dial__list button.action-download").visible)
|
|
.ok()
|
|
.expect(Selector("div.v-speed-dial__list button.action-archive").visible)
|
|
.notOk()
|
|
.expect(Selector("div.v-speed-dial__list button.action-album").visible)
|
|
.notOk()
|
|
.expect(Selector("div.v-speed-dial__list button.action-private").visible)
|
|
.notOk()
|
|
.expect(Selector("div.v-speed-dial__list button.action-edit").visible)
|
|
.notOk()
|
|
.expect(Selector("div.v-speed-dial__list button.action-share").visible)
|
|
.notOk();
|
|
await page.clearSelection();
|
|
await t.expect(Selector("button.action-title-edit").visible).notOk();
|
|
//check fullscreen actions
|
|
await t
|
|
.click(Selector('h3[title="Cape / Bowen Island / 2019"]'))
|
|
.expect(Selector("#photo-viewer").visible)
|
|
.ok()
|
|
.expect(Selector("img.pswp__img").visible)
|
|
.ok()
|
|
.expect(Selector("button.action-select").visible)
|
|
.ok()
|
|
.expect(Selector('button[title="Start/Stop Slideshow"]').visible)
|
|
.ok()
|
|
.expect(Selector('button[title="Fullscreen"]').visible)
|
|
.ok()
|
|
.expect(Selector('button[title="Start/Stop Slideshow"]').visible)
|
|
.ok()
|
|
.expect(Selector('button[title="Download"]').visible)
|
|
.ok()
|
|
.expect(Selector('button[title="Like"]').visible)
|
|
.notOk()
|
|
.expect(Selector('button[title="Edit"]').visible)
|
|
.notOk()
|
|
.click(Selector('button[title="Close"]'))
|
|
//check hover like actions card and mosaic
|
|
.expect(Selector("button.input-favorite").visible)
|
|
.notOk()
|
|
//check list view actions
|
|
//hover on mosaic
|
|
//action-menu albums
|
|
.click(Selector("button").withText("@photoprism_app"))
|
|
.expect(Selector("div.v-toolbar__title").withText("Albums").visible)
|
|
.ok();
|
|
//album edit dialog
|
|
const AlbumUid = await Selector("a.is-album", { timeout: 55000 }).nth(0).getAttribute("data-uid");
|
|
await page.selectFromUID(AlbumUid);
|
|
await t
|
|
.click(Selector("button.action-menu"))
|
|
.expect(Selector("div.v-speed-dial__list button.action-download").visible)
|
|
.ok()
|
|
.expect(Selector("div.v-speed-dial__list button.action-delete").visible)
|
|
.notOk()
|
|
.expect(Selector("div.v-speed-dial__list button.action-album").visible)
|
|
.notOk()
|
|
.expect(Selector("div.v-speed-dial__list button.action-edit").visible)
|
|
.notOk()
|
|
.expect(Selector("div.v-speed-dial__list button.action-share").visible)
|
|
.notOk();
|
|
await page.clearSelection();
|
|
await t.expect(Selector("button.action-title-edit").visible).notOk();
|
|
//TODO control + page model
|
|
});
|