280 lines
10 KiB
JavaScript
280 lines
10 KiB
JavaScript
import { Selector } from "testcafe";
|
|
import testcafeconfig from "./testcafeconfig";
|
|
import Menu from "../page-model/menu";
|
|
import Toolbar from "../page-model/toolbar";
|
|
import ContextMenu from "../page-model/context-menu";
|
|
import Photo from "../page-model/photo";
|
|
import Subject from "../page-model/subject";
|
|
import PhotoEdit from "../page-model/photo-edit";
|
|
|
|
fixture`Test people`.page`${testcafeconfig.url}`;
|
|
|
|
const menu = new Menu();
|
|
const toolbar = new Toolbar();
|
|
const contextmenu = new ContextMenu();
|
|
const photo = new Photo();
|
|
const subject = new Subject();
|
|
const photoedit = new PhotoEdit();
|
|
|
|
test.meta("testID", "people-001").meta({ type: "smoke" })(
|
|
"Add name to new face and rename subject",
|
|
async (t) => {
|
|
await menu.openPage("people");
|
|
await t.click(subject.newTab);
|
|
await subject.triggerToolbarAction("reload", "");
|
|
const FaceCount = await subject.getFaceCount();
|
|
|
|
await t.click(subject.recognizedTab);
|
|
|
|
const SubjectCount = await subject.getSubjectCount();
|
|
await t.click(subject.newTab);
|
|
const FirstFaceID = await subject.getNthFaceUid(0);
|
|
await subject.openFaceWithUid(FirstFaceID);
|
|
const PhotosInFaceCount = await photo.getPhotoCount("all");
|
|
await menu.openPage("people");
|
|
await t.click(subject.newTab);
|
|
await subject.addNameToFace(FirstFaceID, "Jane Doe");
|
|
await subject.triggerToolbarAction("reload");
|
|
const FaceCountAfterAdd = await subject.getFaceCount();
|
|
|
|
await t.expect(FaceCountAfterAdd).eql(FaceCount - 1);
|
|
|
|
await t.click(subject.recognizedTab);
|
|
await subject.checkFaceVisibility(FirstFaceID, false);
|
|
await t.eval(() => location.reload());
|
|
await t.wait(6000);
|
|
const SubjectCountAfterAdd = await subject.getSubjectCount();
|
|
|
|
await t.expect(SubjectCountAfterAdd).eql(SubjectCount + 1);
|
|
|
|
await toolbar.search("Jane");
|
|
const JaneUID = await subject.getNthSubjectUid(0);
|
|
|
|
await t
|
|
.expect(Selector("a[data-uid=" + JaneUID + "] div.caption").innerText)
|
|
.contains(PhotosInFaceCount.toString());
|
|
|
|
await subject.openSubjectWithUid(JaneUID);
|
|
const PhotosInSubjectCount = await photo.getPhotoCount("all");
|
|
|
|
await t.expect(PhotosInFaceCount).eql(PhotosInSubjectCount);
|
|
|
|
await photo.triggerHoverAction("nth", 0, "select");
|
|
await photo.triggerHoverAction("nth", 1, "select");
|
|
await photo.triggerHoverAction("nth", 2, "select");
|
|
await contextmenu.triggerContextMenuAction("edit", "");
|
|
await t.click(photoedit.peopleTab);
|
|
|
|
await t.expect(photoedit.inputName.nth(0).value).contains("Jane Doe");
|
|
|
|
await t.click(photoedit.dialogClose);
|
|
await menu.openPage("people");
|
|
await subject.renameSubject(JaneUID, "Max Mu");
|
|
|
|
await t
|
|
.expect(Selector("a[data-uid=" + JaneUID + "] div.v-card__title").innerText)
|
|
.contains("Max Mu");
|
|
|
|
await subject.openSubjectWithUid(JaneUID);
|
|
await t.eval(() => location.reload());
|
|
await contextmenu.checkContextMenuCount("3");
|
|
await contextmenu.triggerContextMenuAction("edit", "");
|
|
await t.click(photoedit.peopleTab);
|
|
|
|
await t.expect(photoedit.inputName.nth(0).value).contains("Max Mu");
|
|
|
|
await t.click(photoedit.dialogNext);
|
|
|
|
await t.expect(photoedit.inputName.nth(0).value).contains("Max Mu").click(photoedit.dialogNext);
|
|
await t
|
|
.expect(photoedit.inputName.nth(0).value)
|
|
.contains("Max Mu")
|
|
.click(photoedit.dialogClose);
|
|
|
|
await contextmenu.clearSelection();
|
|
await toolbar.search("person:max-mu");
|
|
const PhotosInSubjectAfterRenameCount = await photo.getPhotoCount("all");
|
|
await t.expect(PhotosInSubjectAfterRenameCount).eql(PhotosInSubjectCount);
|
|
}
|
|
);
|
|
|
|
test.meta("testID", "people-002").meta({ type: "smoke" })(
|
|
"Add + Reject name on people tab",
|
|
async (t) => {
|
|
await menu.openPage("people");
|
|
await t.click(subject.newTab);
|
|
await subject.triggerToolbarAction("reload");
|
|
const FirstFaceID = await subject.getNthFaceUid(0);
|
|
await subject.addNameToFace(FirstFaceID, "Andrea Doe");
|
|
await t.click(subject.recognizedTab);
|
|
await toolbar.search("Andrea");
|
|
const AndreaUID = await subject.getNthSubjectUid(0);
|
|
await subject.openSubjectWithUid(AndreaUID);
|
|
await t.eval(() => location.reload());
|
|
await t.wait(5000);
|
|
const PhotosInAndreaCount = await photo.getPhotoCount("all");
|
|
await photo.triggerHoverAction("nth", 1, "select");
|
|
await contextmenu.triggerContextMenuAction("edit", "");
|
|
await t
|
|
.click(photoedit.peopleTab)
|
|
.expect(photoedit.inputName.nth(0).value)
|
|
.eql("Andrea Doe")
|
|
.click(photoedit.rejectName.nth(0));
|
|
|
|
await t.expect(photoedit.inputName.nth(0).value).eql("");
|
|
|
|
await t
|
|
.typeText(photoedit.inputName.nth(0), "Nicole", { replace: true })
|
|
.pressKey("enter")
|
|
.click(photoedit.dialogClose);
|
|
await contextmenu.clearSelection();
|
|
await t.eval(() => location.reload());
|
|
await t.wait(5000);
|
|
const PhotosInAndreaAfterRejectCount = await photo.getPhotoCount("all");
|
|
const Diff = PhotosInAndreaCount - PhotosInAndreaAfterRejectCount;
|
|
await toolbar.search("person:nicole");
|
|
await t.eval(() => location.reload());
|
|
await t.wait(5000);
|
|
const PhotosInNicoleCount = await photo.getPhotoCount("all");
|
|
|
|
await t.expect(Diff).gte(PhotosInNicoleCount);
|
|
}
|
|
);
|
|
|
|
test.meta("testID", "people-003")("Test mark subject as favorite", async (t) => {
|
|
await menu.openPage("people");
|
|
const FirstSubjectUid = await subject.getNthSubjectUid(0);
|
|
const SecondSubjectUid = await subject.getNthSubjectUid(1);
|
|
await subject.triggerHoverAction("uid", SecondSubjectUid, "favorite");
|
|
await subject.triggerToolbarAction("reload");
|
|
const FirstSubjectUidAfterFavorite = await subject.getNthSubjectUid(0);
|
|
|
|
await t.expect(FirstSubjectUid).notEql(FirstSubjectUidAfterFavorite);
|
|
await t.expect(SecondSubjectUid).eql(FirstSubjectUidAfterFavorite);
|
|
|
|
await subject.checkHoverActionState("uid", SecondSubjectUid, "favorite", true);
|
|
await subject.triggerHoverAction("uid", SecondSubjectUid, "favorite");
|
|
await subject.checkHoverActionState("uid", SecondSubjectUid, "favorite", false);
|
|
});
|
|
|
|
test.meta("testID", "people-004")("Test new face autocomplete", async (t) => {
|
|
await menu.openPage("people");
|
|
await t.click(subject.newTab);
|
|
await subject.triggerToolbarAction("reload");
|
|
const FirstFaceID = await subject.getNthFaceUid(0);
|
|
await t
|
|
.expect(Selector("div.menuable__content__active").nth(0).visible)
|
|
.notOk()
|
|
.click(Selector("div[data-id=" + FirstFaceID + "] div.input-name input"))
|
|
.typeText(Selector("div[data-id=" + FirstFaceID + "] div.input-name input"), "Otto");
|
|
|
|
await t
|
|
.expect(Selector("div.menuable__content__active").nth(0).withText("Otto Visible").visible)
|
|
.ok();
|
|
});
|
|
|
|
test.meta("testID", "people-005")("Remove face", async (t) => {
|
|
await toolbar.search("face:new");
|
|
const FirstPhotoUid = await photo.getNthPhotoUid("all", 0);
|
|
await photo.triggerHoverAction("nth", 0, "select");
|
|
await contextmenu.triggerContextMenuAction("edit", "");
|
|
await t.click(photoedit.peopleTab);
|
|
const MarkerCount = await subject.getMarkerCount();
|
|
|
|
if ((await photoedit.inputName.nth(0).value) == "") {
|
|
await t
|
|
.expect(photoedit.undoRemoveMarker.nth(0).visible)
|
|
.notOk()
|
|
.expect(photoedit.inputName.nth(0).value)
|
|
.eql("")
|
|
.click(photoedit.removeMarker)
|
|
.expect(photoedit.undoRemoveMarker.nth(0).visible)
|
|
.ok()
|
|
.click(photoedit.undoRemoveMarker);
|
|
} else if ((await photoedit.inputName.nth(0).value) != "") {
|
|
await t
|
|
.expect(photoedit.inputName.nth(1).value)
|
|
.eql("")
|
|
.click(photoedit.removeMarker)
|
|
.expect(photoedit.undoRemoveMarker.nth(0).visible)
|
|
.ok()
|
|
.click(photoedit.undoRemoveMarker);
|
|
}
|
|
|
|
await t.click(photoedit.dialogClose);
|
|
await contextmenu.clearSelection();
|
|
await t.eval(() => location.reload());
|
|
await t.wait(5000);
|
|
await photo.triggerHoverAction("uid", FirstPhotoUid, "select");
|
|
await contextmenu.triggerContextMenuAction("edit", "");
|
|
await t.click(photoedit.peopleTab);
|
|
|
|
if ((await photoedit.inputName.nth(0).value) == "") {
|
|
await t
|
|
.expect(photoedit.undoRemoveMarker.nth(0).visible)
|
|
.notOk()
|
|
.expect(photoedit.inputName.nth(0).value)
|
|
.eql("")
|
|
.click(photoedit.removeMarker)
|
|
.expect(photoedit.undoRemoveMarker.nth(0).visible)
|
|
.ok();
|
|
} else if ((await photoedit.inputName.nth(0).value) != "") {
|
|
await t
|
|
.expect(photoedit.undoRemoveMarker.nth(0).visible)
|
|
.notOk()
|
|
.expect(photoedit.inputName.nth(1).value)
|
|
.eql("")
|
|
.click(photoedit.removeMarker)
|
|
.expect(photoedit.undoRemoveMarker.nth(0).visible)
|
|
.ok();
|
|
}
|
|
|
|
await t.click(photoedit.dialogClose);
|
|
await t.eval(() => location.reload());
|
|
await contextmenu.triggerContextMenuAction("edit", "");
|
|
await t.click(photoedit.peopleTab);
|
|
const MarkerCountAfterRemove = await subject.getMarkerCount();
|
|
|
|
await t.expect(MarkerCountAfterRemove).eql(MarkerCount - 1);
|
|
});
|
|
|
|
test.meta("testID", "people-006")("Hide face", async (t) => {
|
|
await menu.openPage("people");
|
|
await t.click(subject.newTab);
|
|
await subject.triggerToolbarAction("reload");
|
|
const FirstFaceID = await subject.getNthFaceUid(0);
|
|
await subject.checkFaceVisibility(FirstFaceID, true);
|
|
await subject.triggerHoverAction("id", FirstFaceID, "hidden");
|
|
await t.eval(() => location.reload());
|
|
await t.wait(5000);
|
|
await subject.checkFaceVisibility(FirstFaceID, false);
|
|
await subject.triggerToolbarAction("show-hidden");
|
|
await t.eval(() => location.reload());
|
|
await t.wait(6000);
|
|
await subject.checkFaceVisibility(FirstFaceID, true);
|
|
await subject.triggerHoverAction("id", FirstFaceID, "hidden");
|
|
await subject.triggerToolbarAction("exclude-hidden");
|
|
await t.eval(() => location.reload());
|
|
await t.wait(6000);
|
|
await subject.checkFaceVisibility(FirstFaceID, true);
|
|
});
|
|
|
|
test.meta("testID", "people-007")("Hide person", async (t) => {
|
|
await menu.openPage("people");
|
|
await t.click(subject.recognizedTab);
|
|
const FirstPersonUid = await subject.getNthSubjectUid(0);
|
|
await subject.checkSubjectVisibility("uid", FirstPersonUid, true);
|
|
await subject.triggerHoverAction("uid", FirstPersonUid, "hidden");
|
|
await t.eval(() => location.reload());
|
|
await t.wait(6000);
|
|
await subject.checkSubjectVisibility("uid", FirstPersonUid, false);
|
|
await subject.triggerToolbarAction("show-hidden");
|
|
await t.eval(() => location.reload());
|
|
await t.wait(6000);
|
|
await subject.checkSubjectVisibility("uid", FirstPersonUid, true);
|
|
await subject.triggerHoverAction("uid", FirstPersonUid, "hidden");
|
|
await subject.triggerToolbarAction("exclude-hidden");
|
|
await t.eval(() => location.reload());
|
|
await t.wait(5000);
|
|
await subject.checkSubjectVisibility("uid", FirstPersonUid, true);
|
|
});
|