feat: restructure test infrastructure with unit/integration/system separation
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.
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
## ADDED Requirements
|
||||
|
||||
### Requirement: Test Directory Structure
|
||||
|
||||
The system SHALL organize tests into unit, integration, and system directories.
|
||||
|
||||
#### Scenario: Directory layout
|
||||
- GIVEN the backend test suite
|
||||
- THEN `apps/api/tests/` SHALL contain:
|
||||
- `unit/` - Pure logic tests with no external dependencies
|
||||
- `integration/` - API endpoint tests with database
|
||||
- `system/` - Full stack tests with external services
|
||||
|
||||
#### Scenario: Running selective tests
|
||||
- GIVEN the test suite is organized
|
||||
- WHEN running `pytest -m unit`
|
||||
- THEN only unit tests SHALL execute
|
||||
- AND WHEN running `pytest -m integration`
|
||||
- THEN only integration tests SHALL execute
|
||||
|
||||
### Requirement: Test Markers
|
||||
|
||||
The system SHALL provide pytest markers for each test category.
|
||||
|
||||
#### Scenario: Marker registration
|
||||
- GIVEN pytest configuration
|
||||
- THEN `pyproject.toml` SHALL register markers:
|
||||
- `unit` - Fast tests with no external dependencies
|
||||
- `integration` - Tests with database and external services
|
||||
- `system` - End-to-end tests of the full stack
|
||||
|
||||
#### Scenario: Marker usage
|
||||
- GIVEN a test file
|
||||
- THEN unit tests SHALL be marked with `@pytest.mark.unit`
|
||||
- AND integration tests SHALL be marked with `@pytest.mark.integration`
|
||||
- AND system tests SHALL be marked with `@pytest.mark.system`
|
||||
Reference in New Issue
Block a user