Deux niveaux : les tests unitaires, rapides, à lancer avant chaque mise en ligne ; les tests de parcours, qui pilotent un vrai navigateur contre un Supabase local.
tests/)npm test (équivaut à vitest run). À compléter par npm run typecheck et npm run lint.vitest.config.ts. Fichiers tests/**/*.test.ts, environnement Node, alias @/ vers src/.src/lib/ et quelques modules de src/data/ (par exemple writeQueue.ts), sans React Native.npm test.scripts/tax-tests.ts, l’ancien script de vérification fiscale, est exécuté par tests/tax-script.test.ts.tests/scenarios.test.ts rejoue les scénarios du cahier de tests du bêta (Claire, Marc, Fiscalité 2025).Les noms de fichiers reprennent l’identifiant du chantier :
| Préfixe | Chantier |
|---|---|
a01- à a24- |
Anomalies du bêta-test (archives/AUDIT_CORRECTIONS-jusqu-au-12-10-2026.md) |
t01-, t02-, t04-, t08-, t-… |
Chantiers transversaux |
c…, d…, n…, r…, f… |
Expérience, apparence, nouveautés N1 à N7, Roo, fonctions de Roo |
v1-, w2-, w3- |
Vagues 1, 2 et 3 de la feuille de route |
fin…, fisc-…, bl-…, ux-… |
Refonte de Finances, Fiscalité, liste des biens, écosystème unifié |
fi-… |
Fiabilisation (dates à l’heure de Paris, erreurs notées, file des écritures) |
Le déployeur (npm run deployer) lance typecheck, lint et test, et s’arrête au premier échec.
e2e/)Résumé de e2e/README.md.
| Dossier ou fichier | Contenu |
|---|---|
parcours/ |
Écrans dans le navigateur (e2e*.js), 96 scripts |
fonctions/ |
Fonctions Supabase (fn*.js), 26 scripts |
securite/ |
Règles d’accès de la base (rls*.js), 5 scripts |
mocks/ |
Faux services : IA (port 8787), Stripe (8788), notifications Expo (8789), Insee et data.gouv (4600) |
fixtures/ |
Fichiers témoins (PDF, photo) |
supabase/ |
Réglages du Supabase local de test (config.toml, seed.sql, functions.env factice) |
suites.json |
Trois séries : verifiee (121 tests au 19/10/2026, dont e2eUI1 « rien de caché sur téléphone », e2eUX11 « action principale et brouillons », e2eUX12 « Valider ma semaine », e2eUX13 « fiche du bien et menu à 6 entrées » et e2eUX14 « Photo d’abord »), horloge (10 scénarios lancés avec l’horloge du navigateur figée, au 28/09/2026 ou au 07/10/2026 pour e2eFin : la taxe foncière « à prévoir » disparaît après le 15 octobre), a-revoir (10 tests mis de côté, chacun avec sa raison) |
config.js |
Réglages lus dans l’environnement ; aucune clé ni chemin dans les scripts |
lib.js |
Outils communs : harness(), signup(), addProperty(), sql(), pay() |
run.js |
Lanceur ; résumé dans resultats/resume.txt, captures dans shots/ |
Les tests de a-revoir ne sont pas lancés par la vérification de GitHub. Raisons au 13/10/2026 :
e2e, e2e2, e2e6, e2e9, e2e10) ;e2e20, remplacé par e2eUX8), Fiscalité avant le parcours en 5 étapes (e2eA05) ;e2e19 : le faux service IA renvoie un autre montant de taxe foncière que celui attendu ;e2eT01 : le sélecteur de fichier du copilote ne s’ouvre pas dans Playwright ;fnSyncMis : scénario manuel, avec un BILLING_SECRET volontairement faux.Il faut Docker et Node 22. Sous Windows, dans WSL (Ubuntu) ou Git Bash. Les étapes, détaillées dans e2e/README.md :
supabase/migrations, supabase/functions et supabase/templates dans e2e/supabase/, puis npx supabase start.npx supabase status -o env et les placer dans E2E_SUPABASE_PUBLISHABLE_KEY et E2E_SUPABASE_SECRET_KEY.node mocks/start.js) et les fonctions (npx supabase functions serve --no-verify-jwt --env-file supabase/functions.env).npx expo export --platform web --output-dir dist-local) et la servir (node e2e/serve.js dist-local 8082).node run.js (série vérifiée), node run.js e2eUX10 fn19 (quelques tests) ou node run.js --serie <nom>.Fichier .github/workflows/verifications.yml, deux séries :
| Série | Quand | Ce qu’elle fait |
|---|---|---|
| « Types, lint et tests » | À chaque envoi sur master et à chaque demande de fusion, sauf s’ils ne touchent que la documentation (docs/, .md) |
npm ci, npm run typecheck, npm run lint, npm test, avec TZ=Europe/Paris et une clé factice |
| « Tests de parcours » | Lundi, mercredi et vendredi à 2 h 17 (heure de GitHub), seulement si master a changé depuis la série précédente ; ou à la main depuis l’onglet Actions, avec un ou quelques tests au choix (vide = toute la série) ; arrêt au bout de 2 h 45 |
Supabase local, faux services, version web locale, puis la série verifiee ; résultats et captures joints, gardés 14 jours |
Important : au 13/10/2026, le dossier .github/ et le dossier e2e/ ne sont pas encore enregistrés dans git (git status les montre « non suivis »). Tant qu’ils ne sont pas dans un commit envoyé sur GitHub, aucune de ces vérifications ne tourne.
src/lib/ (pas d’appel à Supabase, pas de React Native).Créer tests/<chantier>-<sujet>.test.ts, sur le modèle de tests/fi-file-ecritures.test.ts :
import { describe, expect, it } from 'vitest';
import { maFonction } from '@/lib/monModule';
describe('mon sujet', () => {
it('ce que la règle garantit, en français', () => {
expect(maFonction(/* … */)).toEqual(/* … */);
});
});
tests/fi-dates-paris.test.ts.npm test, npm run typecheck, npm run lint.Règles de e2e/README.md :
lib.js.config.js.fixtures/ (FIX('nom')), les fichiers créés vont dans le dossier temporaire (TMP('nom')).horloge de suites.json.verifiee seulement après être passé deux fois de suite.securite/, un test de fonction dans fonctions/.