Zwölf Tests standen auf Rot, ohne dass die Anwendung etwas falsch machte – die Specs prüften den Stand vor dem Umbau. Vier Ursachen lagen darunter: Die Kombobox lässt ihr <select> zwar im Formular stehen, setzt es aber auf hidden; selectOption() wartet darauf vergeblich. Der neue Helfer tests/e2e/specs/hilfen.js bedient das Eingabefeld, tippt die Beschriftung ein und klickt den genau passenden Treffer an – exakt, weil [Depot] sonst auch das [Depot] … des Wertpapiergeschäfts träfe. Seit dem Schnellspeichern ohne Neuladen stehen zwei Erfolgsmeldungen übereinander; gemeint ist die neue, also .last(). Die Adressliste ist seit der Adressverwaltung eine Bearbeitungstabelle: Die Namen stehen in Eingabefeldern, wo toContainText nicht hinsieht. Geprüft wird jetzt der Feldwert – gespeichert wurde die Adresse die ganze Zeit korrekt. Die beiden übrigen Fehlschläge waren Folgefehler: Playwright startet nach jedem Fehlschlag einen frischen Worker, das Spec-Modul wird neu geladen, seine Marke neu gezogen und beforeAll legt leere Konten an. Sie brauchten keine Änderung. 87 Tests grün, und ohne die Timeouts in 2,7 statt 7,1 Minuten. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AQ57wQWZ4xKHcKmp26bzgr
71 lines
2.1 KiB
Markdown
71 lines
2.1 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.
|
||
|
||
## 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 `<select>` versteckt
|
||
im Formular stehen, `selectOption()` läuft darauf in einen Timeout. Der Helfer
|
||
tippt stattdessen die Beschriftung ein und klickt den genau passenden Treffer an.
|
||
|
||
```js
|
||
const { komboboxWaehlen } = require('./hilfen')
|
||
|
||
await komboboxWaehlen(zeile.locator('#zuordnungsauswahl select'), 'Lebensmittel')
|
||
```
|
||
|
||
## Berichte
|
||
|
||
HTML-Report, Screenshots und Traces landen nach einem Lauf in
|
||
`playwright-report/` und `test-results/` (beide nicht im Repository).
|