Skip to content

Magically generates code coverage reports from your dart projects

License

Notifications You must be signed in to change notification settings

whynotmake-it/dart-coverage-assistant

Use this GitHub action with your project
Add this Action to an existing workflow or create a new one
View on Marketplace

Repository files navigation

Dart Coverage Assistant 🎯🧪

A no-brainer tool to generate coverage reports for your Dart projects. Plug and play, both for your existing CI, or in a new project.

Empowered by whynotmake.it License: MIT Test coverage

Features

🔌 Plug and Play

  • No configuration needed, just add the action to your workflow
  • Automatically finds all projects in your repository
  • Doesn't run any tests by default, so it works with your existing CI
  • Can run tests for you (good if you have no CI yet)

💬 Keep an eye on your coverage

  • Post a sticky comment on every PR
  • Updates automatically if you make changes
  • Shows coverage for every project in your repository
  • Can show differences between the current and the base branch

👮‍♂️ Enforce rules

  • Choose between multiple rules:
    • Fail the action if total repo coverage drops below threshold
    • Fail the action if any single project coverage drops below threshold
    • Fail the action if total repo coverage decreases in PR
    • Fail the action if any single project coverage decreases in PR

🔰 Generate Badges

  • Show off your coverage in your README or on your website, without signing up to a third party service
  • Generate badges on push events
  • Can be configured to either push new badges to the current branch, or open a PR with them.

Get Started

Getting started with dart-coverage-assistant is easy. It works out of the box with your existing CI pipeline to give you the power of coverage reporting. If you don't have a CI yet, it can also run your tests for you.

For CI Aficionados

jobs:
  flutter-check:
    name: Build Check
    runs-on: ubuntu-latest
    timeout-minutes: 10
    steps:
      # ---
      # Your existing steps...
      # ---
      - name: 📊 Generate Coverage
        id: coverage-report
        uses: whynotmake-it/dart-coverage-assistant@v1
        with:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          lower_threshold: 50
          upper_threshold: 90
          generate_badges: pr

[!IMPORTANT] With this setup, this action will assume, that your projects have up-to-date coverage. This can be achieved by either running the tests like flutter test --coverage in the steps before this action, or always running them locally. Check the section below for more information about configuration options.

For CI Newbies

If you just want a drop-in CI pipeline, just copy the following into your .github/workflows/main.yml file. This will run your tests and generate a coverage report for you.

name: Continuous Integration

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

jobs:
  flutter-check:
    name: Build Check
    runs-on: ubuntu-latest
    timeout-minutes: 10
    steps:
      - name: 📚 Checkout
        uses: actions/checkout@v4

      - name: 🐦 Setup Flutter
        uses: subosito/flutter-action@v2
        with:
          sdk: 'stable'

      - name: 📊 Generate Coverage
        id: coverage-report
        uses: whynotmake-it/dart-coverage-assistant@v1
        with:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          testing_command: flutter test --coverage
          lower_threshold: 50
          upper_threshold: 90
          generate_badges: pr

Configuration

Below you will find a short list of all available configuration options, and what they do.

  • lower_threshold (optional, default: 0): The lower threshold for code coverage, anything below this is considered a failure.
  • upper_threshold (optional, default: 0): The threshold for the coverage to be considered 'good', anything below this is considered critical.
  • compare_against_base (optional, default: true): Whether to compare against the base when running in a PR.
  • enforce_threshold (optional, default: 'total'): Whether the action should fail if the coverage is below the lower threshold. Can be set to "none", "single", or "total".
  • enforce_forbidden_decrease (optional, default: 'none'): Whether the action should fail if the coverage decreases. Can be set to "none", "single", or "total".
  • generate_badges (optional, default: none): Whether to generate badges for the coverage on "push" workflow triggers. Can be set to "push" (push new badges, make sure your branch is not protected), "pr" (open a pull request with the changes, make sure you allow Actions to open PRs on your Repo), or "none" (no badge generation).

Honorable mentions

  • Big thanks to @JohannSchramm for his help and being an inspiration for this project.

About

Magically generates code coverage reports from your dart projects

Resources

License

Stars

Watchers

Forks

Packages

No packages published