Documentation Index
Fetch the complete documentation index at: https://www.halite-app.com/llms.txt
Use this file to discover all available pages before exploring further.
Backend tests
Tests live inbackend/tests/ and are named test_<feature>_<layer>.py. Run them from the backend/ directory with the virtual environment activated.
Running tests
Run the full suite against SQLite (fast, no external dependencies):Dual-backend suite
The test suite runs every database test against both SQLite and Postgres. SQLite runs by default; Postgres requires Docker (via testcontainers) and is enabled with:DB fixtures and sync context
Theconftest.py fixtures that run Alembic migrations are synchronous (pytest.fixture, not pytest_asyncio.fixture). This is intentional: Alembic’s env.py uses asyncio.run() internally, so migrations must be driven from a sync context. Async session fixtures are layered on top after migrations complete.
The fake_salt_api fixture provides an httpx.MockTransport-backed fake salt-api. Tests configure its responses via attribute assignment and pass transport=fake_salt_api.transport when constructing a SaltAPIClient.
Lint and format
Halite uses ruff for linting and formatting. Run frombackend/:
E, F, W, I, B, UP, SIM.
Frontend tests
Run from thefrontend/ directory:
Related pages
- Local Development — setting up the dev environment
- Database & Migrations — portability rules and the dual-backend pattern