Some checks are pending
Deploy info-canicule / deploy (push) Waiting to run
Graph T° (TemperatureChartInteractive.astro) : - Onglets 24 h / 7 j / 30 j (toggle JS, séries serialisées au SSR) - Hover vertical line + tooltip valeurs - Overlay normales mois en pointillé (TX orange, TN bleu) - Onglet 24 h dispo seulement si l'API MF a répondu (best-effort) Météo France OAuth2 (lib/meteofrance-auth.ts + observations.ts) : - client_credentials avec refresh auto, cache token Valkey - Fallback METEOFRANCE_STATIC_TOKEN pour debug - /synop endpoint pour 24h horaires par station SYNOP du dept - Mapping dept → station SYNOP la plus proche (src/data/stations-synop.json) - En attente de creds : SDK skip silencieusement, l'onglet 24h n'apparaît pas Widget iframe (/embed/dept/[code] + /embed doc) : - Layout minimal sans header/footer global - Réutilisable via iframe avec une ligne - Page /embed avec snippet copier-coller + aperçu live Tests E2E Playwright (tests/e2e/) : - home (carte 96 paths, tooltip dept, navigation) - api (health, vigilance, vigilance/dept) - departement (tabs période, DROM notice, 404) - static pages (a-propos, mentions, dependances, soutenir, conseils, embed) - embed widget (rendu minimal, headers X-Frame OK) - 20+ tests, run via pnpm test:e2e (live) ou test:e2e:local Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
35 lines
1.4 KiB
TypeScript
35 lines
1.4 KiB
TypeScript
import { test, expect } from '@playwright/test';
|
|
|
|
test.describe('Home', () => {
|
|
test('charge avec carte SVG 96 départements', async ({ page }) => {
|
|
await page.goto('/');
|
|
await expect(page).toHaveTitle(/Info Canicule/);
|
|
const paths = page.locator('#france-map path[data-code]');
|
|
await expect(paths).toHaveCount(96);
|
|
});
|
|
|
|
test('navigation principale visible', async ({ page }) => {
|
|
await page.goto('/');
|
|
await expect(page.getByRole('link', { name: /Carte/i }).first()).toBeVisible();
|
|
await expect(page.getByRole('link', { name: /Conseils/i }).first()).toBeVisible();
|
|
await expect(page.getByRole('link', { name: /Soutenir/i }).first()).toBeVisible();
|
|
});
|
|
|
|
test('section "Départements en alerte" si alertes du jour', async ({ page }) => {
|
|
await page.goto('/');
|
|
// Soit la section existe avec alertes, soit pas du tout (jour calme) — ne casse pas si vide
|
|
const section = page.getByRole('heading', { name: /Départements en alerte/i });
|
|
if (await section.count() > 0) {
|
|
await expect(section).toBeVisible();
|
|
}
|
|
});
|
|
|
|
test('tooltip carte au hover', async ({ page }) => {
|
|
await page.goto('/');
|
|
const tooltip = page.locator('#map-tooltip');
|
|
await expect(tooltip).toBeHidden();
|
|
await page.locator('#france-map path[data-code="75"]').hover();
|
|
await expect(tooltip).toBeVisible();
|
|
await expect(tooltip).toContainText('Paris');
|
|
});
|
|
});
|