Files
sendewerk/docs/ACCEPTANCE.md
T
2026-10-22 00:28:49 +02:00

13 KiB
Raw Blame History

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

Etappe 4

Kriterium Nachweis Stand
Spieleabend und mehrere JC-/Spieleblöcke persistierte Spieleabend-Vorlage, Seed-Sendung und Browserrundlauf mit Standardablauf erfüllt am 21.10.2026
Reihenfolge und Texte bleiben nach Reload Verhaltenstests sowie Browsertest für Tastatur- und Drag-and-drop-Sortierung erfüllt am 21.10.2026
Original bleibt unverändert Service- und Browsertest planen dasselbe Piece mehrfach mit eigenen Titeln, Notizen, Dauern erfüllt am 21.10.2026
Keine doppelte Dauer; Reserve zählt nicht explizite und summierte Abschnitte sowie Reserve in Verhaltenstest und Browser geprüft erfüllt am 21.10.2026
Entfernen betrifft nur Einplanung Verhaltenstest löscht Verwendung und Abschnittskopie, nicht das Original erfüllt am 21.10.2026
Sendungsänderung verändert keine Vorlage tiefe Vorlagenkopie vor und nach Abschnittsänderung verglichen erfüllt am 21.10.2026
Smartphone-Planungsablauf Abschnittsanlage, Pane-Umschaltung und Überlauf bei 390 Pixeln geprüft erfüllt am 21.10.2026
Gleichwertige Bedienwege Drag-and-drop, Enter auf Verschiebeschaltfläche sowie klick-/touchbare Zielauswahl geprüft erfüllt am 21.10.2026
Lokale Planungsaktualisierung Quelle und Reserve per Drag-and-drop ohne Dokumentreload; lokaler Speicherzustand geprüft erfüllt am 21.10.2026
Sichtbare Einfügeposition Abschnitt, Fundusquelle und Reserve zeigen vor dem Drop Vorschau und transparentes Original erfüllt am 21.10.2026
Piece-Dauer in Minuten Fundus- und Verwendungseditor rechnen Minuten serverseitig in ganze Sekunden um erfüllt am 21.10.2026
Gleichzeitige Änderungen veraltete showweite Revision rollt die gesamte Mutation zurück erfüllt am 21.10.2026

Ausgeführte Prüfungen Etappe 4

  • npm run lint: erfolgreich
  • npm run check: 0 Fehler und 0 Warnungen
  • npm test: 18 Tests in 4 Dateien erfolgreich
  • npm run build: erfolgreich mit @sveltejs/adapter-node
  • npm run test:e2e: 11 von 11 Browsertests erfolgreich
  • Browserprüfung bei 390, 768, 960, 1280 und 1440 Pixeln in beiden Themes ohne ungewollten horizontalen Überlauf
  • Mobile Aufnahme des vollständigen Sendungsbaukastens visuell kontrolliert
  • bash -n start.sh und git diff --check: erfolgreich

Etappe 5

Kriterium Nachweis Stand
Lesbare Moderation Prompter-Schrift, Einleitung und Überleitung im Browser; Recherche initial geschlossen erfüllt am 22.10.2026
Wiederherstellung Live-Stand, Laufintervalle, Schriftgröße und Leseposition nach Neuladen geprüft erfüllt am 22.10.2026
Keine doppelte Zeiterfassung Verhaltenstest wiederholt dieselbe Befehls-ID und findet genau ein Zeitintervall erfüllt am 22.10.2026
Explizite Präsentation Zweitfenster bleibt nach Start leer und ändert sich erst durch „Präsentieren“ erfüllt am 22.10.2026
Getrennte sichere Ausgabe anonymer Browserkontext prüft Text, Bild, HTML, JSON und fremde Medien ohne private Daten erfüllt am 22.10.2026
Reserve und Reihenfolge Reserve als nächstes Piece eingefügt; offene Reihenfolge und serverseitige Live-Grenze geprüft erfüllt am 22.10.2026
Popup- und Verbindungsfehler sichtbar blockiertes Popup sowie unterbrochenes und wiederhergestelltes State-Polling im Browser geprüft erfüllt am 22.10.2026
Reale OBS-Browserquelle lokale tokenisierte Browserausgabe vorhanden; kein OBS auf der Prüfmaschine offen

Ausgeführte Prüfungen Etappe 5

  • npm run lint: erfolgreich
  • npm run check: 0 Fehler und 0 Warnungen
  • npm test: 20 Tests in 5 Dateien erfolgreich
  • npm run build: erfolgreich mit @sveltejs/adapter-node
  • npm run test:e2e: 11 von 11 Browsertests erfolgreich
  • Anonymer zweiter Chromium-Kontext mit Präsentationstext, Quelle, geschütztem Bild und gefiltertem JSON geprüft
  • Mobile Aufnahme der Live-Steuerung bei 390 × 844 Pixeln und Desktopaufnahme der heinzlive-Ausgabe visuell kontrolliert
  • Popup-Blockade sowie Verbindungsabbruch und automatische Wiederverbindung im Browser geprüft
  • bash -n start.sh und git diff --check: erfolgreich