| name | test-regression |
| description | Skill para validação de regressão em testes — verificar que mudanças não quebraram funcionalidades existentes. |
| license | MIT |
| compatibility | Node.js 18+, TypeScript 5.x, Chrome Extension Manifest V3 |
| metadata | {"author":"marcusp","version":"1.0","project":"fill-all","category":"testing"} |
Skill: Validação de Regressão em Testes
Objetivo
Garantir que qualquer alteração no código não quebre funcionalidades existentes. Esta skill define o processo completo de validação de regressão usando testes unitários (Vitest) e E2E (Playwright).
Processo de Validação
1. Antes de Alterar Código
npm test
npm run test:coverage
npm run type-check
npm run build
⚠️ Anotar número de testes passando e percentuais de coverage ANTES de fazer alterações.
2. Após Alterar Código
npm run type-check && npm test
npm run type-check && npm run build && npm run test:all
npm run test:coverage
3. Critérios de Aprovação
| Critério | Esperado | Comando |
|---|
| Type-check | Zero erros | npm run type-check |
| Testes unitários | Todos passando | npm test |
| Testes E2E | Todos passando | npm run test:e2e |
| Coverage linhas | ≥ 85% (configurado em vitest.config.ts) | npm run test:coverage |
| Coverage statements | ≥ 85% (configurado em vitest.config.ts) | npm run test:coverage |
| Coverage funções | ≥ 85% (configurado em vitest.config.ts) | npm run test:coverage |
| Coverage branches | ≥ 85% (configurado em vitest.config.ts) | npm run test:coverage |
| Build | Sem erros | npm run build |
Checklist de Regressão por Tipo de Mudança
Mudança em Generators (src/lib/generators/)
npx vitest run src/lib/generators
Mudança em Detectors/Classifiers (src/lib/form/detectors/)
npx vitest run src/lib/form/detectors
npx vitest run src/lib/dataset
Mudança em Storage (src/lib/storage/)
npx vitest run src/lib/storage
Mudança em Messaging (src/lib/messaging/)
npx vitest run src/lib/messaging
Mudança em Content Script / DOM
npm run build
npx playwright test src/lib/form/__tests__/e2e/
Mudança em Background/Handlers
npx vitest run src/background
Comandos de Diagnóstico
Testes falhando — como investigar
npx vitest run <caminho-do-teste> --reporter=verbose
npx vitest <caminho-do-teste>
npx playwright test --ui
npx playwright test --trace on
npx playwright show-report
Coverage caiu — como investigar
npm run test:coverage
open .coverage/unit/index.html
npm run coverage:all
open coverage/index.html
Padrões de Regressão Comuns
❌ Regressões Frequentes
| Sintoma | Causa Comum | Solução |
|---|
| Import não encontrado | Barrel export não atualizado | Adicionar export em index.ts |
| Type error após refactor | Tipo alterado sem atualizar consumers | Verificar usages com tsc --noEmit |
| Teste falhando sem mudança | Mock global alterado em setup.ts | Isolar mocks por teste com vi.clearAllMocks() |
| E2E timeout | Build desatualizado | Rodar npm run build antes |
| Coverage caiu | Novo código sem testes | Adicionar testes para código novo |
| Generator retorna inválido | Lógica de dígito verificador quebrada | Rodar 30+ iterações no teste |
✅ Boas Práticas Anti-Regressão
- Sempre rodar
npm run type-check && npm test antes de commit
- Manter testes independentes (sem dependência de ordem)
- Usar
vi.clearAllMocks() no beforeEach
- Não alterar mocks globais em
setup.ts sem necessidade
- Adicionar testes para cada bug fix (prevenir reintrodução)
- Comparar coverage antes/depois de cada PR
Automação
Scripts de Validação do Projeto
O projeto inclui scripts dedicados para automação de validações:
./scripts/validate-step.sh types
./scripts/validate-step.sh types unit
./scripts/validate-step.sh types unit build
./scripts/validate-step.sh types unit build e2e
./scripts/snapshot-health.sh --save
./scripts/snapshot-health.sh --compare
npm scripts convenientes
npm run validate:quick
npm run validate
npm run validate:full
npm run health:save
npm run health:compare
Script de Validação Completa
npm run type-check && npm run build && npm run test:all
Ordem Recomendada para CI
npm run type-check — Rápido, detecta erros de tipo
npm test — Testes unitários (segundos)
npm run build — Build de produção
npm run test:e2e — Testes E2E (mais lento, requer build)
npm run test:coverage — Coverage (opcional, para relatório)