Enhance test jobs with caching, coverage, and parallel execution
CI improvements: - Add needs: [] to run tests parallel with build (faster pipeline) - Add pip/npm caching (faster subsequent runs) - Add 15m timeout to prevent hung jobs - Add pytest coverage with cobertura report for GitLab - Add pytest JUnit report for test tab in MR - Add vitest coverage with cobertura report for GitLab - Add coverage regex for badge display Frontend: - Add @vitest/coverage-v8 dependency - Configure vitest coverage reporter (text, cobertura, html)
This commit is contained in:
@@ -18,23 +18,62 @@ hadolint:
|
||||
# Run Python backend tests
|
||||
python_tests:
|
||||
stage: test
|
||||
needs: [] # Run in parallel with build
|
||||
image: deps.global.bsf.tools/docker/python:3.12-slim
|
||||
timeout: 15m
|
||||
variables:
|
||||
PIP_CACHE_DIR: "$CI_PROJECT_DIR/.pip-cache"
|
||||
cache:
|
||||
key: pip-$CI_COMMIT_REF_SLUG
|
||||
paths:
|
||||
- .pip-cache/
|
||||
policy: pull-push
|
||||
before_script:
|
||||
- pip install -r backend/requirements.txt
|
||||
- pip install pytest pytest-asyncio httpx
|
||||
- pip install pytest pytest-asyncio pytest-cov httpx
|
||||
script:
|
||||
- cd backend
|
||||
- python -m pytest -v
|
||||
- python -m pytest -v --cov=app --cov-report=term --cov-report=xml:coverage.xml --cov-report=html:coverage_html --junitxml=pytest-report.xml
|
||||
artifacts:
|
||||
when: always
|
||||
expire_in: 1 week
|
||||
paths:
|
||||
- backend/coverage.xml
|
||||
- backend/coverage_html/
|
||||
- backend/pytest-report.xml
|
||||
reports:
|
||||
junit: backend/pytest-report.xml
|
||||
coverage_report:
|
||||
coverage_format: cobertura
|
||||
path: backend/coverage.xml
|
||||
coverage: '/TOTAL.*\s+(\d+%)/'
|
||||
|
||||
# Run frontend tests
|
||||
frontend_tests:
|
||||
stage: test
|
||||
needs: [] # Run in parallel with build
|
||||
image: deps.global.bsf.tools/docker/node:20-alpine
|
||||
timeout: 15m
|
||||
cache:
|
||||
key: npm-$CI_COMMIT_REF_SLUG
|
||||
paths:
|
||||
- frontend/node_modules/
|
||||
policy: pull-push
|
||||
before_script:
|
||||
- cd frontend
|
||||
- npm ci
|
||||
script:
|
||||
- npm run test -- --run
|
||||
- npm run test -- --run --reporter=verbose --coverage
|
||||
artifacts:
|
||||
when: always
|
||||
expire_in: 1 week
|
||||
paths:
|
||||
- frontend/coverage/
|
||||
reports:
|
||||
coverage_report:
|
||||
coverage_format: cobertura
|
||||
path: frontend/coverage/cobertura-coverage.xml
|
||||
coverage: '/All files[^|]*\|[^|]*\s+([\d\.]+)/'
|
||||
rules:
|
||||
- exists:
|
||||
- frontend/package.json
|
||||
|
||||
Reference in New Issue
Block a user