# 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) ```bash npm install npx playwright install chromium ``` ## Ausfuehren ```bash 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: ```bash 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 / Offline** → `tests/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.