Apidog CLI para CI/CD: Un Pipeline de Copiar y Pegar para Pruebas de API Automatizadas

Ejecute sus pruebas de API de Apidog en CI/CD con el ejecutor apidog-cli. Copie y pegue archivos de pipeline para GitHub Actions, GitLab CI, Jenkins, CircleCI y Azure Pipelines.

Ashley Innocent

Ashley Innocent

15 June 2026

Apidog CLI para CI/CD: Un Pipeline de Copiar y Pegar para Pruebas de API Automatizadas

Apidog para empresas

Despliegue local

SSO & RBAC

Conforme con SOC 2

Explorar Apidog Enterprise

Escribiste las pruebas de API. Pasan en tu máquina. Y ahí es exactamente donde se quedan, porque ejecutarlas es algo que alguien tiene que recordar hacer. Un compañero de equipo implementa un cambio un viernes por la tarde, el endpoint de autenticación comienza a devolver un 500 silenciosamente en una ruta de código, y la primera persona en enterarse es un usuario el lunes. La cobertura estuvo ahí todo el tiempo. Nadie la ejecutó en el momento en que habría detectado la regresión.

La solución es mover las pruebas de tu editor a la pipeline, para que se ejecuten en cada push sin intervención humana. Eso significa que necesitas un comando que ejecute tus pruebas de API de forma desatendida, que devuelva un resultado claro de aprobado o fallido, y que encaje en cualquier sistema de CI que ya utilices. La CLI de Apidog hace eso. Creas tus escenarios de prueba visualmente en Apidog, luego los ejecutas desde un solo comando de terminal que cualquier runner de CI con Node.js puede ejecutar. Sin interfaz gráfica, sin reescribir pruebas como código, sin servicio adicional que alojar.

Esta es una guía de copiar y pegar. A continuación, encontrarás archivos de pipeline listos para usar para GitHub Actions, GitLab CI, Jenkins, CircleCI y Azure Pipelines, además de los patrones que mantienen una compilación limpia. Toma el bloque para tu plataforma, intercambia tus IDs y un secreto, y tendrás pruebas de API bloqueando cada fusión al final del día. Si prefieres la referencia exhaustiva de banderas, el tema más amplio de cómo automatizar pruebas de API en CI/CD cubre la estrategia; esta página trata de pegar una pipeline funcional.

Qué estás conectando

La CLI de Apidog es un paquete npm, apidog-cli. Ejecuta los escenarios de prueba que creas en la aplicación Apidog: solicitudes encadenadas, aserciones, valores extraídos de una respuesta a la siguiente, iteración basada en datos. La CLI no inventa su propio formato de prueba. Accede a tu proyecto, encuentra el escenario por ID, lo ejecuta de la misma manera que lo haría la aplicación y reporta con un código de salida.

Ese código de salida es el punto clave. Cuando todas las aserciones pasan, la ejecución sale con 0. Cuando algo falla, sale con un valor distinto de cero. Los sistemas de CI leen ese código de salida, marcan el paso como fallido y bloquean la fusión o el despliegue. No configuras una puerta; la puerta es el código de salida. Mientras el paso apidog run esté en tu pipeline, una aserción fallida detiene la línea.

Tres cosas hacen que una ejecución funcione, y las verás en cada bloque a continuación:

No escribes esos IDs a mano. Abre el escenario de prueba en Apidog, ve a su pestaña CI/CD, elige la opción de línea de comandos y genera un token de acceso. Apidog te entrega el comando completo apidog run con el ID de escenario y el ID de entorno ya completados. Cópialo una vez, luego mueve el token a un secreto. Si aún no has creado un escenario, comienza con cómo escribir escenarios de prueba con Apidog y vuelve cuando tengas uno que pase.

El único comando en el que se basa todo

Aquí está la ejecución canónica. Cada archivo de pipeline es un envoltorio alrededor de esta línea:

apidog run \
  --access-token $APIDOG_ACCESS_TOKEN \
  -t 605067 \
  -e 1629989 \
  -n 1 \
  -r html,junit \
  --out-dir ./apidog-reports

Lo que hace cada parte:

Los reportes son la diferencia entre "la compilación falló" y "aquí está la aserción que falló y la respuesta que la rompió". JUnit XML es el que casi todas las plataformas entienden de forma nativa, por lo que aparece en los cinco bloques siguientes.

GitHub Actions

Pega esto en .github/workflows/api-tests.yml. Ejecuta tu escenario en cada solicitud de extracción contra main, sube el informe como un artefacto y falla la verificación si alguna aserción falla.

name: API tests

on:
  pull_request:
    branches: [main]

jobs:
  api-tests:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Set up Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '20'

      - name: Install Apidog CLI
        run: npm install -g apidog-cli

      - name: Run API test scenario
        run: |
          apidog run \
            --access-token "$APIDOG_ACCESS_TOKEN" \
            -t 605067 \
            -e 1629989 \
            -n 1 \
            -r html,junit \
            --out-dir ./apidog-reports
        env:
          APIDOG_ACCESS_TOKEN: ${{ secrets.APIDOG_ACCESS_TOKEN }}

      - name: Upload report
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: apidog-report
          path: ./apidog-reports

Dos detalles importantes. El token reside en Configuración → Secretos y variables → Acciones como APIDOG_ACCESS_TOKEN y llega al paso a través de env:. Y if: always() en el paso de carga significa que aún obtendrás el informe cuando las pruebas fallen, que es la única vez que realmente necesitas leerlo. Si un escenario falla, el paso apidog run sale con un valor distinto de cero, el trabajo se pone en rojo y la PR muestra una verificación fallida. Para una explicación más detallada de esta plataforma específicamente, consulta cómo automatizar pruebas de API en GitHub Actions.

GitLab CI

La misma idea en .gitlab-ci.yml. La imagen node:20 ya tiene el tiempo de ejecución, por lo que la única configuración es la instalación.

stages:
  - test

api-tests:
  stage: test
  image: node:20
  script:
    - npm install -g apidog-cli
    - >
      apidog run
      --access-token "$APIDOG_ACCESS_TOKEN"
      -t 605067
      -e 1629989
      -r junit,cli
      --out-dir ./apidog-reports
  artifacts:
    when: always
    paths:
      - apidog-reports/
    reports:
      junit: apidog-reports/*.xml

Almacena APIDOG_ACCESS_TOKEN en Configuración → CI/CD → Variables como una variable enmascarada y protegida para que nunca se imprima en un registro. El bloque reports: junit: es la parte que los usuarios de GitLab suelen pasar por alto: le indica a GitLab que analice el XML y muestre los resultados directamente en el widget de la solicitud de fusión. Un revisor ve qué aserciones fallaron sin descargar nada.

Jenkins

Para una pipeline declarativa, almacena el token como una credencial de Jenkins e incorpóralo al entorno, luego llama a la CLI en una etapa. El bloque post alimenta el XML de JUnit a los gráficos de tendencias de pruebas de Jenkins y mantiene el informe HTML en la compilación.

pipeline {
  agent any
  environment {
    APIDOG_ACCESS_TOKEN = credentials('apidog-access-token')
  }
  stages {
    stage('API tests') {
      steps {
        sh 'npm install -g apidog-cli'
        sh '''
          apidog run \
            --access-token $APIDOG_ACCESS_TOKEN \
            -t 605067 \
            -e 1629989 \
            -n 1 \
            -r html,junit \
            --out-dir apidog-reports
        '''
      }
    }
  }
  post {
    always {
      junit 'apidog-reports/*.xml'
      archiveArtifacts artifacts: 'apidog-reports/**', allowEmptyArchive: true
    }
  }
}

Si tus agentes de compilación ya tienen la CLI en caché, elimina la línea npm install y llama a apidog run directamente. Apidog también ofrece una guía de integración específica para Jenkins si prefieres la ruta del plugin en lugar de un paso de shell: integrar pruebas automatizadas de Apidog con Jenkins para CI/CD.

CircleCI

En .circleci/config.yml, usa la imagen de conveniencia de Node y almacena el token como una variable de entorno del proyecto en Configuración del proyecto → Variables de entorno.

version: 2.1

jobs:
  api-tests:
    docker:
      - image: cimg/node:20.11
    steps:
      - checkout
      - run:
          name: Install Apidog CLI
          command: npm install -g apidog-cli
      - run:
          name: Run API test scenario
          command: |
            apidog run \
              --access-token "$APIDOG_ACCESS_TOKEN" \
              -t 605067 \
              -e 1629989 \
              -r junit,cli \
              --out-dir ./apidog-reports
      - store_test_results:
          path: ./apidog-reports
      - store_artifacts:
          path: ./apidog-reports
          destination: apidog-reports

workflows:
  test:
    jobs:
      - api-tests

store_test_results es el equivalente de CircleCI al bloque JUnit de GitLab; apúntalo al directorio de informes y CircleCI mostrará las aserciones fallidas en su pestaña de Pruebas. store_artifacts mantiene el informe HTML adjunto para que puedas abrirlo desde la página de compilación.

Azure Pipelines

En azure-pipelines.yml, instala Node con la tarea, ejecuta la CLI y publica los resultados de JUnit. Añade APIDOG_ACCESS_TOKEN como una variable secreta en la pipeline (o extráelo de un grupo de variables de Azure Key Vault), luego mapealo al env del paso de script.

trigger:
  - main

pool:
  vmImage: ubuntu-latest

steps:
  - task: NodeTool@0
    inputs:
      versionSpec: '20.x'
    displayName: 'Install Node.js'

  - script: npm install -g apidog-cli
    displayName: 'Install Apidog CLI'

  - script: |
      apidog run \
        --access-token "$APIDOG_ACCESS_TOKEN" \
        -t 605067 \
        -e 1629989 \
        -r junit,html \
        --out-dir ./apidog-reports
    displayName: 'Run API test scenario'
    env:
      APIDOG_ACCESS_TOKEN: $(APIDOG_ACCESS_TOKEN)

  - task: PublishTestResults@2
    condition: always()
    inputs:
      testResultsFormat: 'JUnit'
      testResultsFiles: 'apidog-reports/*.xml'
      testRunTitle: 'Apidog API tests'

La macro $(APIDOG_ACCESS_TOKEN) lee la variable secreta de la pipeline; mapearla a través de env la mantiene fuera de la línea de comandos visible. PublishTestResults@2 con condition: always() hace que los resultados aparezcan en la pestaña de Pruebas, independientemente de si la ejecución pasó o falló. Para un tratamiento más completo de esta plataforma, Apidog tiene un tutorial dedicado sobre las pruebas de API de pipeline en Azure DevOps.

Patrones que mantienen la puerta honesta

Una pipeline que ejecuta tus pruebas es la base. Estas recetas son lo que la hace útil en el día a día.

Prueba de humo justo después de un despliegue. Ejecuta un escenario rápido contra producción en el momento en que se lanza una versión, apuntando al entorno de producción, y detente en el primer fallo:

apidog run --access-token $APIDOG_ACCESS_TOKEN -t 605067 -e <prodEnvId> -r cli --on-error end

Regresión completa durante la noche. Ejecuta una carpeta completa de escenarios según un horario y recopila todos los fallos en un solo informe en lugar de detenerte en el primero:

apidog run --access-token $APIDOG_ACCESS_TOKEN -f <folderId> -r html,junit --on-error continue --out-dir ./nightly-reports

--on-error es el control aquí. end falla rápidamente, lo que deseas para una puerta de despliegue. continue ejecuta cada paso para que un informe nocturno muestre todas las fallas a la vez. De cualquier manera, la ejecución sigue saliendo con un valor distinto de cero si algo falla, por lo que la puerta se mantiene.

Ejecuta un escenario sobre múltiples entradas. Impulsa iteraciones desde un archivo de datos y trata cada fila como su propia aprobación:

apidog run --access-token $APIDOG_ACCESS_TOKEN -t 605067 -d ./test-data.csv -r junit

Prueba una rama de características, no main. Ejecuta los escenarios exactamente como existen en una rama:

apidog run --access-token $APIDOG_ACCESS_TOKEN -t 605067 --branch feature-payments -e 1629989 -r cli

Depura un fallo solo en CI. Cuando un escenario pasa localmente pero falla en la pipeline, añade --verbose. Imprime la solicitud exacta que envió el runner y la respuesta exacta que recibió, que es casi siempre cómo encuentras la diferencia de entorno que causa la brecha.

Cuando la compilación te miente

Algunos modos de fallo aparecen con la suficiente frecuencia como para destacarlos, porque cada uno anula silenciosamente la puerta.

La compilación permanece en verde cuando una prueba debería fallar. Este es el peligroso. Casi siempre significa que el código de salida está siendo ignorado. Si envolviste el comando en una pipeline de shell, o añadiste || true para "evitar que rompa la compilación", también impediste que detectara cualquier cosa. Elimina cualquier cosa que enmascare la salida no nula. El paso apidog run debe ser lo que el paso de CI lea.

Errores de autenticación. El token es incorrecto, ha caducado o nunca llegó al comando. Confirma que el secreto de CI realmente está poblado (un eco enmascarado de su longitud, nunca el valor), y regenéralo desde la pestaña CI/CD del escenario si es necesario.

"Escenario no encontrado". El ID del escenario, el ID del proyecto o la rama no coinciden. Vuelve a copiar el comando de la pestaña CI/CD para garantizar que los IDs sean actuales, y verifica dos veces que --branch apunte a donde crees.

Pasa localmente, falla en CI. Casi siempre una diferencia de entorno. El runner puede apuntar a un entorno -e diferente, estar detrás de un firewall que no puede alcanzar tu host, o carecer de una variable que el escenario necesita. Ejecuta con --verbose y compara la solicitud que produjo el runner con la que envías localmente.

Fallos de TLS contra hosts internos. Si tu endpoint utiliza una CA interna, pasa el certificado CA adicional en lugar de deshabilitar la verificación. Recurre a -k (omitir verificación SSL) solo como último recurso en un host interno de confianza con un certificado autofirmado, nunca contra algo público.

Por qué construir visualmente y ejecutar de forma desatendida

Hay una verdadera elección de diseño detrás de todo esto, y vale la pena un párrafo. Con los runners script-first, la prueba y su ejecución son el mismo archivo, por lo que un script frágil es tanto tu prueba como tu cuello de botella. Con Apidog, el escenario en tu proyecto es la prueba, y la CLI simplemente lo ejecuta donde una persona no puede estar. Nadie mantiene dos representaciones de la misma verificación. Creas rápidamente en el constructor visual, ejecutas automáticamente en la pipeline, y ambos se mantienen sincronizados porque son el mismo artefacto. Esa es una gran parte de por qué los equipos tratan a Apidog como una alternativa a Postman para pruebas de API una vez que CI entra en escena, y por qué las aseriones de API sólidas importan más que el runner en el que las envuelves.

El ciclo es simple una vez que está en marcha. Diseña y depura solicitudes en la aplicación. Encadénalas en un escenario con aserciones. Envía tu código, y la CLI ejecuta ese escenario en CI en cada cambio. Cuando algo falla, el informe nombra la aserción y el código de salida detiene el despliegue. Lo arreglas, envías de nuevo, y la misma puerta confirma la solución.

Si tus pruebas todavía viven en el editor de alguien, esa es la brecha a cerrar esta semana. Descarga Apidog, haz que un escenario pase, copia el comando apidog run de su pestaña CI/CD y pega el bloque anterior para tu plataforma. Tendrás pruebas de API bloqueando cada fusión la misma tarde.

botón

Preguntas frecuentes

¿Es gratis usar la CLI de Apidog en CI? La CLI es un paquete npm gratuito: npm install -g apidog-cli. Ejecuta los escenarios de tu proyecto Apidog, por lo que lo que puedes ejecutar depende de tu plan Apidog, pero el ejecutor de línea de comandos en sí no es un producto de pago aparte.

¿Tengo que reescribir mis pruebas como código? No. Creas escenarios visualmente en Apidog y la CLI los ejecuta por ID. El escenario es la prueba; la CLI es solo el ejecutor. Esa es la principal diferencia con los runners script-first.

¿Cómo falla realmente una prueba mi compilación? A través del código de salida. Cuando cualquier aserción falla, apidog run sale con un valor distinto de cero. Tu sistema de CI lo lee, marca el paso como fallido y bloquea la fusión o el despliegue. No añades ninguna configuración adicional para que la puerta funcione.

¿Qué formato de informe debo usar? Usa junit para el XML legible por máquina que tu panel de CI analiza en resultados de aprobado/fallido, y añade html si quieres un informe navegable guardado como un artefacto de compilación. Una combinación común es -r junit,html. Mantén cli también si quieres una salida legible en el registro de compilación.

¿Necesito instalar Apidog en el servidor de CI? No. El runner de CI solo necesita Node.js (v16 o posterior) y el paquete apidog-cli. Sin aplicación de escritorio, sin GUI, sin archivo de licencia en la máquina. El paquete más un token de acceso es suficiente.

¿Puedo ejecutarlo sin una instalación global? Sí. Usa npx apidog-cli run ... para ejecutarlo sin una instalación global persistente, lo cual es más limpio en runners efímeros que se eliminan después de cada trabajo.

¿En qué se diferencia esto de Newman? Newman ejecuta colecciones de Postman desde la línea de comandos. La CLI de Apidog ejecuta escenarios de prueba de Apidog. Los roles son paralelos, pero el runner de Apidog ejecuta escenarios que creaste en la aplicación y se envía como el único paquete apidog-cli. Consulta Postman CLI vs Newman para la parte de Postman de esa comparación.

¿De dónde obtengo el token de acceso y los IDs? Todo desde la pestaña CI/CD del escenario de prueba en Apidog. Elige la opción de línea de comandos, genera un token de acceso y copia el comando completo apidog run que Apidog construye con los IDs de escenario y entorno ya completados. Luego mueve el token a un secreto de CI y haz referencia a él como $APIDOG_ACCESS_TOKEN.

Practica el diseño de API en Apidog

Descubre una forma más fácil de construir y usar APIs