.pytest: stage: test image: python:3.11-alpine3.19 needs: [] before_script: - pip install -r requirements.txt - pip install -r requirements_test.txt - cd app artifacts: expire_in: "30 days" when: always reports: junit: - artifacts/*.JUnit.xml paths: - artifacts/ rules: - if: # Occur on merge $CI_COMMIT_BRANCH && ( $CI_PIPELINE_SOURCE == "push" || $CI_PIPELINE_SOURCE == "web" ) when: always - when: never Unit: extends: .pytest script: - pytest --cov --cov-report term --cov-report xml:../artifacts/coverage.xml --cov-report html:../artifacts/coverage/ --junit-xml=../artifacts/unit.JUnit.xml **/tests/unit coverage: '/(?i)total.*? (100(?:\.0+)?\%|[1-9]?\d(?:\.\d+)?\%)$/' artifacts: expire_in: "30 days" when: always reports: coverage_report: coverage_format: cobertura path: artifacts/coverage.xml junit: - artifacts/*.JUnit.xml paths: - artifacts/ environment: name: Unit Test Coverage Report url: https://nofusscomputing.gitlab.io/-/projects/centurion_erp/-/jobs/${CI_JOB_ID}/artifacts/artifacts/coverage/index.html UI: extends: .pytest script: - apk update - apk add chromium-chromedriver - pytest --junit-xml=../artifacts/ui.JUnit.xml **/tests/ui artifacts: expire_in: "30 days" when: always reports: junit: - artifacts/*.JUnit.xml paths: - artifacts/ rules: - if: # Occur on merge $CI_COMMIT_BRANCH && ( $CI_PIPELINE_SOURCE == "push" || $CI_PIPELINE_SOURCE == "web" ) allow_failure: true when: always - when: never