From 865aaa3f8588841b6ab80edaf4f67ad5a42f8e3e Mon Sep 17 00:00:00 2001 From: Jannis Mattheis Date: Sun, 21 Oct 2018 15:41:01 +0200 Subject: [PATCH] Make messages test less flaky --- ui/src/tests/message.test.ts | 22 ++++++++++++---------- ui/src/tests/utils.ts | 10 ++++++++++ 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/ui/src/tests/message.test.ts b/ui/src/tests/message.test.ts index b942cc7..190b431 100644 --- a/ui/src/tests/message.test.ts +++ b/ui/src/tests/message.test.ts @@ -1,7 +1,7 @@ // todo before all tests jest start puppeteer import {Page} from 'puppeteer'; import {newTest, GotifyTest} from './setup'; -import {clickByText, count, innerText, waitForExists} from './utils'; +import {clickByText, count, innerText, waitForCount, waitForExists} from './utils'; import * as auth from './authentication'; import * as selector from './selector'; import axios from 'axios'; @@ -91,7 +91,8 @@ describe('Messages', () => { await navigate('All Messages'); }); - const extractMessages = async () => { + const extractMessages = async (expectCount: number) => { + await waitForCount(page, '#messages .message', expectCount); const messages = await page.$$(`#messages .message`); const result: Msg[] = []; for (const item of messages) { @@ -128,27 +129,27 @@ describe('Messages', () => { backup: Msg[]; }) => { await navigate('All Messages'); - expect(await extractMessages()).toEqual(toCheck.all); + expect(await extractMessages(toCheck.all.length)).toEqual(toCheck.all); await navigate('Windows'); - expect(await extractMessages()).toEqual(toCheck.windows); + expect(await extractMessages(toCheck.windows.length)).toEqual(toCheck.windows); await navigate('Linux'); - expect(await extractMessages()).toEqual(toCheck.linux); + expect(await extractMessages(toCheck.linux.length)).toEqual(toCheck.linux); await navigate('Backup'); - expect(await extractMessages()).toEqual(toCheck.backup); + expect(await extractMessages(toCheck.backup.length)).toEqual(toCheck.backup); await navigate('All Messages'); }; it('create a message', async () => { await createMessage(windows1, windowsServerToken); - expect(await extractMessages()).toEqual([windows1]); + expect(await extractMessages(1)).toEqual([windows1]); }); it('has one message in windows app', async () => { await navigate('Windows'); - expect(await extractMessages()).toEqual([windows1]); + expect(await extractMessages(1)).toEqual([windows1]); }); it('has no message in linux app', async () => { await navigate('Linux'); - expect(await extractMessages()).toEqual([]); + expect(await extractMessages(0)).toEqual([]); await navigate('All Messages'); }); describe('add some messages', () => { @@ -262,7 +263,8 @@ describe('Messages', () => { await page.click('#delete-all'); await navigate('All Messages'); await createMessage(backup3, backupServerToken); - expect(await extractMessages()).toEqual([backup3]); + await waitForExists(page, '.message .title', backup3.title); + expect(await extractMessages(1)).toEqual([backup3]); }); it('does logout', async () => await auth.logout(page)); }); diff --git a/ui/src/tests/utils.ts b/ui/src/tests/utils.ts index 7d1dfba..e9c0c02 100644 --- a/ui/src/tests/utils.ts +++ b/ui/src/tests/utils.ts @@ -33,6 +33,16 @@ export const waitToDisappear = async (page: Page, selector: string): Promise => { + return page.waitForFunction( + (_selector: string, _amount: number) => + document.querySelectorAll(_selector).length === _amount, + {}, + selector, + amount + ); +}; + export const waitForExists = async (page: Page, selector: string, text: string): Promise => { text = text.toLowerCase(); await page.waitForFunction(