import { test as setup, expect } from '@playwright/test'; const authFile = 'playwright/.auth/user.json'; setup('authenticate', async ({ page }) => { // Create user if not exists (global setup should have done it, but be safe) const resp = await page.request.post('/api/auth/register', { data: { username: 'e2e_testuser', password: 'TestPassword123!', email: 'e2e@example.com', full_name: 'E2E Test User', }, }); if (!resp.ok() && resp.status() !== 400) { console.warn('Register failed:', await resp.text()); } // Login via UI await page.goto('/login'); await page.fill('#loginUsername', 'e2e_testuser'); await page.fill('#loginPassword', 'TestPassword123!'); await Promise.all([ page.waitForResponse((resp) => resp.url().includes('/api/auth/login')), page.click('#loginSubmit'), ]); await page.waitForURL('**/web**', { timeout: 10000 }); // Save storage state (localStorage + cookies) await page.context().storageState({ path: authFile }); });