# E2E-Tests Browser-Tests mit Playwright, ausgeführt über das Projekt [`e2e-runner`](../../../e2e-runner). Auf dem Host wird nichts installiert – der Runner startet je Lauf einen frischen Container und räumt ihn danach weg. ## Voraussetzungen Die Anwendung muss **vor** dem Testlauf laufen und vom Host erreichbar sein: ```bash docker compose up -d ``` Einmalig den Testnutzer anlegen: ```bash docker compose exec -u www-data php php scripts/e2e-benutzer.php ``` ## Ausführen ```bash tests/e2e/run.sh ``` Fehlt Docker, der Runner oder das Playwright-Image, wird mit Exit-Code 0 übersprungen statt fehlzuschlagen. Abweichende Werte: ```bash BASE_URL=http://host.docker.internal:8000 tests/e2e/run.sh E2E_USER=e2e E2E_PASSWORD=geheim tests/e2e/run.sh E2E_RUNNER_DIR=/pfad/zum/runner tests/e2e/run.sh ``` ## Lockfile `package.json` pinnt `@playwright/test` auf die Version des Runner-Images (aktuell 1.61.1). Das Lockfile wird ohne lokale Node-Installation erzeugt: ```bash docker run --rm -u "$(id -u):$(id -g)" -e HOME=/tmp -v "$PWD/tests/e2e":/work -w /work \ mcr.microsoft.com/playwright:v1.61.1-noble npm install --package-lock-only ``` ## Welche Ebene wofür Hierher gehört nur, was einen Browser braucht: Formularabläufe, Redirects, gerenderte Views, JavaScript. Rechen- und Model-Logik gehört in die PHP-Suite (`tests/NN_*.php`) – schneller und isoliert. ## Gemeinsame Helfer `specs/hilfen.js` liegt neben den Specs, endet aber nicht auf `.spec.js` und wird deshalb nicht als Testdatei eingesammelt. Dort steht `komboboxWaehlen()`: Die Typeahead-Felder aus `public/static/kombobox.js` lassen ihr `