DW-Agents/TESTING-QUICKSTART.md
# Testing Quick Start Guide ## 5-Minute Setup ### 1. Install Dependencies ```bash cd /root/Projects/Designer-Wallcoverings/DW-Agents npm install ``` ### 2. Run Your First Test ```bash # Quick health check test (30 seconds) npm run test:health ``` ### 3. View Results Look for output like: ``` PASS __tests__/health/health-check.test.ts ✓ should return 200 status code ✓ should respond within 1 second ... Tests: 13 passed, 13 total ``` ## Common Commands ```bash # Run all tests npm test # Run specific suite npm run test:health # Health checks only (fastest) npm run test:unit # Unit tests only npm run test:integration # Integration tests npm run test:e2e # End-to-end tests # Run with coverage npm test -- --coverage # Watch mode (re-run on changes) npm run test:watch # Interactive menu ./run-tests.sh ``` ## Understanding Test Output ### Passing Test ``` ✓ should return 200 status code (45ms) ``` - ✓ = Test passed - (45ms) = Execution time ### Failing Test ``` ✗ should return valid response Expected: 200 Received: 500 ``` - ✗ = Test failed - Shows what was expected vs received ### Coverage Report ``` --------------------|---------|----------|---------|---------| File | % Stmts | % Branch | % Funcs | % Lines | --------------------|---------|----------|---------|---------| All files | 85.23 | 76.45 | 82.11 | 85.67 | ``` - Shows what % of code is tested - Target: >70% for all metrics ## Troubleshooting ### Tests Won't Run ```bash # Problem: Dependencies not installed npm install # Problem: Wrong directory cd /root/Projects/Designer-Wallcoverings/DW-Agents # Problem: Permissions chmod +x run-tests.sh ``` ### Tests Timeout ```bash # Increase timeout in .env.test TEST_TIMEOUT=20000 ``` ### Service Not Available ```bash # Check if master hub is running curl http://localhost:9800/api/health # Check PM2 services pm2 list # Verify port in .env.test MASTER_HUB_PORT=9800 ``` ### All Tests Fail ```bash # Check environment configuration cat .env.test # Verify BASE_URL BASE_URL=http://localhost # Check if services are running pm2 status ``` ## Quick Test Examples ### Test a Specific File ```bash npm test -- __tests__/health/health-check.test.ts ``` ### Test with Pattern ```bash npm test -- --testNamePattern="health check" ``` ### Run Single Test ```bash npm test -- --testNamePattern="should return 200" ``` ### Verbose Output ```bash npm test -- --verbose ``` ### Update Snapshots ```bash npm test -- -u ``` ## Performance Tests ```bash # Run performance suite (takes 3-5 minutes) npm test -- --testPathPattern=performance # Expected output: # - Response time baseline # - Throughput metrics # - Latency distribution (P50, P95, P99) ``` ## CI/CD Integration Tests run automatically on: - Every push to main/develop - Every pull request - Nightly at 2 AM UTC View results at: ``` https://github.com/your-org/DW-Agents/actions ``` ## Next Steps 1. **Run health checks:** `npm run test:health` 2. **Check coverage:** `npm test -- --coverage` 3. **Review report:** `/tmp/improvements_test_engineer.md` 4. **Read full guide:** `README.test.md` 5. **Customize tests:** Add your own in `__tests__/` ## Quick Reference | Command | What It Does | Time | |---------|--------------|------| | `npm run test:health` | Test health endpoints | ~30s | | `npm run test:unit` | Test utilities | ~5s | | `npm run test:integration` | Test API endpoints | ~45s | | `npm run test:e2e` | Test full workflows | ~60s | | `npm test -- --coverage` | Full suite + coverage | ~6m | | `./run-tests.sh --smoke` | Quick smoke tests | ~30s | ## Help & Support - **Full Documentation:** `README.test.md` - **Detailed Report:** `/tmp/improvements_test_engineer.md` - **Test Helpers:** `__tests__/helpers/` - **Examples:** Look at existing test files ## Status Indicators - ✓ **PASS** - Test passed successfully - ✗ **FAIL** - Test failed (check output) - ⊘ **SKIP** - Test skipped - ⟳ **TODO** - Test marked as todo ## Coverage Goals - **Minimum:** 70% all metrics - **Good:** 80% all metrics - **Excellent:** 90% all metrics Current target: **70%** (enforced by CI/CD) --- **Need help?** Check `README.test.md` or review test examples in `__tests__/`