actions-marketplace-validations/Publish Test Results

Publishes JUnit, NUnit, XUnit, TRX, JSON test results on GitHub for .NET, Dart, Java, JS, Jest, Mocha, Python, Scala, …

View on GitHub

Trust Signals

Scorecard Score
not yet scored
Maintenance Recency
Activelast commit Mar 1, 2026
License
Apache 2.0

Pinned Snippet

workflow.ymlSHA-pinned
uses: actions-marketplace-validations/enricomi_publish-unit-test-result-action@f3a4c8ee80460c780d2932e55fb914138ecaca2c # no releases — HEAD as of 2026-07-10

tags can be moved; commit SHAs can't. why a SHA?

namedescriptionrequireddefault
github_tokenGitHub API Access Token.no${{ github.token }}
github_token_actor[deprecated] This is not needed any more as this is detected automatically.no
github_retriesRequests to the GitHub API are retried this number of times. The value must be a positive integer or zero.no10
ssl_verifyEither "true" or "false", in which case it controls whether to verify the Github server’s TLS certificate, or a string, in which case it must be a path to a CA bundle to use. Default is "true".notrue
commitCommit SHA to which test results are published. Only needed if the value of GITHUB_SHA does not work for you.no
check_nameName of the created check run.noTest Results
comment_titleAn alternative title for the pull request comment. Defaults to value of check_name input.no
comment_modeThe action posts comments to pull requests that are associated with the commit. Set to "always" - always comment, "changes" - comment when changes w.r.t. the target branch exist, "changes in failures" - when changes in the number of failures and errors exist, "changes in errors" - when changes in the number of (only) errors exist, "failures" - when failures or errors exist, "errors" - when (only) errors exist, "off" - to not create pull request comments.noalways
fail_onThe created test result check run has failure state if any test fails or test errors occur. Never fails when set to "nothing", fails only on errors when set to "errors". Default is "test failures".notest failures
action_failWhen set "true", the action itself fails when tests have failed (see option fail_on).nofalse
action_fail_on_inconclusiveWhen set "true", the action itself fails when tests are inconclusive (no test results).nofalse
filesFile patterns of test result files. Relative paths are known to work best, while the non-Docker action also works with absolute paths. Supports "*", "**", "?", and "[]" character ranges. Use multiline string for multiple patterns. Patterns starting with "!" exclude the matching files. There have to be at least one pattern starting without a "!".no
junit_filesDeprecated, use "files" option instead.no
nunit_filesDeprecated, use "files" option instead.no
xunit_filesDeprecated, use "files" option instead.no
trx_filesDeprecated, use "files" option instead.no
time_unitTime values in the test result files have this unit. Supports "seconds" and "milliseconds".noseconds
test_file_prefixPaths in the test result files should be relative to the git repository for annotations to work best. This prefix is added to (if starting with "+"), or remove from (if starting with "-") test file paths. Examples: "+src/" or "-/opt/actions-runner".no
report_individual_runsIndividual runs of the same test may see different failures. Reports all individual failures when set "true" or the first only otherwise.no
report_suite_logsIn addition to reporting regular test logs, also report test suite logs. These are logs provided on suite level, not individual test level. Set to "info" for normal output, "error" for error output, "any" for both, or "none" for no suite logs at all. Defaults to "none".nonone
deduplicate_classes_by_file_nameDe-duplicates classes with same name by their file name when set "true", combines test results for those classes otherwise.no
large_filesSupport for large files is enabled when set to "true". Defaults to "false", unless ignore_runs is "true".no
ignore_runsDoes not collect test run information from the test result files, which is useful for very large files. This disables any check run annotations.nofalse
check_runSet to "true", the results are published as a check run, but it may not be associated with the workflow that ran this action.notrue
job_summarySet to "true", the results are published as part of the job summary page of the workflow run.notrue
compare_to_earlier_commitTest results are compared to results of earlier commits to highlight changes: "false" - disable comparison, "true" - compare across commits.notrue
pull_request_buildAs part of pull requests, GitHub builds a merge commit, which combines the commit and the target branch. If tests ran on the actual pushed commit, then set this to "commit". Defaults to "merge".nomerge
event_fileAn alternative event file to use. Useful to replace a "workflow_run" event file with the actual source event file.no
event_nameAn alternative event name to use. Useful to replace a "workflow_run" event name with the actual source event name: github.event.workflow_run.event.no
test_changes_limitLimits the number of removed or skipped tests reported on pull request comments. This report can be disabled with a value of 0. The default is 10.no
check_run_annotationsAdds additional information to the check run. This is a comma-separated list of any of the following values: "all tests" - list all found tests, "skipped tests" - list all skipped tests. Set to "none" to add no extra annotations at all.noall tests, skipped tests
check_run_annotations_branchAdds check run annotations only on given branches. Comma-separated list of branch names allowed, asterisk "*" matches all branches. Defaults to event.repository.default_branch or "main, master".no
seconds_between_github_readsSets the number of seconds the action waits between concurrent read requests to the GitHub API. This throttles the API usage to avoid abuse rate limits: https://docs.github.com/en/rest/overview/resources-in-the-rest-api#abuse-rate-limits.no0.25
seconds_between_github_writesSets the number of seconds the action waits between concurrent write requests to the GitHub API. This throttles the API usage to avoid abuse rate limits: https://docs.github.com/en/rest/overview/resources-in-the-rest-api#abuse-rate-limits.no2.0
secondary_rate_limit_wait_secondsSets the number of seconds to wait before retrying secondary rate limit errors. If not set, the default defined in the PyGithub library is used (currently 60 seconds).no
json_fileResults are written to this JSON file.no
json_thousands_separatorFormatted numbers in JSON use this character to separate groups of thousands. Common values are "," or ".". Defaults to punctuation space (\u2008).no��
json_suite_detailsWrite out all suite details to the JSON file. Setting this to "true" can greatly increase the size of the output. Defaults to "false".nofalse
json_test_case_resultsWrite out all individual test case results to the JSON file. Setting this to "true" can greatly increase the size of the output. Defaults to "false".nofalse
search_pull_requestsPrior to v2.6.0, the action used the "/search/issues" REST API to find pull requests related to a commit. If you need to restore that behaviour, set this to "true". Defaults to "false".nofalse
namedescription
jsonTest results as JSON