# 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 ```bash source ./venv/bin/activate pytest e2e/ --override-ini testpaths=e2e -m e2e -v ``` Stop on first failure: ```bash pytest e2e/ --override-ini testpaths=e2e -m e2e -x ``` ## Coverage (separate from unit tests) ```bash 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](scenarios.md) for numbered scenarios and which test module implements each case.