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; browser: Browser; }; export const test = base.extend({ 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 => { 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';