f7cloud_client/apps/whiteboard/playwright/support/fixtures/random-user.ts
root 8b6a0139db f7cloud_client
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-17 22:59:26 +00:00

44 lines
1.0 KiB
TypeScript

/**
* SPDX-FileCopyrightText: 2024 Ferdinand Thiessen <opensource@fthiessen.de>
* 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<RandomUserFixture>({
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()
},
})