Files
kochwas/tests/e2e/remote
hsiegeln a7ad159c69
All checks were successful
Build & Publish Docker Image / build-and-push (push) Successful in 1m42s
test(e2e): Playwright Smoketests gegen kochwas-dev (remote)
Automatisierte End-to-End-Tests gegen ein deployed Environment. Loest
die manuellen MCP-Playwright-Runs ab. 42 Tests in 9 Files:

- homepage: H1, Sektionen, Sort-Tabs, Console-Errors
- search: lokaler Treffer, Web-Fallback, Empty-State, Deep-Link
- profile: Switcher, Auswahl-Persistenz, Favoriten-Section, Guard-Dialog
- recipe-detail: Header, Portionen-Scaling (4->6), Favorit-Toggle,
  Rating-Persistenz ueber Reload, Gekocht-Counter, Wunschliste-Toggle
- comments: eigenen erstellen+loeschen via UI, fremder hat kein Delete
- wishlist: Seite, Sort-Tabs, Badge-Sync, requireProfile-Custom-Message
- preview: Guard ohne ?url=, echte URL parst, unparsbare zeigt error-box
- admin: alle 4 Subrouten + /admin redirect
- api-errors: parsePositiveIntParam (4x Invalid id), validateBody (4x
  Invalid body + issues), 404, Sanity /health /profiles /domains

Architektur:
- Separate playwright.remote.config.ts (getrennt von local preview)
- workers: 1 + afterEach API-Cleanup (rating, favorite, wishlist, comments)
- Hardcoded Recipe-ID 66 + Profile 1/2/3 — stabile Dev-DB-Seeds
- E2E_REMOTE_URL ueberschreibt die Ziel-URL

Ausfuehrung: npm run test:e2e:remote

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 12:14:04 +02:00
..

E2E-Tests gegen kochwas-dev

Playwright-Smoketests gegen ein deployed Environment — standardmaessig https://kochwas-dev.siegeln.net. Loest die bisherigen manuellen MCP-Runs ab.

Setup (einmalig)

npm install
npx playwright install chromium

Ausfuehren

npm run test:e2e:remote             # Headless, alle Tests
npm run test:e2e:remote -- --ui     # Mit Playwright-UI (Trace-Viewer)
npm run test:e2e:remote -- --debug  # Step-by-Step

Alternative URL:

E2E_REMOTE_URL=https://kochwas.siegeln.net npm run test:e2e:remote

Was abgedeckt ist

Happy Paths (UI)

Spec Was
homepage.spec.ts H1, Recents/Alle-Rezepte-Sektionen, Sort-Tabs rendern unterschiedlich, keine Console-Errors
search.spec.ts Lokaler Treffer, Web-Fallback, Empty-State, Deep-Link ?q=
profile.spec.ts Switcher-Dialog, Auswahl persistiert, "Deine Favoriten" erscheint nach Login
recipe-detail.spec.ts Header, Portionen-Skalierung (4->6, Mengen proportional), Favorit-Toggle, Rating persistiert ueber Reload, Gekocht-Counter, Wunschliste-Toggle
comments.spec.ts Eigenen Kommentar erstellen + via UI-Button loeschen; fremder Kommentar hat keinen Delete-Button
wishlist.spec.ts Seite laedt, Sort-Tabs, Header-Badge spiegelt API-Zaehler
preview.spec.ts Guard ohne ?url=, echte URL laedt JSON-LD-Parsing, unparsbare URL zeigt error-box
admin.spec.ts Alle 4 Admin-Subrouten laden mit Tab-Nav, /admin redirected

Negative Paths (API)

Spec Was
api-errors.spec.ts parsePositiveIntParam → 400 Invalid id (4 Call-Sites), validateBody → 400 {message, issues} (4 Call-Sites), 404 auf missing Ressource, Positiv-Sanity fuer /health, /profiles, /domains

Design-Entscheidungen

workers: 1. Tests mutieren echte Daten auf kochwas-dev (Rating, Favorit, Wunschliste, Kommentare). Parallelitaet wuerde Race-Conditions geben. afterEach raeumt per API auf — idempotent.

Hardcoded Test-Fixtures. Rezept-ID 66 (Chicken Teriyaki) und Profile 1/2/3 (Hendrik/Verena/Leana) sind stabil auf dev. Bei DB-Reset muessen ggf. die Konstanten angepasst werden.

Kein Build/Server-Start. Im Gegensatz zur lokalen playwright.config.ts startet diese Config keinen Preview-Server — die Tests laufen gegen das CI-Build auf dev.

Was NICHT hier ist

  • Service-Worker-Lifecycle / Offlinetests/e2e/offline.spec.ts (lokal).
  • Bild-Upload — File-Dialog + echte Dateien; nur manuell sinnvoll.
  • Drucken — oeffnet window.print(), headless unzuverlaessig.
  • Sync unter Last — braucht dediziertes Harness, nicht Smoke-Scope.