Created comprehensive deployment guide for Phase 3 Runboat E2E testing: Pre-Deployment Checklist: - Code readiness verification (all Phase 3 artifacts listed) - CI/CD variables setup with exact requirements: * RUNBOAT_API_URL (from infrastructure team) * RUNBOAT_TOKEN (from infrastructure team) * GITLAB_BOT_TOKEN (create locally via GitLab access tokens) - Runboat account verification script - E2E test dry-run instructions - Performance test dry-run instructions Deployment Steps (Step-by-step): 1. Create GitLab bot token (copy/paste walkthrough) 2. Set CI/CD variables in GitLab UI (protected, masked) 3. Push Phase 3 code to feature branch 4. Create MR with standard description 5. Verify pipeline runs (expected stages + timing) 6. Review pipeline artifacts (reports + traces) Troubleshooting Guide: - Runboat preview fails: Authorization, timeout, connectivity - E2E selector failures: Form field mismatches - Performance test failures: Network time vs mocked - With fixes and verification steps for each Post-Deployment: - Weekly monitoring procedures - Annual token renewal reminder - Success criteria checklist - Approval sign-off section Expected Pipeline Timeline: - Lint: 2 min - Test (parallel): 10 min - Build: 3 min - Preview: 5 min - E2E: 15 min - Total: ~35 minutes Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
8.5 KiB
Phase 3: Runboat E2E & Performance Testing — Deployment Checklist
Status: Ready for deployment
Last Updated: 2026-05-30
Pre-Deployment Checklist
1. Code Readiness
- E2E test infrastructure complete (conftest.py)
- 19 E2E scenarios implemented
- 7 performance benchmark tests implemented
- PHASE3_ROADMAP.md documented
- .gitlab-ci.yml updated with preview + e2e + performance stages
- CLAUDE.md updated with SLO targets and patterns
- All code committed and pushed to main
2. CI/CD Variables Setup (Action Required)
Before merging Phase 3 code, set these variables in GitLab Project Settings → CI/CD Variables:
Variable 1: RUNBOAT_API_URL
- Type: Secret
- Value: Runboat API endpoint (e.g.,
https://api.runboat.dev) - Protected: Yes
- Masked: Yes
- Source: Request from Acsone/infrastructure team
Variable 2: RUNBOAT_TOKEN
- Type: Secret
- Value: Bearer token for Runboat API authentication
- Protected: Yes
- Masked: Yes
- Source: Request from Acsone/infrastructure team
- Format:
rbk_...(Runboat Bearer Key)
Variable 3: GITLAB_BOT_TOKEN
- Type: Secret
- Value: GitLab personal/bot token for posting MR comments
- Protected: Yes
- Masked: Yes
- Source: Create locally via GitLab Settings → Access Tokens
- Token name:
itsulu-blog-publisher-bot - Scopes:
api,read_api,read_repository - Expiration: 1 year
- Save and copy the value
- Token name:
3. Runboat Account Verification
Before deploying, verify Runboat is accessible:
# Test Runboat API (after variables are set)
curl -fsSL -X POST "${RUNBOAT_API_URL}/builds" \
-H "Authorization: Bearer ${RUNBOAT_TOKEN}" \
-H "Content-Type: application/json" \
-d '{"repo":"example/repo","sha":"abc123"}'
# Should return JSON with "url" field (success)
# Or 401 error (invalid token — fix variables)
4. E2E Test Dry-Run (Local)
Test E2E suite against local dev instance:
# Install dependencies
pip install -r e2e/requirements.txt
# Run against local Odoo (default http://localhost:8069)
pytest e2e/ -v
# Or specify custom URL
ODOO_BASE_URL=http://staging:8069 pytest e2e/ -v
Expected result:
- All 19 scenarios should execute
- Some may fail if features not in local DB (normal for dry-run)
- Key is to verify Playwright fixtures work
5. Performance Test Dry-Run (Local)
Test performance tests against local instance:
# Run performance tests
pytest addons/itsulu_blog_publisher/tests/test_performance.py \
-m performance -v
# Should output:
# - test_generation_latency_under_30_seconds PASSED
# - test_query_count tests PASSED
# - test_token_usage_baseline PASSED
# - test_concurrent_generation PASSED
Deployment Steps
Step 1: Create/Verify GitLab Bot Token
# In GitLab web UI:
1. Click your avatar → Settings → Access Tokens
2. Click "Add New Token"
3. Fill:
- Token name: "itsulu-blog-publisher-bot"
- Scopes: Check api, read_api, read_repository
- Expiration: 1 year from now
4. Click "Create Personal Access Token"
5. Copy the token value (only shown once)
Step 2: Set CI/CD Variables
# In GitLab web UI:
1. Project → Settings → CI/CD → Variables
2. Add RUNBOAT_API_URL (get from infrastructure team)
3. Add RUNBOAT_TOKEN (get from infrastructure team)
4. Add GITLAB_BOT_TOKEN (paste from step 1)
5. Check all are: Protected=Yes, Masked=Yes
6. Click Save
Step 3: Push Phase 3 Code to Feature Branch
# Verify all commits are in git log
git log --oneline -5
# Should see:
# d122b77 feat: integrate Runboat E2E testing into CI/CD pipeline
# acfa1d9 feat: establish Phase 3 E2E testing infrastructure
# 7ee393a feat: add performance benchmark tests
# ... Phase 2 commits ...
Step 4: Create Merge Request
# Push to feature branch
git push origin main:refs/heads/phase-3-e2e-testing
# Create MR in GitLab UI
# Title: "Phase 3: Runboat E2E Testing & Performance Benchmarks"
# Description:
# - E2E infrastructure with Runboat polling and auth fixtures
# - 19 E2E test scenarios (generation, scheduling, error recovery)
# - 7 performance benchmark tests (latency, queries, tokens, concurrency)
# - CI/CD pipeline integration (preview + e2e + performance stages)
# - SLO targets established for 7 performance metrics
Step 5: Verify Pipeline Runs
When MR is created, GitLab CI/CD should automatically start:
-
Lint stage (2 min)
- black --check
- pylint-odoo
- Status: ✅ Should pass
-
Test stage (10 min) — runs in parallel:
- unit_tests: TDD + BDD tests
- performance_tests: Performance benchmarks
- Status: ✅ Should pass
-
Build stage (3 min)
- Docker image build & push
- Status: ✅ Should pass
-
Preview stage (5 min)
- runboat_preview: Requests Runboat build
- Status: ✅ Should create preview URL (or ⚠️ if Runboat unavailable)
-
E2E stage (15 min) — waits for preview
- e2e_tests: Runs Playwright scenarios
- Status: ✅ Should pass or ⚠️ if preview not ready
Step 6: Review Pipeline Artifacts
After pipeline completes, download/review artifacts:
- report-unit.html — Unit test coverage report
- report-performance.html — Performance test results
- report-e2e.html — E2E test results (if ran)
- e2e/traces/ — Playwright trace files for debugging
Troubleshooting
Runboat Preview Fails
Error: Authorization failed or 401 Unauthorized
Fix:
- Verify RUNBOAT_TOKEN is set in CI/CD variables
- Check token is not expired (request new from infrastructure team)
- Verify RUNBOAT_API_URL is correct
Error: Cannot reach Runboat API
Fix:
- Verify RUNBOAT_API_URL is not behind firewall
- Check infrastructure team has enabled preview access for this project
E2E Tests Timeout
Error: Runboat instance not ready after 180s
Fix:
- Runboat cold-start can take 60s, normal behavior
- If > 180s, Runboat infrastructure may be overloaded
- Retry pipeline after 30 minutes
E2E Tests Fail (Selector Not Found)
Error: locator.fill('value') → TimeoutError: locator did not resolve
Fix:
- Form field names may differ in template DB
- Update selector in test file to match actual field names
- Use
page.pause()to inspect live page:pytest e2e/ --pdb-trace
Performance Tests Fail
Error: AssertionError: Generation took 35s, target <30s
Fix:
- Mock LLM response is artificially fast
- Real API calls will add network time
- If local test > 30s, investigate N+1 queries or missing indexes
Post-Deployment
Ongoing Maintenance
After Phase 3 is live:
-
Monitor E2E Results (Weekly)
- Check MR pipeline E2E reports
- Flag flaky scenarios (run 3× to verify)
- Update fixtures if Odoo UI changes
-
Track Performance Metrics (Weekly)
- Monitor
ir_loggingtable for generation latency - Alert if P99 latency > 60s (bottleneck detected)
- Adjust SLOs if production baseline differs
- Monitor
-
Update Runboat Token (Annually)
- RUNBOAT_TOKEN expires yearly
- Request renewal 1 month before expiration
- Update CI/CD variable before it expires
-
Runboat Account Maintenance
- Monitor preview instance quota
- Cleanup old instances if quota fills
- Contact Acsone if persistent issues
Success Criteria
✅ Phase 3 is successful when:
- All MRs include E2E test results
- No E2E flakiness (< 2% failure rate)
- Performance baselines recorded in first full month
- Runboat previews available for all MRs
- Zero issues with Runboat integration after 1 week
- Performance SLOs consistently met
- Team trained on reading E2E/performance reports
Reference Links
- Runboat Documentation
- Playwright Python API
- .gitlab-ci.yml Pipeline
- PHASE3_ROADMAP.md
- CLAUDE.md Testing Framework
Approval Sign-Off
This Phase 3 deployment is ready when:
- Code review approved
- All CI/CD variables set (RUNBOAT_API_URL, RUNBOAT_TOKEN, GITLAB_BOT_TOKEN)
- Runboat account verified operational
- Local dry-runs pass (E2E + performance tests)
- Infrastructure team confirms Runboat access
- At least one team member trained on results interpretation
Deploy: Create MR and monitor first pipeline run
Deployment Date: (To be filled on merge)
Deployed By: (To be filled on merge)
Notes: (To be filled with any issues encountered)