name: Integration Testing on: workflow_dispatch: push: branches: - "main" paths: - ".github/workflows/integration-test.yml" # this file - "src/services/ldap-directory.service*" # we only have integration for LDAP testing at the moment - "./openldap*" # any change to test fixtures - "./docker-compose.yml" # any change to Docker configuration pull_request: paths: - ".github/workflows/integration-test.yml" # this file - "src/services/ldap-directory.service*" # we only have integration for LDAP testing at the moment - "./openldap*" # any change to test fixtures - "./docker-compose.yml" # any change to Docker configuration jobs: check-test-secrets: name: Check for test secrets runs-on: ubuntu-22.04 outputs: available: ${{ steps.check-test-secrets.outputs.available }} permissions: contents: read steps: - name: Check id: check-test-secrets run: | if [ "${{ secrets.CODECOV_TOKEN }}" != '' ]; then echo "available=true" >> $GITHUB_OUTPUT; else echo "available=false" >> $GITHUB_OUTPUT; fi testing: name: Run tests if: ${{ startsWith(github.head_ref, 'version_bump_') == false }} runs-on: ubuntu-22.04 needs: check-test-secrets permissions: checks: write contents: read pull-requests: write steps: - name: Check out repo uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - name: Get Node version id: retrieve-node-version run: | NODE_NVMRC=$(cat .nvmrc) NODE_VERSION=${NODE_NVMRC/v/''} echo "node_version=$NODE_VERSION" >> $GITHUB_OUTPUT - name: Set up Node uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: cache: 'npm' cache-dependency-path: '**/package-lock.json' node-version: ${{ steps.retrieve-node-version.outputs.node_version }} - name: Install Node dependencies run: npm ci - name: Install mkcert run: | sudo apt-get update sudo apt-get -y install mkcert - name: Setup integration tests run: npm run test:integration:setup - name: Run integration tests run: npm run test:integration --coverage - name: Report test results uses: dorny/test-reporter@31a54ee7ebcacc03a09ea97a7e5465a47b84aea5 # v1.9.1 if: ${{ needs.check-test-secrets.outputs.available == 'true' && !cancelled() }} with: name: Test Results path: "junit.xml" reporter: jest-junit fail-on-error: true - name: Upload coverage to codecov.io uses: codecov/codecov-action@e28ff129e5465c2c0dcc6f003fc735cb6ae0c673 # v4.5.0 if: ${{ needs.check-test-secrets.outputs.available == 'true' }} env: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} - name: Upload results to codecov.io uses: codecov/test-results-action@1b5b448b98e58ba90d1a1a1d9fcb72ca2263be46 # v1.0.0 if: ${{ needs.check-test-secrets.outputs.available == 'true' }} env: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}