Bahmni Quality Gates

 

Every gate is responsible to perform quality checks (cohesive) and ensure the code promotion is controlled based on the quality results.

Gate 1 (Hell)

  • Fastest running tests with majority of coverage

  • Scope: Unit, Integration, Linting, Static code analysis (security, codesytles etc)

What are different Integration test covered?

  • API Contract test as http client (validating 2xx, 3xx, .. responses)

  • Persistence (embedded / in-memory DB)
    Most of this would be in OPENMRS

  • React Components user flows (react-testing-library)

What is scope of security testing?

  • Vulnerability Assessment

  • Code analysis

  • tools: npm audit, owasp dependency checker, sonarqube, talisman etc

Gate 2 (Smoke)

  • Automatically triggered once the Gate 1 is 🟢 and the code changes are deployed on ci integrated environment (dev)

  • Scope: End-To-End (E2E) Functional test covering critical journeys

  • Guidelines

    • Should provided feedback within 10-15 mins

    • Is contextual i.e. cherry-picks E2E test based on the changes e.g. change in lab-lite frontend should run critical test only for lab-lite flows

Gate 3 (Security)

  • Automatically triggered once the Gate 2 is 🟢

  • Scope: Security testing (Penetration and Runtime testing) running on integrated ci environment (dev)

    • OWASP ZAP

  • Guidelines

    • Should provided feedback within 10-15 mins

    • Is contextual i.e. cherry-picks tests based on the changes

Gate 4 (E2E Functional)

  • Manually triggered - Allow manual trigger only if last Gate 3 is 🟢

  • Scope:

    • Post successful deployment to qa environment

    • ALL Automated E2E Functional Test (headless browser, tablet view-port)

    • Manual Tests

      • Exploratory

      • Story level

  • Guidelines

    • Should provided feedback within 30-40 mins

    • Manual testing is independent of automated tests

Gate 5 (Performance)

  • Manually triggered - Allow manual trigger only if last Gate 4 is 🟢

  • Scope:

    • Post successful deployment on stage/preprod environment

    • Performance Tests (Load, Endurance etc)

  • Guidelines

    •  

The Bahmni documentation is licensed under Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)