|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- ---
- name: 'step-03c-subagent-maintainability'
- description: 'Subagent: Check test maintainability (readability, structure, DRY)'
- subagent: true
- outputFile: '/tmp/tea-test-review-maintainability-{{timestamp}}.json'
- ---
-
- # Subagent 3C: Maintainability Quality Check
-
- ## SUBAGENT CONTEXT
-
- This is an **isolated subagent** running in parallel with other quality dimension checks.
-
- **Your task:** Analyze test files for MAINTAINABILITY violations only.
-
- ---
-
- ## MANDATORY EXECUTION RULES
-
- - ✅ Check MAINTAINABILITY only (not other quality dimensions)
- - ✅ Output structured JSON to temp file
- - ❌ Do NOT check determinism, isolation, coverage, or performance
-
- ---
-
- ## SUBAGENT TASK
-
- ### 1. Identify Maintainability Violations
-
- **HIGH SEVERITY Violations**:
-
- - Tests >100 lines (too complex)
- - No test.describe grouping
- - Duplicate test logic (copy-paste)
- - Unclear test names (no Given/When/Then structure)
- - Magic numbers/strings without constants
-
- **MEDIUM SEVERITY Violations**:
-
- - Tests missing comments for complex logic
- - Inconsistent naming conventions
- - Excessive nesting (>3 levels)
- - Large setup/teardown blocks
-
- **LOW SEVERITY Violations**:
-
- - Minor code style issues
- - Could benefit from helper functions
- - Inconsistent assertion styles
-
- ### 2. Calculate Maintainability Score
-
- ```javascript
- const severityWeights = { HIGH: 10, MEDIUM: 5, LOW: 2 };
- const totalPenalty = violations.reduce((sum, v) => sum + severityWeights[v.severity], 0);
- const score = Math.max(0, 100 - totalPenalty);
- ```
-
- ---
-
- ## OUTPUT FORMAT
-
- ```json
- {
- "dimension": "maintainability",
- "score": 75,
- "max_score": 100,
- "grade": "C",
- "violations": [
- {
- "file": "tests/e2e/complex-flow.spec.ts",
- "line": 1,
- "severity": "HIGH",
- "category": "test-too-long",
- "description": "Test file is 250 lines - too complex to maintain",
- "suggestion": "Split into multiple smaller test files by feature area",
- "code_snippet": "test.describe('Complex flow', () => { /* 250 lines */ });"
- }
- ],
- "passed_checks": 10,
- "failed_checks": 5,
- "violation_summary": {
- "HIGH": 2,
- "MEDIUM": 2,
- "LOW": 1
- },
- "recommendations": [
- "Split large test files into smaller, focused files (<100 lines each)",
- "Add test.describe grouping for related tests",
- "Extract duplicate logic into helper functions"
- ],
- "summary": "Tests have maintainability issues - 5 violations (2 HIGH)"
- }
- ```
-
- ---
-
- ## EXIT CONDITION
-
- Subagent completes when JSON output written to temp file.
-
- **Subagent terminates here.**
|