Analyze Test Results Skill
Analyze test results from CI or local runs to identify failures, diagnose root causes, and fix bugs.
When to Use
- •After tests fail (CI or local)
- •After running
/download-ci-artifacts - •When asked to "fix test failures"
- •When asked to "analyze test results"
Workflow
1. Locate Test Results
bash
# From CI artifacts cat ci-artifacts/test-report/test-report.md # From local run uv run pytest MouseMaster/Testing/Python/ -v --tb=long 2>&1 | tee test-output.log
2. Parse JUnit XML (if available)
bash
# Extract failed tests from XML grep -E "(failure|error)" ci-artifacts/unit/unit-tests.xml | head -20
3. For Each Failure
a. Identify the failing test
code
FAILED MouseMaster/Testing/Python/test_event_handler.py::TestClass::test_name
b. Read the test file
Understand what the test expects:
- •What behavior is being tested?
- •What are the assertions?
- •What mocks are set up?
c. Read the implementation
Find the code being tested and understand:
- •Current behavior
- •Why it might fail
- •Edge cases
d. Diagnose root cause
Common issues:
- •Mock not configured: Check mock setup in test
- •API changed: Update test or implementation
- •Race condition: Add proper synchronization
- •Missing dependency: Check imports and fixtures
4. Fix the Issue
Apply the minimal fix needed:
python
# If test expectation is wrong # → Update the test # If implementation is wrong # → Fix the implementation, re-run tests # If mock setup is incomplete # → Add proper mock configuration
5. Verify Fix
bash
# Run specific failing test uv run pytest MouseMaster/Testing/Python/test_file.py::TestClass::test_name -v # Run full suite uv run pytest MouseMaster/Testing/Python/ -v
Analyzing Slicer Test Failures
Read Slicer output log
bash
cat ci-artifacts/slicer/slicer-output.log
Common Slicer issues
| Error | Cause | Fix |
|---|---|---|
ModuleNotFoundError | Extension not loaded | Check module paths |
AttributeError: 'NoneType' | Widget not ready | Add processEvents() |
RuntimeError: widget deleted | View closed | Check object lifetime |
Qt assertion | Invalid UI operation | Run on main thread |
Screenshot analysis
If screenshots captured, review with:
bash
# View manifest cat ci-artifacts/screenshots/manifest.json # Then use /review-ui-screenshots skill
Decision Rules
Fix immediately
- •Clear implementation bugs
- •Missing mock configuration
- •Import errors
- •Typos
Investigate more
- •Intermittent failures
- •Platform-specific issues
- •Complex logic errors
Report only
- •Test infrastructure issues
- •CI configuration problems
- •External dependency failures
Report Format
After analysis:
markdown
## Test Analysis Report ### Failures Found | Test | Error | Root Cause | |------|-------|------------| | test_name | AssertionError | Incorrect mock setup | ### Fixes Applied - `file.py:123` - Fixed mock configuration - `test.py:45` - Updated assertion ### Remaining Issues - Issue requiring further investigation ### Verification - [ ] All tests pass locally - [ ] Lint passes - [ ] Type check passes
Integration
After fixing:
- •Run
/run-teststo verify - •Commit with
fix: description of fix - •Push to trigger CI
Related Skills
- •
/download-ci-artifacts- Get artifacts first - •
/review-ui-screenshots- Analyze UI issues - •
/fix-bad-practices- Fix code quality issues