docs: aggiorna README, tests/README e CLAUDE.md con la nuova copertura test

Riflette i test aggiunti nei commit precedenti: rilevamento
piattaforma di server-utils, avvio effettivo di startServer, rami di
errore del WebSocket handler, cleanup/riconnessione di wsMixin,
side-effect di generaReferto e layout esteso del controller.
Aggiorna anche i conteggi di esempio (15 file/362 test Vitest, 81
E2E) e documenta come verificare la copertura (>99% statement).
This commit is contained in:
2026-07-03 12:04:15 +02:00
parent 0b7cbd00f6
commit 82c2286ca6
3 changed files with 36 additions and 9 deletions
+28 -7
View File
@@ -94,7 +94,9 @@ Esempi reali nel progetto:
- time out (`startTimeout`/`stopTimeout`: squadra, video, timestamp)
- generazione del referto (`buildRefertoHtml`)
- persistenza stato su disco (`persist.js`, con `fs` mockato)
- utility di rete (`server-utils.js`)
- utility di rete (`server-utils.js`), incluso il rilevamento piattaforma
(WSL/PowerShell vs. `os.networkInterfaces()`, con `fs`/`child_process`/`os`
mockati per non dipendere dalla macchina che esegue i test)
- elenco video spot (`spot-utils.js`, su cartella temporanea reale)
Quando falliscono:
@@ -119,6 +121,8 @@ Esempi reali nel progetto:
- autorizzazioni (solo controller puo inviare certe azioni)
- timer server-side del time out (auto-`stopTimeout` dopo 30s, `startedAt` impostato dal server)
- routing del server Express (`createApp`: rotte display/controller/asset, `/spot/list` e file statici `/spot/`)
- rami di errore del WebSocket handler (`ws.send`/`ws.terminate` che lanciano, `applyAction` che fallisce a metà azione: lo stato precedente va ripristinato senza propagare l'eccezione)
- avvio effettivo di `startServer` (`server.js`): ascolto HTTP, upgrade su `/ws`, rifiuto su altri percorsi, persistenza dopo un'azione — con `persist.js` mockato per non toccare mai `.segnapunti/state.json` reale
Quando falliscono:
- spesso c'e problema nel protocollo messaggi o nei controlli di ruolo
@@ -138,8 +142,9 @@ Esempi reali nel progetto:
- dialog reset/config/cambi
- modal time out del controller (scelta squadra/video, banner, countdown)
- overlay time out del display (video, placeholder, countdown, dissolvenza)
- bottone REFERTO nel dialog PARTITA FINITA
- client WebSocket (`wsMixin`: connessione, riconnessione, `sendWs`, errori)
- bottone REFERTO nel dialog PARTITA FINITA e generazione del referto stampabile (`generaReferto`: `window.open`, scrittura HTML, stampa)
- client WebSocket (`wsMixin`: connessione, riconnessione con backoff, cleanup allo smontaggio, `sendWs`, errori)
- layout esteso/landscape del controller (pannelli squadra, popup automatico SET VINTO con soglia decisiva)
Quando falliscono:
- spesso hai rotto template, computed, metodi o binding
@@ -190,8 +195,8 @@ Note importanti:
Caso OK (verde):
```text
Test Files 10 passed (10)
Tests 212 passed (212)
Test Files 15 passed (15)
Tests 362 passed (362)
```
Significa:
@@ -208,7 +213,7 @@ Caso KO (rosso):
Caso OK:
```text
75 passed
81 passed
```
Caso KO:
@@ -279,7 +284,23 @@ npm run test:e2e -- --update-snapshots
npm run test:e2e
```
## 10) Come aggiungere un nuovo test (consigli pratici)
## 10) Copertura del codice
Non c'è uno script `npm` dedicato, ma si può controllare la copertura in
qualsiasi momento con:
```bash
npx vitest run tests/unit tests/integration tests/component --coverage
```
Il report a schermo mostra percentuale e righe scoperte per file. La suite
attuale copre oltre il 99% di statement/linee; le poche righe rimaste
scoperte sono documentate nei commit dei rispettivi test come codice morto,
difensivo, oppure legato a HMR (`import.meta.hot`) o all'avvio diretto
(`node server.js`) — casi non testabili in modo significativo senza side
effect reali sull'ambiente.
## 11) Come aggiungere un nuovo test (consigli pratici)
- metti i test nel posto giusto:
- `tests/unit` per logica pura