mirror of
				https://github.com/photoprism/photoprism.git
				synced 2025-10-31 12:16:39 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			209 lines
		
	
	
		
			7.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			209 lines
		
	
	
		
			7.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| import { Selector } from "testcafe";
 | |
| import testcafeconfig from "./testcafeconfig";
 | |
| 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 PhotoViewer from "../page-model/photoviewer";
 | |
| import Page from "../page-model/page";
 | |
| import AlbumDialog from "../page-model/dialog-album";
 | |
| 
 | |
| fixture`Test albums`.page`${testcafeconfig.url}`;
 | |
| 
 | |
| const menu = new Menu();
 | |
| const album = new Album();
 | |
| const toolbar = new Toolbar();
 | |
| const contextmenu = new ContextMenu();
 | |
| const photo = new Photo();
 | |
| const photoviewer = new PhotoViewer();
 | |
| const page = new Page();
 | |
| const albumdialog = new AlbumDialog();
 | |
| 
 | |
| test.meta("testID", "authentication-000")(
 | |
|   "Time to start instance (will be marked as unstable)",
 | |
|   async (t) => {
 | |
|     await t.wait(5000);
 | |
|   }
 | |
| );
 | |
| 
 | |
| test.meta("testID", "albums-001").meta({ type: "smoke" })(
 | |
|   "Create/delete album on /albums",
 | |
|   async (t) => {
 | |
|     await menu.openPage("albums");
 | |
|     const AlbumCount = await album.getAlbumCount("all");
 | |
|     await toolbar.triggerToolbarAction("add");
 | |
|     const AlbumCountAfterCreate = await album.getAlbumCount("all");
 | |
|     const NewAlbumUid = await album.getNthAlbumUid("all", 0);
 | |
| 
 | |
|     await t.expect(AlbumCountAfterCreate).eql(AlbumCount + 1);
 | |
| 
 | |
|     await album.selectAlbumFromUID(NewAlbumUid);
 | |
|     await contextmenu.triggerContextMenuAction("delete", "");
 | |
|     const AlbumCountAfterDelete = await album.getAlbumCount("all");
 | |
| 
 | |
|     await t.expect(AlbumCountAfterDelete).eql(AlbumCountAfterCreate - 1);
 | |
|   }
 | |
| );
 | |
| 
 | |
| test.meta("testID", "albums-002").meta({ type: "smoke" })(
 | |
|   "Create/delete album during add to album",
 | |
|   async (t) => {
 | |
|     await menu.openPage("albums");
 | |
|     const AlbumCount = await album.getAlbumCount("all");
 | |
|     await menu.openPage("browse");
 | |
|     await toolbar.search("photo:true");
 | |
|     const FirstPhotoUid = await photo.getNthPhotoUid("image", 0);
 | |
|     const SecondPhotoUid = await photo.getNthPhotoUid("image", 1);
 | |
|     await photo.selectPhotoFromUID(SecondPhotoUid);
 | |
|     await photo.selectPhotoFromUID(FirstPhotoUid);
 | |
|     await contextmenu.triggerContextMenuAction("album", "NotYetExistingAlbum");
 | |
|     await menu.openPage("albums");
 | |
|     const AlbumCountAfterCreation = await album.getAlbumCount("all");
 | |
| 
 | |
|     await t.expect(AlbumCountAfterCreation).eql(AlbumCount + 1);
 | |
| 
 | |
|     await toolbar.search("NotYetExistingAlbum");
 | |
|     const AlbumUid = await album.getNthAlbumUid("all", 0);
 | |
|     await album.selectAlbumFromUID(AlbumUid);
 | |
|     await contextmenu.triggerContextMenuAction("delete", "");
 | |
|     await menu.openPage("albums");
 | |
|     const AlbumCountAfterDelete = await album.getAlbumCount("all");
 | |
| 
 | |
|     await t.expect(AlbumCountAfterDelete).eql(AlbumCount);
 | |
|   }
 | |
| );
 | |
| 
 | |
| test.meta("testID", "albums-003").meta({ type: "smoke" })("Update album details", async (t) => {
 | |
|   await menu.openPage("albums");
 | |
|   await toolbar.search("Holiday");
 | |
|   const AlbumUid = await album.getNthAlbumUid("all", 0);
 | |
| 
 | |
|   await t.expect(page.cardTitle.nth(0).innerText).contains("Holiday");
 | |
| 
 | |
|   await t.click(page.cardTitle.nth(0)).typeText(albumdialog.title, "Animals", { replace: true });
 | |
| 
 | |
|   await t.expect(albumdialog.description.value).eql("").expect(albumdialog.category.value).eql("");
 | |
| 
 | |
|   await t
 | |
|     .typeText(albumdialog.description, "All my animals")
 | |
|     .typeText(albumdialog.category, "Pets")
 | |
|     .pressKey("enter")
 | |
|     .click(albumdialog.dialogSave);
 | |
| 
 | |
|   await t.expect(page.cardTitle.nth(0).innerText).contains("Animals");
 | |
| 
 | |
|   await album.openAlbumWithUid(AlbumUid);
 | |
|   await toolbar.triggerToolbarAction("edit");
 | |
|   await t.typeText(albumdialog.title, "Holiday", { replace: true });
 | |
| 
 | |
|   await t
 | |
|     .expect(albumdialog.description.value)
 | |
|     .eql("All my animals")
 | |
|     .expect(albumdialog.category.value)
 | |
|     .eql("Pets");
 | |
| 
 | |
|   await t
 | |
|     .click(albumdialog.description)
 | |
|     .pressKey("ctrl+a delete")
 | |
|     .pressKey("enter")
 | |
|     .click(albumdialog.category)
 | |
|     .pressKey("ctrl+a delete")
 | |
|     .pressKey("enter")
 | |
|     .click(albumdialog.dialogSave);
 | |
|   await menu.openPage("albums");
 | |
| 
 | |
|   await t
 | |
|     .expect(Selector("div").withText("Holiday").visible)
 | |
|     .ok()
 | |
|     .expect(Selector("div").withText("Animals").exists)
 | |
|     .notOk();
 | |
| });
 | |
| 
 | |
| test.meta("testID", "albums-004").meta({ type: "smoke" })(
 | |
|   "Add/Remove Photos to/from album",
 | |
|   async (t) => {
 | |
|     await menu.openPage("albums");
 | |
|     await toolbar.search("Holiday");
 | |
|     const AlbumUid = await album.getNthAlbumUid("all", 0);
 | |
|     await album.openAlbumWithUid(AlbumUid);
 | |
|     const PhotoCount = await photo.getPhotoCount("all");
 | |
|     await menu.openPage("browse");
 | |
|     await toolbar.search("photo:true");
 | |
|     const FirstPhotoUid = await photo.getNthPhotoUid("image", 0);
 | |
|     const SecondPhotoUid = await photo.getNthPhotoUid("image", 1);
 | |
|     await photo.selectPhotoFromUID(SecondPhotoUid);
 | |
|     await photoviewer.openPhotoViewer("uid", FirstPhotoUid);
 | |
|     await photoviewer.triggerPhotoViewerAction("select");
 | |
|     await photoviewer.triggerPhotoViewerAction("close");
 | |
|     await contextmenu.triggerContextMenuAction("album", "Holiday");
 | |
|     await menu.openPage("albums");
 | |
|     await album.openAlbumWithUid(AlbumUid);
 | |
|     const PhotoCountAfterAdd = await photo.getPhotoCount("all");
 | |
| 
 | |
|     await t.expect(PhotoCountAfterAdd).eql(PhotoCount + 2);
 | |
| 
 | |
|     await photo.selectPhotoFromUID(FirstPhotoUid);
 | |
|     await photo.selectPhotoFromUID(SecondPhotoUid);
 | |
|     await contextmenu.triggerContextMenuAction("remove", "");
 | |
|     const PhotoCountAfterRemove = await photo.getPhotoCount("all");
 | |
| 
 | |
|     await t.expect(PhotoCountAfterRemove).eql(PhotoCountAfterAdd - 2);
 | |
|   }
 | |
| );
 | |
| 
 | |
| test.meta("testID", "albums-005")("Use album search and filters", async (t) => {
 | |
|   await menu.openPage("albums");
 | |
|   if (t.browser.platform === "mobile") {
 | |
|     await toolbar.search("category:Family");
 | |
|   } else {
 | |
|     await toolbar.setFilter("category", "Family");
 | |
|   }
 | |
| 
 | |
|   await t.expect(page.cardTitle.nth(0).innerText).contains("Christmas");
 | |
|   const AlbumCount = await album.getAlbumCount("all");
 | |
|   await t.expect(AlbumCount).eql(1);
 | |
| 
 | |
|   if (t.browser.platform === "mobile") {
 | |
|   } else {
 | |
|     await toolbar.setFilter("category", "All Categories");
 | |
|   }
 | |
| 
 | |
|   await toolbar.search("Holiday");
 | |
| 
 | |
|   await t.expect(page.cardTitle.nth(0).innerText).contains("Holiday");
 | |
|   const AlbumCount2 = await album.getAlbumCount("all");
 | |
|   await t.expect(AlbumCount2).eql(1);
 | |
| });
 | |
| 
 | |
| test.meta("testID", "albums-006")("Test album autocomplete", async (t) => {
 | |
|   await toolbar.search("photo:true");
 | |
|   const FirstPhotoUid = await photo.getNthPhotoUid("image", 0);
 | |
|   await photo.selectPhotoFromUID(FirstPhotoUid);
 | |
|   await contextmenu.openContextMenu();
 | |
|   await t.click(Selector("button.action-album")).click(Selector(".input-album input"));
 | |
| 
 | |
|   await t
 | |
|     .expect(page.selectOption.withText("Holiday").visible)
 | |
|     .ok()
 | |
|     .expect(page.selectOption.withText("Christmas").visible)
 | |
|     .ok();
 | |
| 
 | |
|   await t.typeText(Selector(".input-album input"), "C", { replace: true });
 | |
| 
 | |
|   await t
 | |
|     .expect(page.selectOption.withText("Holiday").visible)
 | |
|     .notOk()
 | |
|     .expect(page.selectOption.withText("Christmas").visible)
 | |
|     .ok()
 | |
|     .expect(page.selectOption.withText("C").visible)
 | |
|     .ok();
 | |
| });
 | |
| 
 | |
| test.meta("testID", "albums-007").meta({ type: "smoke" })(
 | |
|   "Create, Edit, delete sharing link",
 | |
|   async (t) => {
 | |
|     await page.testCreateEditDeleteSharingLink("albums");
 | |
|   }
 | |
| );
 | 
