photoprism/frontend/tests/acceptance/stacks.js

124 lines
4.4 KiB
JavaScript
Raw Normal View History

import { Selector } from "testcafe";
import testcafeconfig from "./testcafeconfig";
import Menu from "../page-model/menu";
import Toolbar from "../page-model/toolbar";
import Photo from "../page-model/photo";
import PhotoViewer from "../page-model/photoviewer";
import Page from "../page-model/page";
import PhotoEdit from "../page-model/photo-edit";
import Library from "../page-model/library";
fixture`Test stacks`.page`${testcafeconfig.url}`;
const menu = new Menu();
const toolbar = new Toolbar();
const photo = new Photo();
const photoviewer = new PhotoViewer();
const page = new Page();
const photoedit = new PhotoEdit();
const library = new Library();
test.meta("testID", "stacks-001").meta({ type: "smoke" })(
"View all files of a stack",
async (t) => {
await toolbar.search("ski");
const SequentialPhotoUid = await photo.getNthPhotoUid("all", 0);
await photo.checkHoverActionAvailability("uid", SequentialPhotoUid, "open", true);
if (t.browser.platform === "desktop") {
console.log(t.browser.platform);
await photo.triggerHoverAction("nth", 0, "open");
await photoviewer.triggerPhotoViewerAction("next");
await photoviewer.triggerPhotoViewerAction("previous");
await photoviewer.triggerPhotoViewerAction("close");
}
await photo.checkHoverActionAvailability("uid", SequentialPhotoUid, "open", true);
}
);
test.meta("testID", "stacks-002").meta({ type: "smoke" })("Change primary file", async (t) => {
await toolbar.search("ski");
const SequentialPhotoUid = await photo.getNthPhotoUid("all", 0);
await toolbar.setFilter("view", "Cards");
await t
.click(page.cardTitle.withAttribute("data-uid", SequentialPhotoUid))
.click(photoedit.filesTab);
const FirstFileName = await Selector("div.caption").nth(0).innerText;
await t.expect(FirstFileName).contains("photos8_1_ski.jpg");
await t
.click(photoedit.toggleExpandFile.nth(1))
.click(photoedit.makeFilePrimary)
.click(photoedit.dialogClose)
.click(page.cardTitle.withAttribute("data-uid", SequentialPhotoUid));
const FirstFileNameAfterChange = await Selector("div.caption").nth(0).innerText;
await t
.expect(FirstFileNameAfterChange)
.notContains("photos8_1_ski.jpg")
.expect(FirstFileNameAfterChange)
.contains("photos8_2_ski.jpg");
});
test.meta("testID", "stacks-003").meta({ type: "smoke" })("Ungroup files", async (t) => {
await toolbar.search("group");
await toolbar.setFilter("view", "Cards");
const PhotoCount = await photo.getPhotoCount("all");
const SequentialPhotoUid = await photo.getNthPhotoUid("all", 0);
await t.expect(PhotoCount).eql(1);
await menu.openPage("stacks");
await photo.checkHoverActionAvailability("uid", SequentialPhotoUid, "open", true);
await t
.click(page.cardTitle.withAttribute("data-uid", SequentialPhotoUid))
.click(photoedit.filesTab)
.click(photoedit.toggleExpandFile.nth(0))
.click(photoedit.toggleExpandFile.nth(1))
.click(photoedit.unstackFile)
.wait(12000)
.click(photoedit.dialogClose);
await menu.openPage("browse");
await toolbar.search("group");
if (t.browser.platform === "mobile") {
await t.eval(() => location.reload());
} else {
await toolbar.triggerToolbarAction("reload");
}
const PhotoCountAfterUngroup = await photo.getPhotoCount("all");
await t.expect(PhotoCountAfterUngroup).eql(2);
await photo.checkHoverActionAvailability("uid", SequentialPhotoUid, "open", false);
});
test.meta("testID", "stacks-004")("Delete non primary file", async (t) => {
await menu.openPage("library");
await t
.click(library.importTab)
.click(library.openImportFolderSelect, { timeout: 5000 })
.click(page.selectOption.withText("/pizza"))
.click(library.import)
.wait(10000);
await menu.openPage("browse");
await toolbar.search("pizza");
await toolbar.setFilter("view", "Cards");
const PhotoCount = await photo.getPhotoCount("all");
const PhotoUid = await photo.getNthPhotoUid("all", 0);
await t.expect(PhotoCount).eql(1);
await t.click(page.cardTitle.withAttribute("data-uid", PhotoUid)).click(photoedit.filesTab);
const FileCount = await photoedit.getFileCount();
await t.expect(FileCount).eql(2);
await t
.click(photoedit.toggleExpandFile.nth(1))
.click(Selector(photoedit.deleteFile))
.click(Selector(".action-confirm"))
.wait(10000);
const FileCountAfterDeletion = await photoedit.getFileCount();
await t.expect(FileCountAfterDeletion).eql(1);
});