Loading...
Loading...
Test-Driven Development workflow enforcement with RED-GREEN-REFACTOR cycle. Use when implementing features test-first or improving test coverage.
npx skill4agent add travisjneuman/.claude tdd-workflow"Never write a line of code without a failing test."
// RED: Test the behavior we want
describe("Calculator", () => {
it("should add two numbers", () => {
const calc = new Calculator();
expect(calc.add(2, 3)).toBe(5);
});
});
// Run: npm test
// Result: FAIL - Calculator is not defined
// This is RED ✓// GREEN: Minimum implementation to pass
class Calculator {
add(a: number, b: number): number {
return a + b; // Simplest thing that works
}
}
// Run: npm test
// Result: PASS
// This is GREEN ✓1. Write high-level acceptance test (may not run yet)
2. Write first unit test (RED)
3. Implement minimum code (GREEN)
4. Refactor if needed (REFACTOR)
5. Repeat 2-4 until feature complete
6. Verify acceptance test passesit("should [behavior] when [condition]", () => {
// Arrange - Set up test data and dependencies
const user = createTestUser({ role: "admin" });
const service = new UserService();
// Act - Execute the code under test
const result = service.getPermissions(user);
// Assert - Verify expected outcomes
expect(result).toContain("delete");
expect(result).toContain("edit");
});[Unit]_[Scenario]_[ExpectedResult]add_withPositiveNumbers_returnsSumlogin_withInvalidPassword_throwsAuthErrorgetUser_whenNotFound_returnsNull| Metric | Minimum | Target |
|---|---|---|
| Statements | 70% | 85% |
| Branches | 70% | 80% |
| Functions | 80% | 90% |
| Lines | 70% | 85% |
RED → Write failing test (define behavior)
GREEN → Minimum code to pass (make it work)
REFACTOR → Clean up (make it right)
COMMIT → Save progress (make it permanent)| Mistake | Problem | Solution |
|---|---|---|
| Testing implementation | Brittle tests | Test behavior/outcomes |
| Tests too large | Hard to debug | Smaller, focused tests |
| Shared state | Flaky tests | Isolate each test |
| Slow tests | Skipped tests | Mock external deps |
| Testing obvious code | Wasted time | Focus on logic |