import { test, expect } from '@playwright/test'; // Tento soubor záměrně NEPOUŽÍVÁ výchozí trusted-header — testuje chování přihlašovací stránky. test.use({ extraHTTPHeaders: {} }); test('při přihlášení přes proxy se formulář nezobrazí — bez hlavičky hláška, opakování s hlavičkou přihlásí', async ({ page }) => { // Server běží s HTTP_REMOTE_USER_ENABLED=true (přihlašuje proxy), takže formulář se jménem // nemá smysl. Bez hlavičky remote-user se zobrazí hláška s tlačítkem „Zkusit znovu". let sendHeader = false; await page.route('**/api/login', async (route) => { await route.continue({ headers: sendHeader ? { ...route.request().headers(), 'remote-user': 'testuser' } : route.request().headers(), }); }); await page.goto('/'); const retry = page.getByRole('button', { name: 'Zkusit znovu' }); await expect(retry).toBeVisible({ timeout: 10_000 }); await expect(page.getByText('Přihlášení probíhá přes firemní přihlášení (proxy)')).toBeVisible(); await expect(page.locator('#login-input')).toHaveCount(0); // Proxy teď identitu pošle — opakování přihlásí sendHeader = true; await retry.click(); await expect(retry).not.toBeVisible({ timeout: 10_000 }); // JWT musí být uloženo v localStorage jako 3-dílný token const token = await page.evaluate(() => localStorage.getItem('token')); expect(token).toBeTruthy(); expect((token as string).split('.')).toHaveLength(3); }); test('trusted-header přihlášení proběhne automaticky bez formuláře', async ({ page, context }) => { // Obnoví trusted header (přepíše prázdný extraHTTPHeaders z test.use výše) await context.setExtraHTTPHeaders({ 'remote-user': 'e2e-auto-user' }); await page.goto('/'); // Login formulář by se neměl nikdy zobrazit, nebo se ihned schová await page.waitForLoadState('networkidle'); const loginInput = page.locator('#login-input'); await expect(loginInput).not.toBeVisible({ timeout: 5_000 }); });