Configuración de Continuous Testing y CI/CD
Esta página está dedicada a la configuración de tests de Continuous Testing para tus pipelines de Continuous Integration (CI) y Continuous Delivery (CD). Si quieres incorporar tus métricas y datos de CI/CD en dashboards de Datadog, consulta la sección
CI Visibility.
Utiliza el paquete NPM @datadog/datadog-ci para ejecutar tests de Continuous Testing directamente en tu pipeline de CI/CD. Puedes detener automáticamente una compilación, bloquear un despliegue y revertir un despliegue cuando un test Synthetic detecta una regresión.
Configuración
Instalar el paquete
Instala el paquete a través de NPM:
npm install --save-dev @datadog/datadog-ci
Instala el paquete a través de Yarn:
yarn add --dev @datadog/datadog-ci
A continuación, ejecuta el siguiente comando para instalar el complemento Synthetic:
datadog-ci plugin install synthetics
Configurar el cliente
Para configurar el cliente, es necesario configurar la API Datadog y las claves de la aplicación. Estas claves pueden definirse de tres formas diferentes:
Definido en un archivo de configuración global:
{
"apiKey": "<API_KEY>",
"appKey": "<APPLICATION_KEY>",
}
Definidas como variables de entorno:
export DD_API_KEY="<API_KEY>"
export DD_APP_KEY="<APPLICATION_KEY>"
Trasladadas a la CLI al ejecutar tus tests:
yarn datadog-ci synthetics run-tests --apiKey "<API_KEY>" --appKey "<APPLICATION_KEY>"
Archivo de configuración global
El uso de un archivo de configuración global (Global Config) es una de las formas de configurar datadog-ci. Para ello, crea un archivo de configuración JSON en tu sistema. Especifica la ruta al archivo utilizando el indicador--config o configúralo mediante la variable de entorno DATADOG_SYNTHETICS_CONFIG_PATH al iniciar los tests o al cargar una nueva aplicación. Si no especificas una ruta al archivo, Datadog busca un archivo con el nombre por defecto datadog-ci.json.
Consulta la lista de configuraciones de cada comando a continuación para ver la lista de opciones avanzadas del archivo de configuración global relevantes para cada comando run-tests y comando upload-application. Para ver un archivo de configuración de ejemplo, consulta este archivoglobal-config-complete-example.json.
Ejemplo:
{
"apiKey": "<API_KEY>",
"appKey": "<APPLICATION_KEY>",
"batchTimeout": 1800000,
"datadogSite": "datadoghq.com",
"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",
"resourceUrlSubstitutionRegexes": ["(https://www.)(.*)|$1staging-$2"],
"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
}
Variables de entorno
Además del archivo de configuración global, puedes configurar todas las propiedades utilizando variables de entorno. Si una propiedad está definida tanto en el archivo de configuración global como en una variable de entorno, esta última tiene prioridad.
Ejemplo:
export DATADOG_SITE=datadoghq.com
Opciones de la línea de comandos
La CLI ofrece otra forma de definir opciones y configurar el comportamiento de datadog-ci. Estas opciones anularán el archivo de configuración global y las variables de entorno.
Ejemplo:
yarn datadog-ci synthetics run-tests --public-id pub-lic-id1
La prioridad de las 3 formas de configuración es la siguiente:
Global Config < Environment variables < CLI parameters
Uso de datadog-ci como biblioteca
También puedes utilizar el paquete datadog-ci como biblioteca en tu aplicación Node.js para activar los tests. Para ello, importa el paquete del comando Synthetics run-tests y llama a la función executeWithDetails().
import * as synthetics from '@datadog/datadog-ci-plugin-synthetics'
const { results, summary } = await synthetics.executeTests(...)
Uso de un proxy
Puedes configurar un proxy que se utilizará para las conexiones salientes a Datadog. Para ello, utiliza la clave proxy del archivo de configuración global o la variable de entorno HTTPS_PROXY.
Nota: Esta es la única excepción en la que el archivo de configuración global tiene prioridad sobre la variable de entorno. No existe una opción para configurar esto a través de la CLI.
Dado que la biblioteca proxy-agent se utiliza para configurar el proxy, los protocolos compatibles incluyen http, https, socks, socks4, socks4a, socks5, socks5h, pac+data, pac+file, pac+ftp, pac+http y pac+https. La clave proxy del archivo de configuración global se pasa a una nueva instancia proxy-agent, lo que significa que se admite la misma configuración para la biblioteca.
Para utilizar un proxy, primero tienes que configurar el certificado CA para que datadog-ci confíe en tu proxy. Puedes hacerlo configurando la variable de entorno NODE_EXTRA_CA_CERTS en la ruta de tu certificado CA. De lo contrario, podría producirse un error unable to verify the first certificate.
export NODE_EXTRA_CA_CERTS=/path/to/your-ca-cert.pem
Cuando se utiliza la configuración global, las claves host y port son argumentos obligatorios y la clave protocol pasa por defecto a http si no está definida.
Ejemplo:
{
// ...
"proxy": {
"auth": {
"username": "login",
"password": "pwd"
},
"host": "127.0.0.1",
"port": 3128,
"protocol": "http"
},
// ...
}
El formato utilizado para la variable de entorno HTTPS_PROXY es <protocol>://<username>:<password>@<host>:<port>, tal y como se describe en la biblioteca proxy-from-env, que la biblioteca proxy-agent utiliza para analizar las variables de entorno.
Se utiliza la variable HTTPS_PROXY, en lugar de HTTP_PROXY, porque la API Datadog utiliza el protocolo HTTPS.
Ejemplo:
export HTTPS_PROXY=http://login:pwd@127.0.0.1:3128
Si quieres confirmar que se estás utilizando un proxy, puedes configurar la variable de entorno DEBUG como proxy-agent de la siguiente manera:
DEBUG=proxy-agent yarn datadog-ci synthetics run-tests
Comando de ejecución de tests
Puedes decidir que la CLI detecte automáticamente todos tus tests Synthetic**/*.synthetics.json (consulta archivos de tests) o especificar los tests que quieres ejecutar mediante el indicador -p,--public-id.
Ejecuta tests mediante la ejecución de la CLI a través de NPM:
Añade lo siguiente a tu package.json:
{
"scripts": {
"datadog-ci-synthetics": "datadog-ci synthetics run-tests"
}
}
A continuación, ejecuta:
npm run datadog-ci-synthetics
Nota: Si estás lanzando tus tests con un nombre de archivo personalizado para el archivo de configuración global, anexa el comando asociado a tu script datadog-ci-synthetics con --config <CUSTOM_PATH_TO_GLOBAL_CONFIG_FILE>.
Ejecuta tests mediante la ejecución de la CLI a través de Yarn:
El subcomando run-tests acepta el argumento --public-id (o su abreviatura -p) para activar sólo el test especificada. Puede definirse varias veces para ejecutar varios tests:
yarn datadog-ci synthetics run-tests --public-id aaa-aaa-aaa --public-id bbb-bbb-bbb
También puedes especificar una versión concreta de test utilizando el formato <public-id>@<version>:
yarn datadog-ci synthetics run-tests --public-id aaa-aaa-aaa@2 --public-id bbb-bbb-bbb@4
También es posible activar los tests correspondientes a una consulta de búsqueda utilizando el argumento --search (o su abreviatura -s). Con esta opción, las anulaciones definidas en tu archivo de configuración global se aplican a todos los tests detectados por la consulta de búsqueda.
yarn Datadog-ci synthetics run-tests -s 'etiquetar:e2e-tests'
Puedes utilizar --files (o su abreviatura -f) para anular el patrón glob predeterminado (que coincidiría con todos los archivos **/*.synthetics.json).
yarn datadog-ci synthetics run-tests -f ./component-1/**/*.synthetics.json -f ./component-2/**/*.synthetics.json
Nota: Si estás lanzando tus tests con un nombre de archivo personalizado para el archivo de configuración global, anexa el comando asociado a tu script datadog-ci-synthetics con --config <CUSTOM_PATH_TO_GLOBAL_CONFIG_FILE>.
Lista de configuraciones
apiKey (Obligatorio)
Tu clave de API Datadog. Esta clave la crea tu organización Datadog y debe almacenarse como secreto.
Opciones de configuración
- Configuración global:
"apiKey": "<API_KEY>" - Variable de entorno:
DD_API_KEY="<API_KEY>" - Parámetro de CLI:
--apiKey "<API_KEY>"
appKey (Obligatorio)
Tu clave de aplicación Datadog. Esta clave la crea tu organización Datadog y debe almacenarse como secreto.
Opciones de configuración
- Configuración global:
"appKey": "<APPLICATION_KEY>" - Variable de entorno:
DD_APP_KEY="<APPLICATION_KEY>" - Parámetro de CLI:
--appKey "<APPLICATION_KEY>"
batchTimeout
Tiempo en milisegundos luego del cual el lote CI falla debido a un tiempo de espera excedido. Esto no afecta al resultado de una ejecución de test ya iniciada.
Opciones de configuración
- Por defecto:
1800000 (30 minutos) - Configuración global:
"batchTimeout": 1800000 - Variable de entorno:
DATADOG_SYNTHETICS_BATCH_TIMEOUT=1800000 - Parámetro CLI:
--batchTimeout 1800000
configPath
Ruta al archivo de configuración global que configura datadog-ci.
Opciones de configuración
- Por defecto:
datadog-ci.json - Configuración global: N/A
- Variable de entorno:
DATADOG_SYNTHETICS_CONFIG_PATH=global-config.json - Parámetro de CLI:
--config global-config.json
datadogSite
Tu sitio Datadog. Los valores posibles se muestran en esta tabla.
Configúralo como (asegúrate de seleccionar el SITIO correcto a la derecha).
Opciones de configuración
- Por defecto:
datadoghq.com - Configuración global:
"datadogSite": "datadoghq.com" - Variable de entorno:
DATADOG_SITE=datadoghq.com - Parámetro de CLI:
--datadogSite datadoghq.com
defaultTestOverrides
Anulaciones de tests Synthetic aplicadas a todos los tests.
Opciones de configuración
- Configuración global: consultar anulaciones de tests
- Variable de entorno: todas las variables siguen el patrón
DATADOG_SYNTHETICS_OVERRIDE_... - Parámetro de CLI: todos los parámetros de CLI utilizan el patrón
--override option=value
failOnCriticalErrors
Falla la tarea CI si se produce un error crítico que suele ser transitorio, como límites de frecuencia, fallos de autenticación o problemas de la infraestructura Datadog.
Opciones de configuración
- Por defecto:
false - Configuración global:
"failOnCriticalErrors": true - Variable de entorno:
DATADOG_SYNTHETICS_FAIL_ON_CRITICAL_ERRORS=true - Parámetro de CLI:
--failOnCriticalErrors / --no-failOnCriticalErrors
failOnMissingTests
Falla la tarea CI si la lista de tests a ejecutar está vacía o si faltan algunos tests explícitamente indicados.
Opciones de configuración
- Por defecto:
false - Configuración global:
"failOnMissingTests": true - Variable de entorno:
DATADOG_SYNTHETICS_FAIL_ON_MISSING_TESTS=true - Parámetro de CLI:
--failOnMissingTests / --no-failOnMissingTests
failOnTimeout
Falla la tarea CI si el lote CI falla debido a un tiempo de espera excedido.
Opciones de configuración
- Por defecto:
true - Configuración global:
"failOnTimeout": true - Variable de entorno:
DATADOG_SYNTHETICS_FAIL_ON_TIMEOUT=true - Parámetro de CLI:
--failOnTimeout / --no-failOnTimeout
files
Patrones globales para detectar archivos de configuración de tests de Synthetic.
Opciones de configuración
- Por defecto:
["{,!(node_modules)/**/}*.synthetics.json"] - Configuración global:
"files": ["{,!(node_modules)/**/}*.synthetics.json"] - Variable de entorno:
DATADOG_SYNTHETICS_FILES="{,!(node_modules)/**/}*.synthetics.json" - Parámetro CLI:
-f "{,!(node_modules)/**/}*.synthetics.json" / --files "{,!(node_modules)/**/}*.synthetics.json"
jUnitReport
El nombre de archivo para un informe de JUnit si deseas generar uno.
Opciones de configuración
- Por defecto: Ninguno
- Configuración global:
"jUnitReport": "e2e-test-junit.xml" - Variable de entorno:
DATADOG_SYNTHETICS_JUNIT_REPORT="e2e-test-junit.xml" - Parámetro CLI:
-j "e2e-test-junit.xml" / --jUnitReport "e2e-test-junit.xml"
mobileApplicationVersionFilePath
Anula la versión de la aplicación móvil para tests de aplicaciones móviles Synthetic por una aplicación local o creada recientemente.
Opciones de configuración
- Configuración global:
"mobileApplicationVersionFilePath": "path/to/application.apk" - Variable de entorno: No disponible
- Parámetro de CLI:
--mobileApp "path/to/application.apk" / --mobileApplicationVersionFilePath "path/to/application.apk"
proxy
Proxy que se va a utilizar para las conexiones salientes a Datadog. Las claves host y port son argumentos obligatorios, la clave protocol por defecto es http. Los valores compatibles para la clave protocol son http, https, socks, socks4, socks4a, socks5, socks5h, pac+data, pac+file, pac+ftp, pac+http y pac+https. La biblioteca utilizada para configurar el proxy es la biblioteca proxy-agent.
Opciones de configuración
- Configuración global: para ver un ejemplo, consulta Utilizar un proxy.
- Variable de entorno:
HTTPS_PROXY=http://login:pwd@127.0.0.1:3128 - Parámetro de CLI: N/A
publicIds
ID públicos de tests Synthetic a ejecutar. Si no se proporciona ningún valor, los tests se detectan en Synthetic archivos de configuración de tests.
Puedes especificar una versión concreta de un test utilizando el formato <public-id>@<version>. Por ejemplo, abc-def-ghi@123 ejecuta la versión 123 del test con un ID público abc-def-ghi. Si no se especifica ninguna versión, se utiliza la versión más reciente del test.
Opciones de configuración
- Por defecto: Ninguno
- Configuración global:
"publicIds": ["abc-def-ghi", "123-456-789"] - Variable de entorno:
DATADOG_SYNTHETICS_PUBLIC_IDS="abc-def-ghi;123-456-789" - Parámetro de CLI:
-p "abc-def-ghi" --public-id "123-456-789"
selectiveRerun
Si solo se vuelven a ejecutar los tests fallidos. Si un test ya se ha aprobado para una confirmación dada, no se vuelve a ejecutar en los siguientes lotes CI. Por defecto, se utiliza la configuración por defecto de tu organización. Configúrala como false para forzar ejecuciones completas cuando tu configuración lo habilite por defecto.
Opciones de configuración
- Por defecto:
false - Configuración global:
"selectiveRerun": true - Variable de entorno:
DATADOG_SYNTHETICS_SELECTIVE_RERUN=true - Parámetro de CLI:
--selectiveRerun / --no-selectiveRerun
subdomain
Subdominio personalizado para acceder a tu organización Datadog. Si tu URL es myorg.datadoghq.com, el subdominio personalizado es myorg.
Opciones de configuración
- Por defecto:
app - Configuración global:
"subdomain": "myorg" - Variable de entorno:
DATADOG_SUBDOMAIN="myorg" - Parámetro de CLI:
--subdomain "myorg"
testSearchQuery
Utiliza una consulta de búsqueda para seleccionar los tests Synthetic que se van a ejecutar. Utiliza la barra de búsqueda de la página con la lista de tests Synthetic para crear tu consulta y, a continuación, cópiala y pégala.
En la línea de comandos, la consulta debe ir entre comillas simples. El siguiente es un ejemplo con una faceta, una etiqueta (tag) value y una etiqueta <KEY>:<VALUE>:
datadog-ci synthetics run-tests --search 'team:unicorn tag:e2e-tests tag:"managedBy:terraform"'
Opciones de configuración
- Por defecto: Ninguno
- Configuración global:
"testSearchQuery": "tag:e2e-tests" - Variable de entorno:
DATADOG_SYNTHETICS_TEST_SEARCH_QUERY="tag:e2e-tests" - Parámetro de CLI:
-s "tag:e2e-tests" / --search "tag:e2e-tests"
tunnel
Utiliza el túnel de Continuous Testing para lanzar tests en entornos internos.
Para obtener más información, consulta Uso de entornos locales y de staging.
Para solucionar los problemas de tests que fallan debido al túnel, puedes habilitar los logs de depuración con DEBUG=synthetics:tunnel.
Opciones de configuración
- Por defecto:
false - Configuración global:
"tunnel": true - Variable de entorno:
DATADOG_SYNTHETICS_TUNNEL=true - Parámetro de CLI:
-t / --tunnel / --no-tunnel
Anulaciones de tests
Todas las anulaciones de tests son opcionales y permiten anular la configuración de test almacenada en Datadog.
Estas anulaciones pueden aplicarse a todos los tests con defaultTestOverrides en el archivo de configuración global, o a algunos tests específicos con testOverrides en un archivo de configuración de tests.
Estas opciones también pueden definirse con variables de entorno que empiecen por DATADOG_SYNTHETICS_OVERRIDE_... o con el parámetro de CLI --override siguiendo este patrón: --override option=value.
allowInsecureCertificates (booleano)
Anula los checks de certificados en tests de navegador y de API Synthetic.
Opciones de configuración
- Configuración global/de tests:
"allowInsecureCertificates": true - Variable de entorno:
DATADOG_SYNTHETICS_OVERRIDE_ALLOW_INSECURE_CERTIFICATES=true - Parámetro de CLI:
--override allowInsecureCertificates=true
basicAuth (objeto)
Anula las credenciales de autenticación básica.
username (cadena): Nombre de usuario para la autenticación básica.password (cadena): Contraseña para la autenticación básica.
Opciones de configuración
- Configuración global/de tests:
"basicAuth": {"username": "test_username", "password": "test_password"} - Variable de entorno:
DATADOG_SYNTHETICS_OVERRIDE_BASIC_AUTH_USERNAME=test_usernameDATADOG_SYNTHETICS_OVERRIDE_BASIC_AUTH_PASSWORD=test_password
- Parámetro de CLI:
--override basicAuth.username=test_username--override basicAuth.password=test_password
body (cadena)
Anula los datos que se envían en tests de API.
Opciones de configuración
- Configuración global/de tests:
"body": "{\"fakeContent\":true}" - Variable de entorno:
DATADOG_SYNTHETICS_OVERRIDE_BODY={"fakeContent":true} - Parámetro de CLI:
--override body={"fakeContent":true}
bodyType (cadena)
Anula el tipo de contenido de los datos que se envían en tests de API.
Opciones de configuración
- Configuración global/de tests:
"bodyType": "application/json" - Variable de entorno:
DATADOG_SYNTHETICS_OVERRIDE_BODY_TYPE=application/json - Parámetro de CLI:
--override bodyType=application/json
cookies (cadena u objeto)
Anula las cookies de tests de navegador y de API.
- Si se trata de una cadena, se utiliza para reemplazar las cookies originales.
- Si se trata de un objeto, el formato debe ser
{append?: boolean, value: string} y, dependiendo del valor de append, se añade o sustituye a las cookies originales.
Opciones de configuración
- Configuración global/de tests:
"cookies": "name1=value1;name2=value2" (equivalente a "append": false) o "cookies": {"append": true, "value": "name1=value1;name2=value2"} - Variable de entorno:
DATADOG_SYNTHETICS_OVERRIDE_COOKIES="name1=value1;name2=value2"DATADOG_SYNTHETICS_OVERRIDE_COOKIES_APPEND=true
- Parámetro de CLI:
--override cookies="name1=value1;name2=value2"--override cookies.append=true
setCookies (cadena u objeto)
Anula las cabeceras Set-Cookie solo en tests de navegador.
- Si se trata de una cadena, se utiliza para sustituir las cabeceras originales de
Set-Cookie. - Si se trata de un objeto, el formato debe ser
{append?: boolean, value: string}, y dependiendo del valor de append, se anexa o sustituye las cabeceras originales Set-Cookie.
Opciones de configuración
- Configuración global/de tests:
"setCookies": "name1=value1 \n name2=value2; Domain=example.com \n name3=value3; Secure; HttpOnly" (equivalente a "append": false) o "setCookies": {"append": true, "value": "setCookies": "name1=value1 \n name2=value2; Domain=example.com \n name3=value3; Secure; HttpOnly"} - Variable de entorno:
DATADOG_SYNTHETICS_OVERRIDE_SET_COOKIES="name1=value1;name2=value2"DATADOG_SYNTHETICS_OVERRIDE_SET_COOKIES_APPEND=true
- Parámetro de CLI:
--override setCookies="setCookies": "name1=value1 \n name2=value2; Domain=example.com \n name3=value3; Secure; HttpOnly"--override setCookies.append=true
defaultStepTimeout (número)
Anula la duración máxima de los pasos en segundos de los tests de navegador. Esto no anula los tiempos de espera configurados individualmente.
Opciones de configuración
- Configuración global/de tests:
"defaultStepTimeout": 15 - Variable de entorno:
DATADOG_SYNTHETICS_OVERRIDE_DEFAULT_STEP_TIMEOUT=15 - Parámetro de CLI:
--override defaultStepTimeout=15
deviceIds (matriz)
Anula la lista de dispositivos en los que se ejecutan tests Synthetic.
Opciones de configuración
- Configuración global/de tests:
"deviceIds": ["chrome.laptop_large", "firefox.tablet"] - Variable de entorno:
DATADOG_SYNTHETICS_OVERRIDE_DEVICE_IDS="chrome.laptop_large;firefox.tablet" - Parámetro de CLI:
--override deviceIds="chrome.laptop_large;firefox.tablet"
executionRule (cadena)
Anula la regla de ejecución de tests Synthetic.
La regla de ejecución del test define el comportamiento del lote CI en caso de que falle el test.
Acepta uno de los siguientes valores:
blocking: Un test fallido provoca el fallo del lote CI.non_blocking: Un test fallido no provoca el fallo del lote CI.skipped: El test no se ejecuta en absoluto.
Opciones de configuración
- Configuración global/de tests:
"executionRule": "skipped" - Variable de entorno:
DATADOG_SYNTHETICS_OVERRIDE_EXECUTION_RULE=skipped - Parámetro de CLI:
--override executionRule=skipped
followRedirects (booleano)
Anula la opción de seguir o no las redirecciones HTTP en tests de API.
Opciones de configuración
- Configuración global/de tests:
"followRedirects": true - Variable de entorno:
DATADOG_SYNTHETICS_OVERRIDE_FOLLOW_REDIRECTS=true - Parámetro de CLI:
--override followRedirects=true
Anula las cabeceras de tests de navegador y de API.
Este objeto especifica las cabeceras que se van a sustituir en el test. Debe tener claves que representen los nombres de las cabeceras que se van a sustituir y valores que indiquen los nuevos valores de las cabeceras.
Opciones de configuración
- Configuración global/de tests:
"headers": {"NEW_HEADER_1": "NEW VALUE 1", "NEW_HEADER_2": "NEW VALUE 2"} - Variable de entorno:
DATADOG_SYNTHETICS_OVERRIDE_HEADERS='{"NEW_HEADER_1":"NEW VALUE 1", "NEW_HEADER_2":"NEW VALUE 2"}' (Nota: Debe ser un JSON válido) - Parámetro de CLI:
--override headers.NEW_HEADER_1="NEW VALUE 1"--override headers.NEW_HEADER_2="NEW VALUE 2"
locations (matriz)
Anula la lista de ubicaciones desde las que se ejecuta el test. Los valores posibles se muestran en esta respuesta de la API.
Opciones de configuración
Configuración global/de tests:
"locations": ["aws:us-east-1", "gcp:europe-west3"]
Variable de entorno: DATADOG_SYNTHETICS_OVERRIDE_LOCATIONS="aws:us-east-1;gcp:europe-west3"
Parámetro de CLI: --override locations="aws:us-east-1;gcp:europe-west3"
mobileApplicationVersion (cadena)
Anula la versión de la aplicación móvil para tests de aplicaciones móviles Synthetic. La versión debe estar cargada y disponible en Datadog.
Opciones de configuración
Configuración global/de tests: "mobileApplicationVersion": "01234567-8888-9999-abcd-efffffffffff"
Variable de entorno: DATADOG_SYNTHETICS_OVERRIDE_MOBILE_APPLICATION_VERSION=01234567-8888-9999-abcd-efffffffffff
Parámetro de CLI: --mobileApplicationVersion=01234567-8888-9999-abcd-efffffffffff
mobileApplicationVersionFilePath (cadena)
Anula la versión de la aplicación para tests de aplicaciones móviles Synthetic.
Opciones de configuración
Configuración global/de tests: "mobileApplicationVersionFilePath": "path/to/application.apk"
Variable de entorno: No disponible
Parámetro de CLI: --mobileApplicationVersionFilePath=path/to/application.apk
resourceUrlSubstitutionRegexes (matriz)
Matriz de patrones de expresión regular para modificar las URL de recursos del test. Esto puede ser útil para cambiar dinámicamente las URL de los recursos durante la ejecución del test.
Cada patrón de expresión regular debe tener el formato:
your_regex|your_substitution: Sintaxis basada en pipelines, para evitar cualquier conflicto con los caracteres / en las URL.- Por ejemplo,
https://example.com(.*)|http://subdomain.example.com$1 para transformar https://example.com/resource en http://subdomain.example.com/resource.
s/your_regex/your_substitution/modifiers: Sintaxis de la barra oblicua, que admite modificadores.- Por ejemplo,
s/(https://www.)(.*)/$1staging-$2/ para transformar https://www.example.com/resource en https://www.staging-example.com/resource.
Opciones de configuración
Configuración global/de tests:
"resourceUrlSubstitutionRegexes": ["(https://www.)(.*)|$1staging-$2"]
Variable de entorno: DATADOG_SYNTHETICS_OVERRIDE_RESOURCE_URL_SUBSTITUTION_REGEXES='(https://www.)(.*)|$1staging-$2'
Parámetro de CLI: --override resourceUrlSubstitutionRegexes='(https://www.)(.*)|$1staging-$2'
retry (objeto)
Anula la política de reintentos de tests.
Este objeto tiene los dos atributos independientes siguientes:
count (número entero): Número de intentos que se van a realizar en caso de fallo del test.interval (número entero): Intervalo entre intentos en milisegundos.
Opciones de configuración
- Configuración global/de tests:
"retry": {"count": 2, "interval": 300} - Variable de entorno:
DATADOG_SYNTHETICS_OVERRIDE_RETRY_COUNT=2DATADOG_SYNTHETICS_OVERRIDE_RETRY_INTERVAL=300
- Parámetro de CLI:
--override retry.count=2--override retry.interval=300
startUrl (cadena)
Anula la URL de inicio para tests de navegador y de API.
Las variables locales y globales especificadas en la URL (por ejemplo, {{ URL }}) se sustituyen cuando se ejecuta el test.
Puedes combinar esto con la anulación de variables para anular tanto la URL de inicio como los valores de las variables. Por ejemplo:
--override startUrl="{{ URL }}?static_hash={{ STATIC_HASH }}" --override variables.STATIC_HASH=abcdef
Opciones de configuración
- Configuración global/test:
"startUrl": "{{ URL }}?static_hash={{ STATIC_HASH }}" - Variable de entorno:
DATADOG_SYNTHETICS_OVERRIDE_START_URL="{{ URL }}?static_hash={{ STATIC_HASH }}" - Parámetro CLI:
--override startUrl="{{ URL }}?static_hash={{ STATIC_HASH }}"
startUrlSubstitutionRegex (cadena)
Expresión regular para modificar la URL de inicio de tests de navegador y HTTP, tanto si procede del test original como de la anulación de la startUrl.
Si la URL contiene variables, esta expresión regular se aplica después de la interpolación de las variables.
Hay dos formatos posibles:
your_regex|your_substitution: Sintaxis basada en pipelines, para evitar cualquier conflicto con los caracteres / en las URL.- Por ejemplo,
https://example.com(.*)|http://subdomain.example.com$1 para transformar https://example.com/test en http://subdomain.example.com/test.
s/your_regex/your_substitution/modifiers: Sintaxis de la barra oblicua, que admite modificadores.- Por ejemplo,
s/(https://www.)(.*)/$1extra-$2/ para transformar https://www.example.com en https://www.extra-example.com.
Opciones de configuración
- Configuración global/de tests:
"startUrlSubstitutionRegex": "(https://www.)(.*)|$1extra-$2" - Variable de entorno:
DATADOG_SYNTHETICS_OVERRIDE_START_URL_SUBSTITUTION_REGEX='(https://www.)(.*)|$1extra-$2' - Parámetro de CLI:
--override startUrlSubstitutionRegex='(https://www.)(.*)|$1extra-$2'
testTimeout (número)
Anula la duración máxima en segundos de tests de navegador.
Opciones de configuración
- Configuración global/de tests:
"testTimeout": 300 - Variable de entorno:
DATADOG_SYNTHETICS_OVERRIDE_TEST_TIMEOUT=300 - Parámetro de CLI:
--override testTimeout=300
variables (objeto)
Anula las variables locales y globales existentes o inyecta nuevas en tests Synthetic.
Este objeto debe incluir claves correspondientes a los nombres de las variables que se van a sustituir y valores que representen los nuevos valores de dichas variables.
Opciones de configuración
- Configuración global/de tests:
"variables": {"NEW_VARIABLE_1": "NEW VARIABLE 1", "NEW_VARIABLE_2": "NEW VARIABLE 2"} - Variable de entorno:
DATADOG_SYNTHETICS_OVERRIDE_VARIABLES='{"NEW_VARIABLE_1":"NEW VARIABLE 1", "NEW_VARIABLE_2":"NEW VARIABLE 2"}' (Nota: Debe ser un JSON válido) - Parámetro de CLI:
--override variables.NEW_VARIABLE_1="NEW VARIABLE 1"--override variables.NEW_VARIABLE_2="NEW VARIABLE 2"
Configurar una URL de inicio
Para configurar en qué URL comienza tu test, proporciona una startUrl a tu objeto de test. Crea tu propia URL de inicio con cualquier parte de la URL de inicio original de tu test e incluye variables locales y globales.
Configurar un subdominio personalizado
Si la organización utiliza un subdominio personalizado para acceder a Datadog, es necesario definirlo en la variable de entorno DATADOG_SUBDOMAIN o en el archivo de configuración global bajo la clave subdomain para poder mostrar correctamente la URL de resultados de tests.
Por ejemplo, si la URL utilizada para acceder a Datadog es myorg.datadoghq.com, configura la variable entorno como myorg:
export DATADOG_SUBDOMAIN="myorg"
Configurar localizaciones personalizadas
Puedes utilizar DATADOG_SYNTHETICS_OVERRIDE_LOCATIONS para anular las localizaciones en que se ejecutan tus tests. Las localizaciones deben separarse con un punto y coma (;). La configuración de los archivos de tests tiene prioridad sobre otras anulaciones.
export DATADOG_SYNTHETICS_OVERRIDE_LOCATIONS="aws:us-east-1;aws:us-east-2"
Archivos de tests
Los archivos de configuración de tests (Test Config) te permiten personalizar tests individuales o configurar varias ejecuciones del mismo test con diferentes parámetros, más allá de lo que puedas hacer con otros métodos de configuración.
Encontrarás una lista de todas estas opciones en la sección de anulaciones de tests.
Estos archivos tienen prioridad sobre los archivos de configuración global, las variables de entorno y los parámetros de CLI. El orden de prioridad, incluidas las configuraciones de tests, es el siguiente:
Global Config < Environment variables < CLI parameters < Test Config
Para determinar qué tests deben ejecutarse, una o varias de esas opciones pueden pasarse a datadog-ci:
Si no se pasa ninguna de estas opciones, datadog-ci detecta automáticamente los archivos de configuración de tests con el patrón glob {,!(node_modules)/**/}*.synthetics.json (todos los archivos que terminan en .synthetics.json, excepto los de la carpeta node_modules).
Nota: El archivo de búsqueda se inicia desde el directorio de trabajo actual, por lo que puede ser lento si el comando se ejecuta desde un directorio grande, como una carpeta de inicio. Si el comando de búsqueda de archivos es demasiado lento, considera:
- Utilizar las opciones anteriores para especificar los tests (esto desactivará la búsqueda de archivos),
- O refinar el patrón glob con la opción
files.- Por ejemplo, utilizando
* en lugar de ** o añadiendo una carpeta específica al patrón.
<TEST_PUBLIC_ID> puede ser el identificador del test que se encuentra en la URL de una página de información de un test (por ejemplo, para https://app.datadoghq.com/synthetics/details/abc-def-ghi, sería abc-def-ghi) o la URL completa de la página de información (por ejemplo, directamente https://app.datadoghq.com/synthetics/details/abc-def-ghi).
Ejemplo:
// 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",
"resourceUrlSubstitutionRegexes": ["(https://www.)(.*)|$1staging-$2"],
"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"}
}
}
]
}
Comando de carga de la aplicación
Este comando carga una nueva versión a una aplicación móvil existente.
Lista de configuraciones
apiKey (Obligatorio)
Tu clave de API Datadog. Esta clave la crea tu organización Datadog y debe almacenarse como secreto.
Opciones de configuración
- Configuración global:
"apiKey": "<API_KEY>" - Variable de entorno:
DD_API_KEY="<API_KEY>" - Parámetro de CLI:
--apiKey "<API_KEY>"
appKey (Obligatorio)
Tu clave de aplicación Datadog. Esta clave la crea tu organización Datadog y debe almacenarse como secreto.
Opciones de configuración
- Configuración global:
"appKey": "<APPLICATION_KEY>" - Variable de entorno:
DD_APP_KEY="<APPLICATION_KEY>" - Parámetro de CLI:
--appKey "<APPLICATION_KEY>"
configPath
Ruta al archivo de configuración global que configura datadog-ci.
Opciones de configuración
- Por defecto:
datadog-ci.json - Configuración global: N/A
- Variable de entorno:
DATADOG_SYNTHETICS_CONFIG_PATH=global-config.json - Parámetro de CLI:
--config global-config.json
datadogSite
Tu sitio Datadog. Los valores posibles se muestran en esta tabla.
Configúralo como (asegúrate de seleccionar el SITIO correcto a la derecha).
Opciones de configuración
- Por defecto:
datadoghq.com - Configuración global:
"datadogSite": "datadoghq.com" - Variable de entorno:
DATADOG_SITE=datadoghq.com - Parámetro de CLI:
--datadogSite datadoghq.com
latest
Marca la nueva versión como latest. Cualquier test que se ejecute en la versión más reciente utilizará esta versión en su próxima ejecución.
Opciones de configuración
- Por defecto:
false - Configuración global:
"latest": true - Variable de entorno:
DATADOG_SYNTHETICS_LATEST=true - Parámetro de CLI:
--latest / --no-latest
mobileApplicationId (Obligatorio)
ID de la aplicación a la que quieres cargar la nueva versión.
Opciones de configuración
- Configuración global:
"mobileApplicationId": "123-123-123" - Variable de entorno:
DATADOG_SYNTHETICS_MOBILE_APPLICATION_ID=123-123-123 - Parámetro de CLI:
--mobileApplicationId 123-123-123
mobileApplicationVersionFilePath (Obligatorio)
Ruta a la nueva versión de tu aplicación móvil (.apk o .ipa).
Opciones de configuración
- Configuración global:
"mobileApplicationVersionFilePath": example/test.apk - Variable de entorno: No disponible
- Parámetro de CLI:
--mobileApplicationVersionFilePath example/test.apk
proxy
Proxy que se va a utilizar para las conexiones salientes a Datadog. Las claves host y port son argumentos obligatorios, la clave protocol por defecto es http. Los valores compatibles para la clave protocol son http, https, socks, socks4, socks4a, socks5, socks5h, pac+data, pac+file, pac+ftp, pac+http y pac+https. La biblioteca utilizada para configurar el proxy es la biblioteca proxy-agent.
Opciones de configuración
- Configuración global: para ver un ejemplo, consulta Utilizar un proxy.
- Variable de entorno: N/A
- Parámetro de CLI: N/A
versionName (Obligatorio)
Nombre de la nueva versión. Tiene que ser único.
Opciones de configuración
- Configuración global:
"versionName": "example" - Variable de entorno:
DATADOG_SYNTHETICS_VERSION_NAME=example - Parámetro de CLI:
--versionName example
Ejemplo:
datadog-ci synthetics upload-application \
--mobileApplicationId '123-123-123' \
--mobileApplicationVersionFilePath example/test.apk \
--versionName 'example 1.0' \
--latest
Uso del archivo de configuración global
También puedes pasar estas opciones en un archivo de configuración:
{
"apiKey": "<API_KEY>",
"appKey": "<APPLICATION_KEY>",
"mobileApplicationVersionFilePath": "example_path/example_app.apk",
"mobileApplicationId": "example-abc",
"versionName": "example",
"latest": true
}
Estas opciones también pueden añadirse al mismo archivo de configuración global utilizado para el comando run-tests.
Pasa este archivo de configuración al comando con el indicador --config:
datadog-ci synthetics upload-application --config global-config.json
El nombre de archivo predeterminado para el archivo de configuración global es datadog-ci.json. Si utilizas este nombre para tu archivo de configuración global, puedes omitir el indicador --config.
Uso de entornos locales y de staging
Puedes combinar anulaciones de variables con entornos locales y de staging para ejecutar tests dentro de tu entorno de desarrollo. Esta conexión garantiza que todas las solicitudes de tests enviadas a través de la CLI se enrutan automáticamente a través del cliente datadog-ci.
Esto te permite ejecutar tests con cifrado de extremo a extremo en cada etapa del ciclo de vida de desarrollo de tu software, desde los entornos de preproducción hasta tu sistema de producción.
Procesos de test de extremo a extremo
Para verificar que el comando Synthetics funciona como se espera, ejecuta un test y comprueba que devuelve 0:
export DD_API_KEY='<API_KEY>'
export DD_APP_KEY='<APPLICATION_KEY>'
yarn datadog-ci synthetics run-tests --public-id abc-def-ghi
Un resultado correcto debería verse así:
[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
Reporteros
Se admiten dos reporteros de forma predefinida:
stdout- JUnit
Para activar el informe JUnit, especifica un nombre de archivo de tu informe JUnit con -j/--jUnitReport.
yarn datadog-ci synthetics run-tests -s 'tag:e2e-tests' --config global-config.json --jUnitReport junit-report.xml
Los reporteros pueden engancharse al MainReporter del comando.
Hooks disponibles
| Nombre del hook | Parámetros | Descripción |
|---|
log | (log: string) | Llamada para la generación de logs. |
error | (error: string) | Llamada cuando se produce un error. |
initErrors | (errors: string[]) | Llamada cuando se produce un error durante la fase de análisis de tests. |
testTrigger | (test: Test, testId: string, executionRule: ExecutionRule, testOverrides: UserConfigOverride) | Llamada cuando se activa un test. |
testWait | (test: Test) | Llamada cuando un test está esperando recibir sus resultados. |
testsWait | (tests: Test[], baseUrl: string, batchId: string, skippedCount?: number) | Llamada cuando todas las pruebas están a la espera de recibir sus resultados. |
resultReceived | (result: ResultInBatch) | Llamada cuando se recibe un resultado. |
resultEnd | (result: Result, baseUrl: string) | Llamada para cada resultado al final de todos los resultados. |
reportStart | (timings: {startTime: number}) | Llamada al inicio del informe. |
runEnd | (summary: Summary, baseUrl: string, orgSettings?: SyntheticsOrgSettings) | Llamada al final de la ejecución. |
Ver los resultados de los tests
Puedes ver los resultados de los lotes de CI haciendo clic en un lote en el Explorador de resultados de tests y monitorización Synthetic o haciendo clic en un test en la página con la lista de tests Synthetic.
También puedes ver el resultado de las ejecuciones de tests directamente en tu CI a medida que se ejecutan tus tests. Para identificar la causa del fallo de un test, consulta los logs de ejecución y busca las causas de la aserción fallida.
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.
Referencias adicionales
Documentación útil adicional, enlaces y artículos: