498 lines
19 KiB
JavaScript
498 lines
19 KiB
JavaScript
import { Selector } from 'testcafe';
|
|
import testcafeconfig from './testcafeconfig';
|
|
import Page from "./page-model";
|
|
import { RequestLogger } from 'testcafe';
|
|
|
|
|
|
const logger = RequestLogger( /http:\/\/localhost:2342\/api\/v1\/photos*/ , {
|
|
logResponseHeaders: true,
|
|
logResponseBody: true
|
|
});
|
|
|
|
fixture `Test photos`
|
|
.page`${testcafeconfig.url}`
|
|
.requestHooks(logger);
|
|
|
|
const page = new Page();
|
|
|
|
//?search + filters --> oder search js
|
|
// raw file icon? live photo icon? - search for type look for icon --> do it in search test
|
|
|
|
//?views including fullscreen--> oder view js
|
|
|
|
//?upload + Later: delete--> oder nur in library?
|
|
|
|
//scroll to top
|
|
|
|
//download
|
|
|
|
//clipboard --> extra test needed or include in other tests done for privat, archive
|
|
|
|
//review - approve photo
|
|
test('#8 approve photo', async t => {
|
|
await page.openNav();
|
|
await t
|
|
.click(Selector('div.p-navigation-photos + div'))
|
|
.click(Selector('.p-navigation-review'));
|
|
logger.clear();
|
|
await page.search('type:image');
|
|
const request1 = await logger.requests[0].response.body;
|
|
const FirstPhoto = await Selector('div.p-photo').nth(0).getAttribute('data-uid');
|
|
|
|
await page.selectPhotoFromUID(FirstPhoto);
|
|
await page.editSelectedPhotos();
|
|
logger.clear();
|
|
await t
|
|
.click(Selector('button.p-photo-dialog-close'));
|
|
await t
|
|
.click(Selector('button.action-reload'));
|
|
const request12 = await logger.requests[0].response.body;
|
|
logger.clear();
|
|
await t
|
|
.expect(Selector('div').withAttribute('data-uid', FirstPhoto).visible).ok();
|
|
await page.editSelectedPhotos();
|
|
const request2 = await logger.requests[0].response.body;
|
|
logger.clear();
|
|
await t
|
|
.click(Selector('button.action-approve'))
|
|
.click(Selector('button.action-ok'));
|
|
const request3 = await logger.requests[0].response.body;
|
|
logger.clear();
|
|
await t
|
|
.click(Selector('button.action-reload'));
|
|
const request4 = await logger.requests[0].response.body;
|
|
logger.clear();
|
|
await t
|
|
.expect(Selector('div').withAttribute('data-uid', FirstPhoto).exists).notOk()
|
|
.click(Selector('.p-navigation-photos'));
|
|
const request5 = await logger.requests[0].response.body;
|
|
logger.clear();
|
|
await page.search('type:image');
|
|
const request6 = await logger.requests[0].response.body;
|
|
await t
|
|
.expect(Selector('div').withAttribute('data-uid', FirstPhoto).visible).ok();
|
|
});
|
|
|
|
//review - add/remove date to photo so that it appears in photos
|
|
|
|
//review - for videos
|
|
|
|
//videos - play video
|
|
|
|
/*test('#1 like/dislike photo', async t => {
|
|
|
|
await t.click(Selector('.p-navigation-favorites'));
|
|
const PhotosCountInFavorites = await Selector('.t-like.t-on').count;
|
|
await t.click(Selector('.p-navigation-photos'));
|
|
const FavoritesCountInPhotos = await Selector('.t-like.t-on').count;
|
|
logger.clear();
|
|
await page.search('favorite:false');
|
|
await page.likePhoto(1);
|
|
const request = await logger.requests[0].response.body;
|
|
logger.clear();
|
|
await t
|
|
.click(Selector('.action-reload'));
|
|
const FavoritesCountInPhotosAfterLike = await Selector('.t-like.t-on').count;
|
|
logger.clear();
|
|
await t
|
|
.expect(FavoritesCountInPhotosAfterLike).eql(FavoritesCountInPhotos + 1)
|
|
.click(Selector('.p-navigation-favorites'));
|
|
const request2 = await logger.requests[0].response.body;
|
|
logger.clear();
|
|
|
|
const PhotosCountInFavoritesAfterLike = await Selector('.t-like.t-on').count;
|
|
await t
|
|
.expect(PhotosCountInFavoritesAfterLike).eql(PhotosCountInFavorites + 1)
|
|
.expect(Selector('div.v-image__image').visible).ok()
|
|
.click(Selector('.t-like.t-on'));
|
|
logger.clear();
|
|
await t.click(Selector('.action-reload'));
|
|
const request3 = await logger.requests[0].response.body;
|
|
|
|
const PhotosCountInFavoritesAfterDislike = await Selector('.t-like.t-on').count;
|
|
await t
|
|
.expect(PhotosCountInFavoritesAfterDislike).eql(PhotosCountInFavoritesAfterLike - 1);
|
|
|
|
});
|
|
|
|
test('#2 like/dislike video', async t => {
|
|
|
|
await t.click(Selector('.p-navigation-favorites'));
|
|
const VideoCountInFavorites = await Selector('.t-like.t-on').count;
|
|
await t.click(Selector('.p-navigation-video'));
|
|
const FavoritesCountInVideos = await Selector('.t-like.t-on').count;
|
|
logger.clear();
|
|
await page.search('favorite:false');
|
|
await page.likePhoto(0);
|
|
const request = await logger.requests[0].response.body;
|
|
logger.clear();
|
|
await t
|
|
.click(Selector('.action-reload'));
|
|
const FavoritesCountInVideosAfterLike = await Selector('.t-like.t-on').count;
|
|
logger.clear();
|
|
await t
|
|
.expect(FavoritesCountInVideosAfterLike).eql(FavoritesCountInVideos + 1)
|
|
.click(Selector('.p-navigation-favorites'));
|
|
const request2 = await logger.requests[0].response.body;
|
|
logger.clear();
|
|
|
|
const VideoCountInFavoritesAfterLike = await Selector('.t-like.t-on').count;
|
|
await t
|
|
.expect(VideoCountInFavoritesAfterLike).eql(VideoCountInFavorites + 1);
|
|
await page.search('type:video');
|
|
await t
|
|
.expect(Selector('div.v-image__image').visible).ok()
|
|
.click(Selector('.t-like.t-on'));
|
|
logger.clear();
|
|
await t.click(Selector('.action-reload'));
|
|
const request3 = await logger.requests[0].response.body;
|
|
|
|
const VideoCountInFavoritesAfterDislike = await Selector('.t-like.t-on').count;
|
|
await t
|
|
.expect(VideoCountInFavoritesAfterDislike).eql(VideoCountInFavoritesAfterLike - 1);
|
|
|
|
});
|
|
|
|
test('#5 private/unprivate photo from list view', async t => {
|
|
|
|
logger.clear();
|
|
await t.click(Selector('.p-navigation-private'));
|
|
const CountInPrivate = await Selector('.p-photo-private').count;
|
|
await t
|
|
.click(Selector('.p-navigation-photos'))
|
|
.click(Selector('.p-expand-search'));
|
|
logger.clear();
|
|
await page.setFilter('view', 'Liste');
|
|
const request01 = await logger.requests[0].response.body;
|
|
const PhotoCountInPhotos = await Selector('div.v-responsive__content').count;
|
|
logger.clear();
|
|
await t.click(Selector('.p-photo-private').nth(0));
|
|
const request1 = await logger.requests[0].response.body;
|
|
logger.clear();
|
|
await t
|
|
.click(Selector('.action-reload'));
|
|
const request12 = await logger.requests[0].response.body;
|
|
const PhotoCountInPhotosAfterPrivate = await Selector('div.v-responsive__content').count;
|
|
logger.clear();
|
|
await t
|
|
.expect(PhotoCountInPhotosAfterPrivate).eql(PhotoCountInPhotos - 1)
|
|
.click(Selector('.p-navigation-private'));
|
|
const request2 = await logger.requests[0].response.body;
|
|
logger.clear();
|
|
|
|
const CountInPrivateAfterPrivate = await Selector('.p-photo-private').count;
|
|
await t
|
|
.expect(CountInPrivateAfterPrivate).eql(CountInPrivate + 1);
|
|
await t
|
|
.expect(Selector('div.v-image__image').visible).ok()
|
|
.click(Selector('.p-photo-private').nth(0));
|
|
logger.clear();
|
|
await t.click(Selector('.action-reload'));
|
|
const request3 = await logger.requests[0].response.body;
|
|
|
|
const CountInPrivateAfterUnprivate = await Selector('.p-photo-private').count;
|
|
logger.clear();
|
|
await t
|
|
.expect(CountInPrivateAfterUnprivate).eql(CountInPrivateAfterPrivate - 1)
|
|
.click(Selector('.p-navigation-photos'));
|
|
const request4 = await logger.requests[0].response.body;
|
|
logger.clear();
|
|
const PhotoCountInPhotosAfterUnprivate = await Selector('div.v-responsive__content').count;
|
|
await t
|
|
.expect(PhotoCountInPhotosAfterUnprivate).eql(PhotoCountInPhotosAfterPrivate + 1);
|
|
});
|
|
|
|
test('#6 private/unprivate photo using clipboard', async t => {
|
|
|
|
logger.clear();
|
|
await t.click(Selector('.p-navigation-private'));
|
|
const request = await logger.requests[0].response.body;
|
|
const CountInPrivate = await Selector('.p-photo-private').count;
|
|
await t
|
|
.click(Selector('.p-navigation-photos'))
|
|
.click(Selector('.p-expand-search'));
|
|
logger.clear();
|
|
await page.setFilter('view', 'Mosaik');
|
|
const request01 = await logger.requests[0].response.body;
|
|
const PhotoCountInPhotos = await Selector('div.v-responsive__content').count;
|
|
logger.clear();
|
|
await page.selectNthPhoto(0);
|
|
await page.selectNthPhoto(1);
|
|
await t
|
|
.click(Selector('button.p-photo-clipboard-menu'))
|
|
.click(Selector('button.p-photo-clipboard-private'));
|
|
logger.clear();
|
|
await t
|
|
.click(Selector('.action-reload'));
|
|
const request12 = await logger.requests[0].response.body;
|
|
const PhotoCountInPhotosAfterPrivate = await Selector('div.v-responsive__content').count;
|
|
logger.clear();
|
|
await t
|
|
.expect(PhotoCountInPhotosAfterPrivate).eql(PhotoCountInPhotos - 2)
|
|
.click(Selector('.p-navigation-private'));
|
|
const request2 = await logger.requests[0].response.body;
|
|
logger.clear();
|
|
|
|
const CountInPrivateAfterPrivate = await Selector('.p-photo-private').count;
|
|
await t
|
|
.expect(CountInPrivateAfterPrivate).eql(CountInPrivate + 2);
|
|
await t
|
|
.expect(Selector('div.v-image__image').visible).ok();
|
|
await page.selectNthPhoto(0);
|
|
await page.selectNthPhoto(1);
|
|
await t
|
|
.click(Selector('button.p-photo-clipboard-menu'))
|
|
.click(Selector('button.p-photo-clipboard-private'));
|
|
logger.clear();
|
|
await t.click(Selector('.action-reload'));
|
|
const request3 = await logger.requests[0].response.body;
|
|
|
|
const CountInPrivateAfterUnprivate = await Selector('.p-photo-private').count;
|
|
logger.clear();
|
|
await t
|
|
.expect(CountInPrivateAfterUnprivate).eql(CountInPrivateAfterPrivate - 2)
|
|
.click(Selector('.p-navigation-photos'));
|
|
const request4 = await logger.requests[0].response.body;
|
|
logger.clear();
|
|
const PhotoCountInPhotosAfterUnprivate = await Selector('div.v-responsive__content').count;
|
|
await t
|
|
.expect(PhotoCountInPhotosAfterUnprivate).eql(PhotoCountInPhotosAfterPrivate + 2);
|
|
|
|
});
|
|
|
|
test('#3 private/unprivate video from list view', async t => {
|
|
|
|
logger.clear();
|
|
await t.click(Selector('.p-navigation-private'));
|
|
await page.search('type:video');
|
|
const request = await logger.requests[0].response.body;
|
|
const VideoCountInPrivate = await Selector('.p-photo-private').count;
|
|
await t
|
|
.click(Selector('.p-navigation-video'))
|
|
.click(Selector('.p-expand-search'));
|
|
logger.clear();
|
|
await page.setFilter('view', 'Liste');
|
|
const request01 = await logger.requests[0].response.body;
|
|
const VideoCountInVideo = await Selector('button.p-photo-play').count;
|
|
logger.clear();
|
|
await t.click(Selector('.p-photo-private').nth(0));
|
|
const request1 = await logger.requests[0].response.body;
|
|
logger.clear();
|
|
await t
|
|
.click(Selector('.action-reload'));
|
|
const request12 = await logger.requests[0].response.body;
|
|
const VideoCountInVideoAfterPrivate = await Selector('button.p-photo-play').count;
|
|
logger.clear();
|
|
await t
|
|
.expect(VideoCountInVideoAfterPrivate).eql(VideoCountInVideo - 1)
|
|
.click(Selector('.p-navigation-private'));
|
|
await page.search('type:video');
|
|
const request2 = await logger.requests[0].response.body;
|
|
logger.clear();
|
|
|
|
const VideoCountInPrivateAfterPrivate = await Selector('.p-photo-private').count;
|
|
await t
|
|
.expect(VideoCountInPrivateAfterPrivate).eql(VideoCountInPrivate + 1);
|
|
await t
|
|
.expect(Selector('div.v-image__image').visible).ok()
|
|
.click(Selector('.p-photo-private').nth(0));
|
|
logger.clear();
|
|
await t.click(Selector('.action-reload'));
|
|
const request3 = await logger.requests[0].response.body;
|
|
|
|
const VideoCountInPrivateAfterUnprivate = await Selector('.p-photo-private').count;
|
|
logger.clear();
|
|
await t
|
|
.expect(VideoCountInPrivateAfterUnprivate).eql(VideoCountInPrivateAfterPrivate - 1)
|
|
.click(Selector('.p-navigation-video'));
|
|
const request4 = await logger.requests[0].response.body;
|
|
logger.clear();
|
|
const VideoCountInVideoAfterUnprivate = await Selector('button.p-photo-play').count;
|
|
await t
|
|
.expect(VideoCountInVideoAfterUnprivate).eql(VideoCountInVideoAfterPrivate + 1);
|
|
|
|
});
|
|
|
|
test('#4 private/unprivate video using clipboard', async t => {
|
|
|
|
logger.clear();
|
|
await t.click(Selector('.p-navigation-private'));
|
|
await page.search('type:video');
|
|
const request = await logger.requests[0].response.body;
|
|
const VideoCountInPrivate = await Selector('.p-photo-private').count;
|
|
await t
|
|
.click(Selector('.p-navigation-video'))
|
|
.click(Selector('.p-expand-search'));
|
|
logger.clear();
|
|
await page.setFilter('view', 'Mosaik');
|
|
const request01 = await logger.requests[0].response.body;
|
|
const VideoCountInVideo = await Selector('button.p-photo-play').count;
|
|
logger.clear();
|
|
await page.selectNthPhoto(0);
|
|
await page.selectNthPhoto(1);
|
|
await t
|
|
.click(Selector('button.p-photo-clipboard-menu'))
|
|
.click(Selector('button.p-photo-clipboard-private'));
|
|
logger.clear();
|
|
await t
|
|
.click(Selector('.action-reload'));
|
|
const request12 = await logger.requests[0].response.body;
|
|
const VideoCountInVideoAfterPrivate = await Selector('button.p-photo-play').count;
|
|
logger.clear();
|
|
await t
|
|
.expect(VideoCountInVideoAfterPrivate).eql(VideoCountInVideo - 2)
|
|
.click(Selector('.p-navigation-private'));
|
|
await page.search('type:video');
|
|
const request2 = await logger.requests[0].response.body;
|
|
logger.clear();
|
|
|
|
const VideoCountInPrivateAfterPrivate = await Selector('.p-photo-private').count;
|
|
await t
|
|
.expect(VideoCountInPrivateAfterPrivate).eql(VideoCountInPrivate + 2);
|
|
await t
|
|
.expect(Selector('div.v-image__image').visible).ok();
|
|
await page.selectNthPhoto(0);
|
|
await page.selectNthPhoto(1);
|
|
await t
|
|
.click(Selector('button.p-photo-clipboard-menu'))
|
|
.click(Selector('button.p-photo-clipboard-private'));
|
|
logger.clear();
|
|
await t.click(Selector('.action-reload'));
|
|
const request3 = await logger.requests[0].response.body;
|
|
|
|
const VideoCountInPrivateAfterUnprivate = await Selector('.p-photo-private').count;
|
|
logger.clear();
|
|
await t
|
|
.expect(VideoCountInPrivateAfterUnprivate).eql(VideoCountInPrivateAfterPrivate - 2)
|
|
.click(Selector('.p-navigation-video'));
|
|
const request4 = await logger.requests[0].response.body;
|
|
logger.clear();
|
|
const VideoCountInVideoAfterUnprivate = await Selector('button.p-photo-play').count;
|
|
await t
|
|
.expect(VideoCountInVideoAfterUnprivate).eql(VideoCountInVideoAfterPrivate + 2);
|
|
|
|
});
|
|
|
|
//archive - archive + restore from photos from private from review (UPDATE)
|
|
|
|
//photos
|
|
|
|
//private photos
|
|
|
|
//review photos
|
|
test('#7 archive/restore video, photos, private photos and review photos using clipboard', async t => {
|
|
|
|
logger.clear();
|
|
await page.openNav();
|
|
await t
|
|
.click(Selector('div.p-navigation-photos + div'))
|
|
.click(Selector('.p-navigation-archive'));
|
|
const request = await logger.requests[0].response.body;
|
|
const TotalCountInArchive = await Selector('div.v-responsive__content').count;
|
|
logger.clear();
|
|
|
|
await t
|
|
.click(Selector('.p-navigation-video'));
|
|
const request1 = await logger.requests[0].response.body;
|
|
const VideoCountInVideo = await Selector('button.p-photo-play').count;
|
|
logger.clear();
|
|
await page.selectNthPhoto(0);
|
|
await page.archiveSelectedPhotos();
|
|
logger.clear();
|
|
await t
|
|
.click(Selector('.action-reload'));
|
|
const request2 = await logger.requests[0].response.body;
|
|
const VideoCountInVideoAfterArchive = await Selector('button.p-photo-play').count;
|
|
logger.clear();
|
|
await t
|
|
.expect(VideoCountInVideoAfterArchive).eql(VideoCountInVideo - 1)
|
|
.click(Selector('.p-navigation-photos'));
|
|
const request3 = await logger.requests[0].response.body;
|
|
logger.clear();
|
|
|
|
const PhotoCountInPhotos = await Selector('div.v-responsive__content').count;
|
|
logger.clear();
|
|
await page.selectNthPhoto(0);
|
|
await page.selectNthPhoto(1);
|
|
await page.archiveSelectedPhotos();
|
|
logger.clear();
|
|
await t
|
|
.click(Selector('.action-reload'));
|
|
const request4 = await logger.requests[0].response.body;
|
|
const PhotoCountInPhotosAfterArchive = await Selector('div.v-responsive__content').count;
|
|
logger.clear();
|
|
await t
|
|
.expect(PhotoCountInPhotosAfterArchive).eql(PhotoCountInPhotos - 2)
|
|
.click(Selector('.p-navigation-private'));
|
|
const request5 = await logger.requests[0].response.body;
|
|
logger.clear();
|
|
|
|
const PhotoCountInPrivate = await Selector('div.v-responsive__content').count;
|
|
logger.clear();
|
|
await page.selectNthPhoto(0);
|
|
await page.archiveSelectedPhotos();
|
|
logger.clear();
|
|
await t
|
|
.click(Selector('.action-reload'));
|
|
const request6 = await logger.requests[0].response.body;
|
|
const PhotoCountInPrivateAfterArchive = await Selector('div.v-responsive__content').count;
|
|
logger.clear();
|
|
await t
|
|
.expect(PhotoCountInPrivateAfterArchive).eql(PhotoCountInPrivate - 1)
|
|
.click(Selector('.p-navigation-review'));
|
|
const request7 = await logger.requests[0].response.body;
|
|
logger.clear();
|
|
|
|
const PhotoCountInReview = await Selector('div.v-responsive__content').count;
|
|
logger.clear();
|
|
await page.selectNthPhoto(0);
|
|
await page.archiveSelectedPhotos();
|
|
logger.clear();
|
|
await t
|
|
.click(Selector('.action-reload'));
|
|
const request8 = await logger.requests[0].response.body;
|
|
const PhotoCountInReviewAfterArchive = await Selector('div.v-responsive__content').count;
|
|
logger.clear();
|
|
await t
|
|
.expect(PhotoCountInReviewAfterArchive).eql(PhotoCountInReview - 1)
|
|
.click(Selector('.p-navigation-archive'));
|
|
const request9 = await logger.requests[0].response.body;
|
|
logger.clear();
|
|
|
|
const TotalCountInArchiveAfterArchive = await Selector('div.v-responsive__content').count;
|
|
await t
|
|
.expect(TotalCountInArchiveAfterArchive).eql(TotalCountInArchive + 5);
|
|
await t
|
|
.expect(Selector('div.v-image__image').visible).ok();
|
|
await page.search('type:video');
|
|
await page.selectNthPhoto(0);
|
|
await page.search('review:true');
|
|
await page.selectNthPhoto(0);
|
|
await page.search('review:true');
|
|
await page.selectNthPhoto(0);
|
|
await page.restoreSelectedPhotos();
|
|
logger.clear();
|
|
await t.click(Selector('.action-reload'));
|
|
const request10 = await logger.requests[0].response.body;
|
|
|
|
const TotalCountInArchiveAfterRestore = await Selector('div.v-responsive__content').count;
|
|
logger.clear();
|
|
await t
|
|
.expect(TotalCountInArchiveAfterRestore).eql(TotalCountInArchiveAfterArchive - 5)
|
|
.click(Selector('.p-navigation-video'));
|
|
const request11 = await logger.requests[0].response.body;
|
|
logger.clear();
|
|
const VideoCountInVideoAfterRestore = await Selector('button.p-photo-play').count;
|
|
await t
|
|
.expect(VideoCountInVideoAfterRestore).eql(VideoCountInVideoAfterArchive + 1);
|
|
|
|
});*/
|
|
|
|
|
|
//open photoeditdialogue (multiple ways) + edit photo details
|
|
|
|
//change primary file
|
|
|
|
//navigate to places
|
|
|
|
//Check count in navi gets updated --> gt/lt or matches count of images
|