import { describe, it, expect } from 'vitest'; import { cacheControlFor } from '../src/app.js'; // Régression : à la mise à jour de l'app desktop, l'index.html mis en cache par le client était // revalidé en 304 (etag = taille+mtime, mtime figé à 1985 par npm pack dans le tarball) et // continuait donc de référencer des /assets/ disparus → modules servis en text/html par le // fallback SPA → page noire. Seuls les noms hachés sont cachables. describe('cacheControlFor', () => { it('rend les assets hachés cachables indéfiniment', () => { expect(cacheControlFor('/assets/index-94trXkeo.js')).toBe('public, max-age=31536000, immutable'); expect(cacheControlFor('/assets/inter-latin-wght-normal-Dx4kXJAl.woff2')).toBe( 'public, max-age=31536000, immutable', ); }); it("interdit la mise en cache de l'index.html", () => { expect(cacheControlFor('/index.html')).toBe('no-store'); }); it('interdit la mise en cache des fichiers racine non hachés', () => { for (const p of ['/sw.js', '/theme-boot.js', '/manifest.webmanifest', '/favicon.ico', '/icon-512.png']) { expect(cacheControlFor(p)).toBe('no-store'); } }); });