GithubActionsでRailsのテストカバレッジをレポートする


はじめに

Railsでカバレッジ計測する場合に一番使われているgemは恐らくsimplecovではないかと思います。
simplecovでは、デフォルト設定の状態でhtmlのレポートファイルを生成してくれて大変見やすいのですが、コードレビューの度に目視でチェックというのはなかなか出来ないですよね。
テストカバレッジを見やすく手段の一つとして、Code Climate等のSaaSを利用するという方法もありますが、ユーザー数やリポジトリ数に比例して費用が大きくなっていきます。

そこで今回は、そこまで詳細なレポートは不要だけどコードレビュー時に全体のテストカバレッジを分かりやすく表示したいというケースで有用なアクションを作ったので紹介します。

設定方法

name: Tests
on:
  pull_request:

jobs:
  build:
    steps:
      # テストの事前準備色々...

      - name: Test
        run: bundle exec rspec

      - name: Simplecov Report
        uses: aki77/simplecov-report-action@v1
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          # 以下はデフォルト設定
          # resultPath: coverage/.last_run.json
          # failedThreshold: 90

      # テストカバレッジの詳細を確認したい時の為
      - name: Archive coverage artifacts
        uses: actions/upload-artifact@v2
        with:
          name: coverage
          path: coverage
        if: always()

動作解説

上記の設定をすることでpull_requestイベント毎にテストカバレッジがコメント欄にレポートされるようになります。

細かい考慮点としては以下があります。

  • 同一PR内でテストカバレッジに変化がない場合は何もしない
  • 同一PR内でテストカバレッジに変化があった場合は以前のコメントを削除して新しくコメントする
  • テストカバレッジが設定した閾値(failedThreshold)を下回った場合には失敗する

Marketplace

Simplecov Report · Actions · GitHub Marketplace · GitHub

良かったら使ってみてください。