Docker Compose mit drei Services (nginx auf Port 8000), Migrationsmechanik, Update- und Backup-Skript. Anwendung: Router mit CSRF-Prüfung, Anmeldung und Ersteinrichtung, zentraler Einstellungsdialog mit Reitern, ein- und ausschaltbares Debug-Log mit Maskierung von Zugangsdaten. Layout nach Vorbild des FinanzManagers: feste Navigation links, Werkzeugleiste oben, Tab-Leiste; Farbschema hell/dunkel/System. Tests: 51 PHP-Prüfungen und 7 Playwright-Tests, alle grün.
57 lines
1.5 KiB
Markdown
57 lines
1.5 KiB
Markdown
# 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.
|
||
|
||
## Berichte
|
||
|
||
HTML-Report, Screenshots und Traces landen nach einem Lauf in
|
||
`playwright-report/` und `test-results/` (beide nicht im Repository).
|