flaky-test-triage

star 4

Use quando um teste for intermitente, ao investigar instabilidade no CI, ao colocar um teste em quarentena, ou ao criar um dashboard de flaky tests. Aciona com 'flaky test', 'teste intermitente', 'flaky', 'quarantine', 'CI instável', 'flaky dashboard'.

paulasilvatech By paulasilvatech schedule Updated 6/10/2026

name: "flaky-test-triage" description: "Use quando um teste for intermitente, ao investigar instabilidade no CI, ao colocar um teste em quarentena, ou ao criar um dashboard de flaky tests. Aciona com 'flaky test', 'teste intermitente', 'flaky', 'quarantine', 'CI instável', 'flaky dashboard'."

Triagem de testes flaky

Quando invocar

  • O CI falha e o re-run passa.
  • "This test is flaky - help me fix it."
  • "Build a flaky-test quarantine process."

Workflow de diagnóstico

  1. Reproduza: rode o teste isoladamente 50× com --repeat-each 50 (Playwright) ou pytest --count=50. Se ele falhar <1×, provavelmente depende da ordem.
  2. Categorize a causa raiz do flake:
  • Async/timing - await ausente, race condition, sleep hard-coded
  • Order dependency - estado compartilhado, DB não limpo, singleton global
  • External dependency - rede, relógio, filesystem
  • Non-determinism - iteração sobre mapa não ordenado, random seed
  • Resource contention - porta, file lock, colisão de worker paralelo
  1. Corrija na raiz: substitua sleeps por esperas explícitas, isole estado, fixe random seeds, use portas com escopo de teste.
  2. Coloque em quarentena se não der para corrigir em <1 dia: mova para uma tag flaky/, abra uma issue de rastreamento, defina um SLA de 30 dias para corrigir ou excluir.

Política de quarentena

  • Testes em quarentena rodam, mas não quebram o build.
  • Qualquer coisa em quarentena por >30 dias é excluída; um teste que não pode ser corrigido é pior que nenhum teste.
  • Dashboard: acompanhe a taxa de flake por teste ao longo de 100 execuções. Qualquer coisa >5% entra em quarentena automaticamente.

Anti-padrões

  • sleep(1000) - sempre errado.
  • Repetir a asserção com um loop - esconde bugs de timing.
  • @Retry(3) - mascara flakes e recompensa testes ruins.

Referências

Install via CLI
npx skills add https://github.com/paulasilvatech/workshop-datacorp-team-kit-pt-br --skill flaky-test-triage
Repository Details
star Stars 4
call_split Forks 3
navigation Branch main
article Path SKILL.md
More from Creator
paulasilvatech
paulasilvatech Explore all skills →