- 필수 기능
- 시작하기
- Glossary
- 표준 속성
- Guides
- Agent
- 통합
- 개방형텔레메트리
- 개발자
- Administrator's Guide
- API
- Datadog Mobile App
- CoScreen
- Cloudcraft
- 앱 내
- 서비스 관리
- 인프라스트럭처
- 애플리케이션 성능
- APM
- Continuous Profiler
- 스팬 시각화
- 데이터 스트림 모니터링
- 데이터 작업 모니터링
- 디지털 경험
- 소프트웨어 제공
- 보안
- AI Observability
- 로그 관리
- 관리
Use the @datadog-ci
NPM package to run Continuous Testing tests directly within your CI/CD pipeline. You can automatically halt a build, block a deployment, and roll back a deployment when a Synthetic test detects a regression.
Install the package through NPM:
npm install --save-dev @datadog/datadog-ci
Install the package through Yarn:
yarn add --dev @datadog/datadog-ci
To setup the client, your Datadog API and application keys need to be configured. These keys can be defined in three different ways:
Defined in a global JSON configuration file:
{
"apiKey": "<API_KEY>",
"appKey": "<APPLICATION_KEY>",
}
Defined as environment variables:
export DATADOG_API_KEY="<API_KEY>"
export DATADOG_APP_KEY="<APPLICATION_KEY>"
Passed to the CLI when running your tests:
yarn datadog-ci synthetics run-tests --apiKey "<API_KEY>" --appKey "<APPLICATION_KEY>"
Using a global configuration file (Global Config) is one of the ways to configure datadog-ci. To do so, create a JSON configuration file on your system. Specify the path to the file using the --config
flag or configure it through the DATADOG_SYNTHETICS_CONFIG_PATH
environment variable when launching your tests or uploading a new application. If you don’t specify a file path, Datadog looks for a file with the default filename of datadog-ci.json
.
See each command’s list of configurations below for the list of advanced options in the global configuration file relevant to each run-tests command and upload-application command. For an example configuration file, see this global-config-complete-example.json
file.
Example:
{
"apiKey": "<DATADOG_API_KEY>",
"appKey": "<DATADOG_APPLICATION_KEY>",
"batchTimeout": 180000,
"datadogSite": "datadoghq.com", // You can use another Datadog site in https://docs.datadoghq.com/getting_started/site/. By default, requests are sent to Datadog US1.
"defaultTestOverrides": {
"allowInsecureCertificates": true,
"basicAuth": {"username": "test", "password": "test"},
"body": "{\"fakeContent\":true}",
"bodyType": "application/json",
"cookies": "name1=value1;name2=value2;",
"setCookies": "name1=value1 \n name2=value2; Domain=example.com \n name3=value3; Secure; HttpOnly",
"defaultStepTimeout": 15,
"deviceIds": ["chrome.laptop_large"],
"executionRule": "skipped",
"followRedirects": true,
"headers": {"NEW_HEADER": "NEW VALUE"},
"locations": ["aws:us-east-1"],
"mobileApplicationVersion": "01234567-8888-9999-abcd-efffffffffff",
"mobileApplicationVersionFilePath": "path/to/application.apk",
"retry": {"count": 2, "interval": 300},
"startUrl": "{{URL}}?static_hash={{STATIC_HASH}}",
"startUrlSubstitutionRegex": "s/(https://www.)(.*)/$1extra-$2/",
"testTimeout": 300,
"variables": {"NEW_VARIABLE": "NEW VARIABLE"}
},
"failOnCriticalErrors": true,
"failOnMissingTests": true,
"failOnTimeout": true,
"files": ["{,!(node_modules)/**/}*.synthetics.json"],
"proxy": {
"auth": {
"username": "login",
"password": "pwd"
},
"host": "127.0.0.1",
"port": 3128,
"protocol": "http"
},
"subdomain": "subdomainname",
"tunnel": true
}
In addition to the global configuration file, you can configure all properties using environment variables. If a property is defined in both the global configuration file and as an environment variable, the environment variable takes precedence.
Example:
export DATADOG_SITE=datadoghq.com
The CLI provides another way to set options and configure the behavior of datadog-ci. These options will override the global configuration file and environment variables.
Example:
yarn datadog-ci synthetics run-tests --public-id pub-lic-id1
The priority of the 3 forms of configuration is as follows:
Global Config < Environment variables < CLI parameters
You can also use the datadog-ci
package as a library in your Node.js application to trigger tests. To do so, import the package from the Synthetics run-tests
command and call the executeWithDetails()
function.
import { synthetics } from '@datadog/datadog-ci'
const { results, summary } = await synthetics.executeTests(...)
You can configure a proxy to be used for outgoing connections to Datadog. To do this, use the proxy
key of the global configuration file or the HTTPS_PROXY
environment variable.
Note: This is the only exception where the global configuration file takes precedence over the environment variable. There is no option to set this through the CLI.
As the proxy-agent
library is used to configure the proxy, the supported protocols include http
, https
, socks
, socks4
, socks4a
, socks5
, socks5h
, pac+data
, pac+file
, pac+ftp
, pac+http
, and pac+https
. The proxy
key of the global configuration file is passed to a new proxy-agent
instance, which means the same configuration for the library is supported.
To use a proxy, you need to first set the CA certificate so datadog-ci trusts your proxy. You can do this by setting the NODE_EXTRA_CA_CERTS
environment variable to the path of your CA certificate. Otherwise, you might get a unable to verify the first certificate
error.
export NODE_EXTRA_CA_CERTS=/path/to/your-ca-cert.pem
When using the global configuration, host
and port
keys are mandatory arguments and the protocol
key defaults to http
if not defined.
Example:
{
...
"proxy": {
"auth": {
"username": "login",
"password": "pwd"
},
"host": "127.0.0.1",
"port": 3128,
"protocol": "http"
},
...
}
The format used for the HTTPS_PROXY
environment variable is <protocol>://<username>:<password>@<host>:<port>
, as described by the proxy-from-env library that proxy-agent
library uses for parsing env variables.
The HTTPS_PROXY
variable is used instead of the HTTP_PROXY
one, because the Datadog API uses the HTTPS protocol.
Example:
export HTTPS_PROXY=http://login:pwd@127.0.0.1:3128
If you want to confirm that a proxy is being used, you can set the DEBUG
environment variable to proxy-agent
like this:
DEBUG=proxy-agent yarn datadog-ci synthetics run-tests
Datadog is streamlining and enhancing the datadog-ci synthetics commands. In this effort, certain fields have been marked as deprecated. While these fields remain backwards compatible for now, they will not be supported with the release of a new major version. We highly advise transitioning away from these deprecated fields.
The following is a list of the changes:
global
field from the global configuration file is deprecated in favor of defaultTestOverrides
.config
field from the test configuration file is deprecated in favor of testOverrides
.pollingTimeout
option and --pollingTimeout
CLI parameter, that were on the Global Configuration level, are deprecated in favor of batchTimeout
and --batchTimeout
, respectively.pollingTimeout
option, on the Test Configuration level, is deprecated in favor of batchTimeout
in the global configuration file, or the --batchTimeout
CLI parameter.DATADOG_SYNTHETICS_LOCATIONS
has been deprecated in favor of DATADOG_SYNTHETICS_OVERRIDE_LOCATIONS
You can decide to have the CLI auto-discover all your **/*.synthetics.json
Synthetic tests (see test files) or specify the tests you want to run using the -p,--public-id
flag.
Run tests by executing the CLI through NPM:
Add the following to your package.json
:
{
"scripts": {
"datadog-ci-synthetics": "datadog-ci synthetics run-tests"
}
}
Then, run:
npm run datadog-ci-synthetics
Note: If you are launching your tests with a custom filename for the global configuration file, append the command associated to your datadog-ci-synthetics
script with --config <CUSTOM_PATH_TO_GLOBAL_CONFIG_FILE>
.
Run tests by executing the CLI through Yarn:
The run-tests
sub-command accepts the --public-id
(or shorthand -p
) argument to trigger only the specified test. It can be set multiple times to run multiple tests:
yarn datadog-ci synthetics run-tests --public-id pub-lic-id1 --public-id pub-lic-id2
It is also possible to trigger tests corresponding to a search query by using the --search
(or shorthand -s
) argument. With this option, the overrides defined in your global configuration file apply to all tests discovered with the search query.
yarn datadog-ci synthetics run-tests -s 'tag:e2e-tests'
You can use --files
(shorthand -f
) to override the default glob pattern (which would match all **/*.synthetics.json
files).
yarn datadog-ci synthetics run-tests -f ./component-1/**/*.synthetics.json -f ./component-2/**/*.synthetics.json
Note: If you are launching your tests with a custom filename for the global configuration file, append the command associated to your datadog-ci-synthetics
script with --config <CUSTOM_PATH_TO_GLOBAL_CONFIG_FILE>
.
apiKey
The API key used to query the Datadog API.
Configuration options
"apiKey": "<API_KEY>"
DATADOG_API_KEY="<API_KEY>"
--apiKey "<API_KEY>"
appKey
The application key used to query the Datadog API.
Configuration options
"appKey": "<APPLICATION_KEY>"
DATADOG_APP_KEY="<APPLICATION_KEY>"
--appKey "<APPLICATION_KEY>"
batchTimeout
The duration (integer in milliseconds) after which datadog-ci
stops waiting for test results. The default is 30 minutes. At the CI level, test results completed after this duration are considered failed.
Configuration options
"batchTimeout": 180000
DATADOG_SYNTHETICS_BATCH_TIMEOUT=180000
--batchTimeout 180000
configPath
The global JSON configuration is used when launching tests. See the example configuration for more details.
Configuration options
DATADOG_SYNTHETICS_CONFIG_PATH=global-config.json
--config global-config.json
datadogSite
The Datadog instance to which request is sent. The default is datadoghq.com
. Your Datadog site is .
Configuration options
"datadogSite": "datadoghq.com"
DATADOG_SITE=datadoghq.com
--datadogSite datadoghq.com
defaultTestOverrides
Overrides for Synthetic tests applied to all tests.
Configuration options
DATADOG_SYNTHETICS_OVERRIDE_...
pattern--override option=value
patternfailOnCriticalErrors
A boolean flag that fails the CI job if no tests were triggered, or results could not be fetched from Datadog. The default is set to false
.
Configuration options
"failOnCriticalErrors": true
DATADOG_SYNTHETICS_FAIL_ON_CRITICAL_ERRORS=true
--failOnCriticalErrors
/ --no-failOnCriticalErrors
failOnMissingTests
A boolean flag that fails the CI job if at least one specified test with a public ID (a --public-id
CLI argument or listed in a test file) is missing in a run (for example, if it has been deleted programmatically or on the Datadog site). The default is set to false
.
Configuration options
"failOnMissingTests": true
DATADOG_SYNTHETICS_FAIL_ON_MISSING_TESTS=true
--failOnMissingTests
/ --no-failOnMissingTests
failOnTimeout
A boolean flag that fails the CI job if at least one test exceeds the default batch timeout. The default is set to true
.
Configuration options
"failOnTimeout": true
DATADOG_SYNTHETICS_FAIL_ON_TIMEOUT=true
--failOnTimeout
/ --no-failOnTimeout
files
Glob patterns to detect Synthetic test configuration files.
Configuration options
"files": ["{,!(node_modules)/**/}*.synthetics.json"]
DATADOG_SYNTHETICS_FILES="{,!(node_modules)/**/}*.synthetics.json"
-f "{,!(node_modules)/**/}*.synthetics.json"
/ --files "{,!(node_modules)/**/}*.synthetics.json"
jUnitReport
The filename for a JUnit report if you want to generate one. The file created will be an XML file.
Configuration options
"jUnitReport": "e2e-test-junit.xml"
DATADOG_SYNTHETICS_JUNIT_REPORT="e2e-test-junit.xml"
-j "e2e-test-junit.xml"
/ --jUnitReport "e2e-test-junit.xml"
mobileApplicationVersionFilePath
Override the application version for all Synthetic mobile application tests.
Configuration options
"mobileApplicationVersionFilePath": "path/to/application.apk"
--mobileApp "path/to/application.apk"
/ --mobileApplicationVersionFilePath "path/to/application.apk"
proxy
The proxy to be used for outgoing connections to Datadog. host
and port
keys are mandatory arguments, the protocol
key defaults to http
. Supported values for the protocol
key are http
, https
, socks
, socks4
, socks4a
, socks5
, socks5h
, pac+data
, pac+file
, pac+ftp
, pac+http
, and pac+https
. The library used to configure the proxy is the proxy-agent library.
Configuration options
HTTPS_PROXY=http://login:pwd@127.0.0.1:3128
publicIds
List of IDs for the Synthetic tests you want to trigger.
Configuration options
"publicIds": ["abc-def-ghi", "123-456-789"]
DATADOG_SYNTHETICS_PUBLIC_IDS="abc-def-ghi;123-456-789"
-p "abc-def-ghi" --public-id "123-456-789"
selectiveRerun
A boolean flag to only run the tests which failed in the previous test batches. By default, the organization default setting is used. Use the --no-selectiveRerun
CLI flag or selectiveRerun: false
to force a full run.
Configuration options
"selectiveRerun": true
DATADOG_SYNTHETICS_SELECTIVE_RERUN=true
--selectiveRerun
/ --no-selectiveRerun
subdomain
The name of the custom subdomain set to access your Datadog application. If the URL used to access Datadog is myorg.datadoghq.com
, the subdomain
value needs to be set to myorg
.
Configuration options
"subdomain": "myorg"
DATADOG_SUBDOMAIN="myorg"
--subdomain "myorg"
testSearchQuery
Pass a query to select which Synthetic tests to run.
Configuration options
"testSearchQuery": "tag:e2e-tests"
DATADOG_SYNTHETICS_TEST_SEARCH_QUERY="tag:e2e-tests"
-s "tag:e2e-tests"
/ --search "tag:e2e-tests"
tunnel
Use Local and Staging Environments to execute your test batch.
Configuration options
"tunnel": true
DATADOG_SYNTHETICS_TUNNEL=true
-t
/ --tunnel
/ --no-tunnel
All test overrides are optional and allow overriding the test configuration that is stored in Datadog.
These overrides can either be applied to all tests with defaultTestOverrides
in the global configuration file, or to some specific tests with testOverrides
in a test configuration file.
These options can also be set with environment variables starting with DATADOG_SYNTHETICS_OVERRIDE_...
or with the --override
CLI parameter following this pattern: --override option=value
.
allowInsecureCertificates
(Boolean)Disable certificate checks in Synthetic API and Browser tests.
Configuration options
"allowInsecureCertificates": true
DATADOG_SYNTHETICS_OVERRIDE_ALLOW_INSECURE_CERTIFICATES=true
--override allowInsecureCertificates=true
basicAuth
(Object)Credentials to provide if basic authentication is required.
username
(String): The username for basic authentication.password
(String): The password for basic authentication.Configuration options
"basicAuth": {"username": "test_username", "password": "test_password"}
DATADOG_SYNTHETICS_OVERRIDE_BASIC_AUTH_USERNAME=test_username
DATADOG_SYNTHETICS_OVERRIDE_BASIC_AUTH_PASSWORD=test_password
--override basicAuth.username=test_username
--override basicAuth.password=test_password
body
(String)Data to send in an API test.
Configuration options
"body": "{\"fakeContent\":true}"
DATADOG_SYNTHETICS_OVERRIDE_BODY={"fakeContent":true}
--override body={"fakeContent":true}
bodyType
(String)Content type for the data to send in an API test.
Configuration options
"bodyType": "application/json"
DATADOG_SYNTHETICS_OVERRIDE_BODY_TYPE=application/json
--override bodyType=application/json
cookies
(String or object)Use the provided string as a cookie header in an API or browser test (in addition or as a replacement).
{append?: boolean, value: string}
, and depending on the value of append
, it is appended or replaces the original cookies.Configuration options
"cookies": "name1=value1;name2=value2"
(equivalent to "append": false
) or "cookies": {"append": true, "value": "name1=value1;name2=value2"}
DATADOG_SYNTHETICS_OVERRIDE_COOKIES="name1=value1;name2=value2"
DATADOG_SYNTHETICS_OVERRIDE_COOKIES_APPEND=true
--override cookies="name1=value1;name2=value2"
--override cookies.append=true
setCookies
(String or object)Use the provided string as a set-cookie header in a browser test only (in addition or as a replacement).
{append?: boolean, value: string}
, and depending on the value of append
, it is appended or replaces the original set-cookies.Configuration options
"setCookies": "name1=value1 \n name2=value2; Domain=example.com \n name3=value3; Secure; HttpOnly"
(equivalent to "append": false
) or "setCookies": {"append": true, "value": "setCookies": "name1=value1 \n name2=value2; Domain=example.com \n name3=value3; Secure; HttpOnly"}
DATADOG_SYNTHETICS_OVERRIDE_SET_COOKIES="name1=value1;name2=value2"
DATADOG_SYNTHETICS_OVERRIDE_SET_COOKIES_APPEND=true
--override setCookies="setCookies": "name1=value1 \n name2=value2; Domain=example.com \n name3=value3; Secure; HttpOnly"
--override setCookies.append=true
defaultStepTimeout
(Number)The maximum duration of steps in seconds for browser tests, which does not override individually set step timeouts.
Configuration options
"defaultStepTimeout": 15
DATADOG_SYNTHETICS_OVERRIDE_DEFAULT_STEP_TIMEOUT=15
--override defaultStepTimeout=15
deviceIds
(Array)A list of devices to run the browser test on. The values that it can take can be found in the Datadog Synthetics Terraform documentation.
Configuration options
"deviceIds": ["chrome.laptop_large", "firefox.tablet"]
DATADOG_SYNTHETICS_OVERRIDE_DEVICE_IDS="chrome.laptop_large;firefox.tablet"
--override deviceIds="chrome.laptop_large;firefox.tablet"
executionRule
(String)The execution rule for the test defines the behavior of the CLI in case of a failing test. It accepts one of the following values:
blocking
: The CLI returns an error if the test fails.non_blocking
: The CLI only prints a warning if the test fails.skipped
: The test is not executed at all.Configuration options
"executionRule": "skipped"
DATADOG_SYNTHETICS_OVERRIDE_EXECUTION_RULE=skipped
--override executionRule=skipped
followRedirects
(Boolean)Indicates whether or not to follow HTTP redirections in Synthetic API tests.
Configuration options
"followRedirects": true
DATADOG_SYNTHETICS_OVERRIDE_FOLLOW_REDIRECTS=true
--override followRedirects=true
headers
(Object)This object specifies the headers to be replaced in the test. It should have keys representing the names of the headers to be replaced, and values indicating the new header values.
Configuration options
"headers": {"NEW_HEADER_1": "NEW VALUE 1", "NEW_HEADER_2": "NEW VALUE 2"}
DATADOG_SYNTHETICS_OVERRIDE_HEADERS='{"NEW_HEADER_1":"NEW VALUE 1", "NEW_HEADER_2":"NEW VALUE 2"}'
(note this must be a valid JSON)--override headers.NEW_HEADER_1="NEW VALUE 1"
--override headers.NEW_HEADER_2="NEW VALUE 2"
locations
(Array)A list of locations to run the test from. The specific values that it can accept for your org can be found here.
Configuration options
"locations": ["aws:us-east-1", "gcp:europe-west3"]
DATADOG_SYNTHETICS_OVERRIDE_LOCATIONS="aws:us-east-1;gcp:europe-west3"
--override locations="aws:us-east-1;gcp:europe-west3"
mobileApplicationVersion
(String)Override the default mobile application version for a Synthetic mobile application test. The version must be uploaded and available within Datadog.
Configuration options
"mobileApplicationVersion": "01234567-8888-9999-abcd-efffffffffff"
DATADOG_SYNTHETICS_OVERRIDE_MOBILE_APPLICATION_VERSION=01234567-8888-9999-abcd-efffffffffff
--mobileApplicationVersion=01234567-8888-9999-abcd-efffffffffff
mobileApplicationVersionFilePath
(String)Override the application version for a Synthetic mobile application test.
Configuration options
"mobileApplicationVersionFilePath": "path/to/application.apk"
--mobileApplicationVersionFilePath=path/to/application.apk
retry
(Object)The retry policy for the test. The 2 possible attributes for this object are independent:
count
(Integer): The number of attempts to perform in case of test failure.interval
(Integer): The interval between attempts in milliseconds.Configuration options
"retry": {"count": 2, "interval": 300}
DATADOG_SYNTHETICS_OVERRIDE_RETRY_COUNT=2
DATADOG_SYNTHETICS_OVERRIDE_RETRY_INTERVAL=300
--override retry.count=2
--override retry.interval=300
startUrl
(String)The new start URL to provide to the test. Variables specified in brackets (for example, {{ EXAMPLE }}
) found in environment variables are replaced.
Configuration options
"startUrl": "{{URL}}?static_hash={{STATIC_HASH}}"
DATADOG_SYNTHETICS_OVERRIDE_START_URL="{{URL}}?static_hash={{STATIC_HASH}}"
--override startUrl="{{URL}}?static_hash={{STATIC_HASH}}"
startUrlSubstitutionRegex
(String)The regex to modify the starting URL of the test (for browser and HTTP tests only), whether it was given by the original test or the configuration override startUrl.
If the URL contains variables, this regex applies after the interpolation of the variables.
There are two possible formats:
your_regex|your_substitution
: The pipe-based syntax, to avoid any conflicts with / characters in URLs. For example, https://example.com(.*)|http://subdomain.example.com$1
to transform https://example.com/test
to http://subdomain.example.com/test
.s/your_regex/your_substitution/modifiers
: The slash syntax, which supports modifiers. For example, s/(https://www.)(.*)/$1extra-$2/
to transform https://www.example.com
into https://www.extra-example.com
.Configuration options
"startUrlSubstitutionRegex": "s/(https://www.)(.*)/$1extra-$2/"
DATADOG_SYNTHETICS_OVERRIDE_START_URL_SUBSTITUTION_REGEX="s/(https://www.)(.*)/$1extra-$2/"
--override startUrlSubstitutionRegex="s/(https://www.)(.*)/$1extra-$2/"
testTimeout
(Number)The maximum duration of a browser test in seconds.
Configuration options
"testTimeout": 300
DATADOG_SYNTHETICS_OVERRIDE_TEST_TIMEOUT=300
--override testTimeout=300
variables
(Object)This object defines the variables to be substituted in the test. It should include keys corresponding to the names of the variables to be replaced, and values representing the new values for these variables.
Configuration options
"variables": {"NEW_VARIABLE_1": "NEW VARIABLE 1", "NEW_VARIABLE_2": "NEW VARIABLE 2"}
DATADOG_SYNTHETICS_OVERRIDE_VARIABLES='{"NEW_VARIABLE_1":"NEW VARIABLE 1", "NEW_VARIABLE_2":"NEW VARIABLE 2"}'
(note this must be a valid JSON)--override variables.NEW_VARIABLE_1="NEW VARIABLE 1"
--override variables.NEW_VARIABLE_2="NEW VARIABLE 2"
To configure which URL your test starts on, provide a startUrl
to your test object. Build your own starting URL with any part of your test’s original starting URL and include environment variables.
If the organization uses a custom sub-domain to access Datadog, this needs to be set in the DATADOG_SUBDOMAIN
environment variable or in the global configuration file under the subdomain
key in order to properly display the test results URL.
For example, if the URL used to access Datadog is myorg.datadoghq.com
, set the environment variable to myorg
:
export DATADOG_SUBDOMAIN="myorg"
You can use DATADOG_SYNTHETICS_OVERRIDE_LOCATIONS
to override the locations where your tests run. Locations should be separated with a semicolon (;
). The configuration in test files takes precedence over other overrides.
export DATADOG_SYNTHETICS_OVERRIDE_LOCATIONS="aws:us-east-1;aws:us-east-2"
Test configuration files (Test Config) let you customize individual tests or set up multiple runs of the same test with different settings, beyond what you can do with other configuration methods.
You can find a list of all these options in the test overrides section.
These files take precedence over global configuration files, environment variables, and CLI parameters. The priority order including test configurations is as follows:
Global Config < Environment variables < CLI parameters < Test Config
To determine which tests to run, one or more of those options may be passed to datadog-ci
:
If none of these options is passed, datadog-ci
auto-discovers test configuration files with the {,!(node_modules)/**/}*.synthetics.json
glob pattern (every file ending with .synthetics.json
, except for those in the node_modules
folder).
Note: The file search starts from the current working directory, so it may be slow if the command is run from a large directory, like a home folder. If file search command is too slow, consider:
files
option.*
instead of **
or by adding a specific folder to the pattern.The <TEST_PUBLIC_ID>
can be either the identifier of the test found in the URL of a test details page (for example, for https://app.datadoghq.com/synthetics/details/abc-def-ghi
, it would be abc-def-ghi
) or the full URL to the details page (for example, directly https://app.datadoghq.com/synthetics/details/abc-def-ghi
).
Example:
// myTest.synthetics.json
{
"tests": [
{
"id": "<TEST_PUBLIC_ID_1>",
"testOverrides": {
"allowInsecureCertificates": true,
"basicAuth": {"username": "test", "password": "test"},
"body": "{\"fakeContent\":true}",
"bodyType": "application/json",
"cookies": "name1=value1;name2=value2;",
"defaultStepTimeout": 15,
"deviceIds": ["chrome.laptop_large"],
"executionRule": "skipped",
"followRedirects": true,
"headers": {"NEW_HEADER": "NEW VALUE"},
"locations": ["aws:us-east-1"],
"mobileApplicationVersion": "01234567-8888-9999-abcd-efffffffffff",
"mobileApplicationVersionFilePath": "path/to/application.apk",
"retry": {"count": 2, "interval": 300},
"startUrl": "{{URL}}?static_hash={{STATIC_HASH}}",
"startUrlSubstitutionRegex": "s/(https://www.)(.*)/$1extra-$2/",
"testTimeout": 300,
"variables": {"MY_VARIABLE": "new title"}
}
},
{
"id": "<TEST_PUBLIC_ID_2>",
"testOverrides": {
"allowInsecureCertificates": true,
...
"variables": {"MY_VARIABLE": "new title"}
}
}
]
}
This command uploads a new version to an existing mobile application.
apiKey
The API key used to query the Datadog API.
Configuration options
"apiKey": "<API_KEY>"
DATADOG_API_KEY="<API_KEY>"
--apiKey "<API_KEY>"
appKey
The application key used to query the Datadog API.
Configuration options
"appKey": "<APPLICATION_KEY>"
DATADOG_APP_KEY="<APPLICATION_KEY>"
--appKey "<APPLICATION_KEY>"
configPath
The global JSON configuration is used when launching tests. See the example configuration for more details.
Configuration options
DATADOG_SYNTHETICS_CONFIG_PATH=global-config.json
--config global-config.json
datadogSite
The Datadog instance to which request is sent. The default is datadoghq.com
. Your Datadog site is .
Configuration options
"datadogSite": "datadoghq.com"
DATADOG_SITE=datadoghq.com
--datadogSite datadoghq.com
latest
If present, marks the application as ’latest’. Any tests that run on the latest version will use this version on their next run.
Configuration options
"latest": true
DATADOG_SYNTHETICS_LATEST=true
--latest
/ --no-latest
mobileApplicationId
The ID of the application you want to upload the new version to.
Configuration options
"mobileApplicationId": "123-123-123"
DATADOG_SYNTHETICS_MOBILE_APPLICATION_ID=123-123-123
--mobileApplicationId 123-123-123
mobileApplicationVersionFilePath
The path to your mobile application (.apk
or .ipa
).
Configuration options
"mobileApplicationVersionFilePath": example/test.apk
--mobileApplicationVersionFilePath example/test.apk
proxy
The proxy to be used for outgoing connections to Datadog. host
and port
keys are mandatory arguments, the protocol
key defaults to http
. Supported values for the protocol
key are http
, https
, socks
, socks4
, socks4a
, socks5
, socks5h
, pac+data
, pac+file
, pac+ftp
, pac+http
, and pac+https
. The library used to configure the proxy is the proxy-agent library.
Configuration options
versionName
The name of the new version. It has to be unique.
Configuration options
"versionName": "example"
DATADOG_SYNTHETICS_VERSION_NAME=example
--versionName example
Example:
datadog-ci synthetics upload-application \
--mobileApplicationId '123-123-123' \
--mobileApplicationVersionFilePath example/test.apk \
--versionName 'example 1.0' \
--latest
You can also pass these options in a configuration file:
{
"apiKey": "<DATADOG_API_KEY>",
"appKey": "<DATADOG_APPLICATION_KEY>",
"mobileApplicationVersionFilePath": "example_path/example_app.apk",
"mobileApplicationId": "example-abc",
"versionName": "example",
"latest": true
}
These options can also be added to the same global configuration file used for the run-tests command.
Pass this config file to the command with the --config
flag:
datadog-ci synthetics upload-application --config global-config.json
The default file name for the global configuration file is datadog-ci.json
. If you use this name for your global configuration file, you may omit the --config
flag.
You can combine variable overrides with Local and Staging Environments to run tests within your development environment. This connection ensures that all test requests sent through the CLI are automatically routed through the datadog-ci
client.
This allows you to run tests with end-to-end encryption at every stage of your software development lifecycle, from pre-production environments to your production system.
To verify the Synthetics command works as expected, trigger a test run and verify it returns 0:
export DATADOG_API_KEY='<API_KEY>'
export DATADOG_APP_KEY='<APPLICATION_KEY>'
yarn datadog-ci synthetics run-tests --public-id abc-def-ghi
Successful output should look like this:
[abc-def-ghi] Trigger test "Check on testing.website"
[abc-def-ghi] Waiting results for "Check on testing.website"
=== REPORT ===
Took 11546ms
✓ [abc-def-ghi] | Check on testing.website
✓ location: Frankfurt (AWS)
⎋ total duration: 28.9 ms - result url: https://app.datadoghq.com/synthetics/details/abc-def-ghi?resultId=123456789123456789
✓ GET - https://testing.website
Two reporters are supported out-of-the-box:
stdout
To enable the JUnit report, pass the --jUnitReport
(-j
shorthand) in your command, specifying a filename for your JUnit XML report.
yarn datadog-ci synthetics run-tests -s 'tag:e2e-tests' --config global-config.json --jUnitReport e2e-test-junit
Reporters can hook themselves into the MainReporter
of the command.
Hook name | Parameters | Description |
---|---|---|
log | (log: string) | Called for logging. |
error | (error: string) | Called whenever an error occurs. |
initErrors | (errors: string[]) | Called whenever an error occurs during the tests parsing phase. |
testTrigger | (test: Test, testId: string, executionRule: ExecutionRule, config: UserConfigOverride) | Called when a test is triggered. |
testWait | (test: Test) | Called when a test is waiting to receive its results. |
testsWait | (tests: Test[], baseUrl: string, batchId: string, skippedCount?: number) | Called when all tests are waiting to receive their results. |
resultReceived | (result: ResultInBatch) | Called when a result is received. |
resultEnd | (result: Result, baseUrl: string) | Called for each result at the end of all results. |
reportStart | (timings: {startTime: number}) | Called at the start of the report. |
runEnd | (summary: Summary, baseUrl: string, orgSettings?: SyntheticsOrgSettings) | Called at the end of the run. |
You can see results for CI batches by clicking on a batch in the Synthetic Monitoring & Testing Results Explorer or clicking on a test on the Tests page.
You can also see the outcome of test executions directly in your CI as your tests are being executed. To identify what caused a test to fail, look at the execution logs and search for causes of the failed assertion.
yarn datadog-ci synthetics run-tests --config global-config.json
yarn run v1.22.4
$ /Users/demo.user/go/src/github.com/Datadog/tmp/test/testDemo/node_modules/.bin/datadog-ci synthetics run-tests --config global-config.json
Finding files matching /Users/demo.user/go/src/github.com/Datadog/tmp/test/testDemo/{,!(node_modules)/**/}*.synthetics.json
Got test files:
- user.synthetics.json
[2cj-h3c-39x] Trigger test "Test CI connection"
[2cj-h3c-39x] Waiting results for "Test CI connection"
=== REPORT ===
Took 2242ms
x [2cj-h3c-39x] | Test CI connection
* location: 30019
⎋ total duration: 32.6 ms - result url: https://app.datadoghq.com/synthetics/details/2cj-h3c-39x?resultId=122140688175981634
x GET - https://www.datadoghq.com
[INCORRECT_ASSUMPTION] - [{"index":1,"operator":"is","property":"content-type","type":"header","target":"text/html","valid":false,"actual":"text/html"; charset=utf-8"}]
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
Additional helpful documentation, links, and articles: