Exploiter et lancer

Contrats de test et CI

Utilisez les niveaux de test, l’infrastructure réelle, Playwright, la couverture croissante et les gates de build sans réduire les garanties.

Vérifié avec le commit b16b416.

La suite est organisée par ce que chaque niveau peut simuler. Une base mockée ne prouve pas une contrainte unique ; une route qui mocke son guard ne prouve pas que l’authentification précède la lecture.

NiveauProuvePeut mocker
Unitrègles pures et architecturerien
APIHTTP, enveloppe, ordre d’authservices/modèles, pas les guards
Serviceorchestration, reprises, coût, compensationmodèles et SDK externes
Componentcomportement visiblefetch
Databasecontraintes, verrous, vrais timestampsrien
E2Enavigateur connecté et infrastructure localerien

Chaque route a un test d’auth qui vérifie qu’aucune fonction de données n’est appelée avant 401/403. Toute mutation de crédit ou d’argent a un test de rejeu avec un seul effet.

pnpm test:fast
pnpm test:run
pnpm test:cov
pnpm test:db
pnpm exec playwright install chromium
pnpm test:e2e

test:fast est la vérification isolée avant commit ; test:run exécute les projets Vitest configurés. test:cov impose les seuils de couverture aux services, modèles, routes API, code serveur partagé et données d’Admin.

Sans TEST_DATABASE_URL ni TEST_REDIS_URL, Vitest exclut le projet d’infrastructure avant la collecte. PostgreSQL et Redis s’activent séparément ; une exécution Redis seule n’initialise ni Better Auth ni PostgreSQL. La CI exige les deux URL et échoue si l’infrastructure manque. Le nom de la base PostgreSQL de test doit contenir test, car les tables sont tronquées. Ne configurez pas les URL de test dans les déploiements de production.

Playwright teste connexion, crédits tenant, upload/suppression Garage et la tâche image à cinq crédits jusqu’au worker et au téléchargement signé.

Une cible E2E externe exige E2E_BASE_URL, E2E_USER_EMAIL et E2E_USER_PASSWORD ; les tests qui écrivent ne s’exécutent qu’avec E2E_ALLOW_MUTATIONS=1 sur un environnement jetable. Ne ciblez pas la production.

La CI exécute lint, migrations PostgreSQL 16, Redis, couverture, builds et navigateur. Ne baissez pas un seuil et ne remplacez pas l’infrastructure réelle par des mocks pour obtenir du vert.