Some checks failed
Queue Release Build / prepare (push) Successful in 17s
Deploy Web Apps / deploy (push) Has started running
Queue Release Build / build-windows (push) Has been cancelled
Queue Release Build / finalize (push) Has been cancelled
Queue Release Build / build-linux (push) Has been cancelled
58 lines
1.2 KiB
TypeScript
58 lines
1.2 KiB
TypeScript
import {
|
|
test as base,
|
|
chromium,
|
|
type Page,
|
|
type BrowserContext,
|
|
type Browser
|
|
} from '@playwright/test';
|
|
import { installTestServerEndpoint } from '../helpers/seed-test-endpoint';
|
|
|
|
export type Client = {
|
|
page: Page;
|
|
context: BrowserContext;
|
|
};
|
|
|
|
type MultiClientFixture = {
|
|
createClient: () => Promise<Client>;
|
|
browser: Browser;
|
|
};
|
|
|
|
export const test = base.extend<MultiClientFixture>({
|
|
browser: async ({}, use) => {
|
|
const browser = await chromium.launch({
|
|
args: [
|
|
'--use-fake-device-for-media-stream',
|
|
'--use-fake-ui-for-media-stream',
|
|
],
|
|
});
|
|
await use(browser);
|
|
await browser.close();
|
|
},
|
|
|
|
createClient: async ({ browser }, use) => {
|
|
const clients: Client[] = [];
|
|
|
|
const factory = async (): Promise<Client> => {
|
|
const context = await browser.newContext({
|
|
permissions: ['microphone', 'camera'],
|
|
baseURL: 'http://localhost:4200'
|
|
});
|
|
|
|
await installTestServerEndpoint(context);
|
|
|
|
const page = await context.newPage();
|
|
|
|
clients.push({ page, context });
|
|
return { page, context };
|
|
};
|
|
|
|
await use(factory);
|
|
|
|
for (const client of clients) {
|
|
await client.context.close();
|
|
}
|
|
},
|
|
});
|
|
|
|
export { expect } from '@playwright/test';
|