Files
Laufzettel/docs/issues/038-e2e-im-tor.md
T
Florian WildeandClaude Opus 5 80d97467da
Prüfung / pruefung (push) Canceled after 0s
Prüfung / e2e (push) Canceled after 0s
fix: Reviewbefunde aus der Durchsicht von Phase 2 (#036, #027)
Acht Meilensteine lagen ohne fremden Blick auf main. Ein Review mit eigener
Datenbank, Gegenproben und vollem Suitenlauf hat sie gegen die
Akzeptanzkriterien und gegen CLAUDE.md geprueft.

Die Kernregeln halten: fuenf von fuenf Gegenproben gegen Versionierung,
Mandantengrenze, Abschlussregel und Selbstauskunft wurden rot. Alle Befunde
lagen am Rand — und die drei wertvollsten waren Gegenproben, die gruen blieben.

Schwer:

- Der Link in der Mail "Verzeichnis-Abgleich fehlgeschlagen" war ein 404
  (/verwaltung/verzeichnis statt /admin/verzeichnis). Die eine Meldung, die an
  alle Administratoren geht, im Moment eines Ausfalls. Ein Test prueft jetzt
  jeden Meldungspfad gegen die vorhandenen Routen.
- Der Export eines Entwurfs mit Baustein lieferte einen leeren Abschnitt unter
  dem Platzhalter "wird ersetzt" — der Zweck des Formats ist, eine Vorlage in
  eine zweite Installation zu bringen. Bausteine werden jetzt aufgeloest.

Mittel:

- Der Anhang-Handler hatte keinen Test; die ganze Rechtepruefung liess sich
  durch einen hartcodierten ADMIN ersetzen, Suite gruen. Es ist die einzige
  Stelle, die rohe Dateibytes ausliefert. tests/anhang-route.test.ts faehrt ihn
  jetzt echt, acht Pruefungen.
- /api/scim in der Proxy-Allowlist stand in keinem Test. OEFFENTLICH ist
  exportiert, der Test vergleicht beide Richtungen: eine Liste, die nur in einer
  Richtung geprueft wird, laeuft dem Code hinterher.
- Ein offener Ereignisstrom ueberlebte Abmelden, Deaktivieren und
  Sitzungswiderruf. Der Herzschlag prueft die Sitzung jetzt nach. Dass es kein
  Test zeigte, lag an einer Attrappe `sitzung: {}` — eine Attrappe ohne die Form
  der Wirklichkeit prueft etwas anderes als die Wirklichkeit.
- README kannte MITARBEITER nicht und behauptete, unbekannte Benutzer wuerden
  angelegt. Wer auf v0.2.0 hebt und nur das README liest, haette genau diese
  Leute ausgesperrt.
- sicherung.md nannte einen Anhaenge-Pfad, den es nirgends gibt — als
  Rueckfallwert in einem Skript mit rm -rf. Jetzt bricht es ab statt zu raten.
- Attributnamen wurden nur in der Server Action geprueft, waehrend der
  Graph-Leser sich im Kommentar darauf berief.

Dazu #027: die Ende-zu-Ende-Ablaeufe raeumen jetzt zentral auf, vor und nach
dem Lauf, und ein struktureller Test bewacht es. Beim ersten echten Lauf seit
dem 26. September waren sieben Ablaeufe rot, vier Ursachen, keine ein
Produktfehler — unbemerkt, weil pnpm test:e2e in keinem Tor steht. Das ist jetzt
#038 und keine Fussnote.

Ein Befund des Reviews war falsch (der Zustands-Handler habe keinen Test; er hat
acht direkte Aufrufe). Nachgeprueft, bevor etwas geaendert wurde.

1454 Vitest-Tests (vorher 1432), 113 E2E-Ablaeufe gruen.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-10-11 01:32:09 +02:00

2.9 KiB
Raw Blame History

#038 Die E2E-Abläufe laufen in keinem Tor und waren monatelang rot

Status: offen Im Tracker: – Meilenstein: v0.3.0 Labels: phase-2, test, infra Geschätzt: 3 h Tatsächlich: –

Ziel

Beim Abschluss von #027 lief pnpm test:e2e erstmals seit dem 26. September wieder vollständig. Sieben Abläufe waren rot, und niemand hatte es gemerkt.

Keiner der sieben war ein Produktfehler — und genau das ist das Problem. Vier Ursachen:

Ablauf Ursache Seit
laeufe.spec.ts zählt die Felder des Zustands auf, anzahlAnhaenge fehlte #033
stammdaten.spec.ts „kommt aus dem Verzeichnis“ steht seit #020 zweimal auf der Seite #020
vorlagen-editor.spec.ts zieht am Handy feste 300 px, der Abstand ist 532 px #030/#031
onboarding.spec.ts die Entwicklungsdaten wichen vom Seed ab unbekannt

Alle vier sind behoben. Das Muster bleibt: die E2E-Schicht trägt Zusagen, die das Commit-Tor nicht fährt — Rückfall auf Polling, Herzschlag, 390 px, die Auslieferung eines Anhangs über seine Adresse. Steht eine Zusage nur in Playwright, und läuft Playwright nur gelegentlich, dann ist sie eine Notiz und keine Prüfung.

Zu entscheiden

  • pnpm test:e2e ins Tor vor dem Commit? Dagegen: es verlangt einen gebauten, laufenden Stand (pnpm build && pnpm start), dauert über vier Minuten und braucht eine Datenbank mit Seed-Bestand. Vier Minuten vor jedem Commit ist ein Tor, das umgangen wird.
  • Oder eine kleinere, verbindliche Regel: E2E läuft vor jedem Merge nach main — das wären acht Läufe in Phase 2 gewesen und hätte jeden der vier Befunde am Tag seiner Entstehung gezeigt. Das ist die Empfehlung.
  • Oder im CI (.gitea/workflows/ci.yml). Dort ist kein Runner registriert; das zu ändern ist eine eigene Entscheidung und gehört nicht in dieses Issue.

Aufgaben

  • Die gewählte Regel in CLAUDE.md aufschreiben, mit gemessener Dauer und der Begründung, warum sie nicht im Commit-Tor steht
  • Die Voraussetzungen, die tests/e2e/global-setup.ts prüft, in derselben Reihenfolge dokumentieren — der Vorlauf ist inzwischen die ehrlichste Beschreibung dessen, was E2E braucht
  • Prüfen, welche Zusagen ausschließlich in E2E stehen, und für jede entscheiden: gehört sie zusätzlich in einen Vitest-Test, der den Handler direkt fährt? (Das Muster steht in tests/scim.test.ts, tests/anhang-route.test.ts und tests/lauf-ereignisse.test.ts.)
  • Mindestens die Rechteprüfung der beiden Phase-2-Handler ist damit schon abgedeckt — bleiben Rückfall auf Polling, Herzschlag am echten Browser und 390 px

Akzeptanzkriterien

  • In CLAUDE.md steht, wann E2E läuft, und die Angabe ist gemessen, nicht geschätzt
  • Eine Liste der Zusagen, die nur in E2E stehen — und zu jeder eine Entscheidung