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
Mensagem pronta para colar
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-fixerOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/github/awesome-copilot/main/skills/cypress-flake-fixer/SKILL.md -o SKILL.mdConteú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
- Execute a especificação alterada sozinha, depois repita-a pelo menos tantas vezes quanto a execução de linha de base.
- Execute o scanner novamente e compare as contagens por regra.
- 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, adicioneretries, 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)porcy.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
Comentários
- …
Mais skills deste repositório
acquire-codebase-knowledge
Ajuda seu agente a entender e documentar um projeto de código existente. É útil para novas pessoas entrarem no projeto ou para ter uma visão geral da arquitetura.
github/awesome-copilot
acreadiness-assess
Faz seu agente avaliar a prontidão de um projeto para IA e gerar um relatório. É útil para entender o quão bem um projeto está preparado para usar ferramentas de IA.
github/awesome-copilot
acreadiness-generate-instructions
Ajuda seu agente a criar instruções para ferramentas de IA baseadas em uma avaliação. É útil para melhorar a forma como a IA interage com o código e fecha lacunas identificadas.
github/awesome-copilot
acreadiness-policy
Faz seu agente ajudar a definir ou aplicar políticas para avaliação de projetos de IA. É útil para padronizar a forma como os projetos são avaliados e garantir conformidade.
github/awesome-copilot
Skills parecidas
cpp-testing
Faz seu agente escrever e melhorar testes para código C++. Ajuda a configurar ferramentas de teste e a corrigir erros.
affaan-m/ECC
csharp-testing
Ajuda seu agente a criar testes para código C# e .NET. Ele usa as melhores práticas para garantir que os testes sejam eficientes e confiáveis.
affaan-m/ECC
django-tdd
Faz seu agente aplicar estratégias de teste para Django com pytest-django e TDD. É útil para escrever testes robustos e garantir a qualidade do código, especialmente para APIs DRF.
affaan-m/ECC