# Piano di collaudo finale

## Evidenze automatiche

| Controllo | Esito atteso |
|---|---|
| `php artisan test` | superato: 154 test, 975 asserzioni |
| migration | 66 migration presenti |
| `vendor/bin/pint --test` | superato |
| `npm run build` | superato con Vite 8.1.5 |
| `composer audit --locked` | nessuna vulnerabilità nota |
| `npm audit` | nessuna vulnerabilità nota |
| cache config/route/view | superata |
| backup MySQL e verifica deep | superato |
| Apache `Syntax OK` e file sensibili | superato in locale |
| Playwright login 390×844 | nessun overflow o errore console |

## Matrice funzionale

| Area | Automatico | Collaudo manuale |
|---|---|---|
| Autenticazione e recupero password | sì | accesso reale coach/atleta, e-mail |
| Ruoli, policy, IDOR | sì | menu e URL incrociati |
| Dashboard differenziate | sì | dati reali, empty/loading state |
| Profilo atleta | sì | modifica coach/atleta e timeline |
| Esercizi | sì | CRUD, upload, filtri e anteprima |
| Player multi-sorgente | sì | browser reali e consenso provider |
| YouTube e Shorts | sì | riproduzione reale |
| Vimeo | sì | riproduzione reale |
| Instagram | sì | embed pubblico o fallback |
| TikTok | sì | embed pubblico o fallback |
| MP4/WebM/OGG | sì | codec su Safari/Chrome/Firefox |
| Provider esterno | sì | apertura sicura in nuova scheda |
| Schede e versioni | sì | editor, riordino tastiera, preview |
| Assegnazioni e calendario | sì | sostituzione, timezone, riprogrammazione |
| Sessioni | sì | autosave atleta/coach, serie manuali, dropset, media, timer e audio |
| Diario e statistiche | sì | filtri, grafici, correzioni audit |
| Nutrizione | sì | piani, macro, spesa, integrazione |
| Progressi | sì | misure, limiti, grafici, confronti |
| Fotografie | sì | upload dispositivo, orientamento, confronto |
| Chat | no | non collaudabile: controller, route e UI assenti |
| Notifiche | sì | scheduler cPanel e permesso browser opzionale |
| Report | sì | stampa, PDF e CSV con dati reali |
| Impostazioni | sì | cache, reset, manutenzione |
| Privacy e audit | sì | testi dopo revisione legale |
| Backup | sì | ripristino di prova isolato |
| PWA | parziale | installazione e shell via HTTPS |
| Responsive/accessibilità | parziale | mobile, tablet, desktop, tastiera e screen reader |
| Apache | parziale | hosting reale, rewrite, header, permessi e cron |

## Scenari critici

1. l’atleta non accede a dati coach o di altri utenti modificando ULID/ID;
2. una scheda assegnata conserva la versione storica dopo una nuova pubblicazione;
3. l’avvio ripetuto della sessione non duplica esercizi o serie;
4. la stessa idempotency key non duplica autosave;
5. una fotografia privata senza sessione non espone file o percorso;
6. un URL video non HTTPS, locale o non ammesso viene rifiutato o degradato al fallback;
7. report, CSV, PDF ed export privacy rispettano policy e audit;
8. il cron ripetuto non duplica promemoria;
9. un backup alterato fallisce checksum e verifica deep;
10. la manutenzione blocca l’atleta mantenendo la gestione coach prevista.

## Browser e viewport

Collaudare Chrome, Safari e Firefox correnti a 360×800, 390×844, 768×1024, 1280×800 e 1440×900; verificare zoom 200%, tastiera, focus, contrasto, screen reader e orientamento.

## Apache reale

Verificare document root `public`, rewrite, file sensibili 403/404, HTTPS, header, upload non eseguibile, cache, permessi, cron, SMTP, log privati, backup fuori web root e PWA.

## Criteri di accettazione

La RC può passare in produzione quando test automatici e checklist post-deploy sono verdi, non esistono difetti bloccanti, la revisione legale è conclusa e la non conformità chat è risolta o formalmente esclusa dall’MVP.
