1.9 KiB
Testing
All tests should run inside Docker containers.
Canonical test command
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 run --rm --no-deps --entrypoint certbot certbot --version
docker compose -f docker-compose.yml -f docker-compose.test.yml --profile test run --rm backend python manage.py seed_demo
docker compose -f docker-compose.yml -f docker-compose.test.yml --profile test run --build --rm functional-tests
docker compose config --quiet
LETSENCRYPT_ENABLED=1 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;
- Certbot image availability/version and optional Compose service rendering;
- Playwright functional browser tests through the NGINX virtual host;
- 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.
docker-compose.test.yml is an override used only for functional verification. It
adds an internal azionelab.org alias to the proxy and starts a pinned Playwright
container. Run the idempotent demo seed through the merged backend service immediately
before the browser suite. The override uses test_postgres_data instead of the normal
database volume and does not publish additional host ports.
The browser suite verifies the public content and section order, CTA/contact links, mobile navigation, horizontal overflow, semantic landmarks, image alternatives, API contract, uploaded media, Wagtail admin routing, and rejection of unknown hosts. A manual visual review is still recommended for subjective layout and design quality.