Reviews test code to identify and fix common testing anti-patterns including flaky tests, over-mocking, brittle assertions, test interdependency, and hidden test logic. Flags bad patterns, explains the specific defect, and provides corrected implementations.
NewMaintained
Automatic
◆QA & Test Engineering pack
Last verified 8/13/2026
What it changes
Passed 9 of 22 test cases with the skill, and 13 of 22 without it.
Without skill60%
With skill40%
Checks it passed that the model alone missed
Identifies 'The Slow Poke' anti-pattern caused by real network I/O in unit tests
Flags the test for exceeding the recommended limit of 5 to 7 assertions per test case
Recommends running tests individually in isolation to verify independence and lack of shared state
and 2 more in the full report
5 fixed14 passed either way0 still failing3 broke
Pass-rate lift
-20 pp
Tokens
+78%
Agent turns
0%
Response time
-37%
Model gemini-3.6-flashMeasured 8/13/2026v119 of 22 cases passed with skill
Tokens, turns and time describe resource use, not a dollar price.
See it in action
One of 5 test cases the skill fixed. Same model, same prompt, with and without the skill.
1 of 5
Prompt
Before scanning code for specific defects during a test code review, what is the mandatory first step when analyzing test execution behavior?
What was checked, without and with the skill
Checked
Without skill
With skill
Recommends running tests individually in isolation to verify independence and lack of shared state
Missed
Passed
case-13 · gemini-3.6-flash · 8/13/2026 · answers are capped and redacted
What's inside
The instructions your model reads when the skill loads.
SKILL.md259 linessingle file
Testing Anti-Patterns
You are identifying and avoiding common testing anti-patterns.
Review Workflow
Follow these steps when reviewing test code:
Run tests in isolation — Verify each test passes independently (no shared state, no ordering dependency).
Check for patterns below — Scan for each anti-pattern in the checklist; flag every match with the specific defect.
Apply refactoring strategy — Use the refactoring strategies section to select and apply the appropriate fix.
Verify the test still fails when code breaks — After fixing, confirm the corrected test catches real regressions (remove or stub the implementation to confirm a failure occurs).
Critical Anti-Patterns
1. The Liar - Tests That Always Pass
Problem: Test passes even when the code is broken.
// BAD - Always passes because it tests nothing meaningful
it('should process data', () => {
const result = processData(input);
expect(result).toBeDefined(); // Too weak
});
// GOOD - Actually verifies behavior
it('should transform input to uppercase', () => {
const result = processData({ text: 'hello' });
expect(result.text).toBe('HELLO');
});
Detection: Remove or break the implementation - test should fail.