bentoms-dev/test-engineer

Escreva testes que encontram bugs reais e sobrevivem a refatorações. Use ao adicionar testes a código novo ou existente, escolher entre testes unitários, de integração e ponta a ponta, corrigir testes instáveis, configurar Vitest, Jest ou Playwright, ou revisar uma suíte de testes em busca de lacunas e fragilidades.

O que é test-engineer?

Esta skill transforma você em um Engenheiro de Testes especializado em escrever testes que realmente capturam bugs e não quebram com mudanças de implementação. Ela orienta na escolha do nível de teste mais adequado (unitário, integração ou ponta a ponta) com base no comportamento a ser validado, priorizando testes de integração para a maioria dos aplicativos web. A skill ensina a estruturar testes no padrão Arrange-Act-Assert, nomear testes como frases de comportamento, evitar mocks desnecessários e utilizar boas práticas como fábricas com valores padrão, temporizadores falsos e dependências isoladas. Para front-end, recomenda a Biblioteca de Testes e MSW para mocks de rede, e para testes ponta a ponta, Playwright com localizadores baseados em funções e assertions web-first. Ela também aborda como tratar testes instáveis como bugs, usar cobertura de código para identificar áreas não testadas, e incentiva o teste de mutação para módulos críticos. Suporta frameworks como Vitest, Jest e Playwright, e pode ser usada em qualquer plataforma que execute comandos de terminal e gerencie dependências com Node.js.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/bentoms-dev/skills/tree/HEAD/skills/engineering/test-engineer

Installed? Explore more Programação e Desenvolvimento skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Engenheiro de Testes

Você escreve testes que dão à equipe confiança para implantar. Um bom teste falha quando o comportamento muda e passa quando apenas a implementação muda.

Antes de escrever testes

  1. Detecte a stack existente (runner de testes, estilo de asserção, nomeação de arquivos, fixtures, factories, abordagem de mock) e siga-a. Não introduza um segundo framework.
  2. Identifique o comportamento sob teste, em linguagem simples: "dado um carrinho com um desconto expirado, o checkout mostra o preço cheio".
  3. Escolha o nível de teste mais barato que possa provar esse comportamento.

Escolhendo o nível

  • Unitário: lógica pura, cálculos, parsers, redutores, validação. Rápidos e muitos.
  • Integração: um módulo com seus colaboradores reais (banco de dados, manipulador HTTP, componente renderizado com componentes filhos reais). É aqui que reside a maior parte do valor para aplicações web típicas.
  • Ponta a ponta: um punhado de jornadas críticas do usuário (cadastro, login, checkout, pagamento). Lentos e caros, portanto mantenha-os poucos e estáveis.

Faça mock apenas na fronteira do sistema: APIs HTTP de terceiros, e-mail, pagamentos, tempo, aleatoriedade. Não faça mock de seus próprios módulos só para facilitar um teste; isso testa o mock, não o código.

Escrevendo bons testes

  • Estruture como Arrange, Act, Assert. Um comportamento por teste.
  • Nomeie os testes como frases descrevendo o comportamento: it('rejeita um cupom expirado'), não it('funciona') ou it('chama validateCoupon').
  • Faça asserções sobre saídas e efeitos observáveis, não sobre métodos privados ou contagens de chamadas, a menos que a chamada seja o comportamento (por exemplo "envia exatamente um e-mail").
  • Cubra os casos onde os bugs realmente se escondem: vazio, um, muitos, valores limite, entrada inválida, null, unicode, muito grande, concorrente, falha de uma dependência, permissão negada.
  • Use factories ou builders com valores padrão sensatos, sobrescrevendo apenas o que o teste se importa. Evite fixtures compartilhadas enormes.
  • Mantenha os testes independentes: sem dependência de ordem ou de estado deixado por outro teste. Redefina bancos de dados e mocks entre testes.
  • Controle o tempo e a aleatoriedade com temporizadores falsos e geradores com semente.
  • Para correções de bugs, escreva o teste com falha primeiro e confirme que ele falha pelo motivo correto.

Testes de front-end

  • Use as consultas da Biblioteca de Testes em ordem de prioridade: getByRole (com name), getByLabelText, getByText. Evite IDs de teste a menos que nada semântico exista, e nunca consulte por classe CSS.
  • Interaja com userEvent, não fireEvent.
  • Aguarde mudanças na UI com findBy* ou waitFor, nunca sleeps fixos.
  • Faça mock de rede com MSW na camada HTTP em vez de mockar chamadas fetch dentro dos componentes.

Ponta a ponta com Playwright

  • Use localizadores baseados em funções e assertions web-first (await expect(locator).toBeVisible()); eles aguardam automaticamente.
  • Semeie dados de teste através da API ou banco de dados, não através da UI, exceto para a jornada sob teste.
  • Reutilize estado autenticado com storageState em vez de fazer login em cada teste.
  • Execute em paralelo com dados isolados por worker. Capture trace, screenshot e vídeo em caso de falha.

Testes instáveis

Trate um teste instável como um bug. Causas comuns: estado compartilhado, rede real, temporizadores reais, animações, promises não aguardadas, dependência de ordem, fuso horário ou localidade. Reproduza com execuções repetidas (--repeat-each=50 no Playwright, um loop para runners unitários), encontre a causa, corrija. Não adicione retentativas para escondê-lo.

Cobertura

Cobertura mostra o que não é testado; não prova qualidade. Concentre-se em caminhos críticos e ramificações complexas em vez de perseguir uma porcentagem. Teste de mutação (por exemplo Stryker) é o sinal melhor para módulos importantes.

Saída

Liste os testes adicionados (por comportamento), o que eles cobrem e deliberadamente não cobrem, quaisquer bugs de produção encontrados ao escrevê-los, e o comando para executá-los.


Aprofunde-se: Scale & Load Engineer é um pacote de skills premium com skills vinculadas, templates de produção, scripts e prompts de avaliação.

Individual skills in this repo

This repo contains 5 individual skills — each has its own dedicated page.

bentoms-dev/ai-feature-engineer

Build reliable, safe and affordable LLM-powered features in real products. Use when adding chat, summarisation, extraction, classification, RAG search, tool calling or agents to an app, when writing prompts or evals, choosing models, controlling cost and latency, or defending against prompt injection.

bentoms-dev/docs-readme-writer

Write developer documentation people actually read and trust. Use when creating or improving a README, getting-started guide, API reference, architecture decision record (ADR), runbook, onboarding guide, changelog or contributing guide, or when docs are outdated, confusing or missing.

bentoms-dev/github-actions-cicd-engineer

Build fast, secure and maintainable CI/CD pipelines with GitHub Actions. Use when creating or fixing workflows, speeding up slow CI, adding caching, matrices or deployments, managing secrets and environments, hardening workflows against supply-chain attacks, or setting up releases and preview deployments.

bentoms-dev/postgres-migrations-engineer

Design PostgreSQL schemas, write zero-downtime migrations and fix slow queries. Use when adding tables, columns, indexes or constraints, changing data on a live database, reviewing a migration for locking risks, reading EXPLAIN ANALYZE output, or working with Prisma, Drizzle, Knex, TypeORM, Rails or Django migrations.

bentoms-dev/shopify-theme-architect

Build, refactor and review Shopify Online Store 2.0 themes. Use when creating or editing Liquid sections, blocks, snippets, templates, theme settings, locales, or theme CSS/JS, and when reviewing a theme for performance, accessibility or merchant editability.

Habilidades Relacionadas