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:
@@ -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`.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user