* fix(backlog-store): make INSERT handlers idempotent to prevent duplicate entries on duplicate SSE-events * docs(realtime-smoke): add manual smoke-checklist for PBI/Story/Task realtime end-to-end verification --------- Co-authored-by: Scrum4Me Agent <30029041+madhura68@users.noreply.github.com>
79 lines
2.6 KiB
Markdown
79 lines
2.6 KiB
Markdown
# Realtime smoke-checklist — PBI / Story / Task
|
|
|
|
Manuele checklist voor story "End-to-end smoke-test: PBI/Story/Task verschijnen zonder refresh".
|
|
Uitvoeren na deployment van de realtime-feature (SSE-keten: DB-trigger → pg NOTIFY → SSE → store → render).
|
|
|
|
## Voorbereiding
|
|
|
|
1. Open twee browser-tabs op hetzelfde product:
|
|
- **Tab A** — `/backlog?product=<product_id>` (read-only observatie)
|
|
- **Tab B** — zelfde URL; gebruik dit tabblad voor create/edit/delete-acties
|
|
2. Zorg dat je **niet** refresht in tab A tijdens het testen.
|
|
3. Controleer in de DevTools-console van tab A dat de SSE-verbinding actief is
|
|
(`EventSource` connected, geen foutmeldingen).
|
|
|
|
---
|
|
|
|
## Checklist
|
|
|
|
### PBI
|
|
|
|
- [ ] **1. PBI aanmaken in tab B**
|
|
Maak een nieuwe PBI aan (bijv. titel "Smoke PBI").
|
|
→ Tab A toont de nieuwe PBI **binnen 1 seconde** zonder refresh.
|
|
→ Geen dubbele entry (PBI verschijnt precies één keer).
|
|
|
|
- [ ] **2. PBI titel bewerken in tab B**
|
|
Pas de titel van de PBI aan naar "Smoke PBI — updated".
|
|
→ Tab A reflecteert de nieuwe titel **binnen 1 seconde**.
|
|
→ Geen dubbele entry, geen flickering.
|
|
|
|
- [ ] **3. PBI verwijderen in tab B**
|
|
Verwijder de PBI.
|
|
→ Tab A verwijdert de PBI **binnen 1 seconde**.
|
|
|
|
---
|
|
|
|
### Story
|
|
|
|
- [ ] **4. Story aanmaken in tab B**
|
|
Maak een story aan onder een bestaande PBI (bijv. "Smoke Story").
|
|
→ Tab A toont de story in de juiste PBI-rij **binnen 1 seconde**.
|
|
→ Geen dubbele entry.
|
|
|
|
- [ ] **5. Story titel bewerken in tab B**
|
|
Pas de titel aan naar "Smoke Story — updated".
|
|
→ Tab A reflecteert de nieuwe titel.
|
|
→ Geen dubbele entry, geen flickering.
|
|
|
|
- [ ] **6. Story verwijderen in tab B**
|
|
Verwijder de story.
|
|
→ Tab A verwijdert de story uit de lijst.
|
|
|
|
---
|
|
|
|
### Task (solo-paneel + backlog drie-paneel)
|
|
|
|
- [ ] **7. Task aanmaken via solo-paneel**
|
|
Maak een task aan onder een story in het solo-paneel.
|
|
→ De task verschijnt in het solo-paneel **en** in het backlog drie-paneel **binnen 1 seconde**.
|
|
→ Geen dubbele entry.
|
|
|
|
- [ ] **8. Task status bijwerken**
|
|
Verander de status van de task (bijv. TO_DO → IN_PROGRESS).
|
|
→ Beide panelen reflecteren de nieuwe status.
|
|
|
|
- [ ] **9. Task verwijderen**
|
|
Verwijder de task.
|
|
→ Verdwijnt uit beide panelen.
|
|
|
|
---
|
|
|
|
## Pass-criteria
|
|
|
|
Alle 9 items afgevinkt = smoke geslaagd.
|
|
|
|
Bij een mislukking: noteer welk item faalde en controleer:
|
|
1. De SSE-stream (`/api/realtime/backlog?product_id=...`) in de DevTools-netwerktab.
|
|
2. De Zustand-store via Redux DevTools of een debug-breakpoint in `applyChange`.
|
|
3. De DB-trigger op de relevante tabel (`pg_notify` op INSERT/UPDATE/DELETE).
|