Comment intégrer les Badges de Tests
Ce guide explique comment configurer et utiliser le système de badges automatiques pour les tests dans les spécifications.🎯 Vue d’ensemble
Le système de badges permet d’afficher automatiquement le statut des tests (Checkly pour le frontend, Vitest pour le backend) directement dans les fichiers de spécification. Les badges sont mis à jour automatiquement après chaque exécution des tests.📋 Prérequis
- Node.js 20+
- Variables d’environnement configurées :
CHECKLY_API_KEY: Clé API ChecklyCHECKLY_ACCOUNT_ID: ID du compte ChecklyCI_TEST_SECRET: Secret partagé entre SST et GitHub Actions pour les endpoints de smoke tests
🔧 Configuration
1. Variables d’Environnement
Ajoutez les variables d’environnement dans votre.env ou dans les secrets GitHub Actions :
/tests/check-exchanges) :
2. Configuration Vitest
Le fichiervitest.config.ts est configure pour generer des rapports JSON. En local, les rapports sont ecrits dans docs/reports/vitest/.
3. Workflow GitHub Actions
Le pipeline CI (ci.yml) sur master suit l’ordre : Release -> Deploy -> Smoke Tests.
Les smoke tests post-deploy appellent les endpoints /tests/* sur la prod deployee et generent les badges a partir des reponses.
Le workflow tests.yml (branches main/develop) execute Vitest en CI pour les PR.
📝 Utilisation du Template
Créer une Nouvelle Spécification
- Copiez le template depuis
docs/templates/spec-template.md - Placez-le dans
docs/specifications/ - Remplissez les sections avec votre contenu
- Les badges seront générés automatiquement lors de la prochaine exécution des tests
Structure du Template
Le template inclut une section de badges qui sera automatiquement mise à jour :🚀 Génération Manuelle des Badges
Pour générer les badges manuellement :🔄 Workflow Automatique
Pipeline CI sur master (ci.yml)
- Semantic Release : versioning automatique
- Deploy :
sst deploy --stage prod+ Checkly deploy - Smoke Tests post-deploy :
- Appel de
GET https://api.poihunter.com/tests/check-exchanges(protege par Bearer tokenCI_TEST_SECRET) - Le rapport JSON est sauvegarde dans
docs/reports/vitest/specs/ - Les badges sont generes par
npm run test:badges - Les specs et rapports sont commites automatiquement
- Appel de
Pipeline sur branches (tests.yml)
- Les tests Vitest sont executes en CI
- Les badges sont generes et commites
Mapping Tests ↔ Spécifications
Le scriptgenerate-test-badges.js associe automatiquement les tests aux spécifications en se basant sur :
- Checkly : Le nom du check Checkly doit contenir le nom de la spécification (ou vice versa)
- Vitest : Le chemin du fichier de test doit correspondre au nom de la spécification
- Spécification :
docs/specifications/swing-position-workflow.md - Test Checkly :
positions-filters→ sera associé si le nom contient “position” - Test Vitest :
packages/functions/src/tests/positions/swingPositionService.test.ts→ sera associé car contient “position”
📊 Format des Badges
Les badges utilisent Shields.io avec les couleurs suivantes :- 🟢 brightgreen : Tous les tests passent
- 🔴 red : Au moins un test échoue
- ⚪ lightgrey : Aucun test trouvé
🧪 Tests
Tests Frontend (Checkly)
Les tests frontend sont exécutés via Checkly et surveillent l’expérience utilisateur en production. Fichiers de tests :features/[nom-du-test].spec.ts
Configuration Checkly :
Tests Backend (Vitest)
Les tests backend sont exécutés via Vitest et valident la logique métier. Fichiers de tests :packages/functions/src/tests/[module]/[nom-du-test].test.ts
Exécution :
🔍 Dépannage
Les badges ne se mettent pas à jour
- Vérifiez que les variables d’environnement Checkly sont définies
- Vérifiez que les rapports dans
docs/reports/vitest/specs/existent - Pour le pipeline master, vérifiez que
CI_TEST_SECRETest identique dans les secrets GitHub et dans SST (npx sst secrets list --stage prod) - Vérifiez les logs du workflow GitHub Actions
Les badges affichent “no-tests”
Cela signifie qu’aucun test n’a été trouvé pour cette spécification. Vérifiez :- Que les noms des tests correspondent au nom de la spécification
- Que les fichiers de tests existent et sont correctement nommés
- Que les tests sont bien exécutés
Erreur lors de la récupération Checkly
Si l’API Checkly retourne une erreur :- Vérifiez que
CHECKLY_API_KEYest valide - Vérifiez que
CHECKLY_ACCOUNT_IDest correct - Vérifiez que les checks Checkly sont bien déployés
📚 Références
📖 Exemple Concret
Voici un exemple complet d’une spécification avec badges de tests :Exemple : Badges de tests
📊 Statut des Tests
Tests Frontend (Checkly)🎯 Objectif
Cet exemple sert de validation “end-to-end” pour :- le lien Spécification ↔ Tests
- la génération du rapport Vitest JSON (
reports/vitest/results.json) - la mise à jour automatique des badges dans les specs
🧪 Tests associés
- Frontend (Playwright / Checkly) :
features/test-badges-example.spec.ts - Backend (Vitest) :
packages/functions/src/tests/specs/test-badges-example.test.ts
✅ Critères d’acceptation
- Le test frontend passe et peut être déployé/surveillé via Checkly.
- Le test backend passe via Vitest.
- Après exécution du job CI, la section “Statut des Tests” est mise à jour automatiquement dans ce fichier.