react18-enzyme-to-rtl
Ajuda seu agente a migrar testes de Enzyme para React Testing Library no React 18. Ele mapeia APIs e orienta a mudança de filosofia.
O que ela faz
Esta ferramenta ajuda a atualizar seus testes de código. Se você usava uma ferramenta antiga chamada Enzyme para testar seu código React, esta ferramenta te ajuda a mudar para uma nova ferramenta chamada React Testing Library, que é melhor para o React 18.
Quando usar
- ✓Quando você precisa atualizar testes antigos de Enzyme para funcionar com o React 18.
- ✓Quando seus testes de Enzyme não funcionam mais após atualizar seu projeto React.
- ✓Quando você quer testar seu código React focando no que o usuário vê e faz, não nos detalhes internos.
Exemplo do que pedir para a IA
“Como eu transformo um teste de Enzyme que verifica o estado interno de um componente para usar a React Testing Library?”
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
A ferramenta mapeia as funções antigas do Enzyme para as novas da React Testing Library. Ela te mostra como reescrever seus testes para focar no comportamento visível do usuário, em vez de olhar os detalhes internos do código.
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 react18-enzyme-to-rtlOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/github/awesome-copilot/main/skills/react18-enzyme-to-rtl/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.
Migração do Enzyme para RTL no React 18
O Enzyme não possui um adaptador para React 18 nem um caminho de suporte para React 18. Todos os testes do Enzyme devem ser reescritos usando a React Testing Library (RTL).
A Mudança de Filosofia (Leia Isso Primeiro)
Testes do Enzyme testam a implementação. Testes da RTL testam o comportamento.
// Enzyme: tests that the component has the right internal state
expect(wrapper.state('count')).toBe(3);
expect(wrapper.instance().handleClick).toBeDefined();
expect(wrapper.find('Button').prop('disabled')).toBe(true);
// RTL: tests what the user actually sees and can do
expect(screen.getByText('Count: 3')).toBeInTheDocument();
expect(screen.getByRole('button', { name: /submit/i })).toBeDisabled();
Esta não é uma tradução 1:1. Testes do Enzyme que verificam estado interno ou métodos de instância não têm equivalentes na RTL - porque a RTL intencionalmente não expõe os detalhes internos. Reescreva o teste para afirmar o resultado visível em vez disso.
Mapeamento de API
Para código completo antes/depois de cada API do Enzyme, leia:
references/enzyme-api-map.md- mapeamento completo: shallow, mount, find, simulate, prop, state, instance, configurereferences/async-patterns.md- waitFor, findBy, act(), Apollo MockedProvider, estados de carregamento, estados de erro
Template de Reescruta Principal
// Every Enzyme test rewrites to this shape:
import { render, screen, fireEvent, waitFor } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import MyComponent from './MyComponent';
describe('MyComponent', () => {
it('does the thing', async () => {
// 1. Render (replaces shallow/mount)
render(<MyComponent prop="value" />);
// 2. Query (replaces wrapper.find())
const button = screen.getByRole('button', { name: /submit/i });
// 3. Interact (replaces simulate())
await userEvent.setup().click(button);
// 4. Assert on visible output (replaces wrapper.state() / wrapper.prop())
expect(screen.getByText('Submitted!')).toBeInTheDocument();
});
});
Prioridade de Consultas da RTL (use nesta ordem)
getByRole- corresponde a papéis acessíveis (botão, caixa de texto, título, caixa de seleção, etc.)getByLabelText- campos de formulário vinculados a rótulosgetByPlaceholderText- placeholders de inputgetByText- conteúdo de texto visívelgetByDisplayValue- valor atual de input/select/textareagetByAltText- texto alternativo de imagemgetByTitle- atributo titlegetByTestId- atributodata-testid(último recurso)
Prefira getByRole em vez de getByTestId. Isso também testa a acessibilidade.
Envolvendo com Providers
// Enzyme with context:
const wrapper = mount(
<ApolloProvider client={client}>
<ThemeProvider theme={theme}>
<MyComponent />
</ThemeProvider>
</ApolloProvider>
);
// RTL equivalent (use your project's customRender or wrap inline):
import { render } from '@testing-library/react';
render(
<MockedProvider mocks={mocks} addTypename={false}>
<ThemeProvider theme={theme}>
<MyComponent />
</ThemeProvider>
</MockedProvider>
);
// Or use the project's customRender helper if it wraps providers
Perguntas frequentes
Por que não posso mais usar Enzyme?
Enzyme não é mais atualizado e não funciona com as versões mais recentes do React (como o React 18). A React Testing Library é a ferramenta recomendada agora.
O que significa 'testar o comportamento' em vez de 'testar a implementação'?
Testar a implementação (Enzyme) olha os detalhes internos do código. Testar o comportamento (React Testing Library) foca no que o usuário final vê na tela e como ele interage com o aplicativo.
Todos os meus testes antigos do Enzyme podem ser convertidos diretamente?
Não exatamente. Como a abordagem é diferente (comportamento vs. implementação), alguns testes antigos que verificavam detalhes internos não terão uma tradução direta. Você precisará reescrevê-los para verificar o resultado visível.
Detalhes
Descrição original do autor
Provides exact Enzyme → React Testing Library migration patterns for React 18 upgrades. Use this skill whenever Enzyme tests need to be rewritten - shallow, mount, wrapper.find(), wrapper.simulate(), wrapper.prop(), wrapper.state(), wrapper.instance(), Enzyme configure/Adapter calls, or any test file that imports from enzyme. This skill covers the full API mapping and the philosophy shift from imp
repo: github/awesome-copilot
Popularidade
- Estrelas no GitHub
- 40 mil
- Posição no ranking
- #5328
- 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