NasAmin / trx-parser

This repository contains a Typescript GitHub action for parsing trx files and creating status check for each trx file based on its test outcome

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

trx-parser 🧹

This Action was inspired by https://github.com/zyborg/dotnet-tests-report

Build Test GitHub release (latest by date)

This GitHub Action provides a way of parsing dotnet test results from trx files in a given directory. The action will find trx files specified in the TRX-PATH input variable. This path must be accessible to the action.

It will read each individual .trx file. Loads up its data and converts it to a typed json object to make it easier to traverse through the data. For each TRX, it will create a Github Status check and generate a markup report for each trx. The report name and title are derived from the trx file using the data.TestRun.TestDefinitions.UnitTest[0]._storage

Reports

The following reports show a failing and a passing check generated by this action.

Workflow Reports:

Usage

To make trx-parser a part of your workflow, just add the following to your existing workflow file in your .github/workflows/ directory in your GitHub repository.

name: Test
on: [pull_request]

jobs:
  Build:
    runs-on: ubuntu-latest
    steps:
      # Replace this whichever way you build your code
      - name: Build & Test dotnet code
        run: |
          dotnet restore
          dotnet build -c Release no-restore
          dotnet test -c Release --no-restore --no-build --logger trx --results-directory ./TestResults
      # Using the trx-parser action
      - name: Parse Trx files
        uses: NasAmin/trx-parser@v0.1
        id: trx-parser
        with:
          TRX_PATH: ${{ github.workspace }}/TestResults #This should be the path to your TRX files
          REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }}          

Inputs

Name Description Default Required
TRX_PATH Path to the directory container your test files ./TestResults yes
REPO_TOKEN GitHub token to create status checks nil yes
SHA The commit SHA associated with the checks. This is optional nil no
IGNORE_FAILURE If true, will not set status check as failure. false no
REPORT_PREFIX The prefix for the report name. Useful for matrix builds nil no

⚠️ GitHub Actions Limitations ⚠️

  • The GitHub Checks API has a limit of 65535 characters. So if the test report exceeds this limit, GitHub will fail to create a check and fail your workflow. This was mitigated on #103 and #138 to only report details about failing tests.
  • If you have multiple workflows triggered by the same event, currently GitHub Actions will randomly associate a check run to one of the workflows. This is because currently there is no Check Suite API. Only GitHub apps are allowed to create a Check Suite. There is also no way to associate a custom check run with an existing check suite. GitHub actions automatically creates a check suite for each workflow run. However, since check runs are associated with a commit and event, any custom check runs are randomly linked under one of the triggered workflows for the same commit.

Contributing

Anyone is welcome to contribute and make this action better. Please fork the repository and create a pull request with proposed changes.

Development

  • Clone this repository
  • Run npm run build and npm run test
  • Run npm run all to regenerate the dist directory.

About

This repository contains a Typescript GitHub action for parsing trx files and creating status check for each trx file based on its test outcome

License:MIT License


Languages

Language:TypeScript 97.3%Language:Shell 1.5%Language:JavaScript 1.2%