22 KiB
22 KiB
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 Schwachstellennpm run setup, anschließend erneute Migration und erneuter Seed: erfolgreichnpm test: 2 Verhaltenstests erfolgreichnpm run lint: erfolgreichnpm run check: 0 Fehler und 0 Warnungennpm run build: erfolgreich mit@sveltejs/adapter-nodenpm 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.shund 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.sockerreichen konnte.- Echte Cloudron-Installation: mangels Serverzugang nicht ausgeführt.
- Ein zusätzlicher Python-Playwright-Lauf: nicht gestartet, weil das optionale
Python-Modul
playwrightnicht 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: erfolgreichnpm run check: 0 Fehler und 0 Warnungennpm test: 9 Auth-, Migrations-, Mail- und Dauer-Verhaltenstests erfolgreichnpm run build: erfolgreich mit@sveltejs/adapter-nodenpm 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: erfolgreichnpm run check: 0 Fehler und 0 Warnungennpm test: 13 Tests in 3 Dateien erfolgreichnpm run build: erfolgreich mit@sveltejs/adapter-nodenpm 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.shundgit 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: erfolgreichnpm run check: 0 Fehler und 0 Warnungennpm test: 18 Tests in 4 Dateien erfolgreichnpm run build: erfolgreich mit@sveltejs/adapter-nodenpm 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.shundgit 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 |
| Persistente Linkvorschau | Quellwahl, manuelle Felder, Reload, fehlendes Bild und isolierte Testansicht im Browser geprüft | erfüllt am 22.10.2026 |
| Sichere Metadatenabrufe | Tests sperren private IPv4-/IPv6-Ziele; Redirect-, Größen- und Zeitlimits sind implementiert | erfüllt am 22.10.2026 |
| Validierte Videoplayer | YouTube-URL-Varianten, TikTok-ID, Zeitmarke und Playerwechsel automatisiert geprüft | erfüllt am 22.10.2026 |
| Präsentationssnapshot | Einplanung, Duplikation und explizite Aktualisierung aus dem Original im Servicetest geprüft | erfüllt am 22.10.2026 |
| Reale OBS-Browserquelle | lokale tokenisierte Browserausgabe vorhanden; kein OBS auf der Prüfmaschine | offen |
| Reale Anbieterwiedergabe | automatisierte Tests fangen YouTube-/TikTok-Requests lokal ab | offen |
Ausgeführte Prüfungen Etappe 5
npm run lint: erfolgreichnpm run check: 0 Fehler und 0 Warnungennpm test: 29 Tests in 6 Dateien erfolgreichnpm run build: erfolgreich mit@sveltejs/adapter-nodenpm run test:e2e: 14 von 14 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
- YouTube-/TikTok-Iframes, Playerwechsel, mobile Hochformatausgabe, Linkkartenvorschau ohne Bild, isolierte Testansicht und private Datenfilterung mit lokal abgefangenen Anbieterrequests geprüft
- SSRF-Blockade einer privaten Zieladresse über die sichtbare Editorfehlermeldung geprüft
bash -n start.shundgit diff --check: erfolgreich
Gezielte Fundus- und Einplanungsanpassung
| Kriterium | Nachweis | Stand |
|---|---|---|
| Gesendet korrekt abgeleitet | Servicetest schließt offene, übersprungene, Reserve- und nicht abgeschlossene Nutzung aus | erfüllt am 22.10.2026 |
| Historie und Fundusfilter | Browser prüft letztes Datum, Sendungslink, weitere Verwendungen und Sofortfilter | erfüllt am 22.10.2026 |
| Unabhängige Quellfilter | Browser kombiniert verwendet/eingeplant getrennt und erhält sie über Suchfilter | erfüllt am 22.10.2026 |
| Reserve und Mehrfacheinplanung | Reserve zählt als eingeplant; bewusstes Wiedereinblenden erlaubt weitere Einplanung | erfüllt am 22.10.2026 |
| Rückkehr nach Entfernen | Browser entfernt die letzte Reserveeinplanung und bietet das Original sofort wieder an | erfüllt am 22.10.2026 |
| Angepasste Einplanung dupliziert | Service und Browser prüfen Position, Texte, Notizen, Dauer und Reload | erfüllt am 22.10.2026 |
| Live-Zustand des Duplikats zurückgesetzt | Servicetest prüft open, neue ID und fehlende Zeitintervalle |
erfüllt am 22.10.2026 |
| Original unverändert | Piece-Anzahl und Original-ID vor und nach Einplanungsduplikation verglichen | erfüllt am 22.10.2026 |
| Speicherfehler nicht als Erfolg dargestellt | veraltete Revision rollt Duplikation vollständig zurück | erfüllt am 22.10.2026 |
| Globale aktive Einplanung ausgeblendet | Browser prüft den unabhängigen Filter über mehrere nicht abgeschlossene Sendungen | erfüllt am 22.10.2026 |
| Snapshot ausdrücklich aktualisiert | Service prüft neue Originaltexte und erhaltene Notizen/Intervalle; Browser löst Aktion aus | erfüllt am 22.10.2026 |
| Fehlendes Original atomar behandelt | Servicetest prüft Fehler und unveränderte Sendungsrevision | erfüllt am 22.10.2026 |
| Verwendungsdialog responsiv | Browser prüft Desktop/Mobil, Reserve, erreichbare Aktionen und sichtbare Konfliktfehler | erfüllt am 22.10.2026 |
Ausgeführte Prüfungen Fundus und Einplanung
npm test: 22 Tests in 5 Dateien erfolgreichnpm run lint: erfolgreichnpm run check: 0 Fehler und 0 Warnungen- gezielter Playwright-Lauf: 4 von 4 Browsertests erfolgreich
npm run test:e2e: 12 von 12 Browsertests erfolgreich- Desktopansichten von Fundushistorie, kombinierten Sendungsfiltern und Verwendungsdialog sowie mobile Quellspalte und mobiler Dialog bei 390 × 844 Pixeln visuell kontrolliert
npm run build: erfolgreich mit@sveltejs/adapter-nodebash -n start.shundgit diff --check: erfolgreich
Redaktionelles Piece-Arbeitsblatt
| Kriterium | Nachweis | Stand |
|---|---|---|
| Schreiben steht im Mittelpunkt | Desktop- und Mobilprüfung zeigt Fundstück, Recherche und drei Sendungstexte im primären Lesefluss | erfüllt am 22.10.2026 |
| Kontext bleibt vollständig erreichbar | Quellen, Einordnung, Präsentation und Bilder auf Desktop sowie als vier mobile Werkzeuge geprüft | erfüllt am 22.10.2026 |
| Textfelder unabhängig bearbeitbar | Recherche und Moderationsstichpunkte im Browser gleichzeitig geöffnet und gespeichert | erfüllt am 22.10.2026 |
| Bestehender Formvertrag bleibt erhalten | Autosave, Reload, Taxonomie, Quelle, Markdown, Upload, Archiv und Duplikat im Browser durchlaufen | erfüllt am 22.10.2026 |
| Konflikte und Speicherfehler sichtbar | parallele Revision sowie Offline-Autosave mit erfolgreicher manueller Wiederholung geprüft | erfüllt am 22.10.2026 |
| Schneller Video-Einstieg ohne Einordnung | Link im Eingang aufgenommen, direkt geöffnet, beschrieben und isoliert als Video getestet | erfüllt am 22.10.2026 |
| Responsive Darstellung und beide Themes | 1440 × 1000 und 390 × 844 in Light/Dark ohne horizontalen Überlauf visuell kontrolliert | erfüllt am 22.10.2026 |
Ausgeführte Prüfungen Piece-Arbeitsblatt
npm run lint: erfolgreichnpm run check: 0 Fehler und 0 Warnungennpm test: 29 Tests in 6 Dateien erfolgreichnpm run build: erfolgreich mit@sveltejs/adapter-node- gezielter Playwright-Lauf für Autosave, Offline-Fehler, Konflikt und Upload: 1 von 1 Browsertest erfolgreich
npm run test:e2e: 15 von 15 Browsertests erfolgreich- Desktop Light/Dark sowie Smartphone Light/Dark und mobiles Präsentationswerkzeug visuell kontrolliert; langer Titel bricht vollständig um, Werkzeugfläche ist opak und die Speicherleiste überdeckt mobil keine Eingaben
bash -n start.shundgit diff --check: erfolgreich
Oberflächenrelease 0.5.4
| Kriterium | Nachweis | Stand |
|---|---|---|
| Klare Hierarchie in beiden Themes | Eingang, Fundus, Editor, Sendungsplan und Live-Steuerung in Light/Dark visuell kontrolliert | erfüllt am 22.10.2026 |
| Exakte heinzlive-Darkmode-Farben | berechnete Theme-Tokens und Screenshots der dunklen Arbeitsansichten geprüft | erfüllt am 22.10.2026 |
| Responsive Darstellung ohne Seitenüberlauf | Chromium-Messung bei 1440 × 1000 und 390 × 844 Pixeln auf allen gezielt geprüften Ansichten | erfüllt am 22.10.2026 |
| Sendungsplan-Aktionen bleiben erreichbar | drei sichtbare Aktionen einer Planzeile liegen waagerecht auf gleicher Höhe; Mobilbild geprüft | erfüllt am 22.10.2026 |
| Fokus und reduzierte Bewegung | sichtbarer Cyan-Fokusring und bestehende prefers-reduced-motion-Regeln im Stylesheet geprüft |
erfüllt am 22.10.2026 |
Ausgeführte Prüfungen Oberflächenrelease 0.5.4
npm run check: 0 Fehler und 0 Warnungennpm run build: erfolgreich mit@sveltejs/adapter-node- gezielter Chromium-Lauf für Eingang, Fundus, Piece-Editor, Sendungsplan und Live-Steuerung bei 1440 × 1000 und 390 × 844 Pixeln in Light/Dark ohne Konsolenfehler oder horizontalen Seitenüberlauf
- Desktop- und Mobilaufnahmen aller genannten Ansichten visuell kontrolliert
- vollständige Unit- und E2E-Matrix nicht erneut ausgeführt, weil dieser Release ausschließlich Darstellung und redaktionelle Kurztexte verändert
git diff --check: erfolgreich