photoprism/frontend/tests/acceptance/acceptance-public/calendar.js
Michael Mayer f1b717fbfd Frontend: Refactor TestCafe acceptance test directory structure
Signed-off-by: Michael Mayer <michael@photoprism.app>
2022-07-23 10:52:15 +02:00

163 lines
5.6 KiB
JavaScript

import { Selector } from "testcafe";
import testcafeconfig from "../../testcafeconfig.json";
import Menu from "../page-model/menu";
import Album from "../page-model/album";
import Toolbar from "../page-model/toolbar";
import ContextMenu from "../page-model/context-menu";
import Photo from "../page-model/photo";
import Page from "../page-model/page";
import AlbumDialog from "../page-model/dialog-album";
fixture`Test calendar`.page`${testcafeconfig.url}`;
const menu = new Menu();
const album = new Album();
const toolbar = new Toolbar();
const contextmenu = new ContextMenu();
const photo = new Photo();
const page = new Page();
const albumdialog = new AlbumDialog();
test.meta("testID", "calendar-001").meta({ type: "short", mode: "public" })(
"Common: View calendar",
async (t) => {
await menu.openPage("calendar");
await t
.expect(Selector("a").withText("May 2019").visible)
.ok()
.expect(Selector("a").withText("October 2019").visible)
.ok();
}
);
test.meta("testID", "calendar-002").meta({ mode: "public" })(
"Common: Update calendar details",
async (t) => {
await menu.openPage("calendar");
await toolbar.search("March 2014");
const AlbumUid = await album.getNthAlbumUid("all", 0);
await t.expect(page.cardTitle.nth(0).innerText).contains("March 2014");
await t.click(page.cardTitle.nth(0)).typeText(albumdialog.location, "Snow", { replace: true });
await t
.expect(albumdialog.description.value)
.eql("")
.expect(albumdialog.category.value)
.eql("");
await t
.typeText(albumdialog.description, "We went to ski")
.typeText(albumdialog.category, "Mountains")
.pressKey("enter")
.click(albumdialog.dialogSave);
await t
.expect(page.cardTitle.nth(0).innerText)
.contains("March 2014")
.expect(page.cardDescription.nth(0).innerText)
.contains("We went to ski")
.expect(Selector("div.caption").nth(1).innerText)
.contains("Mountains")
.expect(Selector("div.caption").nth(2).innerText)
.contains("Snow");
await album.openNthAlbum(0);
await t.expect(toolbar.toolbarSecondTitle.innerText).contains("March 2014");
await t.expect(toolbar.toolbarDescription.innerText).contains("We went to ski");
await menu.openPage("calendar");
if (t.browser.platform === "mobile") {
await toolbar.search("category:Mountains");
} else {
await toolbar.setFilter("category", "Mountains");
}
await t.expect(page.cardTitle.nth(0).innerText).contains("March 2014");
await album.openAlbumWithUid(AlbumUid);
await toolbar.triggerToolbarAction("edit");
await t
.expect(albumdialog.description.value)
.eql("We went to ski")
.expect(albumdialog.category.value)
.eql("Mountains")
.expect(albumdialog.location.value)
.eql("Snow");
await t
.click(albumdialog.category)
.pressKey("ctrl+a delete")
.pressKey("enter")
.click(albumdialog.description)
.pressKey("ctrl+a delete")
.pressKey("enter")
.click(albumdialog.location)
.pressKey("ctrl+a delete")
.pressKey("enter")
.click(albumdialog.dialogSave);
await menu.openPage("calendar");
await toolbar.search("March 2014");
await t
.expect(page.cardDescription.innerText)
.notContains("We went to ski")
.expect(Selector("div.caption").nth(0).innerText)
.notContains("Snow");
}
);
test.meta("testID", "calendar-003").meta({ mode: "public" })(
"Common: Create, Edit, delete sharing link for calendar",
async (t) => {
await page.testCreateEditDeleteSharingLink("calendar");
}
);
test.meta("testID", "calendar-004").meta({ type: "short", mode: "public" })(
"Common: Create/delete album-clone from calendar",
async (t) => {
await menu.openPage("albums");
const AlbumCount = await album.getAlbumCount("all");
await menu.openPage("calendar");
const SecondCalendarUid = await album.getNthAlbumUid("all", 1);
await album.openAlbumWithUid(SecondCalendarUid);
const PhotoCountInCalendar = await photo.getPhotoCount("all");
const FirstPhotoUid = await photo.getNthPhotoUid("image", 0);
const SecondPhotoUid = await photo.getNthPhotoUid("image", 1);
await menu.openPage("calendar");
await album.selectAlbumFromUID(SecondCalendarUid);
await contextmenu.triggerContextMenuAction("clone", "NotYetExistingAlbumForCalendar");
await menu.openPage("albums");
const AlbumCountAfterCreation = await album.getAlbumCount("all");
await t.expect(AlbumCountAfterCreation).eql(AlbumCount + 1);
await toolbar.search("NotYetExistingAlbumForCalendar");
const AlbumUid = await album.getNthAlbumUid("all", 0);
await album.openAlbumWithUid(AlbumUid);
const PhotoCountInAlbum = await photo.getPhotoCount("all");
await t.expect(PhotoCountInAlbum).eql(PhotoCountInCalendar);
await photo.checkPhotoVisibility(FirstPhotoUid, true);
await photo.checkPhotoVisibility(SecondPhotoUid, true);
await menu.openPage("albums");
await album.selectAlbumFromUID(AlbumUid);
await contextmenu.triggerContextMenuAction("delete", "");
if (t.browser.platform === "mobile") {
await t.eval(() => location.reload());
} else {
await toolbar.triggerToolbarAction("reload");
}
const AlbumCountAfterDelete = await album.getAlbumCount("all");
await t.expect(AlbumCountAfterDelete).eql(AlbumCount);
await menu.openPage("calendar");
await album.openAlbumWithUid(SecondCalendarUid);
await photo.checkPhotoVisibility(FirstPhotoUid, true);
await photo.checkPhotoVisibility(SecondPhotoUid, true);
}
);