Flaky Test

Testing 🟡 Mid

Definition

Test non deterministe qui passe ou echoue de maniere aleatoire sans changement de code. Causes frequentes : timing, ordre d'execution, etat partage, dependances externes.

Analogie

Comme un detecteur de fumee qui sonne parfois sans raison : on finit par l'ignorer, meme quand il y a un vrai incendie.

Exemple de code

// FLAKY: depend du timing
test('shows notification', async () => {
  triggerNotification();
  // Mauvais: delai fixe fragile
  await sleep(500);
  expect(screen.getByText('Done')).toBeVisible();
});
// FIX: utiliser waitFor
await waitFor(() => {
  expect(screen.getByText('Done')).toBeVisible();
});

Cas d'usage

Pour identifier et corriger les tests instables qui minent la confiance de l'equipe dans la CI.

Anti-pattern

Re-run automatique des flaky tests au lieu de les corriger, masquant des vrais problemes.

Termes lies

#testing#qualite#ci