テストカバレッジの可視化

GitLab 12.9で導入されました

GitLabCI/CDの助けを借りて、お気に入りのテストツールやカバレッジ分析ツールのテストカバレッジ情報を収集し、マージリクエスト(MR)のファイル差分ビュー内でこの情報を可視化することができます。 これにより、MRがマージされる前に、どの行がテストでカバーされ、どの行がまだカバレッジを必要としているかを確認することができます。

Test Coverage Visualization Diff View

テストカバレッジの可視化の仕組み

カバレッジ情報の収集はGitLab CI/CDのアーティファクトレポート機能を使って行います。 ワイルドカードパスも含め、収集するカバレッジレポートを1つ以上指定することができます。 GitLabはすべてのファイルのカバレッジ情報を取得し、それを結合します。

カバレッジ分析が機能するためには、適切にフォーマットされたCobertura XMLレポートをartifacts:reports:coberturaに提供する必要があります。このフォーマットはもともと Java 用に開発されたものですが、他の言語用のカバレッジ分析フレームワークの多くには、このフォーマットをサポートするプラグインがあります:

例えば、他のカバレッジ分析フレームワークは、このフォーマットをすぐにサポートしています:

一度設定すると、カバレッジレポートを収集するパイプラインをトリガーするマージリクエストを作成した場合、カバレッジは差分ビューに表示されます。 これには、パイプラインのどのステージのどのジョブのレポートも含まれます。 カバレッジは各行に表示されます:

  • covered (緑): テストで少なくとも一度チェックされた行
  • no test coverage (オレンジ): 読み込まれたが実行されなかった行
  • カバレッジ情報なし:計測不能またはロードされていないライン

カバレッジバーにカーソルを合わせると、その行がテストでチェックされた回数などの詳細情報が表示されます。

テストカバレッジの設定例

次のgitlab-ci.yml の例では、MochaJavaScript テストとNYCカバレッジツーリングを使ってカバレッジのアーティファクトを生成しています:

test:
  script:
    - npm install
    - npx nyc --reporter cobertura mocha
  artifacts:
    reports:
      cobertura: coverage/cobertura-coverage.xml

機能を有効にする

この機能は、:coverage_report_view 機能フラグがデフォルトで無効になっています。この機能は、非常に大きなデータセットに対するパフォーマンスの問題があるため無効になっています。パフォーマンスの問題が解決されると、この機能はデフォルトで有効になります。

この機能を有効にするには、RailsコンソールにアクセスできるGitLab管理者に以下のコマンドを実行してもらいます:

Feature.enable(:coverage_report_view)