Publishing Test Results

Does anyone have a way to do this yet? Or is this planned for the future? I’m thinking of the Tests tab in CICD platforms like AppVeyor or Azure DevOps that display test results (if they’re converted into a specific format like NUnit or similar) so it’s super easy to see which tests failed and click on each individual one for more details. 



I have tested several ways to deploy tests:

  1. Using the GitHub Status API to set a status to the Commit / PR

Pro: The little :white_check_mark: or X icon you get for successful or failing tests


  • The description only has very limited space to display text

  • You can add a link and link somewhere for more information. I have not found a way to link to the result/output of the Action yet

  • If you have a matrix build, you need a status for every matrix build. Or you find a way to merge the test results.

  1. Using the GitHub Comment API to add a comment to the Commit / PR

Pro: You can display as many characters as you want

Con: For matrix builds you have the same problems when using the status. Either you merge the test results, or you have one comment for every matrix build. Or you find and update the comment.  

  1. Using the GitHub Checks API

Pro: You can display the error of the failing test inline inside the file right next to the line where the error happens.


  • You have to parse the test results

  • I have not found a way to add a test summary only to add annotations to failing tests

  • Annotations can only be displayed on changed files. If you have a file that was not changed but the test is failing for that file you cannot display an annotation there.

  1. Uploading the test results as an artifact

Pro: There’s an action for that and it’s easy to use

Con: You have to manually download the artifact unzip it and check the content.

  1. Just letting the Actions do their job

Pro: You do not have to do anything. You get the check or x status and the “Details” Link links right to the failing action

Con: It’s only an okayish user experience to scan the test results in the console output

  1. Using a marketplace app

Pro: All the features the marketplace app has (maybe it has merging features, possibly it has hosting features)

Con: There’s quite possibly costs involved

I have done the following for our tests:

  1. Run the tests
  2. Add a status with a summary of the test run
  3. Parse the test output and add the annotations
  4. (optional) add a comment
  5. zip the test result
  6. deploy the test result on a static server (behind our firewall)

(we currently do not use matrix builds)

If you want to check the action out. You can find it here

You can find some more of my actions like coverage and lincense-check in the organization. But they are all for a npm / Jest workflow. And they are very specific to our needs. But maybe you find something interesting in there.

Maybe I should write a blog post about my experience with this. 


Yeah, for now I’m just doing your fifth suggestion, @ankri . I’m using Pester for PowerShell tests, and those are all outputted, so its at least possible to see it. 

I may look into utilizing some of the Github APIs later. Thanks for your suggestions. 

I still think this should be an official part of the CICD stuff with GitHub Actions though.


Hey @mgeorgebrown89 and @ankri thanks for taking the time to write this feedback, I’ve taken your suggestion and passed it along to the appropriate team. In the meantime, we’re looking forward to seeing you around!


I’d love to see this.  Right now it is a pain to scroll through the stdout to see which test(s) failed.  I’d like a tests tab that shows all failed tests and requires xunit formatting like typical CI solutions.  So far only gripe, I love this service thus far


I had the same issue where we had to display annotations and failures for unit test.  I used ava testing framework and in order for me to display the errors I had implemented in the following way,

Step 1 => Produced ava test results into TAP format.

Step 2 => Wrote custom parser to parse the ava --tap output to generate the annotations similiar to format which is been accepted by checks api.

Something similar to 

['##[error] 3:1 error "test is not defined" path:test/sum.spec.js name:ReferenceError',
  '##[error] 21:1 error "Duplicate test title: Should pass" path:test.spec.js name:Error',
  '##[error] 4:4 error "Test failed via ``" path:test2.spec.js name:AssertionError',
  { total: 8, failure: 5, success: 3 } ]

Annotations output looks like 

Inline errors for the tests which failed will also be shown, 



Hope this helps someone for now as a workaround till github supports :smiley:


Was looking for the same thing and came across this:

As long as you have your tests in junit xml format tou could use a ruby image to post the results. Not perfect but seems simple enough


Would be very great, at least for the test coverage to be able to publish artifact somewhere, where it is possible to open it as HTML, without downloading zip archive, extract it and view.

Another solution might be, if github pages will provide possibility to view their page only to those who are logged in, means “private github pages” - which isn’t supported yet.

In that case using the GitHub Status API it will be possible to set URL to this private github page or visible artifact (with content-disposition: inline or something similar).


I have similar requirement and more.

i;d like to publish not only the test report, code coverage report, but also:

  • load test reports, the JMeter generated html report
  • AWS ECR docker image scan report in html format
  • more custom metric reports

so i’d like to see a sub-tab on actions tab to show up these kind reports.

something like what gitlab does:

it’s the gap preventing me from migrating all our Jenkins jobs to Github actions

1 Like

Recently this new plugin by @jmisur has been published


I have a question for the GitHub Actions development team - is there any plan on the roadmap for functionality specifically aimed at recording and viewing test results?

ankri gives an excellent summary of what is currently possible. In terms of making test failures prominent in the UI, annotations is the best thing we currently have, but tbh it feels a bit like we’re abusing a feature that’s designed for something different (i.e. annotating lines changed in a commit… rather than reporting test failures which may or correspond to zero, 1 or many changes in the commit).

Before I go off an implement something that creates annotations for my testing tool’s results (I’m thinking one annotation per test failure, up to the per-step annotation limit of 10) it’d be great to hear if there is anything in the pipeline that’s specifically designed for capturing test results? I’m hoping this will be something that works from workflow command stdout rather than something needing a custom JavaScript action.

Features that would help:

  • a way to report a single string summarizing the output of a job (or step) prominently in the UI, e.g. “5 failures, 100 passes” without the need to dig deeply into the logs
  • a way to add more than 10 annotations from step stdout
  • annotation file links working even on files that haven’t changed
  • a way to add non-warn/failure annotations from workflow stdout
  • a dedicated UI for showing test results (test id, outcome, outcome summary string, link to position in workflow stdout or to artifact with more detail). Needs to work from workflow command stdout. From the CI providers I’ve experimented with TeamCity’s API and UI for this work well (though even something much simpler would still be appreciated :slight_smile: )

@AndreaGriffiths11 I’m also curious to know if this is on the roadmap as it’s conspicuously absent.

FWIW, adding test and code coverage results to Azure Pipelines is trivial. For example:

- task: PublishTestResults@2
    testRunner: VSTest
    testResultsFiles: "Artifacts/Tests/**/*.trx"
  displayName: Upload test artifacts

- task: PublishCodeCoverageResults@1
    codeCoverageTool: cobertura
    summaryFileLocation: "Artifacts/Tests/**/coverage.*.xml"
  displayName: Upload coverage artifacts

… integrates “Tests” and “Code Coverage” tabs directly in the pipeline UI. Perfect!


I would like to echo the comments in this thread. This seems to be a gap in current github actions implementation that would be nice to have a solution for. As mentioned Azure DevOps and/or Team City have nice ways of seeing unit test summaries without drilling through pages of logs. +1 from me to add this as a feature to github actions.


I echo the comments in this thread as well… This seems like a basic feature that is available in almost all other CI systems.

1 Like

We have a GitHub App that can be used for Publishing Test Results.

Note that I checked with GitHub support to make sure it was acceptable to post information regarding our GitHub App. I did not want to be viewed as advertising.

You can check it out:

  • Supports JUnit and other results formats (NUnit, TRX, etc.)
  • Supports a branch-based workflow, pull requests
  • Can also publish code coverage, and other artifacts

You can get more details by referring to our help:

You use an action to set up and a simple utility to push test content. For example:

name: CI
    runs-on: ubuntu-latest
      - uses: actions/checkout@v2
          fetch-depth: 50
      - uses: testspace-com/setup-testspace@v1
          domain: ${{ github.repository_owner }}
      - name: Push result to Testspace server
        run: |
          testspace results.xml 
        if: always()

Perhaps I misunderstand the question, sorry if that’s the case. Just want to point out that you could use some part of your codebase for reporting. Check it in after the run.

For instance, this illustrates the pattern.

I ended up writing this Action to parse dotnet test results (.trx) files.

For those folks not using Github actions, I’ve written a system which is designed to publish unit-test results to a server which uses github’s checks API to annotate the commit with the test information. The APP is here:

You can see some example output here:

All is needs is a posted json entity so I’m happy to work with other test systems for support.

@munderseth Test Space looks like a very nice tool, but pricing at $20/repo/month is prohibitive. Really need pricing based on usage in this day and age – I just can’t sell anything priced per repo when every team of 3-5 developers has dozens of repos in a microservice architecture.

1 Like

@ZebraFlesh I appreciate your feedback. Our offering is new, and we are still considering different pricing options. Testspace is a little different because it supports both publishing CI test results and implementing/executing Manual Testing. Would a user/month pricing be more attractive?