3ccd94f6614bc819ab1e46a77d5be3cb18aa0b70
Test Organization: - Create tests/unit/, tests/integration/, tests/system/ directories - Move existing tests into appropriate categories - Add pytest markers (@pytest.mark.unit, @pytest.mark.integration) Shared Fixtures: - Create conftest.py with SQLite engine (for unit tests) - Add PostgreSQL session fixture with transaction rollback - Add TestClient fixture for API tests Configuration: - Update pyproject.toml with asyncio_mode=auto - Add test markers and default addopts - Add aiosqlite dependency for SQLite support E2E Testing: - Initialize Playwright in e2e/ directory - Add playwright.config.ts - Create login flow E2E test Build: - Add test-unit, test-integration, test-system, test-e2e to Makefile - Update test target to run all categories - Add testing documentation to README Note: Some tests have import issues due to missing python-jose package in dev environment. This needs to be addressed separately.
Testing Strategy
The project uses a three-tier testing approach:
Test Categories
-
Unit Tests (
apps/api/tests/unit/)- Fast tests with no external dependencies
- Use SQLite in-memory database
- Run with:
make test-unitorpytest -m unit
-
Integration Tests (
apps/api/tests/integration/)- Test API endpoints with database
- Use PostgreSQL with transaction rollback
- Run with:
make test-integrationorpytest -m integration
-
System/E2E Tests (
e2e/)- End-to-end tests using Playwright
- Test full user journeys
- Run with:
make test-e2e
Running Tests
# Run all tests (excludes system tests by default)
make test
# Run specific categories
make test-unit # Fast unit tests only
make test-integration # Integration tests with DB
make test-system # Full stack tests
make test-e2e # Browser-based E2E tests
# Inside Docker container
docker compose exec api pytest -v -m unit
docker compose exec api pytest -v -m integration
Test Markers
Tests are marked with pytest markers:
@pytest.mark.unit- Fast, isolated tests@pytest.mark.integration- Tests with database/external services@pytest.mark.system- Full stack tests
Shared Fixtures
Common fixtures are in apps/api/tests/conftest.py:
sqlite_engine- SQLite engine for unit testspostgres_engine- PostgreSQL engine for integration testsdb_session- Database session with transaction rollbacktest_client- FastAPI TestClient instance
Description
Languages
Python
53.8%
TypeScript
36.7%
CSS
5%
HTML
3.4%
Dockerfile
0.4%
Other
0.6%