Skip to content

gh-158895: Teach libregrtest to output github job summaries - #158896

Draft
cmaloney wants to merge 34 commits into
python:mainfrom
cmaloney:regrtest-gha-summary
Draft

cmaloney wants to merge 34 commits into
python:mainfrom
cmaloney:regrtest-gha-summary

Conversation

@cmaloney

@cmaloney cmaloney commented Oct 6, 2026 •

Copy link
Copy Markdown
Contributor

Update libregrtest to output GitHub Job Summary and Error Annotations for each failing job, test when run in Github Actions. Screenshots of the changes below.

  1. Job Summaries: For each job which fails output a markdown file with details. Auto-expanded when there are few, collapsed when there are many.
  2. Error Annotations: When a test fails emit a marker so Github can link the specific diff line to the job failure.

This creates a number of UI adjustments which should make it a little easier to get around. These only happen if run in Github. Goal is to make triage a little bit simpler/faster but keep the full fidelity of the existing libregrtest output.

note: iOS and Android are excluded for now, as are other kinds of jobs like docs and mypy. Can expand support to those but would rather do as separate well scoped PRs.

Job Summaries

If you click on "checks" tab on a PR then the "tests" you get taken to the summary page (ex. https://github.com/python/cpython/actions/runs/38330186853). At the top is the workflow graph, if you scroll past that you see a job summary per failed job. If there are many failures they are "collapsed". Just a few will start expanded. The tracebacks are colored with Python traceback syntax highlighting.

Screenshot 2026-10-12 at 7 46 05 PM

Error Annotations

If you click on "Files Changed" in a PR there is a button to "Open Alerts Panel". This will show all the error annotations on all the files. Individual test failures are mapped back to the source line when possible, and that line in the Diff view will show an indicator that there is an error which can be expanded. Clicking on "show details" will take you to the specific job logs.

On individual test jobs all the annotations from that job are included at the top of the job page.

Unfortunately this does result in redundant printing of the assertion failures as we print both the libregrtest form and a form of the github annotation line is presented. I chose for this to be just after the existing failure message which I think reads reasonably.

Screenshot 2026-10-12 at 8 00 07 PM Screenshot 2026-10-12 at 7 48 29 PM Screenshot 2026-10-12 at 7 46 31 PM Screenshot 2026-10-12 at 7 46 47 PM

edit: Rewrote with screenshots to show features.

Goal is to make it faster to triage individual test failures while
keeping the full existing regrtest fidelity. Fairly minimal integration
to hopefully save some human eyeball time.

Setup so only the test summary process should output the summary,
subprocesses have the env var which will cause output unset.
@bedevere-app bedevere-app Bot added the type-feature A feature request or enhancement label Oct 6, 2026
@hugovk

hugovk commented Oct 6, 2026

Copy link
Copy Markdown
Member

Can you temporarily trigger a test failure so we can see it in action?

@cmaloney

cmaloney commented Oct 6, 2026

Copy link
Copy Markdown
Contributor Author

Yea, planning to pass + fail + iterate on failure to get it pretty then get back to passing and mark as ready for review :)

Comment thread Lib/test/libregrtest/main.py Outdated
@cmaloney cmaloney changed the title gh-158895: Teach librertest to output github job summaries gh-158895: Teach libregrtest to output github job summaries Oct 6, 2026
@edvilme

edvilme commented Oct 9, 2026

Copy link
Copy Markdown
Contributor

I think having a screenshot in the description could help out a ton (I know that is the reason for the intentional failures, but may be easier to glance and get more exposure)

cmaloney and others added 8 commits October 12, 2026 15:39
Locate annotations at the last traceback frame in a test file instead of
mapping each test to its file. Pass annotations to workers in RunTests,
like use_junit, so tests which run regrtest don't inherit
GITHUB_STEP_SUMMARY. Shrink the tests.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Fall back to the first traceback frame (the test) instead of passing the
test module file.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

type-feature A feature request or enhancement

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants