# QA Quick Start Guide ## Sprint 1 QA Setup - Complete Checklist ### Phase 1: Environment Verification (5 minutes) #### 1.1 Check Prerequisites ```bash # Verify Docker is installed and running docker --version docker ps # Verify .NET 9 SDK dotnet --version # Should output: 9.0.xxx ``` **Status**: - [✅] Docker Desktop: v28.3.3 installed - [✅] .NET SDK: 9.0.305 installed - [❌] Docker Desktop: **NOT RUNNING** - Please start Docker Desktop before continuing #### 1.2 Start Docker Desktop 1. Open Docker Desktop application 2. Wait for it to fully initialize (green icon in system tray) 3. Verify: `docker ps` runs without errors --- ### Phase 2: Docker Environment Setup (10 minutes) #### 2.1 Review Configuration ```bash # Navigate to project root cd c:\Users\yaoji\git\ColaCoder\product-master # Validate Docker Compose configuration docker-compose config ``` #### 2.2 Start Services ```bash # Start all services (PostgreSQL, Redis, Backend, Frontend) docker-compose up -d # View logs docker-compose logs -f # Check service health docker-compose ps ``` **Expected Output**: ``` NAME STATUS PORTS colaflow-postgres Up (healthy) 5432 colaflow-redis Up (healthy) 6379 colaflow-api Up (healthy) 5000, 5001 colaflow-web Up (healthy) 3000 ``` #### 2.3 Access Services | Service | URL | Test Command | |---------|-----|--------------| | Frontend | http://localhost:3000 | Open in browser | | Backend API | http://localhost:5000 | `curl http://localhost:5000/health` | | PostgreSQL | localhost:5432 | `docker-compose exec postgres psql -U colaflow -d colaflow` | | Redis | localhost:6379 | `docker-compose exec redis redis-cli -a colaflow_redis_password ping` | --- ### Phase 3: Test Framework Setup (15 minutes) #### 3.1 Create Test Projects Once backend development starts, create test projects: ```bash cd tests # Domain Tests dotnet new xunit -n ColaFlow.Domain.Tests cp ColaFlow.Domain.Tests.csproj.template ColaFlow.Domain.Tests/ColaFlow.Domain.Tests.csproj # Application Tests dotnet new xunit -n ColaFlow.Application.Tests cp ColaFlow.Application.Tests.csproj.template ColaFlow.Application.Tests/ColaFlow.Application.Tests.csproj # Integration Tests dotnet new xunit -n ColaFlow.IntegrationTests cp ColaFlow.IntegrationTests.csproj.template ColaFlow.IntegrationTests/ColaFlow.IntegrationTests.csproj # Restore packages dotnet restore ``` #### 3.2 Verify Test Projects Build ```bash cd tests dotnet build # Expected: Build succeeded. 0 Error(s) ``` #### 3.3 Run Example Tests ```bash # Run all tests dotnet test # Run with detailed output dotnet test --logger "console;verbosity=detailed" ``` --- ### Phase 4: Testcontainers Configuration (5 minutes) #### 4.1 Verify Testcontainers Setup Files already created: - [✅] `tests/IntegrationTestBase.cs` - Base class for integration tests - [✅] `tests/WebApplicationFactoryBase.cs` - API test factory - [✅] `tests/TestContainers.config.json` - Testcontainers configuration #### 4.2 Test Testcontainers Once backend is implemented, run: ```bash cd tests dotnet test --filter Category=Integration ``` --- ### Phase 5: Coverage & CI/CD Setup (10 minutes) #### 5.1 Test Coverage Locally ```bash # Run tests with coverage cd tests dotnet test /p:CollectCoverage=true /p:CoverletOutputFormat=opencover # Generate HTML report dotnet tool install -g dotnet-reportgenerator-globaltool reportgenerator -reports:coverage.opencover.xml -targetdir:coveragereport -reporttypes:Html # Open report (Windows) start coveragereport/index.html ``` #### 5.2 GitHub Actions Workflows Files already created: - [✅] `.github/workflows/test.yml` - Main test workflow - [✅] `.github/workflows/coverage.yml` - Coverage workflow **To trigger**: 1. Push code to `main` or `develop` branch 2. Create a pull request 3. Manually trigger via GitHub Actions UI --- ## Daily QA Workflow ### Morning Routine (10 minutes) ```bash # 1. Pull latest changes git pull origin develop # 2. Restart Docker services docker-compose down docker-compose up -d # 3. Check service health docker-compose ps # 4. Run tests cd tests dotnet test ``` ### Before Committing (5 minutes) ```bash # 1. Run all tests dotnet test # 2. Check coverage dotnet test /p:CollectCoverage=true /p:Threshold=80 # 3. Commit if tests pass git add . git commit -m "Your commit message" git push ``` ### Bug Found - What to Do? 1. Create GitHub issue with template 2. Add label: `bug`, `sprint-1` 3. Assign priority: `critical`, `high`, `medium`, `low` 4. Notify team in Slack/Teams 5. Add to Sprint 1 Test Report --- ## Common Commands Reference ### Docker Commands ```bash # Start services docker-compose up -d # Stop services docker-compose stop # View logs docker-compose logs -f [service-name] # Restart service docker-compose restart [service-name] # Remove everything (⚠️ DATA LOSS) docker-compose down -v # Shell into container docker-compose exec [service-name] /bin/sh ``` ### Testing Commands ```bash # Run all tests dotnet test # Run specific project dotnet test ColaFlow.Domain.Tests/ # Run specific test dotnet test --filter "FullyQualifiedName~ProjectTests" # Run by category dotnet test --filter "Category=Unit" # Run with coverage dotnet test /p:CollectCoverage=true # Parallel execution dotnet test --parallel ``` ### Database Commands ```bash # Access PostgreSQL CLI docker-compose exec postgres psql -U colaflow -d colaflow # List tables \dt # Describe table \d table_name # Exit \q # Backup database docker-compose exec postgres pg_dump -U colaflow colaflow > backup.sql # Restore database docker-compose exec -T postgres psql -U colaflow -d colaflow < backup.sql ``` --- ## Troubleshooting ### Issue: Docker Desktop Not Running **Error**: `error during connect: Get "http:///.../docker..."` **Solution**: 1. Start Docker Desktop 2. Wait for initialization 3. Retry command ### Issue: Port Already in Use **Error**: `Bind for 0.0.0.0:5432 failed` **Solution**: ```bash # Windows: Find process using port netstat -ano | findstr :5432 # Kill process taskkill /PID /F # Or change port in docker-compose.yml ``` ### Issue: Tests Failing **Symptoms**: Red test output **Solution**: 1. Check Docker services are running: `docker-compose ps` 2. Check logs: `docker-compose logs` 3. Clean and rebuild: `dotnet clean && dotnet build` 4. Check test data/database state ### Issue: Low Coverage **Symptoms**: Coverage below 80% **Solution**: 1. Generate detailed report: `reportgenerator ...` 2. Identify low-coverage files 3. Write missing tests 4. Focus on critical business logic first --- ## Next Steps ### Immediate (Today) 1. [✅] Start Docker Desktop 2. [✅] Verify `docker ps` works 3. [✅] Run `docker-compose up -d` 4. [✅] Access http://localhost:3000 and http://localhost:5000 ### This Week 1. [ ] Wait for backend team to create initial Domain classes 2. [ ] Create actual test projects (using templates) 3. [ ] Write first unit tests for Project aggregate 4. [ ] Set up test data builders ### Sprint 1 Goals - [✅] Docker environment working - [✅] Testcontainers configured - [✅] CI/CD pipelines ready - [ ] 80%+ unit test coverage - [ ] All API endpoints tested - [ ] 0 critical bugs --- ## Resources ### Documentation - [DOCKER-README.md](./DOCKER-README.md) - Complete Docker guide - [tests/README.md](./tests/README.md) - Testing guide - [M1-Architecture-Design.md](./docs/M1-Architecture-Design.md) - Architecture reference ### Templates - [tests/ExampleDomainTest.cs](./tests/ExampleDomainTest.cs) - Unit test template - [tests/ExampleIntegrationTest.cs](./tests/ExampleIntegrationTest.cs) - Integration test template - [tests/SPRINT1-TEST-REPORT-TEMPLATE.md](./tests/SPRINT1-TEST-REPORT-TEMPLATE.md) - Report template ### Tools - xUnit: https://xunit.net/ - FluentAssertions: https://fluentassertions.com/ - Testcontainers: https://dotnet.testcontainers.org/ - Coverlet: https://github.com/coverlet-coverage/coverlet --- **Last Updated**: 2025-11-02 **Status**: Ready for Sprint 1 **Next Review**: After first backend implementation --- ## Quick Checklist Copy this to your daily standup notes: ``` Today's QA Tasks: - [ ] Docker services running - [ ] All tests passing - [ ] Coverage >= 80% - [ ] No new critical bugs - [ ] CI/CD pipeline green - [ ] Test report updated ```