ci: publish test results from a dedicated Test Results job - #151
Merged
Conversation
A check run created through the Checks API is attached to the oldest check suite for its head SHA. For fork-validation PRs the head commit already has a check suite from the fork's own run (where unit-tests is skipped), so the published "Test Results" check landed under that earlier run and was missing from the run that actually produced it. Move the download/publish steps into their own job named "Test Results" and set check_run: false. A job's check run is created inside its own run's check suite, so the report now always shows up in the right run. The visible check name is unchanged, so branch protection is unaffected. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
mcollovati
approved these changes
Aug 6, 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.
Problem
The
Test Resultsentry was missing from the run UI on fork-validation PRs — e.g. run 31086263314 (PR #150) had no Test Results, while run 30629535865 (PR #148) did.It was not a config difference — the workflow file was identical at both commits.
Test Resultswas never a job; it was a check run created through the Checks API bypublish-unit-test-result-action. That API only takes ahead_sha, so GitHub attaches the check run to the oldestgithub-actionscheck suite for that SHA.Fork validation guarantees a collision:
31078116018TatuLund/browserless-test:gridpro,unit-testsandvalidation-statusskipped by the fork guard — but it still creates check suite84298004503for SHA28d485d31086263314fork_validation/gridpro→ PR #150, own suite84320399015, full validation runsThe check run published by the second run landed in suite
84298004503and reportedrun_id: 31078116018, so it showed up under the skipped fork run instead:PR #148's commit had only one run, hence only one suite, which is why it worked there.
Fix
Move the download/publish steps out of
validation-statusinto their own job namedTest Results, and setcheck_run: false. A job's check run is created by Actions inside its own run's check suite, so the report can no longer be misattributed. Tables go to that job's summary.Test Results, now backed by a job.if:guard replaces the fork check: on fork PRsunit-testsisskipped, sotest-resultsskips too instead of failing on a missing artifact.fail_onkeeps its default, so the job goes red on test failures as before. Deliberately not added toCheck all jobs status—unit-testsalready gates that, and report publishing shouldn't block a PR.checks: writefromvalidation-status.Verification
Pushed to
fork_validation/gridprofirst — run 31088369186 is green withTest Resultsas a real 5-step job in the run's own suite84326319601, log confirming 126 JUnit XMLs read andCreated job summary, and no stray check run anywhere.🤖 Generated with Claude Code