diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 08a813b098..932fdcdbee 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -61,3 +61,10 @@ jobs: uses: ./.github/workflows/pact-verify.yml with: ref: ${{ github.ref }} + + test-coverage: + name: Check test coverage + needs: + - test-ruby + - pact-tests + uses: ./.github/workflows/test-coverage.yml diff --git a/.github/workflows/minitest.yml b/.github/workflows/minitest.yml index 10e4788fca..fc877d9f66 100644 --- a/.github/workflows/minitest.yml +++ b/.github/workflows/minitest.yml @@ -47,3 +47,10 @@ jobs: RAILS_ENV: test GOVUK_CONTENT_SCHEMAS_PATH: vendor/publishing-api/content_schemas run: bundle exec rake test + + - name: Store test coverage percentage + uses: actions/upload-artifact@v4 + with: + name: minitest-test-coverage + path: coverage/percentage.txt + retention-days: 1 diff --git a/.github/workflows/pact-verify.yml b/.github/workflows/pact-verify.yml index cc36d0c5a6..f941855c82 100644 --- a/.github/workflows/pact-verify.yml +++ b/.github/workflows/pact-verify.yml @@ -64,3 +64,10 @@ jobs: - if: inputs.pact_artifact != '' run: bundle exec rake pact:verify:at[tmp/pacts/${{ inputs.pact_artifact_file_to_verify }}] + + - name: Store test coverage percentage + uses: actions/upload-artifact@v4 + with: + name: pact-test-coverage + path: coverage/percentage.txt + retention-days: 1 diff --git a/.github/workflows/store-test-coverage-percentage.yml b/.github/workflows/store-test-coverage-percentage.yml new file mode 100644 index 0000000000..e69de29bb2 diff --git a/.github/workflows/test-coverage.yml b/.github/workflows/test-coverage.yml new file mode 100644 index 0000000000..4df68366cd --- /dev/null +++ b/.github/workflows/test-coverage.yml @@ -0,0 +1,22 @@ +name: Check test coverage + +on: + workflow_call: + +jobs: + check_ruby_test_coverage: + name: Check Ruby test coverage + runs-on: ubuntu-latest + steps: + - name: Retrieve minitest test coverage + uses: actions/download-artifact@v4 + with: + name: minitest-test-coverage + path: minitest-test-coverage + - name: Retrieve pact test coverage + uses: actions/download-artifact@v4 + with: + name: pact-test-coverage + path: pact-test-coverage + - name: Check Ruby test coverage + run: ls -R; cat minitest-test-coverage/percentage.txt; cat pact-test-coverage/percentage.txt diff --git a/test/service_consumers/pact_helper.rb b/test/service_consumers/pact_helper.rb index 1dee81c62b..f33c3d4f6a 100644 --- a/test/service_consumers/pact_helper.rb +++ b/test/service_consumers/pact_helper.rb @@ -1,3 +1,4 @@ +require_relative "../test_coverage.rb" require "pact/provider/rspec" require "webmock/rspec" require "gds_api/test_helpers/content_store" diff --git a/test/test_coverage.rb b/test/test_coverage.rb new file mode 100644 index 0000000000..b9212aaad3 --- /dev/null +++ b/test/test_coverage.rb @@ -0,0 +1,12 @@ +unless defined?(TEST_COVERAGE_ACTIVATED) + TEST_COVERAGE_ACTIVATED = true + require "simplecov" + SimpleCov.at_exit do + SimpleCov.result.format! + File.write( + Rails.root.join("coverage/percentage.txt"), + SimpleCov.result.coverage_statistics[:line].percent.to_s, + ) + end + SimpleCov.start "rails" +end diff --git a/test/test_helper.rb b/test/test_helper.rb index fb0ff388a2..480c4941c6 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -1,6 +1,4 @@ -require "simplecov" -SimpleCov.start "rails" - +require_relative "test_coverage" require "i18n/coverage" require "i18n/coverage/printers/file_printer" I18n::Coverage.config.printer = I18n::Coverage::Printers::FilePrinter