diff --git a/src/Web/StellaOps.Web/tests/e2e/integrations/live-auth.fixture.ts b/src/Web/StellaOps.Web/tests/e2e/integrations/live-auth.fixture.ts index fa089049f..84e9659e7 100644 --- a/src/Web/StellaOps.Web/tests/e2e/integrations/live-auth.fixture.ts +++ b/src/Web/StellaOps.Web/tests/e2e/integrations/live-auth.fixture.ts @@ -94,28 +94,28 @@ async function loginAndGetToken(page: Page): Promise { throw new Error('Login failed: could not extract auth token'); } -export const test = base.extend<{ +// Test-scoped fixtures (fresh per test) +type TestFixtures = { liveAuthPage: Page; +}; + +// Worker-scoped fixtures (shared across all tests in a worker) +type WorkerFixtures = { apiToken: string; apiRequest: APIRequestContext; -}>({ - liveAuthPage: async ({ browser }, use) => { - const context = await browser.newContext({ ignoreHTTPSErrors: true }); - const page = await context.newPage(); - await loginAndGetToken(page); - await use(page); - await context.close(); - }, +}; - apiToken: async ({ browser }, use) => { +export const test = base.extend({ + // Worker-scoped: login ONCE per worker, reuse token for all tests + apiToken: [async ({ browser }, use) => { const context = await browser.newContext({ ignoreHTTPSErrors: true }); const page = await context.newPage(); const token = await loginAndGetToken(page); await use(token); await context.close(); - }, + }, { scope: 'worker' }], - apiRequest: async ({ playwright, apiToken }, use) => { + apiRequest: [async ({ playwright, apiToken }, use) => { const ctx = await playwright.request.newContext({ baseURL: BASE_URL, extraHTTPHeaders: { @@ -126,6 +126,15 @@ export const test = base.extend<{ }); await use(ctx); await ctx.dispose(); + }, { scope: 'worker' }], + + // Test-scoped: each UI test gets a fresh authenticated page + liveAuthPage: async ({ browser }, use) => { + const context = await browser.newContext({ ignoreHTTPSErrors: true }); + const page = await context.newPage(); + await loginAndGetToken(page); + await use(page); + await context.close(); }, });