diff --git a/docs/INDEX.md b/docs/INDEX.md index bf5c415..ddb1a02 100644 --- a/docs/INDEX.md +++ b/docs/INDEX.md @@ -110,6 +110,7 @@ Auto-generated on 2026-05-04 from front-matter and headings. | [Branch, PR & Commit Strategy](./runbooks/branch-and-commit.md) | `runbooks/branch-and-commit.md` | active | 2026-05-03 | | [Vercel Deployment](./runbooks/deploy-vercel.md) | `runbooks/deploy-vercel.md` | active | 2026-05-03 | | [MCP Integration — Scrum4Me Tools](./runbooks/mcp-integration.md) | `runbooks/mcp-integration.md` | active | 2026-05-03 | +| [v1.0 Smoke Test Checklist](./runbooks/v1-smoke-test.md) | `runbooks/v1-smoke-test.md` | active | 2026-05-04 | | [StoryDialog Profiel](./story-dialog.md) | `story-dialog.md` | active | 2026-05-03 | | [TaskDialog Profiel](./task-dialog.md) | `task-dialog.md` | active | 2026-05-03 | | [Scrum4Me — API Test Plan](./test-plan.md) | `test-plan.md` | active | 2026-05-03 | diff --git a/docs/plans/v1-readiness.md b/docs/plans/v1-readiness.md index beb1473..a8610ee 100644 --- a/docs/plans/v1-readiness.md +++ b/docs/plans/v1-readiness.md @@ -93,13 +93,13 @@ Twee verwante todo's over de todo-feature uitbreiden. Past bij de strategische r Must-do voor publieke aankondiging, maar mag pas vlak vóór v1.0-tag. -- [ ] **Smoke-test productie** na merge: registreren → product → PBI → story → sprint → task → solo → completion. Ook mobile flow (DevTools UA-spoof of echt toestel). 12-min-job. -- [ ] **PWA-installatie test** op echt mobiel (Android + iOS) — bevestig manifest landscape, controleer iOS-fallback via CSS-overlay. -- [ ] **Demo-policy regression-pass:** demo-user mag niets schrijven via UI/API/MCP. Drie-laags-demo-block. -- [ ] **Privacy review:** zit er PII in logs? Sentry-events strippen? Avatar-upload-paden? -- [ ] **README + Quick start verifiëren** op een schone clone — kan iemand binnen 10 min `npm run dev` draaien? -- [ ] **Bump naar v1.0.0** + GitHub release met release-notes (mirror van wat in v0.9.0 zit, met v1-claim "stabiele MVP") -- [ ] **CHANGELOG.md** aanmaken (ontbreekt nu) — een vlakke `Keep-a-Changelog`-formaat is genoeg +- [ ] **Smoke-test productie** — checklist klaar in [docs/runbooks/v1-smoke-test.md](../runbooks/v1-smoke-test.md), 11 secties, ~15 min +- [ ] **PWA-installatie test** op echt mobiel (Android + iOS) — bevestig manifest landscape, controleer iOS-fallback via CSS-overlay +- [x] **Demo-policy regression-pass** — code-side gefixt: 3 gaps gedicht (toggleTodo, archiveCompletedTodos, leaveProduct). Drielaags-block geverifieerd voor alle mutation-actions +- [x] **Privacy review** — Sentry sendDefaultPii=false; geen PII in logs; 4 debug-routes nu NODE_ENV-guarded (404 in productie) +- [x] **README + Quick start verifiëren** — test-count 69 → 445 gecorrigeerd, env-vars-tabel uitgebreid (CRON_SECRET, Sentry vars), CHANGELOG-link toegevoegd +- [x] **CHANGELOG.md** aangemaakt (Keep a Changelog formaat met [Unreleased] + [0.9.0]) +- [ ] **Bump naar v1.0.0** + GitHub release met release-notes --- diff --git a/docs/runbooks/v1-smoke-test.md b/docs/runbooks/v1-smoke-test.md new file mode 100644 index 0000000..3743338 --- /dev/null +++ b/docs/runbooks/v1-smoke-test.md @@ -0,0 +1,100 @@ +--- +title: "v1.0 Smoke Test Checklist" +status: active +audience: [maintainer] +language: nl +last_updated: 2026-05-04 +--- + +# v1.0 Smoke Test Checklist + +Loop deze checklist door **vóór** je v1.0.0 tagt. Alleen handmatig — geen automation. +Time-budget: ~15 min. + +**Productie-URL:** https://scrum4me.jp-visser.nl + +--- + +## 1. Auth + dashboard (3 min) + +- [ ] **Demo-login:** `demo` / `demo1234` → dashboard rendert, alle write-acties geven 403 +- [ ] **Logout** vanuit user-menu → redirect naar `/login` +- [ ] **Register** met nieuwe gebruikersnaam → succesvol, redirect naar `/dashboard` +- [ ] **Login fout-flow:** verkeerd wachtwoord → generieke fout, geen leak + +## 2. Mobile UA-redirect (2 min) + +- [ ] DevTools mobile-emulatie iPhone 12 (UA-spoof) → log in → automatisch naar `/m/products/[id]/solo` (of `/m/settings` zonder actief product) +- [ ] Tablet-UA (iPad) → blijft op `/dashboard` +- [ ] Desktop blijft `/dashboard` + +## 3. Product → PBI → Story → Sprint → Task happy-path (5 min) + +- [ ] **Product aanmaken** (eigen account) → naam, code, DoD ingevuld +- [ ] **PBI aanmaken** in Product Backlog kolom → priority + status +- [ ] **Story aanmaken** onder PBI → titel + acceptatiecriteria +- [ ] **Sprint starten** met sprint-goal +- [ ] **Story slepen** vanuit Product Backlog naar Sprint Backlog +- [ ] **Task aanmaken** in Sprint → titel + implementation_plan +- [ ] **Task drag-and-drop** in Solo Paneel: To Do → Bezig → Klaar +- [ ] **Story-status auto-promotie:** alle taken DONE → story status DONE + +## 4. Mobile shell (2 min — op echte phone of DevTools landscape iPhone 12) + +- [ ] `/m/products/[id]` rendert in tab-mode (3 tabs onderaan: Backlog/Solo/Settings) +- [ ] Portrait-orientatie → rotate-overlay +- [ ] `/m/products/[id]/solo` toont 3-koloms kanban met horizontal scroll +- [ ] Task-detail dialog opent full-screen (`<640px`) — sticky header + footer bereikbaar +- [ ] `/m/settings` toont username + actieve product + logout-knop met bevestiging +- [ ] `/m/pair` toont QR-pairing-confirmation (M10 intact) +- [ ] **Geen** NavBar / AppIcon / Scrum4Me-tekst zichtbaar op `/m/*` + +## 5. Edit-flows (1 min) + +- [ ] **Pencil-icon op product-card** (dashboard hover) → ProductDialog opent +- [ ] **PBI ✎-icoon** (hover) → PbiDialog opent en saved +- [ ] **Story ✎-icoon** (sprint screen Sprint Backlog) → StoryDialog opent +- [ ] **Task ✎-icoon** (Taken-kolom) → TaskDialog opent + +## 6. Demo-policy (1 min) + +Inloggen als demo-gebruiker: +- [ ] PBI/Story/Task create-knoppen disabled met DemoTooltip +- [ ] Edit-iconen disabled +- [ ] Logout-knop bereikbaar (demo mag uitloggen) +- [ ] Productselector gaat door op view, maar Activeer-acties geven 403 + +## 7. Rate-limiting (steekproef, 1 min) + +- [ ] Probeer 31 PBIs in <60s aan te maken via UI → 31e geeft toast "Te veel acties achter elkaar" +- [ ] (Optioneel) `bash scripts/test-api.sh` → alle endpoints groen + +## 8. Realtime (1 min) + +- [ ] Open `/products/[id]/solo` in twee browsers (één als owner, één als teamlid) +- [ ] Status-toggle in browser A → ziet binnen 1s in browser B (SSE-pipe) +- [ ] Claude-vraag binnenkrijgen → bell-badge verschijnt zonder refresh + +## 9. Debug-routes (productie afgeschermd) + +- [ ] `https://scrum4me.jp-visser.nl/debug-env` → **404** (NODE_ENV-guard) +- [ ] `https://scrum4me.jp-visser.nl/debug-realtime` → **404** +- [ ] `https://scrum4me.jp-visser.nl/api/debug/realtime-stream` → **404** + +## 10. Lighthouse op happy-path + +- [ ] `/login` — a11y ≥95 +- [ ] `/dashboard` — a11y ≥95 +- [ ] `/products/[id]` — a11y ≥95 (was 86 vóór PR #88) +- [ ] `/products/[id]/sprint` — a11y ≥95 +- [ ] `/products/[id]/solo` — a11y ≥95 + +> Performance score in dev-mode is misleidend (dev-bundles, Chrome-extensies). +> Test op productie of `npm run build && npm run start` voor betrouwbare cijfers. + +## 11. Rollback-trigger + +Als één van bovenstaande faalt: +- Vercel dashboard → Deployments → vorige Ready deploy → "Promote to Production" +- Issue-titel: "v1.0 smoke-test failure: \" +- Tag v1.0.0 NIET totdat alles groen is