feat(reports): --report-md and an automatic GitHub step summary - #1043
Merged
Conversation
Every existing report format targets a machine, and the HTML one has to be uploaded and downloaded to be read. Nothing targeted the page a developer actually looks at first. The summary carries the verdict, a counts table and each failure with its file:line and message. Coverage and slowest-tests sections appear only when that data exists. Failure messages go inside a fence with ANSI stripped so they render verbatim, and test names are escaped so a name containing a pipe, asterisk, underscore or backtick cannot break the table. With GITHUB_STEP_SUMMARY set and no explicit path, the summary is appended there. Appended, never written: that file belongs to the whole job, so truncating it would discard the other steps' output. Only the outermost run writes it, for the same reason the annotations do -- the variable is inherited by every child, so a nested run would append its own fixtures' results to the parent's job page. Generation moved ahead of print_profile_and_reset, which deletes the profile records the summary reads, and load_spooled moved with it so a --parallel run still reports the rows its workers spooled (#1004). Closes #1015
GITHUB_STEP_SUMMARY is set on every GitHub Actions runner, which makes the Markdown summary a third reason to collect rows. These tests ask whether a file report was configured, so the ambient CI environment has to be pinned off for the answer to mean anything.
…nsole nor parallel The summary read the coverage percentage before the hit records were finalized, and before a parallel run's per-worker data was aggregated, so it reported 0% for a covered run under --parallel and a low figure sequentially. Compute the coverage numbers before the summary is written; the reports still render where they did.
Chemaclass
force-pushed
the
feat/1015-report-md
branch
from
August 10, 2026 19:50
14d5cde to
341da2a
Compare
This was referenced Aug 10, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🤔 Background
Related #1015
Every existing report format targets a machine, and the HTML one has to be uploaded as an artifact and downloaded to be read. Nothing targeted the page a developer looks at first: the pull request.
💡 Changes
--report-md <file>writes a Markdown summary: verdict, counts table, and each failure with itsfile:lineand message. Coverage and slowest-tests sections appear only when that data exists.GITHUB_STEP_SUMMARYset and no explicit path, the summary is appended to it and renders on the job page. Appended, never written, since that file belongs to the whole job.|,*,_or a backtick cannot break the table.🩹 Follow-up fix in this branch
The coverage percentage in the summary was read before the hit records were finalized, and before a
--parallelrun's per-worker data was aggregated, so it reported0%for a covered run under--paralleland a lower-than-console figure sequentially. The coverage numbers are now computed before the summary is written; the console and file reports still render where they did. Covered bytest_the_coverage_percentage_matches_the_console_report.✅ Build & Verify
The earlier block on this PR is gone: the standalone size budget was raised to 544 KiB on
mainin #1046. The artifact built from this branch is 523306 bytes, inside the budget.