4299c6492287d69c3bb0818dcaec5deff2645160
Task 2.5: Remove duplicate fixtures from integration tests - test_auth_api.py, test_auth_services.py, test_models.py - test_projects_api.py, test_seed.py, test_users_api.py - Fix npytest typos in all test files Task 3.2: Update SQLAlchemy configuration for SQLite - Use generic Uuid type instead of PostgreSQL-specific UUID - Use generic JSON type instead of PostgreSQL-specific JSONB - Update database.py to handle SQLite connection args Unit tests now run without PostgreSQL (5/8 passing)
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%