Skip to content

feat: add coverage.py JSON report support (pytest-json-coverage-path)#286

Merged
MishaKav merged 2 commits into
mainfrom
feat/json-coverage-report
Jul 5, 2026
Merged

feat: add coverage.py JSON report support (pytest-json-coverage-path)#286
MishaKav merged 2 commits into
mainfrom
feat/json-coverage-report

Conversation

@MishaKav

@MishaKav MishaKav commented Jul 5, 2026

Copy link
Copy Markdown
Owner

User description

Closes #282.

Adds a third coverage input format alongside TXT and XML: the JSON report from coverage json, via a new pytest-json-coverage-path input.

  • New src/parseJson.ts mirrors the XML parser and reuses the existing toHtml/DataFromXml rendering pipeline (badge, folder-grouped table, colors).
  • Supports branch coverage, missing-line ranges, and partial-branch arrows (line->target, line->exit). The Missing column matches coverage report -m (an arc whose destination is an already-missing line is omitted).
  • Uses coverage.py's percent_covered; reuses formatCoverPercent with a finite-percentage guard.
  • Honors xml-skip-covered; supports monorepo multiple-files (.json detection).
  • Precedence: JSON > XML > TXT. TXT/XML behavior unchanged.
  • Tests + fixtures added; README + action.yml documented; dist rebuilt.

Validated end-to-end in api-testing-example: the full matrix (all existing TXT/XML/feature cases + new JSON cases) passes with no regressions, and comments update in place on re-run. Supersedes the auto-generated #283.

🤖 Generated with Claude Code


Summary by cubic

Adds first-class support for coverage.py JSON reports via a new pytest-json-coverage-path input, with JSON now preferred over XML/TXT. Released as v1.10.0; output (HTML, badges, colors) matches existing reports.

  • New Features

    • Added pytest-json-coverage-path for coverage json; precedence is JSON > XML > TXT.
    • Reuses existing HTML pipeline; supports branch details and missing arcs (line->target, line->exit), omitting arcs to already-missing lines.
    • Honors xml-skip-covered; monorepo multiple-files now detects .json.
    • Exported formatCoverPercent; JSON uses coverage.py percent_covered with a finite guard.
    • Docs (README.md, action.yml), tests/fixtures, dist, and CHANGELOG.md updated; version bumped to 1.10.0.
  • Migration

    • Generate JSON with coverage json -o coverage.json, then set pytest-json-coverage-path.
    • If multiple inputs are provided, JSON takes precedence; TXT/XML behavior is unchanged.

Written for commit eeb248b. Summary will update on new commits.

Review in cubic


CodeAnt-AI Description

Add support for coverage.json reports

What Changed

  • You can now use a JSON coverage report from coverage json as the coverage source
  • JSON reports take priority over XML and text reports when more than one input is provided
  • Monorepo reports now recognize .json files and use the same comment and badge output as the existing coverage formats
  • The new JSON report format is documented in the action inputs and README, with tests added for statement-only and branch coverage cases

Impact

✅ Use coverage.json without converting to XML
✅ Fewer setup steps for Python coverage comments
✅ Consistent coverage comments in monorepos

💡 Usage Guide

Checking Your Pull Request

Every time you make a pull request, our system automatically looks through it. We check for security issues, mistakes in how you're setting up your infrastructure, and common code problems. We do this to make sure your changes are solid and won't cause any trouble later.

Talking to CodeAnt AI

Got a question or need a hand with something in your pull request? You can easily get in touch with CodeAnt AI right here. Just type the following in a comment on your pull request, and replace "Your question here" with whatever you want to ask:

@codeant-ai ask: Your question here

This lets you have a chat with CodeAnt AI about your pull request, making it easier to understand and improve your code.

Example

@codeant-ai ask: Can you suggest a safer alternative to storing this secret?

Preserve Org Learnings with CodeAnt

You can record team preferences so CodeAnt AI applies them in future reviews. Reply directly to the specific CodeAnt AI suggestion (in the same thread) and replace "Your feedback here" with your input:

@codeant-ai: Your feedback here

This helps CodeAnt AI learn and adapt to your team's coding style and standards.

Example

@codeant-ai: Do not flag unused imports.

Retrigger review

Ask CodeAnt AI to review the PR again, by typing:

@codeant-ai: review

Check Your Repository Health

To analyze the health of your code repository, visit our dashboard at https://app.codeant.ai. This tool helps you identify potential issues and areas for improvement in your codebase, ensuring your repository maintains high standards of code health.

Adds a third coverage input format alongside TXT and XML: the JSON report
from `coverage json`. New src/parseJson.ts mirrors the XML parser, reusing
the existing toHtml/DataFromXml rendering pipeline, and supports branch
coverage, missing-line ranges, and partial-branch arrows (line->target,
line->exit). The missing column matches `coverage report -m` (a branch arc
whose destination is an already-missing line is omitted).

- New input `pytest-json-coverage-path`; parser precedence JSON > XML > TXT
- Wired into index.ts, cli.ts, and multiFiles.ts (monorepo, .json detection)
- Reuses formatCoverPercent from parseXml; finite-percentage guard
- Tests + fixtures (data/coverage_1.json, data/coverage_2.json); README + action.yml docs

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings July 5, 2026 09:46
@codeant-ai

codeant-ai Bot commented Jul 5, 2026

Copy link
Copy Markdown

CodeAnt AI is reviewing your PR.

@codeant-ai

codeant-ai Bot commented Jul 5, 2026

Copy link
Copy Markdown

Thanks for using CodeAnt! 🎉

We're free for open-source projects. if you're enjoying it, help us grow by sharing.

Share on X ·
Reddit ·
LinkedIn

@github-actions

github-actions Bot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor

Coverage

Coverage Report
FileStmtsMissCoverMissing
functions/example_completed
   example_completed.py641970%33, 39–45, 48–51, 55–58, 65–70, 91–92
functions/example_manager
   example_manager.py441175%31–33, 49–55, 67–69
   example_static.py40295%60–61
functions/my_exampels
   example.py20200%1–31
functions/resources
   resources.py26260%1–37
TOTAL105573930% 

Tests Skipped Failures Errors Time
109 2 💤 1 ❌ 0 🔥 0.583s ⏱️

@codeant-ai codeant-ai Bot added the size:XL This PR changes 500-999 lines, ignoring generated files label Jul 5, 2026
@qodo-free-for-open-source-projects

Copy link
Copy Markdown

PR Summary by Qodo

Add coverage.py JSON parsing via pytest-json-coverage-path input

✨ Enhancement 🧪 Tests 📝 Documentation ⚙️ Configuration changes 🕐 40+ Minutes

Grey Divider

AI Description

• Add coverage.py JSON parsing via new pytest-json-coverage-path input.
• Select parser by precedence JSON > XML > TXT, including monorepo multiple-files.
• Add fixtures/tests and document JSON usage; rebuild bundled dist.
Diagram

graph TD
  A["GitHub Action runtime"] --> B["Select coverage parser"]
  B --> C["parseJson.ts"] --> F["toHtml() renderer"] --> G["Comment + outputs"]
  B --> D["parseXml.ts"] --> F --> G
  B --> E["parse.ts (TXT)"] --> F --> G
Loading
High-Level Assessment

The following are alternative approaches to this PR:

1. Centralize parser selection into a shared helper
  • ➕ Removes repeated JSON/XML/TXT precedence logic from index.ts, cli.ts, and multiFiles.ts
  • ➕ Makes future formats (e.g., lcov) a single-point change
  • ➖ Small refactor churn across files with limited user-visible benefit right now
2. Model parsers as a registry keyed by input type/extension
  • ➕ Cleaner extensibility (map of {kind -> parser}) and simpler multiple-files dispatch
  • ➕ Enables explicit error messaging when multiple inputs are provided
  • ➖ Slightly more abstraction than needed for three formats
  • ➖ Would require re-touching existing TXT/XML code paths

Recommendation: The current approach (dedicated parseJson.ts that outputs the existing XmlCoverageReport shape and reuses toHtml/DataFromXml) is a good fit: it minimizes UI/rendering changes and keeps TXT/XML behavior stable. Consider a follow-up refactor to centralize precedence/dispatch logic to reduce duplication, but it’s not required to safely ship JSON support.

Files changed (17) +877 / -52

Enhancement (5) +276 / -26
cli.tsAdd CLI support for JSON coverage parsing and precedence +11/-3

Add CLI support for JSON coverage parsing and precedence

• Adds an example 'covJsonFile' option and updates the CLI logic to choose JSON > XML > TXT when generating a report locally.

src/cli.ts

index.tsAdd action input and route coverage parsing through JSON > XML > TXT +28/-9

Add action input and route coverage parsing through JSON > XML > TXT

• Reads the new 'pytest-json-coverage-path' input, stores it in Options, and updates report generation (including the hideReport fallback path) to prefer JSON parsing when provided.

src/index.ts

multiFiles.tsSupport .json coverage files in multiple-files mode +31/-14

Support .json coverage files in multiple-files mode

• Extends per-line parsing to detect '.json' coverage paths, populates 'covJsonFile', and dispatches to the JSON parser when applicable. Adjusts output/warnings handling to treat JSON like XML (coverage object rather than TXT string warnings).

src/multiFiles.ts

parseJson.tsImplement coverage.py JSON parser that reuses existing HTML rendering pipeline +205/-0

Implement coverage.py JSON parser that reuses existing HTML rendering pipeline

• Adds a new parser for 'coverage json' output that maps per-file summaries and totals into the existing CoverageLine/TotalLine structures. Implements Missing-column formatting (collapsed line ranges, exit arcs, omission of arcs targeting already-missing lines) and reuses 'formatCoverPercent' for coverage rounding with non-finite guards.

src/parseJson.ts

types.d.tsExtend Options with covJsonFile +1/-0

Extend Options with covJsonFile

• Adds the 'covJsonFile' field to the Options interface so the new action input is available across the codebase.

src/types.d.ts

Refactor (1) +1 / -1
parseXml.tsExport formatCoverPercent for reuse by JSON parser +1/-1

Export formatCoverPercent for reuse by JSON parser

• Exports 'formatCoverPercent' so parseJson.ts can share the same rounding behavior as XML (and match coverage.py’s display semantics). No change to XML parsing behavior beyond using the exported symbol internally.

src/parseXml.ts

Tests (7) +314 / -0
junitXml.test.tsExtend Options fixtures with covJsonFile +1/-0

Extend Options fixtures with covJsonFile

• Updates the shared base Options object to include 'covJsonFile' so tests compile against the expanded Options interface.

tests/junitXml.test.ts

multiFiles.test.tsExtend Options fixtures with covJsonFile +1/-0

Extend Options fixtures with covJsonFile

• Adds 'covJsonFile' to test Options setup to reflect the new action input and type definition.

tests/multiFiles.test.ts

parse.test.tsExtend Options fixtures with covJsonFile +1/-0

Extend Options fixtures with covJsonFile

• Adds 'covJsonFile' to the base Options used by TXT parser tests to keep type compatibility.

tests/parse.test.ts

parseJson.test.tsAdd unit tests for coverage.py JSON parsing and edge cases +190/-0

Add unit tests for coverage.py JSON parsing and edge cases

• Introduces tests covering null/missing files, malformed JSON handling, statement-only vs branch coverage rendering, skip-covered behavior, Missing-column formatting (ranges and branch arcs), and non-finite percent guards.

tests/parseJson.test.ts

parseXml.test.tsExtend Options fixtures with covJsonFile +1/-0

Extend Options fixtures with covJsonFile

• Adds 'covJsonFile' to the base Options used by XML parser tests to reflect the updated Options interface.

tests/parseXml.test.ts

coverage_1.jsonAdd JSON fixture without branch coverage +44/-0

Add JSON fixture without branch coverage

• Adds a coverage.py JSON fixture representing statement-only coverage, including per-file missing line arrays and top-level totals used by tests.

data/coverage_1.json

coverage_2.jsonAdd JSON fixture with branch coverage and exit arcs +76/-0

Add JSON fixture with branch coverage and exit arcs

• Adds a coverage.py JSON fixture that includes branch coverage fields and 'missing_branches' arcs (including negative-to exit arcs) to validate Missing-column formatting and totals mapping.

data/coverage_2.json

Documentation (2) +28 / -0
CLAUDE.mdDocument JSON parser and precedence/JSON schema nuances +5/-0

Document JSON parser and precedence/JSON schema nuances

• Adds parseJson.ts to the codebase overview and documents parser precedence (JSON > XML > TXT). Captures coverage.py JSON schema gotchas (totals vs summary, missing_lines count vs array, exit-arc encoding) and notes the intended Missing-column behavior.

CLAUDE.md

README.mdAdd pytest-json-coverage-path input and JSON usage example +23/-0

Add pytest-json-coverage-path input and JSON usage example

• Documents the new 'pytest-json-coverage-path' input in the inputs table. Adds a workflow snippet showing how to generate 'coverage.json' via 'coverage json' and feed it to the action.

README.md

Other (2) +258 / -25
action.ymlExpose pytest-json-coverage-path input and update multiple-files docs +6/-1

Expose pytest-json-coverage-path input and update multiple-files docs

• Adds a new optional action input 'pytest-json-coverage-path'. Updates the 'multiple-files' input description to include JSON as a supported coverage format.

action.yml

index.jsRebuild bundled action output to include JSON parser +252/-24

Rebuild bundled action output to include JSON parser

• Updates the compiled/bundled JavaScript to include the new JSON parser, the new action input, updated precedence logic, and the exported XML rounding helper.

dist/index.js

Comment thread src/index.ts
Comment thread src/index.ts
Comment thread src/index.ts
@codeant-ai

codeant-ai Bot commented Jul 5, 2026

Copy link
Copy Markdown

CodeAnt AI finished reviewing your PR.

@qodo-free-for-open-source-projects

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (0) 📘 Rule violations (0) 📎 Requirement gaps (1) 📜 Skill insights (0)

Context used

Grey Divider


Action required

1. Total cover missing % 📎 Requirement gap ≡ Correctness
Description
When total JSON coverage is exactly 0 (or rounds to 0), getTotalCoverage() formats cover as
'0' instead of '0%', causing the action’s reported total coverage to diverge from Coverage.py
coverage report formatting and expectations. This also breaks the HTML/badge rendering pipeline
that assumes cover already contains a %, producing an incorrect shields.io badge segment and
inconsistent displayed coverage text for 0%-coverage runs.
Code

src/parseJson.ts[R147-152]

+  const result: TotalLine = {
+    name: 'TOTAL',
+    stmts: totals.num_statements,
+    miss: totals.missing_lines,
+    cover: cover !== 0 ? `${cover}%` : '0',
+  };
Evidence
PR Compliance ID 2 requires JSON-derived metrics to match Coverage.py coverage report output,
which represents percentages with a trailing %. The current JSON totals mapping special-cases the
0% edge case by emitting TotalLine.cover as '0' (no percent sign), and toHtml then constructs
the shields.io badge URL by appending 25 to URL-encode an expected % (e.g., 88%88%25), so
a missing % corrupts the badge label/URL segment and results in formatting that materially differs
from Coverage.py for 0% total coverage.

Ensure reported coverage metrics match Coverage.py coverage report output when using JSON
src/parseJson.ts[147-152]
src/parseJson.ts[136-152]
src/parse.ts[261-267]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
Total coverage derived from JSON is formatted inconsistently at the 0% edge case: `getTotalCoverage()` sets `cover` to `'0'` (no percent sign) when the rounded percent is zero, but Coverage.py `coverage report` uses percentage formatting with `%` and the rendering pipeline (`toHtml`) assumes `total.cover` already includes `%` (so it can URL-encode it for shields.io). This leads to both compliance/formatting drift and a malformed shields.io badge segment/text for 0%-coverage runs.

## Issue Context
- This impacts the JSON parsing path (new feature) implemented in `getTotalCoverage()`.
- `toHtml` builds the badge with a pattern like `...-${total.cover}25-...`, which expects `total.cover` values like `"88%"` so the encoded output becomes `"88%25"`.
- The JSON parser currently violates that invariant when coverage rounds to 0 by emitting `"0"` instead of `"0%"`.
- For consistency, the XML path may contain similar special-casing and should be reviewed to keep XML and JSON behavior aligned.
- Rebuild `dist/` after updating `src/` files.

## Fix Focus Areas
- src/parseJson.ts[136-152]
- src/parseJson.ts[147-152]
- src/parse.ts[261-267]
- src/parseXml.ts[91-101]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

Qodo Logo

Comment thread src/parseJson.ts

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds support for parsing coverage.py’s coverage json output as a third coverage input format, integrating it into the existing rendering pipeline so badges/tables remain consistent with the current TXT/XML output.

Changes:

  • Introduces pytest-json-coverage-path and routes coverage parsing with precedence JSON > XML > TXT.
  • Adds a JSON parser (src/parseJson.ts) that maps coverage.py JSON into the existing toHtml / DataFromXml table+badge renderer (including branch/missing details).
  • Updates documentation, fixtures, tests, and rebuilds dist.

Reviewed changes

Copilot reviewed 15 out of 17 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
src/types.d.ts Adds covJsonFile to the shared Options type.
src/parseXml.ts Exports formatCoverPercent for reuse by the JSON parser.
src/parseJson.ts New JSON parser producing the same report shape as XML to reuse existing rendering.
src/multiFiles.ts Adds .json detection for monorepo multiple-files mode and routes to JSON parser.
src/index.ts Adds new action input pytest-json-coverage-path and selects JSON parser with highest precedence.
src/cli.ts Updates local CLI harness to allow testing JSON parsing.
README.md Documents the new pytest-json-coverage-path input and JSON usage example.
action.yml Adds the new JSON input and documents JSON as a supported multiple-files format.
tests/parseXml.test.ts Updates test options to include covJsonFile.
tests/parse.test.ts Updates test options to include covJsonFile.
tests/multiFiles.test.ts Updates test options to include covJsonFile.
tests/junitXml.test.ts Updates test options to include covJsonFile.
tests/parseJson.test.ts Adds focused tests for JSON parsing behavior and internal helpers.
data/coverage_1.json Adds JSON fixture (no branch coverage) for tests.
data/coverage_2.json Adds JSON fixture (with branch coverage) for tests.
CLAUDE.md Updates repo documentation to reflect JSON support and precedence.
dist/index.js Rebuilds bundled action output to include JSON support.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/parseJson.ts
Comment thread src/cli.ts
Bump version 1.9.0 -> 1.10.0 and add CHANGELOG entry for the new
pytest-json-coverage-path input.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jul 5, 2026

Copy link
Copy Markdown

Review Change Stack

Walkthrough

This PR adds JSON coverage parsing alongside the existing XML path. A new src/parseJson.ts module reads coverage.py JSON, maps it into the shared coverage report shape, and reuses the HTML rendering path. cli.ts, index.ts, and multiFiles.ts now select JSON before XML before the default report based on a new covJsonFile option. Tests, fixtures, and user-facing docs are updated for the new input and report format.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Possibly related PRs

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check ⚠️ Warning The description covers the PR purpose, but it does not follow the required template sections or checklist. Rewrite it using the template headings: What does this PR do?, Related Issue, and Checklist with the required items.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly names the main change: adding coverage.py JSON report support via the new input.
Linked Issues check ✅ Passed The changes add JSON coverage parsing, the new input, precedence, branch/missing-line handling, and tests/docs for #282.
Out of Scope Changes check ✅ Passed The changes stay focused on JSON coverage support plus related tests, docs, fixtures, and release metadata.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
src/index.ts (1)

444-457: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Stale covXmlFile-only group name for the new JSON path.

This block assumes an object-shaped coverage (with .cover) always came from XML, so it hardcodes core.startGroup(options.covXmlFile). Since getCoverageJsonReport (wired in at Line 320-321) now also returns this shape while options.covXmlFile is empty, JSON-only users get core.startGroup('') — a blank/unlabeled log group instead of showing their coverage file. The comment above it is also now stale (pytest-xml-coverage-path only).

This mirrors the fallback chain already used in src/multiFiles.ts (covXmlFile || covJsonFile || covFile), which wasn't applied here.

🔧 Proposed fix
-  // support for output for `pytest-xml-coverage-path`
+  // support for output for `pytest-xml-coverage-path` / `pytest-json-coverage-path`
   if (
     coverage &&
     typeof coverage === 'object' &&
     (coverage as { cover?: string }).cover
   ) {
-    core.startGroup(options.covXmlFile);
+    core.startGroup(options.covXmlFile || options.covJsonFile);
     core.info(`coverage: ${(coverage as { cover: string }).cover}`);

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: e42853ba-87d9-4b42-a267-4b9a5759ef1d

📥 Commits

Reviewing files that changed from the base of the PR and between 4a4889e and 692aeb9.

⛔ Files ignored due to path filters (1)
  • dist/index.js is excluded by !**/dist/**
📒 Files selected for processing (16)
  • CLAUDE.md
  • README.md
  • __tests__/junitXml.test.ts
  • __tests__/multiFiles.test.ts
  • __tests__/parse.test.ts
  • __tests__/parseJson.test.ts
  • __tests__/parseXml.test.ts
  • action.yml
  • data/coverage_1.json
  • data/coverage_2.json
  • src/cli.ts
  • src/index.ts
  • src/multiFiles.ts
  • src/parseJson.ts
  • src/parseXml.ts
  • src/types.d.ts

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1


ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 2742f12d-bf96-436e-a71f-047b05edee1e

📥 Commits

Reviewing files that changed from the base of the PR and between 692aeb9 and eeb248b.

⛔ Files ignored due to path filters (1)
  • package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (2)
  • CHANGELOG.md
  • package.json
✅ Files skipped from review due to trivial changes (1)
  • package.json

Comment thread CHANGELOG.md
cubic-dev-ai[bot]
cubic-dev-ai Bot previously approved these changes Jul 5, 2026

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

0 issues found across 3 files (changes from recent commits).

Re-trigger cubic

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1 issue found and verified against the latest diff

Reply with feedback, questions, or to request a fix.

Re-trigger cubic

Comment thread src/parseJson.ts
@cubic-dev-ai cubic-dev-ai Bot dismissed their stale review July 5, 2026 09:59

Dismissed because Cubic found issues in a newer review.

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No issues found across 20 files

Re-trigger cubic

@MishaKav MishaKav merged commit fd9adbd into main Jul 5, 2026
7 checks passed
@MishaKav MishaKav deleted the feat/json-coverage-report branch July 5, 2026 10:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XL This PR changes 500-999 lines, ignoring generated files

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature]: Use and parse JSON report

2 participants