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:
@@ -78,6 +78,8 @@ In sviluppo, `vite-plugin-websocket.js` incorpora il server WebSocket dentro il
|
||||
|
||||
I test E2E girano in serie (`workers: 1`) per evitare race condition sullo stato WebSocket. Eseguire `npm run serve` prima di `npm run test:e2e`.
|
||||
|
||||
La copertura statement/linee della suite Vitest è oltre il 99%. Per testare `startServer()` (`server.js`) o i rami platform-dependent di `getNetworkIPs()` (`server-utils.js`) senza effetti collaterali reali (scrittura su `.segnapunti/state.json`, dipendenza dalla piattaforma), si mocka il modulo con `vi.mock`/`vi.doMock` (vedi `tests/integration/startServer.test.js` e `tests/unit/server-utils-platform.test.js`) invece di eseguire il codice reale.
|
||||
|
||||
## Deploy
|
||||
|
||||
Il progetto si distribuisce tramite Docker. L'immagine è pubblicata sul registry Gitea self-hosted (`santantonio.sytes.net`):
|
||||
|
||||
@@ -242,8 +242,12 @@ Lo stato viene salvato in `.segnapunti/state.json` anche in modalità dev.
|
||||
| `npm run test:e2e` | Playwright — Chromium, Firefox, Mobile Chrome |
|
||||
|
||||
Le suite Vitest coprono la logica di gioco (`gameState`, inclusa `formInizio`),
|
||||
il protocollo e il routing del server, la persistenza, il client WebSocket
|
||||
(`wsMixin`), i componenti Vue e la generazione del referto.
|
||||
il protocollo e il routing del server (incluso l'avvio effettivo di
|
||||
`startServer`), la persistenza, il rilevamento di rete/piattaforma
|
||||
(`server-utils`, inclusi i rami WSL/PowerShell), il client WebSocket
|
||||
(`wsMixin`, connessione/riconnessione/cleanup), i componenti Vue e la
|
||||
generazione del referto (inclusi i suoi side-effect di stampa). La copertura
|
||||
statement complessiva è oltre il 99%.
|
||||
|
||||
> I test E2E richiedono il server in esecuzione (`npm run serve`) e i browser Playwright installati:
|
||||
> ```bash
|
||||
|
||||
+28
-7
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user