info-canicule/tests/e2e/api.spec.ts
Florian 27441cdbb8
Some checks are pending
Deploy info-canicule / deploy (push) Waiting to run
feat: retire API publique + dedupe load-balancing MF + maj pages
API publique retirée :
- /api/vigilance et /api/vigilance/dept/[code] supprimés
- Mentions retirées dans footer, /mentions-legales, /embed
- /api/health garde, sans CORS (usage interne UptimeRobot + cron HC.io)
- Tests E2E mis à jour (vérifient 404 sur les endpoints retirés)

Pages :
- /dependances : entièrement mise à jour (Sentry, sharp, Playwright,
  sitemap, typography ajoutés ; API MF officielle DPObs+DPVigilance,
  normales 1991-2020 listées ; section Services tiers ajoutée pour
  Opendatasoft en fallback ; section Infrastructure complétée avec
  GlitchTip + CrowdSec).
- /soutenir : "~7€/mois mutualisés" → "~30€/mois", suppression du
  détail VPS OVH (juste "infra"), suppression du bloc "Réutiliser
  les données via API".

Vigilance Météo France load-balancing :
- lib/vigilance.ts : fetch parallèle x3 et garde la réponse au
  update_time le plus récent. Constat 2026-05-26 : le gateway MF
  load-balance entre instances désynchronisées (~60% renvoyaient
  bulletin J-1, ~40% bulletin J). Cette mitigation atteint >95%
  de probabilité d'avoir le bulletin frais.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-26 02:16:04 +02:00

28 lines
1 KiB
TypeScript

import { test, expect } from '@playwright/test';
test.describe('API', () => {
test('/api/health retourne status ok et cache true', async ({ request }) => {
const res = await request.get('/api/health');
expect(res.status()).toBeLessThan(600);
const body = await res.json();
expect(body).toHaveProperty('status');
expect(body).toHaveProperty('cache');
expect(body).toHaveProperty('time');
});
test('/api/health pas de CORS (interne uniquement)', async ({ request }) => {
const res = await request.get('/api/health');
const cors = res.headers()['access-control-allow-origin'];
expect(cors).toBeUndefined();
});
test('/api/vigilance retourne 404 (API publique retirée)', async ({ request }) => {
const res = await request.get('/api/vigilance');
expect(res.status()).toBe(404);
});
test('/api/vigilance/dept/75 retourne 404 (API publique retirée)', async ({ request }) => {
const res = await request.get('/api/vigilance/dept/75');
expect(res.status()).toBe(404);
});
});