test(frontend): Wächter gegen deutschen Oberflächentext – und fünf Reste

Konsolidierung: Bestandsaufnahme auf den Stand vom 24.09. gebracht (Punkte 1,
2, 2b und die Tests für documents/tags sind erledigt; sharing, rescan, audit
und thumbnails bleiben offen; jsdom ist seit dem 18.09. drin).

Beim Nachsehen fielen fünf Übersetzungsreste auf: label="Ganztägig",
aria-label="Kalendermenü", label="Bearbeiten" und zweimal "Löschen". Alle in
**doppelt** gequoteten JSX-Attributen – die Ersetzungsliste hatte nur die
einfach gequoteten, und das damalige Prüfskript hielt Einzelwörter ohne
Leerzeichen für Bezeichner.

Die Prüfung steht deshalb jetzt als Test, nicht als Skript. Sie läuft bei
jedem npm test mit.

Der erste Wächter taugte nichts, und das kam nur durch die Mutation heraus: Er
prüfte allein auf Umlaute und liess "Papierkorb ist leer" durch. Wer einen
Wächter baut, muss ihn einmal angreifen. Jetzt Umlaute plus eine Wortliste mit
Wortgrenzen, nachgewiesen an vier Mutationen.

Kommentare werden vorher entfernt – mit einem kleinen Durchlauf statt
zeilenweise: Blockkommentare haben Fortsetzungszeilen ohne führenden Stern,
die beim ersten Versuch fünf Fehlalarme erzeugten.

Ehrlich dazu: Das ist ein Netz, kein Beweis. Ein deutscher Satz ohne Umlaut
und ohne gelistetes Wort käme durch. Steht so im Test.

@types/node kam dazu, weil der Test den Quelltext von der Platte liest.

Geprüft: tsc sauber, 48 Vitest-Tests, alle 234 Prüfungen der sieben
Selbsttest-Suiten grün. Gebautes Bündel gegengeprüft – deutsche Texte weg,
englische da.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
marcandClaude Opus 5 committed 2026-09-24 18:31:18 +02:00
1 parent e1259dd55c
commit a7528d7365
8 files changed
+261 -15

No files matched your search

+33 -9
View File
@@ -1,5 +1,21 @@
# Bestandsaufnahme, 12.09.2026
> **Stand 24.09.2026.** Dieses Dokument ist die Aufnahme vom 12.09. Was seither
> erledigt wurde, steht an Ort und Stelle durchgestrichen oder vermerkt; die
> Kurzfassung:
>
> | | |
> |---|---|
> | Punkte 1, 2, 2b, 3 (teilweise) | ✅ erledigt |
> | Go-Tests `documents`, `tags` | ✅ 12 Testfunktionen |
> | Go-Tests `sharing`, `rescan`, `audit`, `thumbnails` | **offen** |
> | Frontend-DOM-Tests | ✅ jsdom seit 18.09., 46 Tests |
>
> Dazwischen lag eine Woche Oberflächenarbeit, die hier nicht auftaucht, weil
> sie keine Befunde abarbeitete: Rückmeldungen mit Rückgängig, Platzhalter,
> Leerzustände, Sprache vereinheitlicht, `Intl`. Steht in
> [TESTING.md](TESTING.md).
Einmal durch die ganze Cloud: Code, Sicherheit, offene Enden. Geordnet nach
dem, was passieren kann — nicht nach Aufwand.
@@ -160,14 +176,14 @@ Zwei Tests in `pkg/middleware/logger_test.go` halten es fest.
**Schwere: mittel. Nicht was heute kaputt ist, sondern was morgen still kaputtgeht.**
| Paket | Zeilen | Test | Aussenpruefung |
| Paket | Zeilen | Test (24.09.) | Aussenpruefung |
|---|---:|---:|---|
| `internal/tags` | 1132 | **0** | keine |
| `internal/documents` (OCR, Volltext) | 1008 | **0** | keine |
| `internal/sharing` | 382 | **0** | Python-Selbsttest, 24 Prüfungen |
| `internal/rescan` | 479 | **0** | Python-Selbsttest, 20 Prüfungen |
| `internal/audit` | 207 | **0** | keine |
| `internal/thumbnails` | 113 | **0** | keine |
| `internal/tags` | 1338 | **4** ✅ | keine |
| `internal/documents` (OCR, Volltext) | 1243 | **8** ✅ | keine |
| `internal/sharing` | 347 | **0** | Python-Selbsttest, 24 Prüfungen |
| `internal/rescan` | 435 | **0** | Python-Selbsttest, 20 Prüfungen |
| `internal/audit` | 180 | **0** | keine |
| `internal/thumbnails` | 95 | **0** | keine |
Bei `sharing` und `rescan` deckt wenigstens ein Selbsttest die Außenseite ab.
Bei **`documents` und `tags` gar nichts** — und `documents` ist das Stück, das
@@ -251,8 +267,16 @@ gibt:
* **Die Fehlversuchssperren liegen im Arbeitsspeicher.** Ein Neustart des
Containers hebt jede Sperre auf. Für den Hausgebrauch vertretbar; wer es
anders will, braucht eine Tabelle.
* **Frontend ohne Komponententests.** `vitest` läuft jetzt (37 Tests), aber nur
über reine Funktionen — für DOM-Tests fehlt `jsdom` in den devDependencies.
* ~~**Frontend ohne Komponententests.**~~ ✅ **18.09.2026:** `jsdom` ist in den
devDependencies, die Umgebung bleibt `node` (schnell); wer ein DOM braucht,
schreibt `// @vitest-environment jsdom` an den Anfang seiner Datei. 46 Tests,
davon vier gegen ein DOM. Der erste davon hat sofort einen Fehler gefunden –
in der Behebung vom Vortag (`useBackClose`).
**Was er nicht leistet, steht dabei:** Den ursprünglichen Fehler bildet jsdom
nicht ab; es verwirft einen Verlaufssprung, sobald `pushState` folgt. Dafür
bräuchte es einen echten Browser (Playwright). Nachgeprüft, nicht vermutet:
mit der alten, kaputten Fassung blieben alle Tests grün.
---