68 lines
2.5 KiB
JavaScript
68 lines
2.5 KiB
JavaScript
/**
|
|
* 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();
|
|
});
|
|
});
|