UI はローカライズ済みです。スキルの紹介と説明文書は選択した言語へ AI が自動翻訳し、コード・コマンド・パス・専門用語は原文のままです。原作者の文書が優先されます。
スキルを探す
開発・技術 · SKILL.md

fix

fix

Corrija testes Playwright com falha ou instáveis. Use quando o usuário disser "corrigir teste", "teste instável", "teste falhando", "depurar teste", "teste quebrado", "teste passa às vezes" ou "falha intermitente".

Independent GitHub snapshot · Automated classification · Original documentation governs

スキルの説明

GitHub

name: "fix" description: >- Corrija testes Playwright com falha ou instáveis. Use quando o usuário disser "corrigir teste", "teste instável", "teste falhando", "depurar teste", "teste quebrado", "teste passa às vezes" ou "falha intermitente". agents:

  • claude-code

Corrigir Testes com Falha ou Instáveis

Diagnosticar e corrigir um teste Playwright que falha ou passa intermitentemente usando uma taxonomia sistemática.

Entrada

$ARGUMENTS contém:

  • Um caminho de arquivo de teste: e2e/login.spec.ts
  • Um nome de teste: "should redirect after login"
  • Uma descrição: "o teste de checkout falha no CI mas passa localmente"

Passos

1. Reproduzir a Falha

Executar o teste para capturar o erro:

npx playwright test <arquivo> --reporter=list

Se o teste passar, provavelmente é instável. Executar burn-in:

npx playwright test <arquivo> --repeat-each=10 --reporter=list

Se ainda passar, tentar com workers paralelos:

npx playwright test --fully-parallel --workers=4 --repeat-each=5

2. Capturar Trace

Executar com rastreamento completo:

npx playwright test <arquivo> --trace=on --retries=0

Ler a saída do trace. Use /debug para analisar arquivos de trace se disponível.

3. Categorizar a Falha

Carregar flaky-taxonomy.md deste diretório de skill.

Todo teste com falha se enquadra em uma das quatro categorias:

CategoriaSintomaDiagnóstico
Timing/AsyncFalha intermitentemente em todo lugar--repeat-each=20 reproduz localmente
Isolamento de TesteFalha na suite, passa sozinho--workers=1 --grep "nome do teste" passa
AmbienteFalha no CI, passa localmenteComparar capturas de tela/traces CI vs local
InfraestruturaAleatório, sem padrãoErro referencia internos do navegador

4. Aplicar Correção Direcionada

Timing/Async:

  • Substituir waitForTimeout() por asserções web-first
  • Adicionar await a chamadas Playwright ausentes
  • Aguardar respostas de rede específicas antes de asserir
  • Usar toBeVisible() antes de interagir com elementos

Isolamento de Teste:

  • Remover estado mutável compartilhado entre testes
  • Criar dados de teste por teste via API ou fixtures
  • Usar identificadores únicos (timestamps, strings aleatórias) para dados de teste
  • Verificar vazamentos de estado de banco de dados

Ambiente:

  • Corresponder tamanhos de viewport entre local e CI
  • Considerar diferenças de renderização de fonte em capturas de tela
  • Usar docker localmente para corresponder ao ambiente CI
  • Verificar asserções dependentes de fuso horário

Infraestrutura:

  • Aumentar timeout para runners CI lentos
  • Adicionar retries na config CI (retries: 2)
  • Verificar OOM do navegador (reduzir workers paralelos)
  • Garantir que as dependências do navegador estejam instaladas

5. Verificar a Correção

Executar o teste 10 vezes para confirmar estabilidade:

npx playwright test <arquivo> --repeat-each=10 --reporter=list

Todos os 10 devem passar. Se algum falhar, voltar ao passo 3.

6. Prevenir Recorrência

Sugerir:

  • Adicionar ao CI com retries: 2 se ainda não estiver
  • Habilitar trace: 'on-first-retry' na config
  • Adicionar o padrão de correção ao documento de convenções de teste do projeto

Saída

  • Categoria da causa raiz e problema específico
  • A correção aplicada (com diff)
  • Resultado de verificação (10/10 aprovações)
  • Recomendação de prevenção
保存したスキル