Finanzmanager/tests/e2e/README.md
fds2610-bot 5491bb69f6 Fix #62: E2E-Tests an den Typeahead im Kontoblatt angepasst
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
2026-09-04 12:39:29 +02:00

71 lines
2.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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).