{"id":41955747,"url":"https://github.com/pre-history/lcov-summary-action","last_synced_at":"2026-01-25T22:32:16.022Z","repository":{"id":225179259,"uuid":"750049443","full_name":"pre-history/lcov-summary-action","owner":"pre-history","description":"📊 GitHub Action for LCOV coverage reports with detailed summaries, PR comments, and visual feedback","archived":false,"fork":false,"pushed_at":"2025-12-22T10:15:53.000Z","size":1673,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-12-23T21:41:20.529Z","etag":null,"topics":["automation","ci-cd","code-analysis","code-coverage","code-quality","continuous-integration","coverage-reporter","developer-tools","devops","github-action","github-actions","lcov","mermaid","nodejs","pull-request","quality-assurance","test-automation","test-coverage","testing","typescript"],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pre-history.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-01-29T22:15:04.000Z","updated_at":"2025-12-22T10:19:13.000Z","dependencies_parsed_at":"2024-07-15T23:39:52.732Z","dependency_job_id":null,"html_url":"https://github.com/pre-history/lcov-summary-action","commit_stats":null,"previous_names":["pre-history/lcov-summary-action"],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/pre-history/lcov-summary-action","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pre-history%2Flcov-summary-action","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pre-history%2Flcov-summary-action/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pre-history%2Flcov-summary-action/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pre-history%2Flcov-summary-action/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pre-history","download_url":"https://codeload.github.com/pre-history/lcov-summary-action/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pre-history%2Flcov-summary-action/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28760646,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-25T20:56:06.009Z","status":"ssl_error","status_checked_at":"2026-01-25T20:54:48.203Z","response_time":113,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automation","ci-cd","code-analysis","code-coverage","code-quality","continuous-integration","coverage-reporter","developer-tools","devops","github-action","github-actions","lcov","mermaid","nodejs","pull-request","quality-assurance","test-automation","test-coverage","testing","typescript"],"created_at":"2026-01-25T22:32:15.300Z","updated_at":"2026-01-25T22:32:16.013Z","avatar_url":"https://github.com/pre-history.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# LCOV Summary Action\n\n[![CI](https://github.com/pre-history/lcov-summary-action/workflows/CI/badge.svg)](https://github.com/pre-history/lcov-summary-action/actions/workflows/ci.yml)\n[![Test Coverage](https://github.com/pre-history/lcov-summary-action/workflows/Test%20Coverage%20with%20LCovMan/badge.svg)](https://github.com/pre-history/lcov-summary-action/actions/workflows/test-coverage.yml)\n![Coverage](https://img.shields.io/badge/coverage-0%25-red?style=for-the-badge)\n\nThis repository contains the code for the LCOV Summary Action, a GitHub Action that provides a summary of Line Coverage (LCOV) reports in your GitHub Pull Requests.\n\n```mermaid\n%%{init: {'theme': 'base', 'themeVariables': {'darkMode': true, 'primaryColor': '#4CAF50', 'secondaryColor': '#FF5733'}}}%%\npie showData\ntitle Project Coverage\n\"Covered\" : 80\n\"Not covered\" : 20\n```\n\n## Features\n\n- Summarizes LCOV reports in GitHub Pull Requests.\n- Provides a clear and concise overview of code coverage changes.\n- Helps maintain high test coverage by making coverage changes visible in each PR.\n- 147 unique randomized feedback messages that progress from roasting low coverage to celebrating high coverage.\n\n## Usage\n\nTo use the LCOV Summary Action in your project, add the following to your GitHub Actions workflow file:\n\n```yaml\n- name: LCOV Summary\n  uses: pre-history/lcov-summary-action@v0.6.0\n  with:\n    lcov-file: './coverage/lcov.info'\n    comment-on-pr: true\n    show-coverage-feedback: true\n```\n\n## Inputs\n\n| Input Name                  | Description                                                                   | Required | Default Value          |\n| --------------------------- | ----------------------------------------------------------------------------- | -------- | ---------------------- |\n| `github-token`              | GitHub token                                                                  | NO       | `${{ github.token }}`  |\n| `title`                     | Summary title                                                                 | No       | -                      |\n| `lcov-file`                 | Path to LCOV file                                                             | No       | `./coverage/lcov.info` |\n| `comment-on-pr`             | Add diagram comment to the current PR [Need Permission](#permissions)         | No       | `false`                |\n| `working-directory`         | Set working directory if project is not in root folder                        | No       | `./`                   |\n| `pie-covered-color`         | Color for pie chart covered part                                              | No       | `#4CAF50`              |\n| `pie-not-covered-color`     | Color for pie chart not covered part                                          | No       | `#FF5733`              |\n| `coverage-threshold`        | Minimum coverage percentage required (action fails if below)                  | No       | `0` (no enforcement)   |\n| `fail-on-coverage-decrease` | Fail if coverage decreases compared to base branch                            | No       | `false`                |\n| `show-coverage-feedback`    | Show randomized coverage feedback messages (147 unique roasts/encouragements) | No       | `false`                |\n\n## Coverage Philosophy\n\n**LCovMan is designed to inform, not enforce.** By default, the action provides visibility into coverage without blocking your development workflow:\n\n- **No coverage thresholds** by default (`coverage-threshold: 0`)\n- **No failure on coverage decrease** by default (`fail-on-coverage-decrease: false`)\n- **Focus on transparency** - Shows coverage changes clearly in PR comments\n- **Optional enforcement** - You can enable thresholds if your team prefers strict enforcement\n\n### Examples\n\n**Informational only (default):**\n\n```yaml\n- uses: pre-history/lcov-summary-action@latest\n  with:\n    comment-on-pr: true\n    # Uses defaults: no threshold enforcement\n```\n\n**With enforcement:**\n\n```yaml\n- uses: pre-history/lcov-summary-action@latest\n  with:\n    comment-on-pr: true\n    coverage-threshold: '80' # Require 80% coverage\n    fail-on-coverage-decrease: true # Block PRs that decrease coverage\n```\n\n## Permissions\n\nThe `permissions` section in the GitHub Actions workflow file is used to control the access level of the GitHub token (`GITHUB_TOKEN`) for different scopes. When the `comment-on-pr` input is set to `true` in the LCOV Summary Action, the action will attempt to post a comment on the current pull request with the coverage summary.\n\nIn order to do this, the action needs specific permissions:\n\n- `contents: write` allows the action to create, update, and delete repository contents, which is necessary for creating the comment with the coverage summary.\n- `pull-requests: write` allows the action to manage pull requests in the repository. This includes creating review comments, which is what the action does when `comment-on-pr` is set to `true`.\n\nTherefore, if you want to use the `comment-on-pr` feature of the LCOV Summary Action, you need to include the following in your workflow file:\n\n```yaml\npermissions:\n  contents: write\n  pull-requests: write\n```\n\nThis ensures that the action has the necessary permissions to post the coverage summary as a comment on the pull request.\n\n## Coverage Feedback Messages\n\nWhen `show-coverage-feedback` is enabled, the action displays randomized feedback messages that adapt to your coverage level:\n\n### Coverage Ranges \u0026 Message Examples\n\n- **0% Coverage** (21 messages): Savage roasts like \"💀 Your code coverage is deader than a doornail!\" and \"🔮 No tests, only vibes.\"\n- **1-19% Coverage** (21 messages): Critical but motivating feedback such as \"🦗 Test results came back and it was just crickets.\"\n- **20-39% Coverage** (21 messages): Encouraging progress with messages like \"🌱 A seedling of coverage. Needs more sunshine and effort.\"\n- **40-59% Coverage** (21 messages): Balanced feedback including \"🌗 Half moon coverage. We want full moon energy.\"\n- **60-79% Coverage** (21 messages): Positive reinforcement like \"🎨 Your test suite is turning into art.\"\n- **80-94% Coverage** (21 messages): High praise such as \"🎤 Your test suite just dropped a mic.\"\n- **95-100% Coverage** (21 messages): Pure celebration including \"🧼 Code squeaky clean. Mr. Clean is impressed.\"\n\nEach run randomly selects one message from the appropriate range, ensuring fresh and entertaining feedback every time!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpre-history%2Flcov-summary-action","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpre-history%2Flcov-summary-action","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpre-history%2Flcov-summary-action/lists"}