Removed scenarios documented with no backing test (1.2.1, 1.3.2, 1.4.1, A.1.3) and corrected three descriptions that claimed assertions the tests don't actually make (1.1.1's "Redis slots written", 1.3.1's "timestamps inserted", 1.5.1's "orphan schedules removed") to match what's really verified. A.2.1 stays as-is here -- it's already accurate for this branch's real per-group filtering test. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Orchestrator end-to-end tests
End-to-end tests run every external dependency for real (MongoDB, Redis, PostgreSQL via testcontainers; SMTP via in-process aiosmtpd; Temporal via WorkflowEnvironment.start_local()).
Requirements
- Docker (for testcontainers)
- Python dev dependencies:
pip install -r requirements-dev.txt
Run locally
source ./venv/bin/activate
pytest e2e/ --override-ini testpaths=e2e -m e2e -v
Stop on first failure:
pytest e2e/ --override-ini testpaths=e2e -m e2e -x
Coverage (separate from unit tests)
COVERAGE_FILE=.coverage.e2e pytest e2e/ --override-ini testpaths=e2e -m e2e --cov=orchestrator --cov-branch
coverage combine .coverage .coverage.e2e
coverage report
Unit tests keep the default .coverage file; the E2E run must set COVERAGE_FILE=.coverage.e2e so reports do not overwrite each other.
Scenario catalog
See scenarios.md for numbered scenarios and which test module implements each case.