diff --git a/tests/core/multi-component-workflows.spec.ts b/tests/core/multi-component-workflows.spec.ts index 99e543ae..0eb5c06f 100644 --- a/tests/core/multi-component-workflows.spec.ts +++ b/tests/core/multi-component-workflows.spec.ts @@ -23,7 +23,10 @@ async function resetSecurityState(page: import('@playwright/test').Page): Promis expect(response.ok()).toBe(true); } -async function getAuthToken(page: import('@playwright/test').Page): Promise { +async function getAuthToken( + page: import('@playwright/test').Page, + options: { required?: boolean } = {} +): Promise { const token = await page.evaluate(() => { return ( localStorage.getItem('token') || @@ -33,7 +36,9 @@ async function getAuthToken(page: import('@playwright/test').Page): Promise { await resetSecurityState(page); await loginUser(page, adminUser); await waitForLoadingComplete(page, { timeout: 15000 }); - const meResponse = await page.request.get('/api/v1/auth/me'); + let token = adminUser.token; + let meResponse = await page.request.get('/api/v1/auth/me', { + headers: { Authorization: `Bearer ${token}` }, + }); + + if (!meResponse.ok()) { + await loginUser(page, adminUser); + await waitForLoadingComplete(page, { timeout: 15000 }); + token = adminUser.token; + meResponse = await page.request.get('/api/v1/auth/me', { + headers: { Authorization: `Bearer ${token}` }, + }); + } + expect(meResponse.ok()).toBe(true); + + await expect.poll(async () => { + const meResponse = await page.request.get('/api/v1/auth/me', { + headers: { Authorization: `Bearer ${token}` }, + }); + return meResponse.status(); + }, { + timeout: 10000, + message: 'Expected authenticated /api/v1/auth/me status to stabilize at 200', + }).toBe(200); }); test.afterEach(async ({ page }) => {