fix: address PR review feedback
CI Pipeline / backend-test (push) Failing after 12s
CI Pipeline / frontend-test (push) Successful in 34s
CI Pipeline / backend-lint (push) Successful in 9s
CI Pipeline / backend-test (pull_request) Failing after 14s
CI Pipeline / frontend-test (pull_request) Successful in 27s
CI Pipeline / backend-lint (pull_request) Successful in 8s
CI Pipeline / quality-gate (push) Successful in 2s
CI Pipeline / quality-gate (pull_request) Successful in 2s
CI Pipeline / backend-test (push) Failing after 12s
CI Pipeline / frontend-test (push) Successful in 34s
CI Pipeline / backend-lint (push) Successful in 9s
CI Pipeline / backend-test (pull_request) Failing after 14s
CI Pipeline / frontend-test (pull_request) Successful in 27s
CI Pipeline / backend-lint (pull_request) Successful in 8s
CI Pipeline / quality-gate (push) Successful in 2s
CI Pipeline / quality-gate (pull_request) Successful in 2s
- Remove .gitlab-ci.yml (duplicative with Gitea Actions workflow) - Add lookup_geo() unit tests with mocked MaxMind reader (4 tests) - Expand README.md Testing section with backend/frontend/CI docs - Add CLAUDE.md with test framework documentation
This commit is contained in:
@@ -192,10 +192,45 @@ For production deployment, serve the built static files with Nginx and run the b
|
||||
|
||||
## Testing
|
||||
|
||||
This project uses a dual test framework: **pytest** for the Python backend and **Vitest** for the Angular frontend.
|
||||
|
||||
### Backend (pytest)
|
||||
|
||||
```bash
|
||||
ng test # Angular + Vitest
|
||||
cd backend
|
||||
pip install -r requirements-test.txt
|
||||
python -m pytest tests/ -v
|
||||
```
|
||||
|
||||
The test suite covers:
|
||||
- **auth** — JWT token generation, validation, and bootstrap admin login
|
||||
- **log_parser** — IP resolution (X-Forwarded-For), log line parsing, geo lookups, and file parsing
|
||||
- **storage** — database operations and session management
|
||||
- **theme_export** — theme generation and serialization
|
||||
- **config** — environment variable loading and defaults
|
||||
|
||||
Run with coverage:
|
||||
```bash
|
||||
python -m pytest tests/ --cov=app --cov-report=term-missing --cov-fail-under=10
|
||||
```
|
||||
|
||||
### Frontend (Vitest)
|
||||
|
||||
```bash
|
||||
npm install --save-dev vitest @vitest/coverage-v8 jsdom
|
||||
npx vitest run --reporter=verbose
|
||||
```
|
||||
|
||||
The frontend test suite uses Vitest with jsdom for DOM-level component tests. Config is in `vitest.config.ts`.
|
||||
|
||||
### CI
|
||||
|
||||
The project uses Gitea Actions (`.gitea/workflows/ci.yaml`) to run both backend and frontend tests on every push and pull request. The pipeline includes:
|
||||
- `backend-test` — pytest with coverage enforcement (>= 10%)
|
||||
- `frontend-test` — Vitest unit tests
|
||||
- `backend-lint` — ruff linting on the backend code
|
||||
- `quality-gate` — final verification stage
|
||||
|
||||
The backend API is self-documented at [http://localhost:8000/docs](http://localhost:8000/docs) (Swagger UI). The database auto-seeds on first startup — visit that URL to interactively test endpoints.
|
||||
|
||||
## Admin Dashboard — Visitor Stats
|
||||
|
||||
Reference in New Issue
Block a user