Skip to content

Latest commit

 

History

History
104 lines (79 loc) · 3.37 KB

File metadata and controls

104 lines (79 loc) · 3.37 KB

Plan de refactorisation des tests - Agile Planner MCP Server

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.

Problèmes identifiés

1. Asynchronisme et timeouts

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

2. Erreurs de parsing liées aux caractères français

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"

Tests à refactoriser

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 -

Approche recommandée

Pour les problèmes d'asynchronisme :

  1. 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();
    });
  2. Utiliser done avec timeout explicit :

    test('should handle async operations', (done) => {
      someAsyncOperation().then(result => {
        expect(result).toBe('expected');
        done();
      });
    }, 10000); // timeout explicite en ms
  3. Nettoyer les ressources :

    let server;
    
    beforeEach(() => {
      server = startServer();
    });
    
    afterEach(() => {
      server.close(); // Crucial pour éviter les fuites
    });

Pour les erreurs de parsing :

  1. É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é`);
  2. Utiliser des caractères ASCII lorsque possible :

    // Avant
    const errorMessage = "L'opération a échoué";
    
    // Après
    const errorMessage = "L'operation a echoue";

Tests à ajouter

  • 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

Suivi des progrès

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é à".