Files
nis2-agile/docs/COLLAUDO_SMOKE_AVATAR_CHECKLIST.md
T

44 lines
3.8 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.
## Validazione browser headless lato NIS2 (2026-06-13) — eseguita
Con `google-chrome --headless --dump-dom` (esegue il JS, cosa che curl non fa) su `nis2.dimostrazione.agile.software`, sessione demo reale (`?demo=<sid>#djwt=<jwt>`), pagine dashboard/risks/incidents:
- **Auth-bootstrap OK**: nessun redirect a login (`login-form` assente), titolo pagina reale, contenuto renderizzato (gauge, tabelle).
- **Runtime demo OK**: `#nis2-demo-banner` presente + `body.nis2-demo-on` → demo-mode.js inizializza.
- **2 bug SPA-side trovati e FIXATI** (commit `fcf8b09`): (1) `api.token` non sincronizzato in-memory → redirect a login; (2) `boot()` bloccato sul `seed` HMAC (non disponibile cross-origin, e non serve con HMAC off). Senza questi fix il giro avatar sarebbe finito su "pagina di login".
## 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.