import { defineConfig } from "vitest/config";

/**
 * Configuration Vitest dédiée aux tests de mutation.
 *
 * Stryker recharge l'ensemble des fichiers de test à chaque activation de
 * mutant. Avec les 11 fichiers de la suite complète, cet amorçage représentait
 * l'essentiel du temps d'exécution (~270 ms par mutant, alors qu'un test met
 * ~8 ms). On ne déclare donc ici que les fichiers qui couvrent réellement les
 * modules mutés — les autres ne feraient qu'être chargés puis ignorés.
 *
 * À tenir synchronisé avec le champ `mutate` de stryker.config.json.
 */
export default defineConfig({
  test: {
    environment: "node",
    // Voir vitest.mutation.full.config.js pour les mesures : sur un jeu de
    // fichiers 100 % node, threads sans ré-isolation divise l'overhead
    // d'amorçage par 8. Ne pas reporter tel quel dans vitest.config.js, qui
    // contient le test a11y sous jsdom (où ce réglage est plus lent).
    pool: "threads",
    poolOptions: { threads: { isolate: false, singleThread: true } },
    fileParallelism: false,
    include: [
      "apps/api/test/validate.test.js",
      "apps/api/test/adminAuth.test.js",
    ],
    reporters: ["default"],
  },
});
