Pular para o conteúdo
Skillpedia
Testes40 mil · #5100

cypress-flake-fixer

Faz seu agente encontrar e corrigir problemas comuns em testes automatizados com Cypress. Ajuda a melhorar a confiabilidade dos testes, removendo padrões que causam falhas intermitentes.

O que ela faz

Este agente de IA ajuda a encontrar e corrigir problemas em seus testes automatizados de software (Cypress). Ele procura por padrões de código que causam falhas intermitentes e sugere correções.

Quando usar

  • ✓Seus testes falham de vez em quando, mas não sempre.
  • ✓Seus testes funcionam no seu computador, mas falham em outro ambiente (como integração contínua).
  • ✓Você está atualizando o Cypress para uma versão mais nova e quer garantir que os testes antigos ainda funcionem.

Exemplo do que pedir para a IA

“Encontre e corrija problemas de testes instáveis no meu projeto Cypress.”

Quer saber mais? Abra as seções abaixo.

Como usar

O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.

Link da skill

https://github.com/github/awesome-copilot/blob/main/skills/cypress-flake-fixer/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/github/awesome-copilot/blob/main/skills/cypress-flake-fixer/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

Ele analisa seu código de teste Cypress em busca de padrões conhecidos que causam instabilidade. Em seguida, ele sugere modificações para tornar seus testes mais confiáveis, sem apenas aumentar tempos de espera ou forçar ações.

Instalação

Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.

No terminal (Claude Code, Codex, Cursor), na pasta do projeto:

npx skills add github/awesome-copilot --skill cypress-flake-fixer

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/github/awesome-copilot/main/skills/cypress-flake-fixer/SKILL.md -o SKILL.md
Conteúdo técnico (SKILL.md)

Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.

Cypress Flake Fixer

Audite uma suíte Cypress existente em busca de padrões de código que causam falhas intermitentes e corrija-os sem mascarar o problema com retentativas, tempos limite mais longos ou force: true.

Quando Usar Esta Habilidade

  • Uma especificação Cypress passa localmente e falha no CI, ou falha uma vez a cada poucas execuções
  • A suíte contém cy.wait(<number>), { force: true }, ou testes que só passam em ordem
  • Erros mencionam "detached from the DOM", "timed out retrying", ou um assunto que "is no longer attached"
  • O projeto está atualizando o Cypress entre versões principais (12 a 16)
  • É solicitada uma revisão do código de teste do Cypress

Para escrever novos testes Cypress do zero, os padrões de codificação são suficientes. Esta habilidade é para diagnosticar e reparar uma suíte existente.

Pré-requisitos

  • Node.js 18 ou posterior para executar o scanner (ele não tem dependências e não precisa do Cypress instalado)
  • A versão do Cypress, lida a partir de package.json. As correções diferem por versão principal

Fluxo de Trabalho

1. Escanear

node ./scripts/scan-cypress.mjs <project-root>
node ./scripts/scan-cypress.mjs <project-root> --json          # machine-readable
node ./scripts/scan-cypress.mjs <project-root> --strict        # add low-confidence rules
node ./scripts/scan-cypress.mjs cypress/e2e/checkout.cy.ts     # one file

O scanner lê a versão do Cypress a partir do package.json mais próximo e classifica as APIs removidas como error quando a versão principal instalada já as rejeita e warn quando elas quebram na atualização. Execute --list-rules para o catálogo.

As descobertas são heurísticas. Abra cada local e confirme antes de editar.

2. Medir antes de mudar qualquer coisa

Quando o objetivo é corrigir uma especificação instável específica, registre com que frequência ela falha primeiro. Sem uma linha de base, não há como distinguir uma correção da sorte.

for i in $(seq 1 20); do npx cypress run --spec "cypress/e2e/checkout.cy.ts" --quiet || echo "FAIL $i"; done

Uma especificação que falha 1 em 10 execuções precisa de cerca de 30 execuções limpas após a correção antes que a correção seja crível.

3. Corrigir nesta ordem

Ordem Regras Por que primeiro
1 CY002, CY003, CY007 classificadas como error O teste está incorreto ou já quebrado; outras correções se baseiam no fluxo de comando correto
2 CY001, ordenação de interceptação Esperas baseadas em tempo são a maior fonte única de instabilidade
3 CY005, CY006 A falha na capacidade de retentativa causa falhas de "detached-DOM" e de asserção de um único disparo
4 CY004 force: true mascara uma sobreposição real, animação ou estado desabilitado
5 CY008, CY010, CY012 Vazamentos de estado e dependência de ordem
6 CY013, CY101, CY102 Higiene de seletores e asserções

Código antes e depois para cada regra está em references/anti-patterns.md. Substituições para APIs removidas estão em references/removed-apis.md. Leia a seção para a regra que está sendo corrigida; não carregue ambos os arquivos antecipadamente.

4. Substituir cada espera corrigida pela condição que ela representava

Não exclua uma cy.wait(n) ou a troque por um palpite. Descubra o que o atraso cobria:

A espera cobria Substituir por
Uma requisição de rede cy.intercept(...).as('x') registrada antes do gatilho, então cy.wait('@x')
Uma renderização que segue uma requisição ou mudança de estado Uma .should() no DOM que resulta
Um debounce, throttle, intervalo de polling ou timeout de toast cy.clock() antes de cy.visit(), então cy.tick(ms)
Uma animação ou transição CSS Uma asserção no estado final; o Cypress já espera o elemento parar de se mover antes de agir
Hidratação do lado do cliente de HTML renderizado pelo servidor Um sinal que o aplicativo define quando a hidratação termina (veja Gotchas)
Desconhecido Execute o teste em npx cypress open, selecione a espera no Log de Comandos e leia quais requisições e mudanças no DOM ocorreram durante ela

5. Verificar

  1. Execute a especificação alterada sozinha, depois repita-a pelo menos tantas vezes quanto a execução de linha de base.
  2. Execute o scanner novamente e compare as contagens por regra.
  3. Execute a suíte completa uma vez para capturar a dependência de ordem exposta pela mudança.

Regras para a própria correção

  • Altere apenas o código do teste. Se o teste expõe um bug na aplicação (envio duplo, falta de estado de carregamento, corrida na UI), relate-o em vez de contorná-lo.
  • Não aumente defaultCommandTimeout, adicione retries, ou adicione { force: true } para fazer um teste passar. Cada um converte uma falha visível em uma mais lenta ou oculta.
  • Não substitua cy.wait(2000) por cy.wait(5000), ou por .should('exist') em um elemento que já estava presente.

…

Perguntas frequentes

O que são testes 'flaky' (instáveis)?

Testes instáveis são aqueles que às vezes passam e às vezes falham, mesmo sem nenhuma mudança no código que está sendo testado. Eles são frustrantes porque não dão uma indicação confiável se o software está funcionando ou não.

Preciso instalar algo para usar este agente?

Não, o agente de IA não requer instalação. Ele funciona analisando o código que você fornece.

O que são 'anti-padrões'?

Anti-padrões são práticas de codificação comuns que, embora possam parecer funcionar inicialmente, geralmente levam a problemas no futuro, como testes instáveis ou difíceis de manter.

Detalhes

Descrição original do autor

Find and fix flake-prone anti-patterns in an existing Cypress suite, and APIs removed in Cypress 12 to 16. Bundles a zero-dependency scanner for fixed cy.wait() delays, assigned command return values, async/await, force: true, chaining after actions, one-shot expect() inside .then(), conditional testing, and removed APIs such as Cypress.env(), cy.exec(), cy.server()/cy.route(). Use when asked to f

repo: github/awesome-copilot

Popularidade

Estrelas no GitHub
40 mil
Posição no ranking
#5100
Licença
MIT
Atualizada em
15/10/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas