Frontend: Refactor acceptance tests

This commit is contained in:
Theresa Gresch 2020-06-23 13:06:55 +02:00
parent cd3a2afdbc
commit a529e7bf2b
6 changed files with 97 additions and 102 deletions

View file

@ -30,7 +30,7 @@ test('#1 Create/delete album', async t => {
.expect(countAlbumsAfterCreate).eql(countAlbums + 1);
await page.selectFromUID(NewAlbum);
logger.clear();
await page.deleteSelectedAlbum();
await page.deleteSelected();
const request2 = await logger.requests[0].response.body;
const countAlbumsAfterDelete = await Selector('div.p-album').count;
await t
@ -123,11 +123,11 @@ test('#3 Download album', async t => {
await t.click(Selector('.p-navigation-albums'));
const FirstAlbum = await Selector('div.p-album').nth(0).getAttribute('data-uid');
await page.selectFromUID(FirstAlbum);
const clipboardCount = await Selector('span.t-clipboard-count');
const clipboardCount = await Selector('span.count-clipboard');
await t
.expect(clipboardCount.textContent).eql("1")
.click(Selector('button.p-album-clipboard-menu'))
.expect(Selector('button.p-album-clipboard-download').visible).ok();
.click(Selector('button.action-menu'))
.expect(Selector('button.action-download').visible).ok();
});
test('#4 View folders', async t => {

View file

@ -35,11 +35,11 @@ test('#1 Remove/Activate Add/Delete Label', async t => {
await t
.expect(PhotoTitle).contains('Beacon')
.expect(PhotoKeywords).contains('beacon')
.click(Selector('#tab-edit-labels'))
.click(Selector('#tab-labels'))
.click(Selector('button.action-remove'))
.typeText(Selector('.input-label input'), 'Test')
.click(Selector('button.p-photo-label-add'))
.click(Selector('#tab-edit-details'));
.click(Selector('#tab-details'));
const PhotoTitleAfterEdit = await (Selector('.input-title input').value);
const PhotoKeywordsAfterEdit = await (Selector('.input-keywords textarea').value);
await t
@ -57,10 +57,10 @@ test('#1 Remove/Activate Add/Delete Label', async t => {
await t
.click(Selector('div.p-label').withAttribute('data-uid', LabelTest))
.click(Selector('.action-title-edit').withAttribute('data-uid', PhotoBeacon))
.click(Selector('#tab-edit-labels'))
.click(Selector('#tab-labels'))
.click(Selector('.action-delete'))
.click(Selector('.action-on'))
.click(Selector('#tab-edit-details'));
.click(Selector('#tab-details'));
const PhotoTitleAfterUndo = await (Selector('.input-title input').value);
const PhotoKeywordsAfterUndo = await (Selector('.input-keywords textarea').value);
await t
@ -94,11 +94,11 @@ test('#2 Rename Label', async t => {
await t
.expect(FirstPhotoTitle).contains('Zebra')
.expect(FirstPhotoKeywords).contains('zebra')
.click(Selector('#tab-edit-labels'))
.click(Selector('#tab-labels'))
.click(Selector('div.p-inline-edit'))
.typeText(Selector('.input-rename input'), 'Horse', { replace: true })
.pressKey('enter')
.click(Selector('#tab-edit-details'));
.click(Selector('#tab-details'));
const FirstPhotoTitleAfterEdit = await (Selector('.input-title input').value);
const FirstPhotoKeywordsAfterEdit = await (Selector('.input-keywords textarea').value);
await t
@ -113,7 +113,7 @@ test('#2 Rename Label', async t => {
.click(Selector('div.p-label').withAttribute('data-uid', LabelZebra))
.expect(Selector('div').withAttribute('data-uid', SecondPhotoZebra).visible).ok()
.click(Selector('.action-title-edit').withAttribute('data-uid', FirstPhotoZebra))
.click(Selector('#tab-edit-labels'))
.click(Selector('#tab-labels'))
.click(Selector('div.p-inline-edit'))
.typeText(Selector('.input-rename input'), 'Zebra', { replace: true })
.pressKey('enter')
@ -145,14 +145,11 @@ test('#3 Add label to album', async t => {
.click('.p-navigation-labels');
await page.selectFromUID(LabelLandscape);
const clipboardCount = await Selector('span.t-clipboard-count');
const clipboardCount = await Selector('span.count-clipboard');
await t
.expect(clipboardCount.textContent).eql("1");
await page.addSelectedToAlbum('Christmas');
await t
.expect(clipboardCount.textContent).eql("1")
.click(Selector('button.p-label-clipboard-menu'))
.click(Selector('button.p-photo-clipboard-album'))
.typeText(Selector('.input-album input'), 'Christmas', { replace: true })
.click(Selector('div[role="listitem"]').withText('Christmas'))
.click(Selector('button.p-photo-dialog-confirm'))
.click(Selector('.p-navigation-albums'))
.click(Selector('div.p-album').withAttribute('data-uid', AlbumUid));
const PhotoCountAfterAdd = await Selector('div.p-photo').count;
@ -179,18 +176,16 @@ test('#4 Delete label', async t => {
await t
.click('.p-navigation-labels')
await page.selectFromUID(LabelDome);
const clipboardCount = await Selector('span.t-clipboard-count');
const clipboardCount = await Selector('span.count-clipboard');
await t
.expect(clipboardCount.textContent).eql("1")
.click(Selector('button.p-label-clipboard-menu'))
.click(Selector('button.p-label-clipboard-delete'))
.click(Selector('button.p-photo-dialog-confirm'));
.expect(clipboardCount.textContent).eql("1");
await page.deleteSelected();
await page.search('dome');
await t
.expect(Selector('h3').withText('No labels matched your search').visible).ok()
.click('.p-navigation-photos')
.click(Selector('.action-title-edit').withAttribute('data-uid', FirstPhotoDome))
.click(Selector('#tab-edit-labels'))
.click(Selector('#tab-labels'))
.expect(Selector('td').withText('No labels found').visible).ok()
.typeText(Selector('.input-label input'), 'Dome')
.click(Selector('button.p-photo-label-add'));

View file

@ -7,7 +7,7 @@ fixture `Test files`
const page = new Page();
test('#1 Add files to album', async t => {
test('#1 Add originals files to album', async t => {
await page.openNav();
await t.click(Selector('.p-navigation-albums'));
await t
@ -17,7 +17,7 @@ test('#1 Add files to album', async t => {
.expect(Selector('h3').innerText).eql('No albums matched your search');
await t
.click(Selector('div.p-navigation-library + div'))
.click(Selector('.p-navigation-files'))
.click(Selector('.p-navigation-originals'))
.click(Selector('button').withText('Vacation'));
const FirstItemInVacation = await Selector('div.v-card__title').nth(0).innerText;
const KanadaUid = await Selector('div.v-card__title').nth(0).getAttribute('data-uid');
@ -35,14 +35,11 @@ test('#1 Add files to album', async t => {
.click(Selector('button').withText('BotanicalGarden'))
.click(Selector('a[href="/library/files/Vacation"]'));
await page.selectFromUID(KanadaUid);
const clipboardCount = await Selector('span.t-clipboard-count');
const clipboardCount = await Selector('span.count-clipboard');
await t
.expect(clipboardCount.textContent).eql("1");
await page.addSelectedToAlbum('KanadaVacation');
await t
.expect(clipboardCount.textContent).eql("1")
.click(Selector('button.p-file-clipboard-menu'))
.click(Selector('button.p-file-clipboard-album'))
.typeText(Selector('.input-album input'), 'KanadaVacation', { replace: true })
.pressKey('enter')
.click(Selector('button.p-photo-dialog-confirm'))
.click(Selector('.p-navigation-albums'))
.typeText(Selector('.p-albums-search input'), 'KanadaVacation')
.pressKey('enter');
@ -54,20 +51,20 @@ test('#1 Add files to album', async t => {
.expect(PhotoCountAfterAdd).eql(2)
.click(Selector('.p-navigation-albums'));
await page.selectFromUID(AlbumUid);
await page.deleteSelectedAlbum();
await page.deleteSelected();
});
//TODO test download itself + clipboard count after download
test('#2 Download files', async t => {
test('#2 Download original files', async t => {
await page.openNav();
await t
.click(Selector('div.p-navigation-library + div'))
.click(Selector('.p-navigation-files'));
.click(Selector('.p-navigation-originals'));
const FirstFile = await Selector('div.p-file').nth(0).getAttribute('data-uid');
await page.selectFromUID(FirstFile);
const clipboardCount = await Selector('span.t-clipboard-count');
const clipboardCount = await Selector('span.count-clipboard');
await t
.expect(clipboardCount.textContent).eql("1")
.click(Selector('button.p-file-clipboard-menu'))
.expect(Selector('button.p-file-clipboard-download').visible).ok();
.click(Selector('button.action-menu'))
.expect(Selector('button.action-download').visible).ok();
});

View file

@ -91,47 +91,50 @@ export default class Page {
async archiveSelected() {
await t
.click(Selector('button.p-photo-clipboard-menu'))
.click(Selector('button.p-photo-clipboard-archive'))
.click(Selector('button.action-menu'))
.click(Selector('button.action-archive'))
.click(Selector('button.p-photo-dialog-confirm'));
}
async restoreSelected() {
await t
.click(Selector('button.p-photo-clipboard-menu'))
.click(Selector('button.p-photo-clipboard-restore'));
.click(Selector('button.action-menu'))
.click(Selector('button.action-restore'));
}
async editSelected() {
if (await Selector('button.p-photo-clipboard-edit').exists) {
await t.click(Selector('button.p-photo-clipboard-edit'));
} else if (await Selector('button.p-photo-clipboard-menu').exists) {
if (await Selector('button.action-edit').visible) {
await t.click(Selector('button.action-edit'));
} else if (await Selector('button.action-menu').exists) {
await t
.click(Selector('button.p-photo-clipboard-menu'))
.click(Selector('button.p-photo-clipboard-edit'));
.click(Selector('button.action-menu'))
.click(Selector('button.action-edit'));
}
}
async deleteSelectedAlbum() {
async deleteSelected() {
await t
.click(Selector('button.p-album-clipboard-menu'))
.click(Selector('button.p-album-clipboard-delete'))
.click(Selector('button.action-menu'))
.click(Selector('button.action-delete'))
.click(Selector('button.p-photo-dialog-confirm'));
}
async removeSelected() {
await t
.click(Selector('button.p-photo-clipboard-menu'))
.click(Selector('button.p-photo-clipboard-delete'));
.click(Selector('button.action-menu'))
.click(Selector('button.action-delete'));
}
async addSelectedToAlbum(name) {
await t
.click(Selector('button.p-photo-clipboard-menu'))
.click(Selector('button.p-photo-clipboard-album'))
.click(Selector('button.action-menu'))
.click(Selector('button.action-album'))
.typeText(Selector('.input-album input'), name, { replace: true })
.click(Selector('div[role="listitem"]').withText(name))
.click(Selector('button.p-photo-dialog-confirm'));
.pressKey('enter');
if (await Selector('div[role="listitem"]').withText(name).visible) {
await t.click(Selector('div[role="listitem"]').withText(name));
}
await t.click(Selector('button.p-photo-dialog-confirm'));
}
async login(password) {

View file

@ -55,14 +55,15 @@ test('#2 Download single photo/video and download zip using clipboard and fullsc
.click(Selector('.p-navigation-video'));
const FirstVideo = await Selector('div.p-photo').nth(0).getAttribute('data-uid');
await page.selectFromUID(FirstVideo);
const clipboardCount = await Selector('span.t-clipboard-count');
const clipboardCount = await Selector('span.count-clipboard');
await t
.expect(clipboardCount.textContent).eql("2")
.click(Selector('button.p-photo-clipboard-menu'))
.expect(Selector('button.p-photo-clipboard-download').visible).ok();
.click(Selector('button.action-menu'))
.expect(Selector('button.action-download').visible).ok();
});
//TODO add part for video as well
//TODO approve/archive from card view
test('#3 Approve photo using approve and by adding location', async t => {
await page.openNav();
await t
@ -74,7 +75,6 @@ test('#3 Approve photo using approve and by adding location', async t => {
const FirstPhoto = await Selector('div.p-photo').nth(0).getAttribute('data-uid');
const SecondPhoto = await Selector('div.p-photo').nth(1).getAttribute('data-uid');
logger.clear();
await t
.click(Selector('.p-navigation-photos'));
const request2 = await logger.requests[0].response.body;
@ -214,12 +214,12 @@ test('#5 Private/unprivate photo/video using clipboard and list', async t => {
.click(Selector('.p-navigation-photos'));
await page.selectFromUID(FirstPhoto);
await page.selectFromUID(SecondPhoto);
const clipboardCount = await Selector('span.t-clipboard-count');
const clipboardCount = await Selector('span.count-clipboard');
await t
.expect(clipboardCount.textContent).eql("2")
.click(Selector('button.p-photo-clipboard-menu'))
.click(Selector('button.p-photo-clipboard-private'))
.expect(Selector('button.p-photo-clipboard-menu').exists, {timeout: 5000}).notOk();
.click(Selector('button.action-menu'))
.click(Selector('button.action-private'))
.expect(Selector('button.action-menu').exists, {timeout: 5000}).notOk();
logger.clear();
await page.setFilter('view', 'List');
const request4 = await logger.requests[0].response.body;
@ -244,12 +244,12 @@ test('#5 Private/unprivate photo/video using clipboard and list', async t => {
logger.clear();
await page.selectFromUID(FirstVideo);
const clipboardCountVideo = await Selector('span.t-clipboard-count');
const clipboardCountVideo = await Selector('span.count-clipboard');
await t
.expect(clipboardCountVideo.textContent).eql("1")
.click(Selector('button.p-photo-clipboard-menu'))
.click(Selector('button.p-photo-clipboard-private'))
.expect(Selector('button.p-photo-clipboard-menu').exists, {timeout: 5000}).notOk();
.click(Selector('button.action-menu'))
.click(Selector('button.action-private'))
.expect(Selector('button.action-menu').exists, {timeout: 5000}).notOk();
logger.clear();
await t
.click(Selector('.action-reload'));
@ -271,8 +271,8 @@ test('#5 Private/unprivate photo/video using clipboard and list', async t => {
await page.selectFromUID(SecondPhoto);
await page.selectFromUID(FirstVideo);
await t
.click(Selector('button.p-photo-clipboard-menu'))
.click(Selector('button.p-photo-clipboard-private'));
.click(Selector('button.action-menu'))
.click(Selector('button.action-private'));
await page.setFilter('view', 'List');
await t
.click(Selector('button.p-photo-private').withAttribute('data-uid', ThirdPhoto))
@ -351,13 +351,13 @@ test('#6 Archive/restore video, photos, private photos and review photos using c
const request6 = await logger.requests[0].response.body;
logger.clear();
await page.selectFromUID(FirstVideo);
const clipboardCountVideo = await Selector('span.t-clipboard-count');
const clipboardCountVideo = await Selector('span.count-clipboard');
await t
.expect(clipboardCountVideo.textContent).eql("1");
await page.archiveSelected();
logger.clear();
await t
.expect(Selector('button.p-photo-clipboard-menu').exists, {timeout: 5000}).notOk()
.expect(Selector('button.action-menu').exists, {timeout: 5000}).notOk()
.click(Selector('.action-reload'));
const request7 = await logger.requests[0].response.body;
logger.clear();
@ -369,13 +369,13 @@ test('#6 Archive/restore video, photos, private photos and review photos using c
logger.clear();
await page.selectFromUID(FirstPhoto);
await page.selectFromUID(SecondPhoto);
const clipboardCountPhotos = await Selector('span.t-clipboard-count');
const clipboardCountPhotos = await Selector('span.count-clipboard');
await t
.expect(clipboardCountPhotos.textContent).eql("2");
await page.archiveSelected();
logger.clear();
await t
.expect(Selector('button.p-photo-clipboard-menu').exists, {timeout: 5000}).notOk()
.expect(Selector('button.action-menu').exists, {timeout: 5000}).notOk()
.click(Selector('.action-reload'));
const request9 = await logger.requests[0].response.body;
logger.clear();
@ -387,7 +387,7 @@ test('#6 Archive/restore video, photos, private photos and review photos using c
const request10 = await logger.requests[0].response.body;
logger.clear();
await page.selectFromUID(FirstPrivatePhoto);
const clipboardCountPrivate = await Selector('span.t-clipboard-count');
const clipboardCountPrivate = await Selector('span.count-clipboard');
await t
.expect(clipboardCountPrivate.textContent).eql("1");
await t
@ -396,13 +396,13 @@ test('#6 Archive/restore video, photos, private photos and review photos using c
const request11 = await logger.requests[0].response.body;
logger.clear();
await page.selectFromUID(FirstReviewPhoto);
const clipboardCountReview = await Selector('span.t-clipboard-count');
const clipboardCountReview = await Selector('span.count-clipboard');
await t
.expect(clipboardCountReview.textContent).eql("2");
await page.archiveSelected();
logger.clear();
await t
.expect(Selector('button.p-photo-clipboard-menu').exists, {timeout: 5000}).notOk()
.expect(Selector('button.action-menu').exists, {timeout: 5000}).notOk()
.click(Selector('.action-reload'));
const request12 = await logger.requests[0].response.body;
logger.clear();
@ -423,13 +423,13 @@ test('#6 Archive/restore video, photos, private photos and review photos using c
await page.selectFromUID(FirstVideo);
await page.selectFromUID(FirstPrivatePhoto);
await page.selectFromUID(FirstReviewPhoto);
const clipboardCountArchive = await Selector('span.t-clipboard-count');
const clipboardCountArchive = await Selector('span.count-clipboard');
await t
.expect(clipboardCountArchive.textContent).eql("5");
await page.restoreSelected();
logger.clear();
await t
.expect(Selector('button.p-photo-clipboard-menu').exists, {timeout: 5000}).notOk()
.expect(Selector('button.action-menu').exists, {timeout: 5000}).notOk()
.click(Selector('.action-reload'));
const request14 = await logger.requests[0].response.body;
await t
@ -508,7 +508,7 @@ test('#7 Edit photo/video', async t => {
const FirstPhotoLatitude = await (Selector('.input-latitude input').value);
const FirstPhotoLongitude = await (Selector('.input-longitude input').value);
const FirstPhotoAltitude = await (Selector('.input-altitude input').value);
const FirstPhotoCountry = await (Selector('.input-country div.v-select__selection').innerText);
const FirstPhotoCountry = await (Selector('.input-country').innerText);
const FirstPhotoCamera = await (Selector('div.p-camera-select div.v-select__selection').innerText);
const FirstPhotoIso = await (Selector('.input-iso input').value);
const FirstPhotoExposure = await (Selector('.input-exposure input').value);
@ -713,11 +713,11 @@ test('#7 Edit photo/video', async t => {
{await t.typeText(Selector('.input-notes textarea'), FirstPhotoNotes, { replace: true })}
await t
.click(Selector('button.action-ok'));
const clipboardCount = await Selector('span.t-clipboard-count');
const clipboardCount = await Selector('span.count-clipboard');
await t
.expect(clipboardCount.textContent).eql("1")
.click(Selector('.p-photo-clipboard-clear'))
.expect(Selector('button.p-photo-clipboard-menu').exists, {timeout: 5000}).notOk();
.click(Selector('.action-clear'))
.expect(Selector('button.action-menu').exists, {timeout: 5000}).notOk();
logger.clear();
await t
.click(Selector('.action-reload'));
@ -740,7 +740,7 @@ test('#8 Change primary file', async t => {
.click(Selector('.action-close'));
await t
.click(Selector('button.action-title-edit').withAttribute('data-uid', SequentialPhoto))
.click(Selector('#tab-edit-files'))
.click(Selector('#tab-files'))
.expect(Selector('i').withText('radio_button_unchecked').visible, {timeout: 5000}).ok()
.expect(Selector('i').withText('radio_button_checked').visible, {timeout: 5000}).ok()
.click(Selector('i').withText('radio_button_unchecked'))
@ -755,5 +755,5 @@ test('#9 Navigate from card view to place', async t => {
.click(Selector('button.action-location').nth(0))
.expect(Selector('#map').exists, {timeout: 15000}).ok()
.expect(Selector('div.p-map-control').visible).ok()
.expect(Selector('.input-search input').value).contains('s2');
.expect(Selector('.input-search input').value).notEql('');
});

View file

@ -17,11 +17,11 @@ test('#1 Settings', async t => {
.expect(Selector('.p-navigation-photos').innerText).contains('Photos');
await page.selectNthPhoto(0);
await t
.click(Selector('button.p-photo-clipboard-menu'))
.expect(Selector('button.p-photo-clipboard-download').visible).ok()
.expect(Selector('button.p-photo-clipboard-share').visible).ok()
.expect(Selector('button.p-photo-clipboard-edit').visible).ok()
.expect(Selector('button.p-photo-clipboard-private').visible).ok();
.click(Selector('button.action-menu'))
.expect(Selector('button.action-download').visible).ok()
.expect(Selector('button.action-share').visible).ok()
.expect(Selector('button.action-edit').visible).ok()
.expect(Selector('button.action-private').visible).ok();
await page.unselectPhoto(0);
await t
.click(Selector('div.p-photo').nth(0));
@ -32,9 +32,9 @@ test('#1 Settings', async t => {
.expect(Selector('button.action-location').visible).ok()
.click(Selector('button.action-title-edit').nth(0))
.expect(Selector('.input-title input').hasAttribute('disabled')).notOk()
.click(Selector('#tab-edit-labels'))
.click(Selector('#tab-labels'))
.expect(Selector('button.p-photo-label-add').visible).ok()
.click(Selector('#tab-edit-details'))
.click(Selector('#tab-details'))
.click(Selector('button.action-close'))
.click(Selector('.p-navigation-library'))
.expect(Selector('#tab-import a').visible).ok()
@ -43,7 +43,7 @@ test('#1 Settings', async t => {
.expect(Selector('.p-navigation-archive').visible).ok()
.expect(Selector('.p-navigation-review').visible).ok()
.click(Selector('div.p-navigation-library + div'))
.expect(Selector('.p-navigation-files').visible).ok()
.expect(Selector('.p-navigation-originals').visible).ok()
.click(Selector('div.p-navigation-albums + div'))
.expect(Selector('.p-navigation-folders').visible).ok()
.expect(Selector('.p-navigation-moments').visible).ok()
@ -79,11 +79,11 @@ test('#1 Settings', async t => {
.expect(Selector('.p-navigation-photos').innerText).contains('Fotos');
await page.selectNthPhoto(0);
await t
.click(Selector('button.p-photo-clipboard-menu'))
.expect(Selector('button.p-photo-clipboard-download').exists).notOk()
.expect(Selector('button.p-photo-clipboard-share').exists).notOk()
.expect(Selector('button.p-photo-clipboard-edit').exists).notOk()
.expect(Selector('button.p-photo-clipboard-private').exists).notOk();
.click(Selector('button.action-menu'))
.expect(Selector('button.action-download').exists).notOk()
.expect(Selector('button.action-share').exists).notOk()
.expect(Selector('button.action-edit').visible).notOk()
.expect(Selector('button.action-private').exists).notOk();
await page.unselectPhoto(0);
await t
.click(Selector('div.p-photo').nth(0));
@ -99,9 +99,9 @@ test('#1 Settings', async t => {
.expect(Selector('.input-country input').hasAttribute('disabled')).ok()
.expect(Selector('.input-description textarea').hasAttribute('disabled')).ok()
.expect(Selector('.input-keywords textarea').hasAttribute('disabled')).ok()
.click(Selector('#tab-edit-labels'))
.click(Selector('#tab-labels'))
.expect(Selector('button.p-photo-label-add').exists).notOk()
.click(Selector('#tab-edit-details'))
.click(Selector('#tab-details'))
.click(Selector('button.action-close'))
.click(Selector('.p-navigation-library'))
.expect(Selector('#tab-import a').exists).notOk()
@ -110,7 +110,7 @@ test('#1 Settings', async t => {
.expect(Selector('.p-navigation-archive').visible).notOk()
.expect(Selector('.p-navigation-review').exists).notOk()
.click(Selector('div.p-navigation-library + div'))
.expect(Selector('.p-navigation-files').visible).notOk()
.expect(Selector('.p-navigation-originals').visible).notOk()
.click(Selector('div.p-navigation-albums + div'))
.expect(Selector('.p-navigation-moments').visible).notOk()
.expect(Selector('.p-navigation-labels').visible).notOk()