--- name: testing-gate description: Gate 6 - Verify tests exist and cover critical paths. Issues result in WARNINGS (encourages tests, doesn't block). --- # Gate 6: Testing Verification > "Tests are proof of understanding. If you can't test it, do you really understand it?" ## Purpose This gate encourages juniors to write tests for their features. Unlike the Ownership Gate, this does NOT block completion - it issues warnings to encourage the testing habit. ## Gate Status - **PASS** — Tests exist and cover critical paths - **WARNING** — No tests or insufficient coverage (can proceed with note) **Note:** This gate does NOT block. The goal is to build the testing habit through encouragement, not enforcement. --- ## Gate Questions Ask in sequence: ### Question 1: Test Existence > "What tests did you write for this feature?" **Looking for:** - At least one test file exists - Tests are actually running (not skipped) - Tests are meaningful (not just `expect(true).toBe(true)`) **If no tests:** > "I noticed there aren't tests for this feature. Testing isn't required to complete, but it's a habit worth building. What would you test if you had time?" ### Question 2: Coverage Strategy > "What does your test prove about this feature?" **Looking for:** - Happy path covered - At least one edge case considered - Error states (if applicable) **Follow-up:** > "If I broke [specific part], which test would catch it?" ### Question 3: Test Quality > "Show me your most important test. What behavior does it verify?" **Looking for:** - Testing behavior, not implementation - Clear test names - AAA pattern (Arrange, Act, Assert) --- ## Response Templates ### If PASS (Tests Exist) ``` ✅ TESTING GATE: PASSED Nice work including tests! I see you covered: - [Specific test they wrote] - [Edge case they handled] Key strength: [Something they did well] Consider adding: [One suggestion for future] Moving to code review... ``` ### If WARNING (No Tests) ``` ⚠️ TESTING GATE: WARNING No tests found for this feature. That's okay - we can proceed. But here's why tests matter: 1. **Interview Gold**: "I implemented tests for critical flows..." 2. **Confidence**: Know your changes don't break things 3. **Documentation**: Tests show how code should be used Quick win for next time: - Test the happy path first - Add one edge case - That's already better than most! Proceeding to code review... ``` ### If WARNING (Weak Tests) ``` ⚠️ TESTING GATE: WARNING Tests exist but could be stronger: **Issue**: [What's missing or weak] **Question**: "If [scenario], would your tests catch it?" This doesn't block you, but consider: - [Specific improvement suggestion] Proceeding to code review... ``` --- ## What Makes a Good Test Suite? | Level | Coverage | Characteristics | |-------|----------|-----------------| | Minimal | 1-2 tests | Happy path only | | Good | 3-5 tests | Happy path + main edge cases | | Strong | 5-10 tests | Happy path + edge cases + error states | | Interview-Ready | Full pyramid | Unit + Integration + E2E for critical flows | --- ## Socratic Guidance If they want to add tests but don't know where to start: 1. "What's the ONE thing that would be really bad if it broke?" 2. "What input would a user never send but a hacker might?" 3. "What happens when the server is slow or returns an error?" --- ## Stack-Specific Hints | Stack | Suggestion | |-------|------------| | Vite + React | "Vitest + React Testing Library is fast and integrated" | | Next.js | "Vitest or Jest works great with Next" | | API/Backend | "Test your endpoints with supertest or native HTTP" | | Python | "pytest is the standard - simple and powerful" | --- ## Interview Connection > "Testing is interview gold." When they pass this gate with tests: - Note it for their STAR story - "You can talk about your testing strategy in interviews" - "What percentage coverage did you achieve?" (for resume) When they skip tests: - "Next time, even 2-3 tests makes a huge difference for your portfolio" - "Employers love seeing test files in your repo" --- ## Why WARNING Not BLOCKING? 1. **Encouragement > Enforcement**: Build the habit through positive reinforcement 2. **Some features are trivial**: Not everything needs tests 3. **Time constraints exist**: Production pressure is real 4. **Learning curve**: Testing has a learning curve; don't block progress The goal is to make testing feel valuable, not punitive.