rentoo

Tests

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 unitaires (vitest, dossier tests/)

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.

Tests de parcours (dossier 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 :

Lancer en local

Il faut Docker et Node 22. Sous Windows, dans WSL (Ubuntu) ou Git Bash. Les étapes, détaillées dans e2e/README.md :

  1. Copier supabase/migrations, supabase/functions et supabase/templates dans e2e/supabase/, puis npx supabase start.
  2. Lire les clés locales avec npx supabase status -o env et les placer dans E2E_SUPABASE_PUBLISHABLE_KEY et E2E_SUPABASE_SECRET_KEY.
  3. Démarrer les faux services (node mocks/start.js) et les fonctions (npx supabase functions serve --no-verify-jwt --env-file supabase/functions.env).
  4. Exporter la version web locale (npx expo export --platform web --output-dir dist-local) et la servir (node e2e/serve.js dist-local 8082).
  5. Lancer node run.js (série vérifiée), node run.js e2eUX10 fn19 (quelques tests) ou node run.js --serie <nom>.

La vérification GitHub

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.

Ajouter un test

Un test unitaire

  1. Mettre la règle dans une fonction pure de src/lib/ (pas d’appel à Supabase, pas de React Native).
  2. 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(/* … */);
      });
    });
    
  3. Écrire le test d’abord, le voir échouer, puis coder.
  4. Pour une date : passer la date en paramètre, ou tester à l’heure de Paris comme tests/fi-dates-paris.test.ts.
  5. npm test, npm run typecheck, npm run lint.

Un test de parcours

Règles de e2e/README.md :