Commit graph

2 commits

Author SHA1 Message Date
2cb2a48b98 fix: deploy E2E tests on ITSulu K8s cluster instead of external Runboat
Updated CI/CD pipeline to run E2E tests on the ITSulu K8s cluster
(itsulu-testing namespace) instead of using external Runboat service.

.gitlab-ci.yml Changes:
- Removed preview stage (no external Runboat dependency)
- Removed e2e_tests dependency on runboat_preview
- Updated e2e_tests job to run on K8s cluster:
  * Uses bitnami/kubectl image for K8s access
  * Configures kubectl with KUBE_CONFIG secret
  * Creates ephemeral E2E test job on K8s
  * initContainer: Creates test database from template
  * container: Installs Odoo, addon, Playwright, runs pytest
  * Waits for job completion and downloads report
  * Reports available in GitLab artifacts
- Consolidated performance tests into unit_tests stage (same runner)

K8s Job Manifest (inline YAML):
- Namespace: itsulu-testing
- Init container: postgres:15-alpine for DB setup
- Test container: blog-publisher Docker image
- Volumes: emptyDir for test results
- TTL: 3600s (1 hour) for log retention
- Uses existing secrets: test-db-info, gitlab-docker-creds

e2e/conftest.py Changes:
- Updated docstring: "Runs on ITSulu K8s cluster"
- Changed RUNBOAT_TIMEOUT → K8S_TIMEOUT (300s)
- Updated wait_for_odoo() to mention K8s namespace in error
- Increased timeout: 180s → 300s (Odoo init + addon install)

Required CI/CD Variables (now reduced):
- KUBE_CONFIG: base64-encoded kubeconfig for itsulu-testing namespace
  * Only one variable needed (replaces 3 Runboat variables)
  * Must have permissions to create Jobs in itsulu-testing namespace

Prerequisites (K8s cluster):
- test-db-svc: PostgreSQL service in itsulu-testing namespace
- odoo_template: Pre-seeded database
- gitlab-docker-creds: Secret for image pull
- test-runner: ServiceAccount with Job create permissions

Benefits:
- No external service dependency
- Leverages existing ITSulu K8s infrastructure
- Full isolation per test run (ephemeral jobs)
- Persistent logs via TTL
- Cost-effective (uses existing cluster)

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-05-30 00:58:46 -04:00
acfa1d93d7 feat: establish Phase 3 E2E testing infrastructure with Playwright
Created comprehensive E2E test suite for ITSulu Blog Publisher using Playwright
and Runboat. Includes:

PHASE3_ROADMAP.md:
- Goals for E2E coverage (10-30 scenarios)
- Performance benchmark targets (latency, tokens, queries, throughput)
- Implementation plan with layer-by-layer breakdown
- Success criteria and SLO targets
- Runboat integration details for CI/CD

e2e/ directory structure:
- conftest.py: Runboat polling, auth fixtures, page fixture
- requirements.txt: pytest, playwright, requests
- test_generation.py: On-demand generation workflows (5 tests)
- test_scheduling.py: Schedule slot configuration and execution (6 tests)
- test_error_recovery.py: Error handling and email notifications (8 tests)

Total: 19 E2E test scenarios covering:
- On-demand post generation with auto-publish
- Scheduled generation with topic queue
- Error recovery and retry mechanism
- Email notifications with correct content
- Social media copy generation
- Concurrent post generation
- Progress feedback during API calls

Tests use:
- Playwright sync API with 30s timeout (Odoo JS rendering)
- Runboat polling with 180s timeout (instance cold-start)
- Session-scoped auth to avoid repeated 30s logins
- Data-test-id selectors where available, fallback to get_by_*
- Proper wait_for_load_state() for async operations

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-05-30 00:50:43 -04:00