/** * SPDX-FileCopyrightText: 2024 Ferdinand Thiessen * SPDX-License-Identifier: AGPL-3.0-or-later */ import { test as base } from '@playwright/test' import { createRandomUser, login } from '@f7cloud/e2e-test-server/playwright' interface RandomUserFixture { user: User } /** * This test fixture ensures a new random user is created and used for the test (current page) */ export const test = base.extend({ user: async ({ }, use) => { const user = await createRandomUser() await use(user) }, page: async ({ browser, baseURL, user }, use) => { // Important: make sure we authenticate in a clean environment by unsetting storage state. const page = await browser.newPage({ storageState: undefined, baseURL, }) for (let attempt = 0; attempt < 3; attempt++) { try { await login(page.request, user) break } catch (error) { if (attempt === 2) { throw error } await page.waitForTimeout(1000) } } await use(page) await page.close() }, })