Files
Luncher/e2e/tests/login.spec.ts
T
batmanisko 5f54925808
CI / Generate TypeScript types (push) Successful in 12s
CI / Server unit tests (push) Successful in 26s
CI / Build server (push) Successful in 32s
CI / Build client (push) Successful in 41s
CI / Playwright E2E tests (push) Successful in 1m47s
CI / Build and push Docker image (push) Successful in 49s
CI / Notify (push) Successful in 2s
feat: způsob přihlášení a správa obchodů podle konfigurace serveru
2026-09-24 09:30:04 +02:00

46 lines
2.1 KiB
TypeScript

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 });
});