# #027 Die Editor-Abläufe lassen ihre Vorlagen stehen **Status:** erledigt **Im Tracker:** [#46](https://git.wilde-server.de/florian.wilde/Laufzettel/issues/46) **Meilenstein:** v0.2.0 **Labels:** phase-2, test **Geschätzt:** 1 h **Tatsächlich:** 2 h 10 min ## Ziel In der Entwicklungsdatenbank stehen über hundert Vorlagen mit Namen wie `ZZ E2E Editor 1790324192596 C`. Die Ende-zu-Ende-Abläufe legen sie an und räumen sie nicht weg; bei jedem Lauf kommen drei dazu. Aufgefallen beim Nachsehen zu [#021](021-stabiler-schluessel-vorlagen.md), als eine Abfrage über `Vorlage` statt sieben Zeilen über hundert lieferte. Das ist kein Schaden an den Tests — das `ZZ`-Präfix sortiert sie ans Ende, und jeder Ablauf legt seine eigenen an. Es ist ein Schaden an allem, was **danach** in dieselbe Datenbank sieht: die Vorlagenliste in der Oberfläche, Screenshots, und jede Abfrage von Hand. Bei einem Fehler, der „0 Treffer“ oder „zu viele Treffer“ heißt, kostet das Zeit. ## Aufgaben - [x] Die Abläufe unter `tests/e2e/`, die Vorlagen anlegen, räumen sie in einem Nachlauf wieder weg — über ihr Präfix, nicht über gemerkte Kennungen (ein abgebrochener Lauf merkt sich nichts) - [x] Dasselbe für Geräte, Personen und Läufe prüfen, die die Abläufe anlegen - [x] Einmalig aufräumen: die vorhandenen Reste aus der Entwicklungsdatenbank entfernen - [x] Prüfen, ob ein Nachlauf das überhaupt leisten kann — ein Ablauf, der mitten im Lauf scheitert, darf den Nachlauf nicht überspringen ## Akzeptanzkriterien - [x] Nach `pnpm test:e2e` steht in `Vorlage` keine Zeile mit `ZZ E2E` - [x] Ein abgebrochener Lauf lässt ebenfalls nichts stehen ## Beim Umsetzen dazugekommen - **Die Beschreibung oben war zur Hälfte überholt.** „Bei jedem Lauf kommen drei dazu“ stimmte beim Schreiben, aber nicht mehr: alle 105 Reste stammen aus einem Fenster von sechzehn Stunden am 25./26. September, und seither ist keine dazugekommen. `tests/e2e/vorlagen-editor.spec.ts` räumt seit [#018](018-e2e-anleitung-pdf.md) über das Präfix auf, und das hält. Nachgewiesen an den Zeitstempeln der Zeilen, nicht vermutet. - **Dafür gab es eine neue Lücke, an anderer Stelle:** `anhaenge.spec.ts` (#032) und `live.spec.ts` (#033) legen `ZZ E2E`-Läufe an und hatten **keinen** Nachlauf. In der Entwicklungsdatenbank stand von ihnen nichts — nicht weil sie aufräumten, sondern weil die E2E-Suite dort seit dem 26. September nicht mehr gelaufen war. - **Geräumt wird jetzt zentral und an einer Stelle**: `tests/e2e/aufraeumen.ts`. Ein `afterAll` je Datei ist die falsche Form für diese Zusage — beim nächsten Meilenstein fehlt wieder einer. - **Vor *und* nach dem Lauf.** Ein `globalTeardown` läuft bei Testfehlern und bei Zeitabläufen, aber nicht bei `Strg+C`. Der Vorlauf fängt genau das: ein Vorlauf lässt sich nicht überspringen. Er **sagt es laut** („Rückstand aus einem früheren Lauf: …“), denn still wegzuräumen hieße, die Ursache zu verdecken. - **Das Präfix ist `ZZ` und nicht `ZZ E2E`.** Die Abläufe benutzen es in fünf Schreibweisen (`ZZ E2E Editor …`, `ZZ-E2E--PC-01` — ein Hostname darf kein Leerzeichen haben —, `ZZPruef…`, `ZZQuelle…`, `ZZ Abteilung …`). Alle fünf sind sinnvoll, alle fünf beginnen mit `ZZ`. Darauf zu greifen deckt sie ab, ohne sechzehn Dateien umzubenennen. - **Ein struktureller Test bewacht das** (`tests/betriebsstand.test.ts`): er liest die Abläufe und schlägt an, wenn einer Zeilen anlegt, ohne das Präfix zu benutzen — und prüft, dass Vor- und Nachlauf registriert sind. Er fand beim ersten Durchgang sofort zwei Dateien, die ich übersehen hätte. - **Protokoll-Waisen werden nicht erraten.** Eine Zeile, deren Gegenstand schon fort ist, bleibt stehen; sie über den Namen im Json zu greifen wäre naheliegend und falsch, weil derselbe Name in echter Historie einer noch bestehenden Zeile steht. Dass eine Protokollzeile ihren Gegenstand überlebt, ist der Grund, warum `entitaetId` kein Fremdschlüssel ist. ## Was der erste echte Lauf zutage brachte Der E2E-Durchgang war die ganze Zeit **rot**, und niemand hat es gemerkt — `pnpm test:e2e` steht nicht im Tor vor dem Commit (Reviewbefund zu [#029](029-scim-endpunkt.md)). Sieben Fehlschläge, vier Ursachen, keine davon ein Produktfehler, alle vier behoben: - `laeufe.spec.ts` zählte die Felder des Zustands auf und kannte `anzahlAnhaenge` nicht — das kam mit #033 dazu. Die Aufzählung ist Absicht und bleibt: der Zustand ist die Antwort, die am häufigsten hinausgeht, und ein Feld, das sich einschleicht, wandert ungesehen mit. - `stammdaten.spec.ts` suchte „kommt aus dem Verzeichnis“ — seit #020 steht derselbe Satz auch am Vorgesetzten-Feld, also zweimal auf der Seite. Playwright wies das als „strict mode violation“ ab. - `vorlagen-editor.spec.ts` zog am Handy feste 300 px. Der Abstand zwischen den Anfassern ist **532 px**, seit mit #030 und #031 Bausteinverweis und Abteilungsfilter in jeden Abschnitt kamen — gemessen, nicht geschätzt. Dazu lag der erste Anfasser bei `y = -115`, also außerhalb des Sichtfensters: der Touch-Start traf nichts. Jetzt wird erst gescrollt und die Zugweite aus dem Layout genommen. Eine feste Pixelzahl in einem Sortiertest ist eine Zusage über das Layout, die niemand pflegt. - `onboarding.spec.ts` prüft den `New-ADUser`-Befehl zeichengenau und scheiterte an `DC=firma,DC=de` statt `DC=firma,DC=local`: die **Entwicklungsdaten** wichen vom Seed ab, und der Seed setzt bestehende Abteilungen absichtlich nicht zurück. Der Vorlauf prüft das jetzt und sagt, was zu tun ist — statt einer Meldung, die nach einem Fehler im Befehlsbau aussieht. **Daraus folgt ein eigenes Issue:** `pnpm test:e2e` gehört ins Tor oder mindestens in eine nachvollziehbare Regel, sonst wiederholt sich das. Siehe [#038](038-e2e-im-tor.md).