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 ?? '' /** * 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 }) }