Documenta il salto automatico dei test CSI quando il portale non risponde

Aggiunto un punto ai Limiti noti di collegamento-csi.md: il portale può essere
del tutto irraggiungibile (non solo cambiare formato, già coperto dal punto 5),
con l'episodio dell'8 settembre 2026 come esempio verificato. Spiega perché
api.test.ts salta quei 5 test invece di farli fallire, e che tornano a girare da
soli quando il CSI risponde di nuovo. Aggiunta la stessa nota, più breve, in
test/README.md.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-08 14:48:33 +02:00
co-authored by Claude Sonnet 5
parent cde01ff02b
commit 8a692bfe2f
2 changed files with 20 additions and 0 deletions
+14
View File
@@ -118,6 +118,20 @@ useCsi() → src/lib/csi.ts (React Query, staleTime 6h)
cambiano solo se cambia il dominio o serve autenticazione, nel qual caso va toccata anche cambiano solo se cambia il dominio o serve autenticazione, nel qual caso va toccata anche
`src/routes/api/public/csi.ts`); va poi aggiornato anche `test/unit/csi-core.test.ts` con `src/routes/api/public/csi.ts`); va poi aggiornato anche `test/unit/csi-core.test.ts` con
fixture nel nuovo formato. fixture nel nuovo formato.
6. **Il portale può essere del tutto irraggiungibile, non solo cambiare formato.** Scenario
diverso dal punto 5 (lì il JSON è valido ma non riconosciuto, qui la risposta non è
nemmeno JSON): l'8 settembre 2026 `getEventsByTeamId.php` ha risposto con `200` ma un
errore SQL del loro backend in chiaro al posto del JSON
(`Query non valida (getProjectTeams): Table 'uqc2os2x_livescore.seasons' doesn't exist`,
verificato con `curl` diretto sul loro dominio). `leggiCsi()` (`src/routes/api/public/
csi.ts`) intercetta l'eccezione di `JSON.parse` nel `try/catch` della route e risponde
`503 "CSI non raggiungibile"` (o serve la cache se ce n'è una) — nessun crash, ma nessun
dato nuovo finché il portale non torna. **Effetto sulla suite test**: i 5 test di
`test/integration/api.test.ts` che leggono il CSI reale sondano `/api/public/csi` una
volta prima di partire; se risponde con errore li salta (`salta()`, non `prova()`) invece
di farli fallire, loggando il motivo — la suite resta verde durante un'indisponibilità
temporanea del portale, senza che quei 5 test vengano cancellati o disattivati in modo
permanente: tornano a girare da soli non appena il CSI risponde di nuovo con `200`.
--- ---
+6
View File
@@ -102,6 +102,12 @@ Due cose scoperte scrivendo questi test, utili a chi ne aggiunge:
I test che richiedono `SUPABASE_SERVICE_ROLE_KEY` si saltano da soli se manca. I test che richiedono `SUPABASE_SERVICE_ROLE_KEY` si saltano da soli se manca.
- Il check del parsing CSI può girare contro il portale reale: - Il check del parsing CSI può girare contro il portale reale:
`CSI_LIVE=1 bun test/unit/csi-core.test.ts`. `CSI_LIVE=1 bun test/unit/csi-core.test.ts`.
- I 5 test di `integration/api.test.ts` che leggono il CSI reale (classifica, partite,
cache, obiettivi o3/o4/o5) sondano `/api/public/csi` prima di partire: se il portale non
risponde (in manutenzione lato loro, vedi
[docs/modules/collegamento-csi.md](../docs/modules/collegamento-csi.md) § Limiti noti) si
saltano da soli invece di far fallire la suite, e tornano a girare da soli quando il
portale risponde di nuovo.
## Limite noto ## Limite noto