# Testing All tests should run inside Docker containers. ## Canonical test command ```bash docker compose run --rm backend python manage.py test docker compose run --rm frontend npm run check docker compose run --rm frontend npm run build docker compose run --rm proxy nginx -t docker compose config --quiet ``` ## Test categories The test suite covers: - Django model and API integration tests; - Astro static type and template validation; - production frontend build; - NGINX syntax and upstream configuration validation; - Docker Compose configuration validation. All commands run in containers. The backend test container starts PostgreSQL through Compose; the frontend checks use the checked-in lockfile for reproducible installs. After seeding, smoke-test `/health/`, `/api/site/home/`, and the public page through NGINX using the `azionelab.org` host. Also verify that an unknown host returns 404. Basic keyboard navigation, responsive layout, and accessible names require a manual browser pass until browser automation is added.