trx-parser

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 fast and reliable 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.

The action features parallel processing for improved performance - it will read and process multiple .trx files concurrently, convert them to typed JSON objects, and create GitHub Status checks in parallel. Each TRX file generates a detailed markup report with the report name and title derived from 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: $/TestResults #This should be the path to your TRX files
          REPO_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 | | OTEL_ENABLED | Enable OpenTelemetry telemetry collection | false | no | | HONEYCOMB_API_KEY | Honeycomb API key for telemetry export | nil | no | | HONEYCOMB_DATASET | Honeycomb dataset name for telemetry | trx-parser | no |

✨ Telemetry Support

This action now includes optional telemetry using OpenTelemetry and Honeycomb to help you monitor test execution patterns and performance. Telemetry is disabled by default and requires explicit configuration.

Key Features:

For detailed configuration and usage, see the Telemetry Documentation.

⚠️ GitHub Actions Limitations ⚠️

Architecture

This action features a modern, modular architecture designed for maintainability and performance:

🏗️ Modular Code Structure

The codebase is organized into focused, single-responsibility modules:

⚡ Performance Features

🔧 Modern Dependencies

Contributing

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

Development

The modular architecture makes it easy to:

Release Process

This repository uses automated releases powered by release-please. When you contribute:

  1. Use conventional commit messages (e.g., feat:, fix:, docs:)
  2. Release PRs are automatically created when commits are pushed to main
  3. Releases are automatically created when release PRs are merged
  4. Version numbers and changelogs are automatically generated

See docs/RELEASE.md for detailed information about the release process.