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

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

https://github.com/github/awesome-copilot/blob/main/skills/react18-enzyme-to-rtl/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/github/awesome-copilot/blob/main/skills/react18-enzyme-to-rtl/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
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-rtl

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/github/awesome-copilot/main/skills/react18-enzyme-to-rtl/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.

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, configure
  • references/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)

  1. getByRole - corresponde a papéis acessíveis (botão, caixa de texto, título, caixa de seleção, etc.)
  2. getByLabelText - campos de formulário vinculados a rótulos
  3. getByPlaceholderText - placeholders de input
  4. getByText - conteúdo de texto visível
  5. getByDisplayValue - valor atual de input/select/textarea
  6. getByAltText - texto alternativo de imagem
  7. getByTitle - atributo title
  8. getByTestId - atributo data-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

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas