chore: update integration tests to use generic open and close function
parent
a551d4d7cc
commit
52291ff524
@ -1,70 +1,63 @@
|
|||||||
import { _electron, test } from '@playwright/test';
|
// FIXME enable this test again once we fixed it
|
||||||
import { beforeAllClean } from './setup/beforeEach';
|
// sessionTestFiveWindows(
|
||||||
import { sendNewMessage } from './utilities/send_message';
|
// 'Group upkeep - should be skipped',
|
||||||
import { logIn } from './setup/log_in';
|
// async ([windowA, windowB, windowC, windowD, windowE]) => {
|
||||||
import { userA, userB, userC, userD, userE } from './setup/test_user';
|
// await Promise.all([
|
||||||
import { openApp } from './setup/open';
|
// logIn(windowA, userA.recoveryPhrase),
|
||||||
|
// logIn(windowB, userB.recoveryPhrase),
|
||||||
|
// logIn(windowC, userC.recoveryPhrase),
|
||||||
|
// logIn(windowD, userD.recoveryPhrase),
|
||||||
|
// logIn(windowE, userE.recoveryPhrase),
|
||||||
|
// ]);
|
||||||
|
// // Send message from test users to all of it's contacts to maintain contact status
|
||||||
|
|
||||||
test.beforeEach(beforeAllClean);
|
// // Send message from user A to Whale(TC1)
|
||||||
|
// await sendNewMessage(
|
||||||
test.skip('Group upkeep', async () => {
|
// windowA,
|
||||||
const [windowA, windowB, windowC, windowD, windowE] = await openApp(5);
|
// userB.sessionid,
|
||||||
|
// `${userA.userName} -> ${userB.userName}: ${Date.now()}`
|
||||||
await Promise.all([
|
// );
|
||||||
logIn(windowA, userA.recoveryPhrase),
|
// // Send message from Whale to user A
|
||||||
logIn(windowB, userB.recoveryPhrase),
|
// await sendNewMessage(
|
||||||
logIn(windowC, userC.recoveryPhrase),
|
// windowB,
|
||||||
logIn(windowD, userD.recoveryPhrase),
|
// userA.sessionid,
|
||||||
logIn(windowE, userE.recoveryPhrase),
|
// `${userB.userName} -> ${userA.userName} : ${Date.now()}`
|
||||||
]);
|
// );
|
||||||
// Send message from test users to all of it's contacts to maintain contact status
|
// // Send message from user A to Dragon(TC2)
|
||||||
|
// await sendNewMessage(
|
||||||
// Send message from user A to Whale(TC1)
|
// windowA,
|
||||||
await sendNewMessage(
|
// userC.sessionid,
|
||||||
windowA,
|
// `${userA.userName} -> ${userC.userName}: ${Date.now()}`
|
||||||
userB.sessionid,
|
// );
|
||||||
`${userA.userName} -> ${userB.userName}: ${Date.now()}`
|
// // Send message from Dragon to user A
|
||||||
);
|
// await sendNewMessage(
|
||||||
// Send message from Whale to user A
|
// windowC,
|
||||||
await sendNewMessage(
|
// userA.sessionid,
|
||||||
windowB,
|
// `${userC.userName} -> ${userA.userName} : ${Date.now()}`
|
||||||
userA.sessionid,
|
// );
|
||||||
`${userB.userName} -> ${userA.userName} : ${Date.now()}`
|
// // Send message from user A to Fish(TC3)
|
||||||
);
|
// await sendNewMessage(
|
||||||
// Send message from user A to Dragon(TC2)
|
// windowA,
|
||||||
await sendNewMessage(
|
// userD.sessionid,
|
||||||
windowA,
|
// `${userA.userName} -> ${userD.userName}: ${Date.now()}`
|
||||||
userC.sessionid,
|
// );
|
||||||
`${userA.userName} -> ${userC.userName}: ${Date.now()}`
|
// // Send message from Fish to user A
|
||||||
);
|
// await sendNewMessage(
|
||||||
// Send message from Dragon to user A
|
// windowD,
|
||||||
await sendNewMessage(
|
// userA.sessionid,
|
||||||
windowC,
|
// `${userD.userName} -> ${userA.userName} : ${Date.now()}`
|
||||||
userA.sessionid,
|
// );
|
||||||
`${userC.userName} -> ${userA.userName} : ${Date.now()}`
|
// // Send message from user A to Gopher(TC4)
|
||||||
);
|
// await sendNewMessage(
|
||||||
// Send message from user A to Fish(TC3)
|
// windowA,
|
||||||
await sendNewMessage(
|
// userE.sessionid,
|
||||||
windowA,
|
// `${userA.userName} -> ${userD.userName}: ${Date.now()}`
|
||||||
userD.sessionid,
|
// );
|
||||||
`${userA.userName} -> ${userD.userName}: ${Date.now()}`
|
// // Send message from Gopher to user A
|
||||||
);
|
// await sendNewMessage(
|
||||||
// Send message from Fish to user A
|
// windowE,
|
||||||
await sendNewMessage(
|
// userA.sessionid,
|
||||||
windowD,
|
// `${userD.userName} -> ${userA.userName} : ${Date.now()}`
|
||||||
userA.sessionid,
|
// );
|
||||||
`${userD.userName} -> ${userA.userName} : ${Date.now()}`
|
// }
|
||||||
);
|
// );
|
||||||
// Send message from user A to Gopher(TC4)
|
|
||||||
await sendNewMessage(
|
|
||||||
windowA,
|
|
||||||
userE.sessionid,
|
|
||||||
`${userA.userName} -> ${userD.userName}: ${Date.now()}`
|
|
||||||
);
|
|
||||||
// Send message from Gopher to user A
|
|
||||||
await sendNewMessage(
|
|
||||||
windowE,
|
|
||||||
userA.sessionid,
|
|
||||||
`${userD.userName} -> ${userA.userName} : ${Date.now()}`
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
@ -0,0 +1,81 @@
|
|||||||
|
import { Page, test } from '@playwright/test';
|
||||||
|
import { beforeAllClean, forceCloseAllWindows } from './beforeEach';
|
||||||
|
import { openApp } from './open';
|
||||||
|
|
||||||
|
// This is not ideal, most of our test needs to open a specific number of windows and close them once the test is done or failed.
|
||||||
|
// This file contains a bunch of utility function to use to open those windows and clean them afterwards.
|
||||||
|
// Note: those function only keep track (and close) the windows they open. If you open a new window or need to close and reopen an existing one, this won't take of it.
|
||||||
|
|
||||||
|
type Tuple<T, N extends number> = N extends N
|
||||||
|
? number extends N
|
||||||
|
? T[]
|
||||||
|
: _TupleOf<T, N, []>
|
||||||
|
: never;
|
||||||
|
type _TupleOf<T, N extends number, R extends unknown[]> = R['length'] extends N
|
||||||
|
? R
|
||||||
|
: _TupleOf<T, N, [T, ...R]>;
|
||||||
|
|
||||||
|
type CountWindows = 1 | 2 | 3 | 4 | 5;
|
||||||
|
|
||||||
|
async function sessionTest<T extends CountWindows, N extends Tuple<Page, T>>(
|
||||||
|
testName: string,
|
||||||
|
testCallback: (windows: N) => Promise<void>,
|
||||||
|
count: T
|
||||||
|
) {
|
||||||
|
return test(testName, async () => {
|
||||||
|
beforeAllClean();
|
||||||
|
const windows = await openApp(count);
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (windows.length !== count) {
|
||||||
|
throw new Error(`openApp should have opened ${count} windows but did not.`);
|
||||||
|
}
|
||||||
|
await testCallback(windows as N);
|
||||||
|
} catch (e) {
|
||||||
|
throw e;
|
||||||
|
} finally {
|
||||||
|
try {
|
||||||
|
await forceCloseAllWindows(windows);
|
||||||
|
} catch (e) {
|
||||||
|
console.error(`forceCloseAllWindows of ${testName} failed with: `, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function sessionTestOneWindow(
|
||||||
|
testName: string,
|
||||||
|
testCallback: (windows: Tuple<Page, 1>) => Promise<void>
|
||||||
|
) {
|
||||||
|
return sessionTest(testName, testCallback, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function sessionTestTwoWindows(
|
||||||
|
testName: string,
|
||||||
|
testCallback: ([windowA, windowB]: [Page, Page]) => Promise<void>
|
||||||
|
) {
|
||||||
|
return sessionTest(testName, testCallback, 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function sessionTestThreeWindows(
|
||||||
|
testName: string,
|
||||||
|
testCallback: ([windowA, windowB, windowC]: [Page, Page, Page]) => Promise<void>
|
||||||
|
) {
|
||||||
|
return sessionTest(testName, testCallback, 3);
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function sessionTestFourWindows(
|
||||||
|
testName: string,
|
||||||
|
testCallback: ([windowA, windowB, windowC, windowD]: [Page, Page, Page, Page]) => Promise<void>
|
||||||
|
) {
|
||||||
|
return sessionTest(testName, testCallback, 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function sessionTestFiveWindows(
|
||||||
|
testName: string,
|
||||||
|
testCallback: ([windowA, windowB, windowC, windowD]: [Page, Page, Page, Page, Page]) => Promise<
|
||||||
|
void
|
||||||
|
>
|
||||||
|
) {
|
||||||
|
return sessionTest(testName, testCallback, 5);
|
||||||
|
}
|
@ -1,11 +1,6 @@
|
|||||||
import { test } from '@playwright/test';
|
|
||||||
import { beforeAllClean } from './setup/beforeEach';
|
|
||||||
import { openApp } from './setup/open';
|
|
||||||
import { clickOnMatchingText } from './utilities/utils';
|
import { clickOnMatchingText } from './utilities/utils';
|
||||||
|
import { sessionTestOneWindow } from './setup/sessionTest';
|
||||||
|
|
||||||
test.beforeEach(beforeAllClean);
|
sessionTestOneWindow('Tiny test', async ([windowA]) => {
|
||||||
|
|
||||||
test('Tiny test', async () => {
|
|
||||||
const [windowA] = await openApp(1);
|
|
||||||
await clickOnMatchingText(windowA, 'Create Session ID');
|
await clickOnMatchingText(windowA, 'Create Session ID');
|
||||||
});
|
});
|
||||||
|
@ -1 +0,0 @@
|
|||||||
//
|
|
Loading…
Reference in New Issue