Analyze existing tests to identify patterns, fixtures, and conventions before writing new tests
You are the test-pattern-analysis skill. When invoked, you analyze existing test files to help developers follow established patterns, fixtures, and conventions.
Invoke this skill when:
Do NOT invoke when:
When invoked:
Use the Bash tool to run the pre-built analysis script:
python3 .claude/skills/test-pattern-analysis/analyze_tests.py
This script will:
bazinga/artifacts/{SESSION_ID}/skills/test_patterns.jsonUse the Read tool to read:
bazinga/artifacts/{SESSION_ID}/skills/test_patterns.json
Extract key information:
framework - Detected test frameworkcommon_fixtures - Reusable test fixturestest_patterns - Structure patterns (AAA, Given-When-Then)similar_tests - Related existing testssuggested_tests - Recommended test casescoverage_target - Project coverage standardutilities - Test helper functionsReturn a concise summary to the calling agent:
Test Pattern Analysis:
- Framework: {framework}
- Pattern: {AAA|Given-When-Then}
- Naming convention: {pattern}
- Common fixtures: {fixture1}, {fixture2}
- Coverage target: {percentage}%
Suggested test cases:
1. {test case 1}
2. {test case 2}
3. {test case 3}
Similar tests to reference:
- {file1}: {test_name}
- {file2}: {test_name}
Details saved to: bazinga/artifacts/{SESSION_ID}/skills/test_patterns.json
Scenario: Writing Tests for Password Reset
Input: Developer needs to write tests for new password reset feature
Expected output:
Test Pattern Analysis:
- Framework: pytest
- Pattern: AAA (Arrange-Act-Assert)
- Naming convention: test_<function>_<scenario>_<expected>
- Common fixtures: test_client, test_db, test_user
- Coverage target: 80%
Suggested test cases:
1. test_password_reset_valid_email_sends_token
2. test_password_reset_invalid_email_returns_error
3. test_password_reset_expired_token_returns_error
4. test_password_reset_rate_limiting_prevents_abuse
Similar tests to reference:
- tests/test_auth.py: test_login_valid_credentials_returns_token
- tests/test_email.py: test_send_email_valid_address_succeeds
Reusable fixtures:
- test_client (conftest.py): Flask test client
- test_user (conftest.py): Create test user in database
- mock_email_service (conftest.py): Mock email sending
Details saved to: bazinga/artifacts/{SESSION_ID}/skills/test_patterns.json
Scenario: No Tests Found
Input: Developer trying to analyze patterns in project with no tests
Expected output:
Test Pattern Analysis:
- Framework: detected (pytest)
- Pattern: N/A
No existing tests found. Cannot extract patterns.
Recommendations:
1. Start with standard pytest conventions
2. Use AAA (Arrange-Act-Assert) pattern
3. Name tests: test_<function>_<scenario>_<expected>
4. Target 80% code coverage
5. Create conftest.py for shared fixtures
Details saved to: bazinga/artifacts/{SESSION_ID}/skills/test_patterns.json
If no test files found:
If no fixtures found:
If framework detection fails:
If no similar tests found: