# synthetics-ci-github-action
**Repository Path**: mirrors_DataDog/synthetics-ci-github-action
## Basic Information
- **Project Name**: synthetics-ci-github-action
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2022-01-05
- **Last Updated**: 2023-08-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## Overview

Trigger Datadog Synthetic tests from your GitHub workflows.
For more information on the available configuration, see the [`datadog-ci synthetics run-tests` documentation][1].
## Setup
To get started:
1. Add your Datadog API and Application Keys as secrets to your GitHub repository.
- For more information, see [API and Application Keys][2].
2. In your GitHub workflow, use `DataDog/synthetics-ci-github-action`.
Your workflow can be [simple](#simple-workflows) or [complex](#complex-workflows).
## Simple workflows
### Example workflow using public IDs
```yaml
name: Run Synthetic tests using the test public IDs
jobs:
e2e_testing:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Run Datadog Synthetic tests
uses: DataDog/synthetics-ci-github-action@v3.3.0
with:
api-key: ${{secrets.DD_API_KEY}}
app-key: ${{secrets.DD_APP_KEY}}
public-ids: |
abc-d3f-ghi
jkl-mn0-pqr
```
### Example workflow using an existing `synthetics.json` file
```yaml
name: Run Synthetic tests using an existing synthetics.json file
jobs:
e2e_testing:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Run Datadog Synthetic tests
uses: DataDog/synthetics-ci-github-action@v3.3.0
with:
api-key: ${{secrets.DD_API_KEY}}
app-key: ${{secrets.DD_APP_KEY}}
```
For an example test file, see this [`test.synthetics.json` file][12].
**Note**: By default, this workflow runs all the tests listed in `{,!(node_modules)/**/}*.synthetics.json` files (every file ending with `.synthetics.json` except for those in the `node_modules` folder). You can also trigger a list of Synthetic tests by specifying a `public_id` or using a search query.
## Complex workflows
### Example workflow using the `test_search_query`
```yaml
name: Run Synthetic tests by test tag
jobs:
e2e_testing:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Run Datadog Synthetic tests
uses: DataDog/synthetics-ci-github-action@v3.3.0
with:
api-key: ${{secrets.DD_API_KEY}}
app-key: ${{secrets.DD_APP_KEY}}
test-search-query: 'tag:e2e-tests'
```
### Example workflow using a test search query and variable overrides
```yaml
name: Run Synthetic tests using search query
jobs:
e2e_testing:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Run Datadog Synthetic tests
uses: DataDog/synthetics-ci-github-action@v3.3.0
with:
api-key: ${{secrets.DD_API_KEY}}
app-key: ${{secrets.DD_APP_KEY}}
test-search-query: 'tag:staging'
variables: 'START_URL=https://staging.website.com,PASSWORD=stagingpassword'
```
### Example workflow using a global configuration file with `config_path`
By default, the path to the global configuration file is `datadog-ci.json`. You can override this path with the `config_path` input.
```yaml
name: Run Synthetic tests with custom config
jobs:
e2e_testing:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Run Datadog Synthetic tests
uses: DataDog/synthetics-ci-github-action@v3.3.0
with:
api-key: ${{secrets.DD_API_KEY}}
app-key: ${{secrets.DD_APP_KEY}}
config-path: './global.config.json'
```
## Inputs
For more information on the available configuration, see the [`datadog-ci synthetics run-tests` documentation][1].
| Name | Description |
| ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `api-key` | (**Required**) Your Datadog API key. This key is [created in your Datadog organization][2] and should be stored as a [secret][3]. |
| `app-key` | (**Required**) Your Datadog application key. This key is [created in your Datadog organization][2] and should be stored as a [secret][3]. |
| `batch-timeout` | Specifies the timeout duration in milliseconds for the CI batch. When a batch times out, the CI job fails and no new test runs are triggered, but ongoing test runs complete normally.
**Default:** `1800000` (30 minutes) |
| `config-path` | The path to the [global configuration file][4] that configures datadog-ci.
**Default:** `datadog-ci.json` |
| `datadog-site` | Your Datadog site. The possible values are listed [in this table][11].
**Default:** `datadoghq.com` |
| `fail-on-critical-errors` | Fail the CI job if a critical error that is typically transient occurs, such as rate limits, authentication failures, or Datadog infrastructure issues.
**Default:** `false` |
| `fail-on-missing-tests` | Fail the CI job if the list of tests to run is empty or if some explicitly listed tests are missing.
**Default:** `false` |
| `fail-on-timeout` | Fail the CI job if the CI batch fails as timed out.
**Default:** `true` |
| `files` | Glob patterns to detect Synthetic [test configuration files][12], separated by new lines.
**Default:** `{,!(node_modules)/**/}*.synthetics.json` |
| `junit-report` | The filename for a JUnit report if you want to generate one.
**Default:** none |
| `locations` | Override the list of locations to run the test from, separated by new lines or commas. The possible values are listed [in this API response][17].
**Default:** none |
| `public-ids` | Public IDs of Synthetic tests to run, separated by new lines or commas. If no value is provided, tests are discovered in Synthetic [test configuration files][12].
**Default:** none |
| `selective-rerun` | Whether to only rerun failed tests. If a test has already passed for a given commit, it is not rerun in subsequent CI batches. By default, your [organization's default setting][16] is used. Set it to `false` to force full runs when your configuration enables it by default.
**Default:** none |
| `subdomain` | The custom subdomain to access your Datadog organization. If your URL is `myorg.datadoghq.com`, the custom subdomain is `myorg`.
**Default:** `app` |
| `test-search-query` | Use a [search query][5] to select which Synthetic tests to run. Use the [Synthetic Tests list page's search bar][13] to craft your query, then copy and paste it.
**Default:** none |
| `tunnel` | Use the [Continuous Testing tunnel][9] to launch tests against internal environments.
**Default:** `false` |
| `variables` | Override existing or inject new local and [global variables][14] in Synthetic tests as key-value pairs, separated by new lines or commas. For example: `START_URL=https://example.org,MY_VARIABLE=My title`.
**Default:** none |
## Outputs
| Name | Description |
| --------------------------- | ------------------------------------------------------------------------------------ |
| `batch-url` | The URL of the CI batch. |
| `critical-errors-count` | The number of critical errors that occurred during the CI batch. |
| `failed-count` | The number of results that failed during the CI batch. |
| `failed-non-blocking-count` | The number of results that failed during the CI batch without blocking the CI. |
| `passed-count` | The number of results that passed during the CI batch. |
| `previously-passed-count` | The number of results that already passed in previous CI batches on the same commit. |
| `tests-not-found-count` | The number of tests that could not be found when starting the CI batch. |
| `tests-skipped-count` | The number of tests that were skipped when starting the CI batch. |
| `timed-out-count` | The number of results that failed due to the CI batch timing out. |
| `raw-results` | The [`synthetics.Result[]`][18] array, as a JSON-encoded string. |
## Contributing
See [CONTRIBUTING.md](./CONTRIBUTING.md)
## Further reading
Additional helpful documentation, links, and articles:
- [Getting Started with Continuous Testing][15]
- [Continuous Testing and CI/CD Configuration][6]
- [Best practices for continuous testing with Datadog][10]
[1]: https://docs.datadoghq.com/continuous_testing/cicd_integrations/configuration/?tab=npm#run-tests-command
[2]: https://docs.datadoghq.com/account_management/api-app-keys/
[3]: https://docs.github.com/en/actions/reference/encrypted-secrets
[4]: https://docs.datadoghq.com/continuous_testing/cicd_integrations/configuration/?tab=npm#global-configuration-file
[5]: https://docs.datadoghq.com/synthetics/explore/#search
[6]: https://docs.datadoghq.com/continuous_testing/cicd_integrations/configuration
[7]: https://semver.org/#summary
[8]: https://github.com/DataDog/synthetics-ci-github-action/tags
[9]: https://docs.datadoghq.com/continuous_testing/environments/proxy_firewall_vpn#what-is-the-testing-tunnel
[10]: https://www.datadoghq.com/blog/best-practices-datadog-continuous-testing/
[11]: https://docs.datadoghq.com/getting_started/site/#access-the-datadog-site
[12]: https://docs.datadoghq.com/continuous_testing/cicd_integrations/configuration/?tab=npm#test-files
[13]: https://app.datadoghq.com/synthetics/tests
[14]: https://docs.datadoghq.com/synthetics/platform/settings/?tab=specifyvalue#global-variables
[15]: https://docs.datadoghq.com/getting_started/continuous_testing/
[16]: https://app.datadoghq.com/synthetics/settings/continuous-testing
[17]: https://app.datadoghq.com/api/v1/synthetics/locations?only_public=true
[18]: https://github.com/DataDog/datadog-ci/blob/251299775d28b0535d0e5557fcc494a8124d3b11/src/commands/synthetics/interfaces.ts#L196-L227