# Abnahme ## Etappe 1 | Kriterium | Nachweis | Stand | | ------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | ---------------------------- | | Frischer Checkout startet ohne Cloudron | `npm ci` erfolgreich; README-Setup und lokaler Produktionsstart ausgeführt | erfüllt am 21.10.2026 | | Typprüfung und Build erfolgreich | `npm run check`, `npm run build` | erfüllt am 21.10.2026 | | Theme bleibt nach Neuladen erhalten | Playwright: System auf Hell wechseln, Reload, DOM und Schalterzustand prüfen | erfüllt am 21.10.2026 | | Testdaten überleben Neustart | Gebauten Server zweimal gegen `.data/sendewerk.sqlite` gestartet; Fundusdaten und `/healthz` jeweils vorhanden | erfüllt am 21.10.2026 | | Migration wiederholt ausführbar | lokal mehrfach ausgeführt; Verhaltenstest führt Migration zweimal in temporärer DB aus | erfüllt am 21.10.2026 | | Seed reproduzierbar | lokal und im Verhaltenstest zweimal ausgeführt; danach 4 Pieces, 1 Sendung und 3 Verwendungen | erfüllt am 21.10.2026 | | Tests verwenden getrennte Daten | Vitest und Playwright erzeugen je eigene Datenbank im Betriebssystem-Tempdir | erfüllt am 21.10.2026 | | Desktop und Smartphone ohne horizontales Scrollen | 8 Playwright-Abläufe bei 390, 768, 960, 1280 und 1440 Pixeln; Screenshots visuell kontrolliert | erfüllt am 21.10.2026 | | Kompakte Arbeitsoberfläche in beiden Farbmodi | 390, 768 und 1440 Pixel jeweils in Light/Dark; einspaltige Mobilkarten, lange Titel, Metadatenumbrüche und Leerzustände | erfüllt am 21.10.2026 | | Cloudron-Pfade und Healthcheck vorbereitet | Manifestpfad `/app/data/sendewerk.sqlite`, `/healthz`, `start.sh`; JSON-Kernfelder und Bash-Syntax geprüft | vorbereitet; Container offen | | Echte Cloudron-Prüfung | Installation, Backup/Restore, Proxy und read-only Laufzeit | offen, kein Serverzugang | ## Ausgeführte Prüfungen - `npm ci`: erfolgreich, 190 Pakete geprüft, 0 gemeldete Schwachstellen - `npm run setup`, anschließend erneute Migration und erneuter Seed: erfolgreich - `npm test`: 2 Verhaltenstests erfolgreich - `npm run lint`: erfolgreich - `npm run check`: 0 Fehler und 0 Warnungen - `npm run build`: erfolgreich mit `@sveltejs/adapter-node` - `npm run test:e2e`: 8 von 8 Browsertests erfolgreich; 390, 768 und 1440 Pixel jeweils in Light- und Darkmode sowie Tastaturbedienung, feste Navigation, einspaltige Funduskarten, lange Inhalte und Überläufe geprüft - Zwei getrennte `npm start`-Läufe: Healthcheck und persistente Daten erfolgreich - `bash -n start.sh` und programmatische Manifest-Kernfeldprüfung: erfolgreich ## Nicht erfolgreich oder nicht ausführbar - `docker build -t sendewerk:local .`: nicht ausgeführt, weil der installierte Docker-Client keinen laufenden Daemon unter `/var/run/docker.sock` erreichen konnte. - Echte Cloudron-Installation: mangels Serverzugang nicht ausgeführt. - Ein zusätzlicher Python-Playwright-Lauf: nicht gestartet, weil das optionale Python-Modul `playwright` nicht installiert war. Die projektgebundene TypeScript-Playwright-Suite lief stattdessen vollständig erfolgreich. ## Etappe 2 | Kriterium | Nachweis | Stand | | ------------------------------- | ----------------------------------------------------------------------------------- | --------------------- | | Erstadmin danach geschlossen | Browser-Setup sowie wiederholter Service-Aufruf geprüft; Seed enthält kein Konto | erfüllt am 21.10.2026 | | Login, Logout und lokales HTTP | Browserablauf; `HttpOnly`, `SameSite=Lax`, ohne `Secure` bei expliziter HTTP-Origin | erfüllt am 21.10.2026 | | Einladung und Reset | lokale Outbox bis Kontoaktivierung und neuem Login im Browser durchlaufen | erfüllt am 21.10.2026 | | Einmalige und abgelaufene Links | Verhaltenstests für Wiederverwendung und Ablauf von Einladung und Reset | erfüllt am 21.10.2026 | | Direkte Admin-Aktion verweigert | Thekencrew-POST auf Einladungsaction liefert 403 | erfüllt am 21.10.2026 | | Sperrung entzieht Zugriff | aktive Thekencrew-Sitzung wird gelöscht und beim nächsten Request abgewiesen | erfüllt am 21.10.2026 | | Keine echte Mail ungefragt | Browser- und Verhaltenstests nutzen ausschließlich temporäre lokale Outbox | erfüllt am 21.10.2026 | | Echter SMTP-Versand | nicht ausgeführt, keine Zugangsdaten bereitgestellt | offen | ## Ausgeführte Prüfungen Etappe 2 - `npm run lint`: erfolgreich - `npm run check`: 0 Fehler und 0 Warnungen - `npm test`: 9 Auth-, Migrations-, Mail- und Dauer-Verhaltenstests erfolgreich - `npm run build`: erfolgreich mit `@sveltejs/adapter-node` - `npm run test:e2e`: 9 von 9 Browsertests erfolgreich; Erstadmin, Login/Logout, fremder Origin, Einladung, direkte Rollenprüfung, Sperrung, Reset sowie bestehende responsive Arbeitsansichten geprüft - Lokale Outbox in isolierten temporären Verzeichnissen geprüft - Lokaler Produktionsserver der Browsertests über HTTP gestartet; Healthcheck und Migration vor Start erfolgreich - `bash -n start.sh`: erfolgreich ## Etappe 3 | Kriterium | Nachweis | Stand | | ----------------------------------------------- | ---------------------------------------------------------------------------------------------- | --------------------- | | Anlegen, Bearbeiten, Suchen, Filtern und Reload | Browserrundlauf mit Vorlage, Autosave, Quellen, Status, Suche und Neuladen | erfüllt am 21.10.2026 | | Taxonomien unabhängig | Format einzeln sowie Themen und Abschnittskategorien mehrfach gespeichert und gefiltert | erfüllt am 21.10.2026 | | Sicheres Markdown | Verhaltenstest und Browservorschau entfernen Skript/JavaScript, Formatierung bleibt erhalten | erfüllt am 21.10.2026 | | Private Bilder | Signatur-/Größenprüfung; anonymer Direktrequest erhält keinen Dateiinhalt | erfüllt am 21.10.2026 | | Sichtbare Speicherfehler | Actionfehler und Autosave-Fehlerstatus bleiben am Formular sichtbar | erfüllt am 21.10.2026 | | Konflikterkennung | zwei Browserseiten; veraltete Revision erhält Konflikt und überschreibt die neue Fassung nicht | erfüllt am 21.10.2026 | | Archiv und Wiederherstellung | Browserrundlauf blendet Piece aus und stellt den vorherigen Status wieder her | erfüllt am 21.10.2026 | | Duplikat | Verhaltenstest und Browser prüfen unabhängige Kopie samt Zuordnungen und Bild | erfüllt am 21.10.2026 | ## Ausgeführte Prüfungen Etappe 3 - `npm run lint`: erfolgreich - `npm run check`: 0 Fehler und 0 Warnungen - `npm test`: 13 Tests in 3 Dateien erfolgreich - `npm run build`: erfolgreich mit `@sveltejs/adapter-node` - `npm run test:e2e`: 10 von 10 Browsertests erfolgreich - Browserprüfung bei 390, 768, 960, 1280 und 1440 Pixeln in beiden Themes ohne ungewollten horizontalen Überlauf - Mobile Darkmode-Aufnahme des Piece-Editors visuell kontrolliert - `bash -n start.sh` und `git diff --check`: erfolgreich