Make messages test less flaky
This commit is contained in:
parent
c08a9f3814
commit
865aaa3f85
|
|
@ -1,7 +1,7 @@
|
||||||
// todo before all tests jest start puppeteer
|
// todo before all tests jest start puppeteer
|
||||||
import {Page} from 'puppeteer';
|
import {Page} from 'puppeteer';
|
||||||
import {newTest, GotifyTest} from './setup';
|
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 auth from './authentication';
|
||||||
import * as selector from './selector';
|
import * as selector from './selector';
|
||||||
import axios from 'axios';
|
import axios from 'axios';
|
||||||
|
|
@ -91,7 +91,8 @@ describe('Messages', () => {
|
||||||
await navigate('All 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 messages = await page.$$(`#messages .message`);
|
||||||
const result: Msg[] = [];
|
const result: Msg[] = [];
|
||||||
for (const item of messages) {
|
for (const item of messages) {
|
||||||
|
|
@ -128,27 +129,27 @@ describe('Messages', () => {
|
||||||
backup: Msg[];
|
backup: Msg[];
|
||||||
}) => {
|
}) => {
|
||||||
await navigate('All Messages');
|
await navigate('All Messages');
|
||||||
expect(await extractMessages()).toEqual(toCheck.all);
|
expect(await extractMessages(toCheck.all.length)).toEqual(toCheck.all);
|
||||||
await navigate('Windows');
|
await navigate('Windows');
|
||||||
expect(await extractMessages()).toEqual(toCheck.windows);
|
expect(await extractMessages(toCheck.windows.length)).toEqual(toCheck.windows);
|
||||||
await navigate('Linux');
|
await navigate('Linux');
|
||||||
expect(await extractMessages()).toEqual(toCheck.linux);
|
expect(await extractMessages(toCheck.linux.length)).toEqual(toCheck.linux);
|
||||||
await navigate('Backup');
|
await navigate('Backup');
|
||||||
expect(await extractMessages()).toEqual(toCheck.backup);
|
expect(await extractMessages(toCheck.backup.length)).toEqual(toCheck.backup);
|
||||||
await navigate('All Messages');
|
await navigate('All Messages');
|
||||||
};
|
};
|
||||||
|
|
||||||
it('create a message', async () => {
|
it('create a message', async () => {
|
||||||
await createMessage(windows1, windowsServerToken);
|
await createMessage(windows1, windowsServerToken);
|
||||||
expect(await extractMessages()).toEqual([windows1]);
|
expect(await extractMessages(1)).toEqual([windows1]);
|
||||||
});
|
});
|
||||||
it('has one message in windows app', async () => {
|
it('has one message in windows app', async () => {
|
||||||
await navigate('Windows');
|
await navigate('Windows');
|
||||||
expect(await extractMessages()).toEqual([windows1]);
|
expect(await extractMessages(1)).toEqual([windows1]);
|
||||||
});
|
});
|
||||||
it('has no message in linux app', async () => {
|
it('has no message in linux app', async () => {
|
||||||
await navigate('Linux');
|
await navigate('Linux');
|
||||||
expect(await extractMessages()).toEqual([]);
|
expect(await extractMessages(0)).toEqual([]);
|
||||||
await navigate('All Messages');
|
await navigate('All Messages');
|
||||||
});
|
});
|
||||||
describe('add some messages', () => {
|
describe('add some messages', () => {
|
||||||
|
|
@ -262,7 +263,8 @@ describe('Messages', () => {
|
||||||
await page.click('#delete-all');
|
await page.click('#delete-all');
|
||||||
await navigate('All Messages');
|
await navigate('All Messages');
|
||||||
await createMessage(backup3, backupServerToken);
|
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));
|
it('does logout', async () => await auth.logout(page));
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,16 @@ export const waitToDisappear = async (page: Page, selector: string): Promise<voi
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const waitForCount = async (page: Page, selector: string, amount: number): Promise<void> => {
|
||||||
|
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<void> => {
|
export const waitForExists = async (page: Page, selector: string, text: string): Promise<void> => {
|
||||||
text = text.toLowerCase();
|
text = text.toLowerCase();
|
||||||
await page.waitForFunction(
|
await page.waitForFunction(
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue