refactor : merge Inventory_frontend submodule into frontend/ directory
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>
This commit is contained in:
35
frontend/e2e/auth.setup.ts
Normal file
35
frontend/e2e/auth.setup.ts
Normal file
@@ -0,0 +1,35 @@
|
||||
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 })
|
||||
})
|
||||
Reference in New Issue
Block a user