DFE-Digital/govuk-components

View on GitHub
.github/workflows/tests.yml

Summary

Maintainability
Test Coverage
name: Tests
on:
  push:
    branches:
      - main
  pull_request:
  merge_group:
jobs:
  rspec:
    strategy:
      fail-fast: false
      matrix:
        ruby: ['3.1.4', '3.2.2', '3.3.0']
        rails: ['7.0.8', '7.1.0']
    runs-on: ubuntu-20.04
    name: Testing with Ruby ${{ matrix.ruby }} and Rails ${{ matrix.rails }}
    steps:
      - uses: actions/checkout@v3

      - name: Set up Ruby
        uses: ruby/setup-ruby@v1
        with:
          ruby-version: ${{ matrix.ruby }}

      - name: Install gems
        env:
          RAILS_VERSION: ${{ matrix.rails }}
        run: |
          gem install bundler
          bundle install --jobs 4 --retry 3

      - name: Run RSpec
        env:
          SIMPLECOV: '0'
        run: make rspec

  quality-checks:
    runs-on: ubuntu-20.04
    name: Code quality, test coverage and documentation checks
    steps:
      - uses: actions/checkout@v3

      - name: Set up Ruby
        uses: ruby/setup-ruby@v1
        with:
          ruby-version: 3.1.4

      - name: Install gems
        run: |
          gem install bundler
          bundle install --jobs 4 --retry 3

      - name: Run Rubocop
        run: make ruby-lint

      - name: Download CodeClimate reporter
        env:
          CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
        run: |
          curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
          chmod +x ./cc-test-reporter
          ./cc-test-reporter before-build

      - name: Run RSpec
        env:
          CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
          SIMPLECOV: '1'
        run: make rspec

      - name: Report coverage to CodeClimate
        continue-on-error: true
        env:
          CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
          GIT_BRANCH: ${{ steps.extract_branch.outputs.branch }}
          GIT_COMMIT_SHA: ${{ github.sha }}
        run: ./cc-test-reporter after-build -t simplecov

      - name: Run Nanoc Check
        run: make nanoc-check-all

      - name: Run Guide Check
        run: make slim-lint
  permit-merge:
    name: Permit merge
    needs: [rspec, quality-checks]
    runs-on: ubuntu-latest
    steps:
      - run: "echo 'All checks passed ✅'"