Publish test results
Find a file
2021-02-01 21:50:28 +01:00
.github Remove unnecessary quotes from yaml 2021-02-01 21:20:03 +01:00
.vscode Add vscode launch configuration for jest tests 2020-10-12 22:25:12 +02:00
__tests__ Fix dart/flutter stack trace parsing 2021-02-01 16:09:01 +01:00
assets Replace image with captured cursor 2021-02-01 21:25:51 +01:00
dist Fix dart/flutter stack trace parsing 2021-02-01 16:09:01 +01:00
reports Bump node-notifier from 8.0.0 to 8.0.1 in /reports/jest 2020-12-22 10:23:51 +01:00
src Fix dart/flutter stack trace parsing 2021-02-01 16:09:01 +01:00
.editorconfig Add dotnet-trx fixture project 2020-10-17 21:41:49 +02:00
.eslintignore Initial commit 2020-10-01 22:53:25 +02:00
.eslintrc.json Create annotations where exceptions were thrown 2020-11-28 21:24:57 +01:00
.gitattributes Force EOL=LF 2020-11-12 23:26:27 +01:00
.gitignore Support parsing multiple reports 2021-01-16 22:53:14 +01:00
.prettierignore Configure prettier (line width: 120) 2020-11-12 23:27:48 +01:00
.prettierrc.json Configure prettier (line width: 120) 2020-11-12 23:27:48 +01:00
action.yml Shorten description in action.yml to pass 125 chars limit 2021-02-01 21:50:28 +01:00
jest.config.js Initial commit 2020-10-01 22:53:25 +02:00
LICENSE Improve README and action.yml 2021-01-24 17:18:27 +01:00
package-lock.json Bump @octokit/types from 6.2.1 to 6.7.0 2021-02-01 09:51:58 +00:00
package.json Bump @octokit/types from 6.2.1 to 6.7.0 2021-02-01 09:51:58 +00:00
README.md Add counters outputs to action.yml 2021-02-01 21:46:47 +01:00
tsconfig.json Update tsconfig.json for Node v12+ 2020-11-12 23:25:48 +01:00

Test Reporter

This Github Action displays test results from popular testing frameworks directly in GitHub.

✔️ Parses test results in XML or JSON format and creates nice report as Github Check Run

✔️ Annotates code where it failed based on message and stack trace captured during test execution

✔️ Provides final conclusion and counts of passed, failed and skipped tests as output parameters

How it looks:

Supported languages / frameworks:

For more information see Supported formats section.

Support is planned for:

Do you miss support for your favorite language or framework? Please create Issue or contribute with PR.

Example

jobs:
  build-test:
    name: Build & Test
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2     # checkout the repo
      - run: npm ci                   # install packages
      - run: npm test                 # run tests (configured to use jest-junit reporter)

      - name: Test Report
        uses: dorny/test-reporter@v1
        if: success() || failure()    # run this step even if previous step failed
        with:
          name: JEST Tests            # Name of the check run which will be created
          path: reports/jest-*.xml    # Path to test report
          reporter: jest-junit        # Format of test report

Usage

- uses: dorny/test-reporter@v1
  with:

    # Name of the Check Run which will be created
    name: ''

    # Coma separated list of paths to test reports
    # Supports wildcards via [fast-glob](https://github.com/mrmlnc/fast-glob)
    # All matched result files must be of same format
    path: ''

    # Format of test report. Supported options:
    #   dart-json
    #   dotnet-trx
    #   flutter-json
    #   jest-junit
    reporter: ''

    # Limits which test suites are listed:
    #   all
    #   failed
    list-suites: 'all'

    # Limits which test cases are listed:
    #   all
    #   failed
    #   none
    list-tests: 'all'

    # Limits number of created annotations with error message and stack trace captured during test execution.
    # Must be less or equal to 50.
    max-annotations: '10'

    # Set action as failed if test report contain any failed test
    fail-on-error: 'true'

    # Relative path under $GITHUB_WORKSPACE where the repository was checked out.
    working-directory: ''

    # Personal access token used to interact with Github API
    # Default: ${{ github.token }}
    token: ''

Output parameters

Name Description
conclusion success or failure
passed Count of passed tests
failed Count of failed tests
skipped Count of skipped tests
time Test execution time [ms]

Supported formats

dart-json

Test run must be configured to use JSON reporter. You can configure it in dart_test.yaml:

file_reporters:
  json: reports/test-results.json

Or with CLI arguments:

dart test --file-reporter="json:test-results.json"

For more information see:

dotnet-trx

Test execution must be configured to produce Visual Studio Test Results files (TRX). To get test results in TRX format you can execute your tests with CLI arguments:

dotnet test --logger "trx;LogFileName=test-results.trx"

Or you can configure TRX test output in *.csproj or Directory.Build.props:

<PropertyGroup>
  <VSTestLogger>trx%3bLogFileName=$(MSBuildProjectName).trx</VSTestLogger>
  <VSTestResultsDirectory>$(MSBuildThisFileDirectory)/TestResults/$(TargetFramework)</VSTestResultsDirectory>
</PropertyGroup>

Supported testing frameworks:

For more information see dotnet test

flutter-json

Test run must be configured to use JSON reporter. You can configure it in dart_test.yaml:

file_reporters:
  json: reports/test-results.json

Or with (undocumented) CLI argument:

flutter test --machine > test-results.json

According to documentation dart_test.yaml should be at the root of the package, next to the package's pubspec. On current stable and beta channels it doesn't work and you have to put dart_test.yaml inside your test folder. On dev channel it's already fixed.

For more information see:

jest-junit

JEST testing framework support requires usage of jest-junit reporter. It will create test results in junit XML format which can be then processed by this action. You can use following example configuration in package.json:

"scripts": {
  "test": "jest --ci --reporters=default --reporters=jest-junit"
},
"devDependencies": {
  "jest": "^26.5.3",
  "jest-junit": "^12.0.0"
},
"jest-junit": {
  "outputDirectory": "reports",
  "outputName": "jest-junit.xml",
  "ancestorSeparator": "  ",
  "uniqueOutputName": "false",
  "suiteNameTemplate": "{filepath}",
  "classNameTemplate": "{classname}",
  "titleTemplate": "{title}"
}

Configuration of uniqueOutputName, suiteNameTemplate, classNameTemplate, titleTemplate is important for proper visualization of test results.

See also

  • paths-filter - Conditionally run actions based on files modified by PR, feature branch or pushed commits

License

The scripts and documentation in this project are released under the MIT License