cityssm/node-green-button-parser

View on GitHub
.github/workflows/coverage.yml

Summary

Maintainability
Test Coverage
name: Coverage Testing

on: [workflow_dispatch, push, pull_request]

permissions: read-all

jobs:
  Coverage:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        node: [ 18, 20, 21 ]
    env:
      CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
      CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
      DEEPSOURCE_DSN: ${{ secrets.DEEPSOURCE_DSN }}
    name: Node ${{ matrix.node }}
    steps:
      - uses: actions/checkout@v3

      - name: Setup Node
        uses: actions/setup-node@v3
        with:
          node-version: ${{ matrix.node }}
          cache: 'npm'

      - name: Update NPM (Node 14)
        if: ${{ matrix.node == 14 }}
        run: npm install -g npm@7

      - name: Install Package
        run: |
          npm ci
          npm install -g mocha c8

      - name: Code Climate (Before)
        if: ${{ github.event_name != 'pull_request' && env.CC_TEST_REPORTER_ID != '' && matrix.node == 20 }}
        run: |
          curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./codeclimate-test-reporter
          chmod +x codeclimate-test-reporter
          ./codeclimate-test-reporter before-build
      
      - name: Run Coverage Testing
        run: c8 --reporter=lcov --reporter=text --reporter=text-summary mocha --timeout 60000 --slow -1 --exit

      - name: Code Climate (After)
        if: ${{ github.event_name != 'pull_request' && env.CC_TEST_REPORTER_ID != '' && matrix.node == 20 }}
        run: |
          ./codeclimate-test-reporter after-build -t lcov --exit-code $?

      - name: Codecov
        if: ${{ github.event_name != 'pull_request' && env.CODECOV_TOKEN != '' && matrix.node == 20 }}
        run: |
          curl -Os https://uploader.codecov.io/latest/linux/codecov
          chmod +x codecov
          ./codecov -t ${CODECOV_TOKEN}

      - name: DeepSource
        if: ${{ github.event_name != 'pull_request' && env.DEEPSOURCE_DSN != '' && matrix.node == 20 }}
        run: |
          # Install deepsource CLI
          curl https://deepsource.io/cli | sh
    
          # From the root directory, run the report coverage command
          ./bin/deepsource report --analyzer test-coverage --key javascript --value-file ./coverage/lcov.info