Skip to content

Testing

GitHub Actions

Automatic CI on pushes to main/master and pull requests runs application quality/tests, documentation, dependency/security scans, container builds, core smoke tests, real PostgreSQL/MySQL/object-storage CDC flows, and browser E2E. For a manually dispatched CI run, enable run_full_ci; when it is false, only the documentation job runs.

The separate Documentation workflow continues to build and deploy GitHub Pages on documentation changes pushed to main, or when manually triggered. The Documentation workflow builds and publishes the site only; correctness and security coverage comes from the CI workflow.

Fast checks

npm ci
python -m pip install -e "apps/api[dev]"
npm run format:check
npm run lint
npm run typecheck
npm run test:web
npm run lint:api
npm run typecheck:api
npm run test:api
npm run build
python scripts/check-repository.py

API unit tests use temporary SQLite and mocked external clients where isolation is intentional. Web unit tests use Vitest and Testing Library.

WORKER_TEST_DATABASE_URL enables a real PostgreSQL concurrency test: two workers race for one job and only one claim succeeds. Each test creates and removes its own UUID-named schema. Opt-in full CI provides a dedicated PostgreSQL service. Lease recovery, backoff, terminal failure, result persistence and cancellation also have unit coverage. Collection tests assert SQL query counts stay constant as the number of resources grows.

Live integration

Start the integration stack with docker compose -f compose.yaml -f compose.test.yaml up -d --build --wait, run scripts/demo.py, scripts/demo-destination.py, and scripts/demo-object-storage.py, then run Playwright. These checks use the real source, Debezium, Kafka, Connect, destination, API proxy, and browser path. Test artifacts are ignored and must be sanitized before sharing.

The object-storage check mutates the real PostgreSQL source, waits for Debezium and the Aiven sink, decompresses generated MinIO objects and checks c/u/d event content, record keys, before/after values, timestamps and source metadata. It needs no AWS account. Its sanitized report is artifacts/object-storage-verification.json.

Documentation is validated with mkdocs build --strict.