Automated Test Generator
Generate test suites, analyze code coverage, and scaffold E2E tests automatically. Works across React, Next.js, Node.js, Python, Go, and any project with existing code. Bridges the gap between "write tests manually" and "have no tests at all."
Source: Adapted from davila7/claude-code-templates senior-qa skill + alirezarezvani/claude-skills senior-qa
Overview
Automated Test Generator analyzes code and automatically generates unit, integration, and property-based tests. Uses AST analysis and pattern recognition to create meaningful test cases that catch real bugs.
When to Use
Trigger phrases:
- "Generate tests for this code"
- "Improve test coverage"
- "Create test suite"
- "Scaffold E2E tests"
- "Analyze test coverage"
- "Write tests for this module"
- "Set up testing"
Use cases:
- Adding tests to existing code that has none
- Improving coverage on critical paths
- Scaffolding E2E test infrastructure
- Generating regression tests before refactoring
- Creating test fixtures and mocks
- Setting up test automation from scratch
When NOT to use:
- Writing tests for new code (use
skill://test-driven-development— write tests first) - Manual QA testing (use
skill://qa-review-fix-loop) - Code review (use
skill://code-reviewer)
When NOT to Use
- For throwaway prototypes (skip the ceremony)
- When the fix is a single-line change with no side effects
- When the codebase already has a working solution
Process
Step 1 — Discover the Codebase
Before generating tests, understand the project:
# Identify language/framework
cat package.json | jq '.dependencies, .devDependencies'
cat pyproject.toml
cat go.mod
# Find existing tests
find . -name "*.test.*" -o -name "*.spec.*" -o -name "test_*.py" | head -20
# Check existing test config
ls jest.config.* vitest.config.* pytest.ini setup.cfg .mocharc.* cypress.config.* playwright.config.* 2>/dev/null
Step 2 — Generate Test Suite
Generate unit tests for untested code:
# For JavaScript/TypeScript projects
node scripts/test_suite_generator.js <src-file-or-dir> \
--framework jest \
--coverage \
--output tests/
# For Python projects
python scripts/test_suite_generator.py <src-file-or-dir> \
--framework pytest \
--coverage \
--output tests/
# Manual approach (no script needed)
# 1. Read the source file
# 2. Identify exported functions/classes
# 3. For each: happy path, edge cases, error cases
# 4. Generate test file with proper imports and mocks
Test generation rules:
- Every exported function gets at least 3 tests: happy path, edge case, error case
- Mock external dependencies (APIs, databases, file system)
- Test boundary conditions (empty, null, max values)
- Test error handling (what happens when things fail)
- Use descriptive test names that explain the scenario
Step 3 — Analyze Coverage
# JavaScript/TypeScript
npx jest --coverage --coverageReporters=text-summary
npx vitest run --coverage
# Python
pytest --cov=src --cov-report=term-missing
# Go
go test -coverprofile=coverage.out ./...
go tool cover -func=coverage.out
Coverage targets:
- Statements: ≥80%
- Branches: ≥75%
- Functions: ≥80%
- Lines: ≥80%
Focus on critical paths first:
- Authentication/authorization
- Payment/financial logic
- Data validation
- Error handling
- API endpoints
Step 4 — Scaffold E2E Tests
# Playwright (recommended for web)
npx playwright test --generate
# Cypress
npx cypress open
# Puppeteer-based
node scripts/e2e_test_scaffolder.js <url> --output e2e/
E2E test priorities:
- Critical user journeys (signup, login, checkout)
- Form submissions with validation
- Navigation flows
- Error states and recovery
- Mobile/responsive views
Step 5 — Generate Test Fixtures
# Generate mock data from TypeScript types
npx ts-auto-mock create --types src/types.ts
# Generate fixtures from API responses
node scripts/fixture_generator.js --from-api https://api.example.com/users --output fixtures/
# Generate from database schema
node scripts/fixture_generator.js --from-schema prisma/schema.prisma --output fixtures/
Coverage Analysis Report
Generate a coverage report:
LAYER: <module-name>
Test framework: jest | pytest | vitest | go test
Statements: 85% (target: 80%) ✅
Branches: 72% (target: 75%) ⚠️
Functions: 90% (target: 80%) ✅
Lines: 83% (target: 80%) ✅
Untested critical paths:
- src/auth/validate.ts:45 — token refresh logic
- src/payments/process.ts:112 — refund handling
Recommendations:
1. Add tests for token refresh edge cases
2. Mock Stripe API for refund tests
3. Add integration tests for payment flow
Tech Stack Support
| Stack | Unit Tests | Integration | E2E |
|---|---|---|---|
| React/Next.js | Jest, Vitest | Testing Library | Playwright, Cypress |
| Node.js/Express | Jest, Vitest | Supertest | Playwright |
| Python/FastAPI | pytest | httpx | Playwright |
| Go | go test | httptest | Playwright |
| Vue/Nuxt | Vitest | Vue Test Utils | Playwright |
Verification
After generating tests, confirm:
- Tests actually run and pass (
npm test/pytest/go test) - Coverage meets targets (≥80% statements, ≥75% branches)
- Critical paths are covered (auth, payments, data validation)
- Tests are isolated (no shared state between tests)
- Mocks are appropriate (mock external deps, not internal logic)
- Test names are descriptive (explain the scenario, not just the function)
- E2E tests cover critical user journeys
Anti-Rationalization Table
| Rationalization | Reality |
|---|---|
| "Tests slow me down" | Bugs slow you down 10x more. Tests are speed, not overhead. |
| "I will refactor later" | Technical debt compounds. Refactor as you go. |
| "It works on my machine" | If it is not in CI, it does not work. Ship proof, not claims. |
Related Skills
skill://test-driven-development— Write tests before code (TDD)skill://qa-review-fix-loop— Full QA cycle with layer-based testingskill://code-reviewer— Code review processskill://verification-before-completion— Pre-completion checklistskill://engineering-hard-rules— Engineering enforcement protocolskill://systematic-debugging— Debug failing tests