react-testing
Faz seu agente escrever testes para componentes React. Ele usa ferramentas para verificar se tudo funciona bem, incluindo acessibilidade.
O que ela faz
Ajuda a testar componentes de software feitos com React. Isso garante que eles funcionem como esperado para o usuário final, verificando o que é exibido na tela e como o usuário interage com eles.
Quando usar
- ✓Ao criar novos componentes em React.
- ✓Ao corrigir problemas em componentes existentes.
- ✓Para garantir que componentes não quebrem após mudanças.
Exemplo do que pedir para a IA
“Teste o componente de login para garantir que o usuário possa digitar email e senha e clicar no botão de enviar.”
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 usa ferramentas que simulam um navegador para renderizar seus componentes e interagir com eles, como se um usuário real estivesse usando. Isso ajuda a encontrar erros antes que os usuários os vejam.
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 affaan-m/ECC --skill react-testingOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/affaan-m/ECC/main/pi/core/skills/react-testing/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.
Testes com React
Padrões abrangentes de testes com React para testes de componentes focados em comportamento, testes de hooks customizados, asserções de acessibilidade e mock de requisições em nível de rede.
Quando Ativar
- Escrevendo testes para componentes React, hooks customizados ou páginas
- Adicionando cobertura de testes a componentes legados sem testes
- Migrando de Enzyme ou padrões da era de componentes de classe para React Testing Library
- Configurando Vitest ou Jest para um novo projeto React
- Simulando requisições HTTP em testes
- Verificando violações de acessibilidade
- Decidindo quais testes pertencem ao RTL vs. Playwright Component Testing vs. E2E completo
Princípio Central
Teste o que o usuário vê e faz, não os detalhes de implementação.
Um teste deve:
- Renderizar o componente com os mesmos provedores que ele tem em produção
- Interagir com ele através de queries acessíveis (role, label) e
userEvent - Afirmar a saída visível e efeitos colaterais observáveis (callback disparado, requisição enviada)
Um teste NÃO deve:
- Inspecionar o estado do componente, props passadas para filhos, ou quais hooks foram chamados
- Simular o próprio React ou hooks do framework
- Afirmar o número de renderizações ou a estrutura do DOM além do que afeta os usuários
Escolha da Biblioteca
| Runner | Quando | Observação |
|---|---|---|
| Vitest | Vite, Remix, configurações modernas | Mais rápido, ESM nativo, API compatível com Jest |
| Jest | Next.js, CRA, repositórios estabelecidos | Padrão para muitos projetos React |
| Playwright Component Testing | Motor de navegador real necessário | Use quando JSDOM não tiver o recurso necessário |
| Cypress Component Testing | Navegador real, Cypress já em uso | Alternativa ao Playwright CT |
Escolha um. Não execute RTL + Vitest E Playwright CT no mesmo repositório, a menos que você tenha uma separação clara de responsabilidades.
Prioridade de Queries
React Testing Library expõe queries em três níveis — use de cima para baixo:
- Acessível a todos:
getByRole,getByLabelText,getByPlaceholderText,getByText,getByDisplayValue - Semântico:
getByAltText,getByTitle - Test IDs (válvula de escape):
getByTestId
// Best
screen.getByRole("button", { name: /save/i });
// OK for inputs
screen.getByLabelText("Email");
// Last resort
screen.getByTestId("save-btn");
Variantes:
getBy*— lança um erro se não encontrar correspondênciaqueryBy*— retornanull(use para "afirmar ausência")findBy*— assíncrono, retorna uma Promise (use para elementos que aparecem após trabalho assíncrono)
Interação do Usuário com userEvent
import userEvent from "@testing-library/user-event";
test("submits the form", async () => {
const user = userEvent.setup();
const onSubmit = vi.fn();
render(<UserForm onSubmit={onSubmit} />);
await user.type(screen.getByLabelText("Email"), "user@example.com");
await user.click(screen.getByRole("button", { name: /save/i }));
expect(onSubmit).toHaveBeenCalledWith({ email: "user@example.com" });
});
- Sempre
awaitchamadas de userEvent - Chame
userEvent.setup()uma vez por teste, reutilize ouserretornado userEventsimula uma sequência de navegador real;fireEventdispara um único evento sintético — prefirauserEvent
Padrões Assíncronos
// Element that appears after async work
expect(await screen.findByText("Loaded")).toBeInTheDocument();
// Side effect assertion
await waitFor(() => expect(saveSpy).toHaveBeenCalled());
// Element that should disappear
await waitForElementToBeRemoved(() => screen.queryByText("Loading"));
Nunca setTimeout + asserção — instável. Use os matchers acima.
Mock de Rede com MSW
Mock Service Worker simula em nível de rede. O componente, hooks e a biblioteca fetch se comportam exatamente como em produção.
Configuração
// test/setup.ts
import { setupServer } from "msw/node";
import { http, HttpResponse } from "msw";
export const handlers = [
http.get("/api/users/:id", ({ params }) =>
HttpResponse.json({ id: params.id, name: "Alice" }),
),
http.post("/api/users", async ({ request }) => {
const body = await request.json();
return HttpResponse.json({ id: "new-id", ...body }, { status: 201 });
}),
];
export const server = setupServer(...handlers);
beforeAll(() => server.listen({ onUnhandledRequest: "error" }));
afterEach(() => server.resetHandlers());
afterAll(() => server.close());
Configure onUnhandledRequest: "error" para que qualquer requisição não simulada falhe o teste de forma explícita — passes silenciosos são piores que falhas.
Sobrescrita por teste
test("renderiza erro em 500", async () => {
server.use(
http.get("/api/users/:id", () => new HttpResponse(null, { status: 500 })),
);
render(<UserPage id="1" />);
…
Perguntas frequentes
O que são testes de componente?
São verificações automáticas que simulam o uso de uma parte pequena do seu software (um componente) para ver se ela se comporta corretamente.
Por que testar o que o usuário vê e faz?
Testar a experiência do usuário garante que o software seja útil e fácil de usar, em vez de focar em detalhes internos que podem mudar.
O que é 'mockar' uma requisição de rede?
É simular uma resposta de uma chamada de internet. Isso permite testar como seu componente reage a diferentes respostas (sucesso, erro) sem precisar de uma conexão real.
Detalhes
Descrição original do autor
React component testing with React Testing Library, Vitest/Jest, MSW for network mocking, accessibility assertions with axe, and the decision boundary between component tests and Playwright/Cypress end-to-end runs. Use when writing or fixing tests for React components, hooks, or pages.
repo: affaan-m/ECC
Popularidade
- Estrelas no GitHub
- 280 mil
- Posição no ranking
- #114
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
accessibility
Ajuda seu agente a criar interfaces que todos possam usar. Garante que sites e aplicativos funcionem bem para pessoas com deficiência, como cegos ou com mobilidade reduzida.
affaan-m/ECC
agent-architecture-audit
Faz seu agente verificar se tudo está funcionando corretamente. Ele encontra e conserta problemas em sistemas de IA, garantindo que funcionem como esperado.
affaan-m/ECC
agent-eval
Ajuda seu agente a comparar diferentes ferramentas de programação de IA. Ele mede qual é mais rápido, barato e confiável para realizar tarefas específicas.
affaan-m/ECC
agent-harness-construction
Faz seu agente entender melhor como realizar tarefas. Ele otimiza as ferramentas e instruções que o agente usa para aumentar suas chances de sucesso.
affaan-m/ECC
Skills parecidas
webapp-testing
Permite testar aplicações web locais, verificar funcionalidades e depurar o comportamento da interface. Captura screenshots e logs do navegador.
anthropics/skills
ponytail-audit
Faz uma auditoria completa do código. Ele encontra bugs, falhas de segurança, código lento e sugere o que remover ou melhorar.
DietrichGebert/ponytail
ponytail-review
Revisa a qualidade de uma mudança no código. Verifica se a lógica está correta, se é segura, rápida e se todas as linhas são necessárias.
DietrichGebert/ponytail