Files
nis2-agile/docs/COLLAUDO_SMOKE_AVATAR_CHECKLIST.md
T
DevEnv nis2-agile f946b3a9ca [DEMO] Checklist smoke avatar-in-the-loop + telemetria demo_events (parent origin confermato dimostrazione)
Criteri oggettivi per-step (navigate+highlight attesi, ARIA fonti certe), pre-flight verde, e query
demo_events per riscontro lato NIS2 post-giro. Smoke browser-driven da AgileHub, nessuna finestra bloccante.
2026-06-13 11:00:45 +02:00

38 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Smoke congiunto avatar-in-the-loop NIS2 — checklist oggettiva + telemetria
> Per il giro live browser-driven guidato da AgileHub (persona ARIA_SUPPORT_NIS2, tour_key `demo:nis2-tour-2026`).
> Bar del brief: "mostra la cosa giusta · dice cose vere · 0 errori tecnici · mai una schermata sbagliata".
> Parent origin confermato: `dimostrazione.agile.software` (widget/hub) iframe-a la SPA su `nis2.dimostrazione.agile.software`.
## Pre-flight (già verde, collaudo `wf_c473580d-ec3`)
- [x] `session-start` → `spa_iframe_url` = `…/dashboard.html?demo=<sid>#djwt=<jwt>` sul sottodominio.
- [x] Auto-auth SPA (token dal `#djwt` prima di `checkAuth`); read 200 / write 403 `DEMO_READ_ONLY`; tenant isolato (996001).
- [x] demo-mode.js: allowlist origin (`dimostrazione` + `nis2.dimostrazione`), `HMAC_ENFORCE=false`.
- [x] RAG 415 attivo (75 chunk + binding ARIA).
## Comportamento atteso per i 10 step (cosa è "giusto")
| Step | navigate → vista | Highlight attesi (devono accendersi sull'elemento reale) | ARIA narra (dal RAG, NIENTE numeri inventati) |
|---|---|---|---|
| 1 | dashboard | `#compliance-gauge`, `#stats-grid`, `#deadlines-list` | score Art.21 + KPI + scadenze |
| 2 | assessment | `#assessment-results`, `#ai-analysis-card` | 80 domande/10 cat + gap analysis AI |
| 3 | acn-gap | `#acn-bar-fill`, `#acn-catalog` | requisiti Det. ACN, essenziali/importanti |
| 4 | risks | `#btn-ai-suggest`, `#fair-histogram` | matrice 5x5 ISO 27005 + FAIR |
| 5 | incidents | `#crit-users`, `#crit-duration`, `#crit-attack` | significatività + 24h/72h/1 mese |
| 6 | policies | `#ai-generate-btn`, `#ai-preview-container` | bozza AI da rivedere/approvare |
| 7 | supply-chain | `#criticality-chart`, `#assessment-live-score` | questionario fornitori pesato |
| 8 | isms | `#btn-aigen`, `#docs-list` | SGSI 6 step + SoA 111 controlli |
| 9 | cross-analysis | `#quick-qs`, `#chat-input` | ARIA fonti certe + analisi trasversale |
| 10 | reports | `#report-container` | report CdA + audit hash-chain + ISO/NIST |
**FAIL se**: pagina sbagliata, highlight su selettore assente/vuoto, ARIA che inventa numeri, qualsiasi scrittura che passa (deve dare 403), o errore tecnico in console.
## Telemetria lato NIS2 (osservabilità del giro)
Durante il giro gli eventi arrivano su `POST /api/demo/event` (tabella `demo_events`, idempotente). Dopo il giro, riscontro lato nostro per la sessione `<sid>`:
```sql
SELECT event_type, step_id, client_timestamp_iso FROM demo_events WHERE session_id = ? ORDER BY id;
```
Atteso: 10× `step_completed` (step_id 1..10), 0× `error_encountered`. Eventuali `error_encountered` riportano `metadata.code` (es. `SELECTOR_NOT_FOUND`, `UNKNOWN_VIEW`, `ACTION_NOT_WHITELISTED`) → triage immediato lato nostro.
## Coordinamento
Lo smoke è browser-driven e lo lancia AgileHub **quando vuole** (nessuna finestra oraria bloccante richiesta dal nostro lato). Dopo il giro: AgileHub verifica retrieval RAG 415 + comportamento persona; NIS2 verifica `demo_events` + console. Se emerge un difetto lato NIS2 → fix + USR2 in pochi minuti.