import { expect, type Page } from '@playwright/test' /** Gemeinsames für alle E2E-Tests. */ export const EMAIL = process.env.ADMIN_EMAIL ?? '' export const PASSWORT = process.env.ADMIN_PASSWORT ?? '' export const VERBINDUNG = process.env.DATABASE_URL ?? '' /** * Geheimnis fuer den Spiegel im Test. * * Der Testserver bekommt denselben Wert ueber playwright.config.ts, sonst * liesse sich die Tuer gar nicht pruefen — und eine Pruefung, die immer * uebersprungen wird, prueft nichts. */ export const SPIEGEL_GEHEIMNIS = process.env.SPIEGEL_GEHEIMNIS ?? 'e2e-spiegel-geheimnis-nur-lokal' /** * Meldet das Testkonto mit Passwort an. * * Der Knopf gehört zu einem Client-Formular. Ein Klick, der vor der * Hydratation ankommt, verpufft folgenlos — die Seite bleibt einfach stehen. * Deshalb wird so lange nachgefasst, bis die Startseite da ist; hat der erste * Klick schon gewirkt, wird nicht noch einmal geklickt. */ export async function anmelden( seite: Page, email: string = EMAIL, passwort: string = PASSWORT, ): Promise { await seite.goto('/anmelden') await seite.getByLabel('E-Mail-Adresse').fill(email) await seite.getByLabel('Passwort').fill(passwort) const knopf = seite.getByRole('button', { name: 'Mit Passwort anmelden' }) const begruessung = seite.getByRole('heading', { name: /Guten Tag/ }) await expect(async () => { if (new URL(seite.url()).pathname === '/anmelden') { await knopf.click({ timeout: 5_000 }) } await expect(begruessung).toBeVisible({ timeout: 5_000 }) }).toPass({ timeout: 45_000 }) }