/coverage-action

Github Action that generates a coverage summary using a Cobertura XML report

MIT LicenseMIT

SuperLinter Test

Code Coverage Report Action

Description

Action that converts a Cobertura XML report into a markdown report.

Action Type

Composite

Author

Insights Engineering

Inputs

  • token:

    Description: Github token to use to publish the check.

    Required: false

    Default: ${{ github.token }}

  • path:

    Description: Path to the Cobertura coverage XML report.

    Required: false

    Default: .

  • threshold:

    Description: The minimum allowed coverage percentage, as a real number.

    Required: false

    Default: 0

  • fail:

    Description: Fail the action when the minimum coverage was not met.

    Required: false

    Default: true

  • publish:

    Description: Publish the coverage report as an issue comment.

    Required: false

    Default: false

  • diff:

    Description: Create a diff of the coverage report.

    Required: false

    Default: false

  • diff-branch:

    Description: Branch to diff against.

    Required: false

    Default: main

  • diff-storage:

    Description: Branch where coverage reports are stored for diff purposes.

    Required: false

    Default: _xml_coverage_reports

  • storage-subdirectory:

    Description: Subdirectory in the diff-storage branch where the XML reports will be stored.

    Required: false

    Default: .

  • coverage-summary-title:

    Description: Title for the code coverage summary in the Pull Request comment.

    Required: false

    Default: Code Coverage Summary

  • coverage-reduction-failure:

    Description: Fail the action if code coverage decreased compared to the diff-branch is decreased.

    Required: false

    Default: false

  • new-uncovered-statements-failure:

    Description: Fail the action if any new uncovered statements are introduced compared to the diff-branch.

    Required: false

    Default: false

  • pycobertura-exception-failure:

    Description: Fail the action in case of a Pycobertura exception.

    Required: false

    Default: true

  • togglable-report:

    Description: Make the code coverage report togglable.

    Required: false

    Default: false

Outputs

  • summary:

    Description: A summary of coverage report

How it works

This tool makes use of the PyCobertura CLI tool to produce the summary outputs. The action also supports diffs against a given branch and makes use of a remote branch to store reports, which can be specified via this action.

Usage

Example usage:

---
name: Code Coverage

on:
  # NOTE: Both, the 'pull_request' and the 'push'
  # events are REQUIRED to take full advantage
  # of the features of this action.
  pull_request:
    branches:
      - main
  push:
    branches:
      - main

jobs:
  coverage:
    name: Calculate code coverage
    runs-on: ubuntu-latest

    steps:
      - name: Checkout Code
        uses: actions/checkout@v3

      - name: Your logic to generate the Cobertura XML goes here
        run: echo "Your logic to generate the Cobertura XML goes here"

      - name: Produce the coverage report
        uses: insightsengineering/coverage-action@v2
        with:
          # Path to the Cobertura XML report.
          path: ./cobertura.xml
          # Minimum total coverage, if you want to the
          # workflow to enforce it as a standard.
          # This has no effect if the `fail` arg is set to `false`.
          threshold: 80.123
          # Fail the workflow if the minimum code coverage
          # reuqirements are not satisfied.
          fail: true
          # Publish the rendered output as a PR comment
          publish: true
          # Create a coverage diff report.
          diff: true
          # Branch to diff against.
          # Compare the current coverage to the coverage
          # determined on this branch.
          diff-branch: main
          # This is where the coverage reports for the
          # `diff-branch` are stored.
          # Branch is created if it doesn't already exist'.
          diff-storage: _xml_coverage_reports
          # A custom title that can be added to the code
          # coverage summary in the PR comment.
          coverage-summary-title: "Code Coverage Summary"

An example of the output of the action can be seen below:

Action output