mirror of
				https://github.com/photoprism/photoprism.git
				synced 2025-10-30 11:46:36 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			120 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			120 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| import { Selector } from "testcafe";
 | |
| import testcafeconfig from "./testcafeconfig";
 | |
| import { RequestLogger } from "testcafe";
 | |
| 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";
 | |
| 
 | |
| const logger = RequestLogger(/http:\/\/localhost:2343\/api\/v1\/*/, {
 | |
|   logResponseHeaders: true,
 | |
|   logResponseBody: true,
 | |
| });
 | |
| 
 | |
| fixture`Test photos download`.page`${testcafeconfig.url}`
 | |
|   .requestHooks(logger)
 | |
|   .skip("Does not work in container and we have no content-disposition header anymore");
 | |
| 
 | |
| const toolbar = new Toolbar();
 | |
| const contextmenu = new ContextMenu();
 | |
| const photo = new Photo();
 | |
| const photoviewer = new PhotoViewer();
 | |
| const page = new Page();
 | |
| 
 | |
| test.meta("testID", "photos-download-001").meta({ type: "smoke" })(
 | |
|   "Test download jpg file from context menu and fullscreen",
 | |
|   async (t) => {
 | |
|     await toolbar.search("name:monochrome-2.jpg");
 | |
|     const PhotoUid = await photo.getNthPhotoUid("all", 0);
 | |
|     await photo.triggerHoverAction("uid", PhotoUid, "select");
 | |
|     await logger.clear();
 | |
|     await contextmenu.triggerContextMenuAction("download", "");
 | |
|     const requestInfo = await logger.requests[1].response;
 | |
|     console.log(requestInfo);
 | |
|     const requestInfo0 = await logger.requests[0].response;
 | |
|     console.log(requestInfo0);
 | |
| 
 | |
|     await page.validateDownloadRequest(requestInfo, "monochrome-2", ".jpg");
 | |
| 
 | |
|     await logger.clear();
 | |
|     await contextmenu.clearSelection();
 | |
|     await toolbar.search("name:IMG_20200711_174006.jpg");
 | |
|     const SecondPhotoUid = await photo.getNthPhotoUid("all", 0);
 | |
|     await t.click(Selector("div").withAttribute("data-uid", SecondPhotoUid));
 | |
|     await photoviewer.openPhotoViewer("uid", SecondPhotoUid);
 | |
|     await logger.clear();
 | |
|     await photoviewer.triggerPhotoViewerAction("download");
 | |
|     await logger.clear();
 | |
|     await photoviewer.triggerPhotoViewerAction("close");
 | |
|   }
 | |
| );
 | |
| 
 | |
| test.meta("testID", "photos-download-002").meta({ type: "smoke" })(
 | |
|   "Test download video from context menu",
 | |
|   async (t) => {
 | |
|     await toolbar.search("name:Mohn.mp4");
 | |
|     const PhotoUid = await photo.getNthPhotoUid("all", 0);
 | |
|     await photo.triggerHoverAction("uid", PhotoUid, "select");
 | |
|     await logger.clear();
 | |
|     await contextmenu.triggerContextMenuAction("download", "");
 | |
|     const requestInfo = await logger.requests[0].response;
 | |
|     console.log(requestInfo);
 | |
|     const requestInfo2 = await logger.requests[1].response;
 | |
| 
 | |
|     await page.validateDownloadRequest(requestInfo, "Mohn", ".mp4.jpg");
 | |
|     await page.validateDownloadRequest(requestInfo2, "Mohn", ".mp4");
 | |
| 
 | |
|     await logger.clear();
 | |
|     await contextmenu.clearSelection();
 | |
|   }
 | |
| );
 | |
| 
 | |
| test.meta("testID", "photos-download-003")(
 | |
|   "Test download multiple jpg files from context menu",
 | |
|   async (t) => {
 | |
|     await toolbar.search("name:panorama_2.jpg");
 | |
|     const PhotoUid = await photo.getNthPhotoUid("all", 0);
 | |
|     await photo.triggerHoverAction("uid", PhotoUid, "select");
 | |
|     await toolbar.search("name:IMG_6478.JPG");
 | |
|     const SecondPhotoUid = await photo.getNthPhotoUid("all", 0);
 | |
|     await photo.triggerHoverAction("uid", SecondPhotoUid, "select");
 | |
|     await logger.clear();
 | |
|     await contextmenu.triggerContextMenuAction("download", "");
 | |
|     const requestInfo = await logger.requests[1].response;
 | |
|     console.log(requestInfo);
 | |
| 
 | |
|     await page.validateDownloadRequest(requestInfo, "photoprism-download", ".zip");
 | |
| 
 | |
|     await logger.clear();
 | |
|     await contextmenu.clearSelection();
 | |
|   }
 | |
| );
 | |
| 
 | |
| //TODO Check RAW files as well
 | |
| test.meta("testID", "photos-download-004")(
 | |
|   "Test raw file from context menu and fullscreen mode",
 | |
|   async (t) => {
 | |
|     await toolbar.search("name:elephantRAW");
 | |
|     const PhotoUid = await photo.getNthPhotoUid("all", 0);
 | |
|     await photo.triggerHoverAction("uid", PhotoUid, "select");
 | |
|     await logger.clear();
 | |
|     await contextmenu.triggerContextMenuAction("download", "");
 | |
|     const requestInfo = await logger.requests[1].response;
 | |
| 
 | |
|     await page.validateDownloadRequest(requestInfo, "elephantRAW", ".JPG");
 | |
| 
 | |
|     await logger.clear();
 | |
|     await contextmenu.clearSelection();
 | |
|     await t.click(Selector("div").withAttribute("data-uid", Photo));
 | |
|     await t.expect(Selector("#photo-viewer").visible).ok().hover(Selector(".action-download"));
 | |
|     await logger.clear();
 | |
|     await t.click(Selector(".action-download"));
 | |
|     const requestInfo3 = await logger.requests[1].response;
 | |
|     //const requestInfo4 = await logger.requests[2].response;
 | |
|     await page.validateDownloadRequest(requestInfo3, "elephantRAW", ".JPG");
 | |
|     //await page.validateDownloadRequest(requestInfo4, "elephantRAW", ".mp4");
 | |
|     await logger.clear();
 | |
|   }
 | |
| );
 | 
