Initial: Claude config with agents, skills, commands, rules and scripts
This commit is contained in:
69
commands/test-coverage.md
Normal file
69
commands/test-coverage.md
Normal file
@@ -0,0 +1,69 @@
|
||||
# Test Coverage
|
||||
|
||||
Analyze test coverage, identify gaps, and generate missing tests to reach 80%+ coverage.
|
||||
|
||||
## Step 1: Detect Test Framework
|
||||
|
||||
| Indicator | Coverage Command |
|
||||
|-----------|-----------------|
|
||||
| `jest.config.*` or `package.json` jest | `npx jest --coverage --coverageReporters=json-summary` |
|
||||
| `vitest.config.*` | `npx vitest run --coverage` |
|
||||
| `pytest.ini` / `pyproject.toml` pytest | `pytest --cov=src --cov-report=json` |
|
||||
| `Cargo.toml` | `cargo llvm-cov --json` |
|
||||
| `pom.xml` with JaCoCo | `mvn test jacoco:report` |
|
||||
| `go.mod` | `go test -coverprofile=coverage.out ./...` |
|
||||
|
||||
## Step 2: Analyze Coverage Report
|
||||
|
||||
1. Run the coverage command
|
||||
2. Parse the output (JSON summary or terminal output)
|
||||
3. List files **below 80% coverage**, sorted worst-first
|
||||
4. For each under-covered file, identify:
|
||||
- Untested functions or methods
|
||||
- Missing branch coverage (if/else, switch, error paths)
|
||||
- Dead code that inflates the denominator
|
||||
|
||||
## Step 3: Generate Missing Tests
|
||||
|
||||
For each under-covered file, generate tests following this priority:
|
||||
|
||||
1. **Happy path** — Core functionality with valid inputs
|
||||
2. **Error handling** — Invalid inputs, missing data, network failures
|
||||
3. **Edge cases** — Empty arrays, null/undefined, boundary values (0, -1, MAX_INT)
|
||||
4. **Branch coverage** — Each if/else, switch case, ternary
|
||||
|
||||
### Test Generation Rules
|
||||
|
||||
- Place tests adjacent to source: `foo.ts` → `foo.test.ts` (or project convention)
|
||||
- Use existing test patterns from the project (import style, assertion library, mocking approach)
|
||||
- Mock external dependencies (database, APIs, file system)
|
||||
- Each test should be independent — no shared mutable state between tests
|
||||
- Name tests descriptively: `test_create_user_with_duplicate_email_returns_409`
|
||||
|
||||
## Step 4: Verify
|
||||
|
||||
1. Run the full test suite — all tests must pass
|
||||
2. Re-run coverage — verify improvement
|
||||
3. If still below 80%, repeat Step 3 for remaining gaps
|
||||
|
||||
## Step 5: Report
|
||||
|
||||
Show before/after comparison:
|
||||
|
||||
```
|
||||
Coverage Report
|
||||
──────────────────────────────
|
||||
File Before After
|
||||
src/services/auth.ts 45% 88%
|
||||
src/utils/validation.ts 32% 82%
|
||||
──────────────────────────────
|
||||
Overall: 67% 84% ✅
|
||||
```
|
||||
|
||||
## Focus Areas
|
||||
|
||||
- Functions with complex branching (high cyclomatic complexity)
|
||||
- Error handlers and catch blocks
|
||||
- Utility functions used across the codebase
|
||||
- API endpoint handlers (request → response flow)
|
||||
- Edge cases: null, undefined, empty string, empty array, zero, negative numbers
|
||||
Reference in New Issue
Block a user