/** * E2E — Header allégé + section compte en bas de la sidebar (#112). * * Le premier test s'exécute partout ; le second (section compte) nécessite * l'authentification activée et se marque `skip` sinon (job CI e2e, serveur * local `run-e2e-local` en auth désactivée). Pour le valider manuellement, * lancer Playwright contre l'instance Docker de test (auth active) : * * BASE_URL=http://localhost:2020 OBSIGATE_PASS=test123 \ * npx playwright test tests/e2e/header-sidebar.spec.js --project=chromium-desktop */ import { test, expect } from '@playwright/test'; const BASE = process.env.BASE_URL || 'http://localhost:2029'; const CREDS = { username: process.env.OBSIGATE_USER || 'admin', password: process.env.OBSIGATE_PASS || 'test123', }; async function login(page) { await page.goto(BASE); const loginForm = page.locator('#login-screen'); await expect(loginForm).toBeVisible({ timeout: 5000 }).catch(() => {}); if (await loginForm.isVisible()) { await page.fill('#login-username', CREDS.username); await page.fill('#login-password', CREDS.password); await page.click('#login-btn'); } await page.waitForFunction(() => window.__OBSIGATE_BOOTED === true, { timeout: 20000 }); } async function authEnabled(page) { return page.evaluate(async () => { try { const r = await fetch('/api/auth/status'); const d = await r.json(); return !!d.auth_enabled; } catch { return false; } }); } test.describe('Header allégé + compte en sidebar (#112)', () => { test('le header ne porte plus utilisateur/version/déconnexion ; la version est dans le menu Options', async ({ page }) => { await login(page); await expect(page.locator('.header-right #user-menu')).toHaveCount(0); await expect(page.locator('#logout-btn')).toHaveCount(0); await expect(page.locator('.header-right > .version-badge')).toHaveCount(0); await page.locator('#header-menu-btn').click(); await expect(page.locator('#header-menu-dropdown #version-badge')).toBeVisible(); }); test('le compte est affiché en bas de la sidebar (auth active)', async ({ page }) => { await login(page); test.skip(!(await authEnabled(page)), 'auth disabled in this environment'); await expect(page.locator('#sidebar-user')).toBeVisible(); await expect(page.locator('#sidebar-user-name')).not.toBeEmpty(); await expect(page.locator('#sidebar-user-role')).not.toBeEmpty(); await expect(page.locator('#sidebar-user-logout')).toBeVisible(); }); });