Backend suite is the slow gate (1076 passed locally in 22m27s on fix/ci-workflow-config). Adding pytest-xdist with per-worker DB isolation drops it to ~4m20s on the 8-core homelab runner. Verified locally: `pytest -n auto --no-cov` finished in 4m28s real time (15m19s user — confirms ~5× parallelism). How it works: - conftest.py reads `PYTEST_XDIST_WORKER` (set per worker by xdist — 'gw0', 'gw1', …). When set, derives a per-worker DB URL like `…/resolutionflow_test_gw0`. The base DB stays for serial / master runs. - `_ensure_worker_db_exists` runs synchronously at conftest import, connects to the postgres maintenance DB, and `CREATE DATABASE`s the worker-suffixed DB if it doesn't exist. Idempotent across runs. - The "test" safety guard still applies — every worker DB name contains "test" so the assertion holds. - The per-test `DROP SCHEMA public CASCADE` now operates on the worker's isolated DB, no cross-worker race. CI workflow: backend job switches to `pytest -n auto`. Coverage still collected (pytest-cov has built-in xdist support). Adds `pytest-xdist==3.6.1` to requirements-dev.txt. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
15 lines
256 B
Plaintext
15 lines
256 B
Plaintext
# Include production dependencies
|
|
-r requirements.txt
|
|
|
|
# Testing — pytest-asyncio 0.24+ requires pytest>=8.2
|
|
pytest==8.4.2
|
|
pytest-asyncio==0.24.0
|
|
pytest-xdist==3.6.1
|
|
httpx>=0.27.0
|
|
pytest-cov==5.0.0
|
|
|
|
# Code quality
|
|
black==24.1.1
|
|
flake8==7.0.0
|
|
mypy==1.8.0
|