Ce document liste les tests qui nécessitent une refactorisation pour résoudre les problèmes d'asynchronisme et autres erreurs. Il sert de guide pour améliorer la qualité et la fiabilité des tests.
Les tests end-to-end échouent souvent à cause d'opérations asynchrones non correctement gérées. Ces erreurs apparaissent comme :
- "Cannot log after tests are done"
- "A worker process has failed to exit gracefully"
- Timeouts lorsque des promesses ne sont pas proprement résolues
Certains fichiers contiennent des caractères accentués qui causent des erreurs de parsing :
tests/backlog-generator.test.js(ligne 108) : "Unexpected token erreur"tests/integration/cli-integration.test.js(ligne 54) : "Unexpected token exécution"
| Fichier | Problème | Priorité | Assigné à |
|---|---|---|---|
tests/integration/mcp.e2e.test.js |
Asynchronisme | Haute | - |
tests/integration/mcp.ultra-minimal.test.js |
Asynchronisme | Haute | - |
tests/integration/isolated/generateFeature-cli.test.js |
Asynchronisme | Moyenne | - |
tests/integration/isolated/generateBacklog-cli.test.js |
Asynchronisme | Moyenne | - |
tests/backlog-generator.test.js |
Tokens français | Basse | - |
tests/integration/cli-integration.test.js |
Tokens français | Basse | - |
-
Améliorer la gestion des promesses :
// Avant test('should generate a backlog', () => { const result = generateBacklog(); expect(result).toBeDefined(); }); // Après test('should generate a backlog', async () => { const result = await generateBacklog(); expect(result).toBeDefined(); });
-
Utiliser
doneavec timeout explicit :test('should handle async operations', (done) => { someAsyncOperation().then(result => { expect(result).toBe('expected'); done(); }); }, 10000); // timeout explicite en ms
-
Nettoyer les ressources :
let server; beforeEach(() => { server = startServer(); }); afterEach(() => { server.close(); // Crucial pour éviter les fuites });
-
Échapper les caractères spéciaux :
// Avant expect(result).toContain("L'exécution a échoué"); // Après expect(result).toContain("L\\'exécution a échoué"); // ou expect(result).toContain(`L'exécution a échoué`);
-
Utiliser des caractères ASCII lorsque possible :
// Avant const errorMessage = "L'opération a échoué"; // Après const errorMessage = "L'operation a echoue";
- Test unitaire pour
adaptResultForMarkdown - Test unitaire pour
validateFeatureParams - Test d'intégration pour le workflow complet de génération via CLI
- Test E2E ultra-minimal pour la compatibilité multi-LLM
Mettez à jour ce document au fur et à mesure que les tests sont refactorisés en ajoutant des check [x] dans les cases à cocher et en mettant à jour la colonne "Assigné à".