Esta página presenta la configuración de tests de Continuous Testing para tus pipelines de Continuous Integration (CI) y Continuous Delivery (CD). Si quieres trasladar tus métricas y datos de CI/CD a dashboards de Datadog, consulta la sección CI Visibility.
Utiliza el paquete NPM @datadog-ci para ejecutar tests de Continuous Testing directamente en tu pipeline CI/CD. Puedes detener automáticamente una compilación, bloquear un despliegue y revertir un despliegue cuando un test Synthetic detecta una regresión.
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:
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_PATHal 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.
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.
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.
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().
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.
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.
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:
exportHTTPS_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:
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.
Nota: Si estás lanzando tus tests con un nombre de archivo personalizado para el archivo de configuración global, anexa --config <CUSTOM_PATH_TO_GLOBAL_CONFIG_FILE> al comando asociado a tu script datadog-ci-synthetics.
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:
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.
Nota: Si estás lanzando tus tests con un nombre de archivo personalizado para el archivo de configuración global, anexa --config <CUSTOM_PATH_TO_GLOBAL_CONFIG_FILE> al comando asociado a tu script datadog-ci-synthetics.
Duración (número entero en milisegundos) tras la cual datadog-ci deja de esperar resultados de tests. El valor predeterminado es 30 minutos. A nivel de CI, los resultados de los tests completados después de esta duración se consideran fallidos.
Opciones de configuración
Configuración global: "batchTimeout": 180000
Variable de entorno: DATADOG_SYNTHETICS_BATCH_TIMEOUT=180000
Indicador booleano que genera la falla del trabajo CI si no se activa ningún test o si no fue posible recuperar resultados de Datadog. El valor predeterminado es false.
Indicador booleano que genera la falla del trabajo CI si al menos un test especificado con un ID público (un argumento CLI --public-id o listado en un archivo de test) falta en una ejecución (por ejemplo, si se eliminó programáticamente o en el sitio Datadog). El valor predeterminado es false.
Opciones de configuración
Configuración global: "failOnMissingTests": true
Variable de entorno: DATADOG_SYNTHETICS_FAIL_ON_MISSING_TESTS=true
Parámetro de CLI: --failOnMissingTests / --no-failOnMissingTests
Indicador booleano que genera la falla del trabajo CI si al menos un test excede el tiempo de espera por defecto del lote. El valor predeterminado es true.
Opciones de configuración
Configuración global: "failOnTimeout": true
Variable de entorno: DATADOG_SYNTHETICS_FAIL_ON_TIMEOUT=true
Parámetro de CLI: --failOnTimeout / --no-failOnTimeout
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
Indicador booleano para ejecutar sólo los tests que fallaron en los lotes de tests anteriores. Por defecto, se utiliza la configuración por defecto de la organización. Utiliza el indicador CLI --no-selectiveRerun o selectiveRerun: false para forzar una ejecución completa.
Opciones de configuración
Configuración global: "selectiveRerun": true
Variable de entorno: DATADOG_SYNTHETICS_SELECTIVE_RERUN=true
Parámetro de CLI: --selectiveRerun / --no-selectiveRerun
Nombre del subdominio personalizado configurado para acceder a tu aplicación Datadog. Si la URL utilizada para acceder a Datadog es myorg.datadoghq.com, el valor del subdomain debe configurarse en myorg.
Pasa una consulta para seleccionar los tests Synthetic que se van a ejecutar.
La sintaxis de esta consulta es la misma que la que se utiliza en la barra de búsqueda de la página de la lista de tests Synthetic.
Puedes crear la consulta en la interfaz de usuario y, a continuación, copiarla y pegarla en la línea de comandos entre comillas simples.
Ejemplo de consulta con una faceta, una etiqueta (tag) value y una etiqueta <KEY>:<VALUE>:
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.
Utiliza la cadena proporcionada como cabecera de cookie en un test de API o de navegador (además de ella o para sustituirla).
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"}
Utiliza la cadena proporcionada como cabecera de set-cookie sólo en un test de navegador (además de ella o para sustituirla).
Si se trata de una cadena, se utiliza para reemplazar las set-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 set-cookies originales.
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)
Anula la versión predeterminada de la aplicación móvil para un test de aplicación móvil Synthetic. La versión debe estar cargada y disponible en Datadog.
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 / de 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.
Nueva URL de inicio que se proporcionará al test. Se sustituyen las variables especificadas entre corchetes (por ejemplo, {{ EXAMPLE }}) que se encuentran en las variables de entorno.
Expresión regular para modificar la URL de inicio del test (sólo para tests de navegador y HTTP), tanto si la proporcionó el test original o la URL de inicio de anulación de la configuración.
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 / de 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.
Este objeto define las variables que se van a sustituir en el test. Debe incluir claves correspondientes a los nombres de las variables que se van a sustituir y valores que representen los nuevos valores de estas 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)
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 de entorno.
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 mostrar correctamente la URL de resultados del test.
Por ejemplo, si la URL utilizada para acceder a Datadog es myorg.datadoghq.com, configura la variable entorno como myorg:
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.
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),
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).
Si está presente, marca la aplicación como “más reciente”. Cualquier test que se ejecute en la última versión utilizará esta versión en su próxima ejecución.
Opciones de configuración
Configuración global: "latest": true
Variable de entorno: DATADOG_SYNTHETICS_LATEST=true
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.
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.
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.
[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
Para habilitar el informe JUnit, pasa el --jUnitReport (o su abreviatura -j) en tu comando, especificando un nombre de archivo para tu informe XML JUnit.
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.