Skip to content
datadog

GitHub Action

Configure Datadog Test Visibility

v1.0.8 Latest version

Configure Datadog Test Visibility

datadog

Configure Datadog Test Visibility

Installs Datadog tracers for configured languages and enables Test Visibility

Installation

Copy and paste the following snippet into your .yml file.

              

- name: Configure Datadog Test Visibility

uses: DataDog/[email protected]

Learn more about this action in DataDog/test-visibility-github-action

Choose a version

Datadog Test Visibility GitHub Action

GitHub Action that installs and configures Datadog Test Visibility. Supported languages are .NET, Java, Javascript, and Python.

About Datadog Test Visibility

Test Visibility provides a test-first view into your CI health by displaying important metrics and results from your tests. It can help you investigate and mitigate performance problems and test failures that are most relevant to your work, focusing on the code you are responsible for, rather than the pipelines which run your tests.

Usage

  1. Set Datadog API key inside Settings > Secrets as DD_API_KEY.

  2. Add a step to your GitHub Actions workflow YAML that uses this action. Set the language, service name and site parameters:

    steps:
      - name: Configure Datadog Test Visibility
        uses: datadog/[email protected]
        with:
          languages: java
          service: my-service
          api_key: ${{ secrets.DD_API_KEY }}
          site: datadoghq.com # Change if your site is not US1
      - name: Run unit tests
        run: |
          mvn clean test

Important

It is best if the new step comes right before the step that runs your tests. Otherwise, installed tracing libraries might be removed by the steps that precede tests execution (for example, actions/checkout will wipe out whatever was installed in the action workspace).

Configuration

The action has the following parameters:

Name Description Required Default
languages List of languages to be instrumented. Can be either "all" or any of "java", "js", "python", "dotnet" (multiple languages can be specified as a space-separated list). true
service The name of the service or library being tested. true
api_key Datadog API key. Can be found at https://app.datadoghq.com/organization-settings/api-keys true
site Datadog site. See https://docs.datadoghq.com/getting_started/site for more information about sites. false datadoghq.com
dotnet-tracer-version The version of Datadog .NET tracer to use. Defaults to the latest release. false
java-tracer-version The version of Datadog Java tracer to use. Defaults to the latest release. false
js-tracer-version The version of Datadog JS tracer to use. Defaults to the latest release. false
python-tracer-version The version of Datadog Python tracer to use. Defaults to the latest release. false
java-instrumented-build-system If provided, only the specified build systems will be instrumented (allowed values are gradle and maven). Otherwise every Java process will be instrumented. false

Additional configuration

Any additional configuration values can be added directly to the step that runs your tests:

- name: Run unit tests
  run: |
    mvn clean test
  env:
    DD_ENV: staging-tests
    DD_TAGS: layer:api,team:intake,key:value

Limitations

For security reasons Github does not allow actions to alter the NODE_OPTIONS environment variable, so you'll have to pass it manually.

Tracing JS tests (except vitest)

If you're running tests with vitest, go to Tracing vitest tests.

To work around the NODE_OPTIONS limitation, the action provides a separate DD_TRACE_PACKAGE variable that needs to be appended to NODE_OPTIONS manually:

- name: Run tests
  shell: bash
  run: npm run test-ci
  env:
    NODE_OPTIONS: -r ${{ env.DD_TRACE_PACKAGE }}

Tracing vitest tests

ℹ️ This section is only relevant if you're running tests with vitest.

To work around the NODE_OPTIONS limitation, the action provides a separate DD_TRACE_PACKAGE and DD_TRACE_ESM_IMPORT variables that need to be appended to NODE_OPTIONS manually:

- name: Run tests
  shell: bash
  run: npm run test:vitest
  env:
    NODE_OPTIONS: -r ${{ env.DD_TRACE_PACKAGE }} --import ${{ env.DD_TRACE_ESM_IMPORT }}

Important: vitest and dd-trace require Node.js>=18.19 or Node.js>=20.6 to work together.