Retour à la leçonMission
Mission : une suite de tests qui échoue au hasard sur la CI
Diagnostiquer une suite de tests flaky causée par un manque d'isolation de la base de données, puis remplacer un test fragile axé implémentation par un test de comportement.
Contexte
La CI de l'équipe échoue environ une fois sur cinq, toujours sur des tests différents, jamais les mêmes. En creusant, tu remarques que les tests d'intégration insèrent des utilisateurs directement via pool.query('INSERT INTO users...') sans jamais les supprimer après le test, et que les tests s'exécutent en parallèle par défaut. Un autre test, expect(createUserSpy).toHaveBeenCalledWith('validateEmailFormat'), casse systématiquement dès qu'un développeur renomme une fonction interne, même quand le comportement observable de l'API n'a strictement pas changé.