Merges the full git history of Inventory_frontend into the monorepo under frontend/. Removes the submodule in favor of a unified repo. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
36 lines
1.2 KiB
TypeScript
36 lines
1.2 KiB
TypeScript
import { test as setup, expect } from '@playwright/test'
|
|
|
|
const AUTH_FILE = 'e2e/.auth/session.json'
|
|
|
|
/**
|
|
* Authentication setup: selects the first available profile
|
|
* to establish a session cookie before running any test.
|
|
*
|
|
* The app uses a profile-based session system:
|
|
* - GET /api/session/profiles → list available profiles
|
|
* - POST /api/session/profile → activate a profile (sets cookie)
|
|
*
|
|
* The global middleware (profile.global.ts) redirects to /profiles
|
|
* if no active profile is found.
|
|
*/
|
|
setup('select a profile to authenticate', async ({ page }) => {
|
|
// Go to the profiles page
|
|
await page.goto('/profiles')
|
|
|
|
// Wait for profiles to load
|
|
await expect(page.getByRole('heading', { name: 'Choisir un profil' })).toBeVisible({ timeout: 15_000 })
|
|
|
|
// Wait for at least one profile button to appear
|
|
const profileButton = page.locator('button.btn-outline').first()
|
|
await expect(profileButton).toBeVisible({ timeout: 10_000 })
|
|
|
|
// Click the first available profile
|
|
await profileButton.click()
|
|
|
|
// Wait for redirect to home page (profile selected → session cookie set)
|
|
await page.waitForURL('/', { timeout: 10_000 })
|
|
|
|
// Save authenticated state (cookies + localStorage)
|
|
await page.context().storageState({ path: AUTH_FILE })
|
|
})
|