DEV Community

Cover image for Cómo Ejecutar Colecciones de Postman en CI Sin Newman
Roobia
Roobia

Posted on • Originally published at apidog.com

Cómo Ejecutar Colecciones de Postman en CI Sin Newman

En resumen

Newman, el runner CLI oficial de Postman, requiere npm y Node.js en su pipeline de CI. Esto introduce riesgos en la cadena de suministro, añade sobrecarga en la gestión de dependencias y, en el nivel gratuito de Postman, las ejecuciones de colecciones a través de la API ahora tienen limitaciones de tasa. Esta guía cubre tres alternativas para ejecutar pruebas de API en CI sin Newman: el runner CLI de Apidog, k6 y Hurl. Apidog es la ruta más directa si tiene colecciones Postman existentes, ya que las importa de forma nativa y no tiene límites por ejecución.

Prueba Apidog hoy

💡 Apidog es una plataforma gratuita todo en uno para el desarrollo de API. Su runner CLI ejecuta colecciones compatibles con Postman en CI sin dependencia de npm y sin límites de conteo de ejecuciones. Pruebe Apidog gratis, no se requiere tarjeta de crédito.

Introducción

Newman fue una buena idea. Una herramienta CLI que ejecuta colecciones de Postman en pipelines de CI hizo que las pruebas de API fueran portátiles y automatizables. Se lanzó con la confianza de la marca Postman, se integró con GitHub Actions a través de una acción comunitaria popular y funcionó lo suficientemente bien como para que muchos equipos construyeran toda su estrategia de automatización de pruebas de API en torno a ella.

Luego surgieron tres problemas.

Primero, Newman es un paquete npm. Cada pipeline que lo utiliza descarga desde el registro npm en tiempo de compilación. La vulnerabilidad de ua-parser-js en 2021 y el incidente de node-ipc en 2022 demostraron que los ataques a la cadena de suministro de npm no son teóricos. Los equipos de seguridad comenzaron a preguntarse por qué la capa de pruebas de API necesitaba npm en absoluto.

Segundo, Postman comenzó a limitar las ejecuciones de colecciones en los niveles gratuitos y básicos de pago. Los equipos que dependían de la ejecución de colecciones a través de la API de Postman como parte de CI alcanzaron sus cuotas y tuvieron que actualizar sus planes o rediseñar sus pipelines.

Tercero, el ritmo de mantenimiento de Newman se ha ralentizado. Los problemas permanecen abiertos en GitHub durante meses. Algunas APIs de scripting de Postman más nuevas tienen un soporte inconsistente en Newman.

El resultado: los desarrolladores que construyeron pipelines de CI en Newman ahora buscan alternativas. Esto es lo que está disponible.

Opción 1: Apidog CLI (recomendado para usuarios de colecciones Postman)

El runner CLI de Apidog es el reemplazo funcional más cercano a Newman si ya tiene inversiones en colecciones Postman.

Qué soporta

  • Formato de colección Postman v2 y v2.1
  • Entornos Postman (exportación JSON)
  • pm.test, pm.expect, pm.environment.set, pm.collectionVariables.set
  • Scripts pre-solicitud y post-solicitud
  • Pruebas basadas en datos a través de archivos de datos CSV y JSON
  • Salida JUnit XML y JSON para informes de CI

No requiere npm. El CLI de Apidog se distribuye como un binario independiente. Lo descarga una vez, lo añade a su PATH y se ejecuta.

Sin límites por ejecución. Apidog no limita las ejecuciones de colecciones en ningún plan. Un pipeline que ejecuta 500 colecciones al día funciona igual que uno que ejecuta 5.

Instalación

Descargue el binario CLI para su plataforma desde apidog.com/cli o use el instalador de shell:

# macOS / Linux
curl -sSf https://apidog.com/cli/install.sh | sh

# Verificar
apidog --version
Enter fullscreen mode Exit fullscreen mode

Para runners de CI basados en Docker, Apidog proporciona una imagen oficial:

FROM apidog/cli:latest
Enter fullscreen mode Exit fullscreen mode

Ejecutar una colección Postman

  1. Exporte su colección desde Postman (Archivo > Exportar > Colección v2.1).
  2. Exporte su entorno (Administrar Entornos > Exportar).

Luego ejecute:

apidog run collection.json \
  --environment environment.json \
  --reporter-junit results.xml
Enter fullscreen mode Exit fullscreen mode

Ejemplo de GitHub Actions

name: API Tests

on: [push, pull_request]

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

      - name: Install Apidog CLI
        run: curl -sSf https://apidog.com/cli/install.sh | sh

      - name: Run API tests
        run: |
          apidog run ./tests/collection.json \
            --environment ./tests/env.json \
            --reporter-junit test-results.xml

      - name: Upload test results
        uses: actions/upload-artifact@v4
        if: always()
        with:
          name: api-test-results
          path: test-results.xml
Enter fullscreen mode Exit fullscreen mode

Sin npm install, sin package.json, sin matriz de versiones de Node.js. El trabajo se ejecuta más rápido y la superficie de dependencia es menor.

Ejemplo de GitLab CI

api-tests:
  image: apidog/cli:latest
  script:
    - apidog run ./tests/collection.json
        --environment ./tests/env.json
        --reporter-junit test-results.xml
  artifacts:
    reports:
      junit: test-results.xml
Enter fullscreen mode Exit fullscreen mode

Opción 2: k6

k6 es una herramienta de pruebas de carga de Grafana Labs que también maneja pruebas funcionales de API. Vale la pena conocerla porque es realmente excelente para pruebas de rendimiento junto con comprobaciones funcionales.

Qué soporta

  • HTTP/1.1, HTTP/2, WebSocket, gRPC
  • Scripts de prueba JavaScript (ES6+)
  • Umbrales para aserciones de rendimiento
  • Salida a InfluxDB, Prometheus, Datadog

Qué no soporta

  • Formato de colección Postman nativo. Puede convertir colecciones Postman a scripts k6 usando el convertidor postman-to-k6, pero la salida a menudo necesita limpieza manual, especialmente para scripts complejos.
  • La API pm.* de Postman de forma nativa. La capa de conversión la emula pero con lagunas.

Cuándo elegir k6

Si necesita combinar pruebas funcionales con pruebas de rendimiento en el mismo pipeline, por ejemplo, verificando la corrección de la API bajo carga, k6 vale el costo de la migración. Si solo desea reemplazar Newman para pruebas funcionales, Apidog es más rápido de configurar.

Uso básico de k6 en CI

# Instalar (Linux)
sudo apt-get install k6

# Ejecutar un script de prueba
k6 run api-tests.js
Enter fullscreen mode Exit fullscreen mode

Las salidas de k6 CI pasan/fallan según las definiciones de umbrales en su script. La salida JUnit XML está disponible a través del paquete k6-reporter.

Opción 3: Hurl

Hurl es una herramienta de prueba HTTP de código abierto escrita en Rust. Es rápida, no tiene dependencias de tiempo de ejecución y utiliza un DSL de texto plano para definir solicitudes y aserciones.

Qué soporta

  • HTTP/1.1 y HTTP/2
  • Aserciones JSON, XPath y regex
  • Variables y encadenamiento de solicitudes
  • Salida HTML, JUnit y JSON

Qué no soporta

  • Formato de colección Postman. Hurl utiliza su propio formato de archivo .hurl. No hay un convertidor automatizado.
  • Scripts de prueba JavaScript. Las aserciones son declarativas, no programáticas.

Cuándo elegir Hurl

Si está dispuesto a reescribir sus pruebas en el DSL de Hurl, obtendrá un binario notablemente pequeño sin tiempo de ejecución. El binario es un único archivo de 10 MB. Hurl es una opción sólida para nuevos proyectos en los que no arrastra la deuda de colecciones Postman.

Ejemplo básico de prueba con Hurl

GET https://api.example.com/users/1
HTTP 200
[Asserts]
jsonpath "$.id" == 1
jsonpath "$.email" isString
Enter fullscreen mode Exit fullscreen mode

Hurl en GitHub Actions

- name: Install Hurl
  run: |
    curl -LO https://github.com/Orange-OpenSource/hurl/releases/latest/download/hurl-x86_64-unknown-linux-gnu.tar.gz
    tar -xf hurl-*.tar.gz
    sudo mv hurl /usr/local/bin/

- name: Run API tests
  run: hurl --test tests/*.hurl
Enter fullscreen mode Exit fullscreen mode

Comparación de las tres opciones

Característica Apidog CLI k6 Hurl
Importación de Postman Nativa Convertidor (con pérdida) No
Dependencia de npm No No No
Scripting en JavaScript Sí (API pm.*) Sí (ES6) No (solo DSL)
Pruebas de rendimiento No No
Tamaño del binario ~50 MB ~30 MB ~10 MB
Límites de ejecución gratuitos Ninguno Ninguno Ninguno
Salida JUnit Mediante plugin

Migración desde Newman: pasos prácticos

Si tiene un pipeline existente basado en Newman, aquí tiene la ruta de migración a Apidog CLI:

1. Exporte sus colecciones.

En Postman, haga clic derecho en cada colección y expórtela como v2.1. Exporte sus entornos por separado.

2. Instale Apidog CLI.

Añada el paso de instalación a su configuración de CI.

3. Reemplace el comando Newman.

Un comando Newman típico se ve así:

newman run collection.json -e environment.json --reporters junit --reporter-junit-export results.xml
Enter fullscreen mode Exit fullscreen mode

El equivalente de Apidog:

apidog run collection.json --environment environment.json --reporter-junit results.xml
Enter fullscreen mode Exit fullscreen mode

La estructura de las banderas es similar por diseño.

4. Verifique la compatibilidad del script.

Ejecute su colección localmente con Apidog CLI antes de confirmar el cambio en CI. La mayoría de los scripts pm.* se ejecutan sin modificaciones. Los scripts que usan pm.require para cargar módulos externos necesitan ajustes.

5. Elimine Node.js de su configuración de CI.

Si Newman era la única razón por la que Node.js aparecía en su pipeline, puede eliminar el paso de configuración de Node.js y el paso de npm install por completo.

Preguntas Frecuentes

¿Newman está oficialmente obsoleto?

No, a principios de 2026 Newman sigue siendo mantenido por Postman. Pero el ritmo de mantenimiento es lento y varios problemas abiertos afectan casos de uso del mundo real. No desaparecerá pronto, pero construir nuevos pipelines sobre él conlleva un riesgo creciente.

¿Apidog CLI requiere una cuenta Apidog?

Para ejecutar colecciones exportadas localmente, no. Para sincronizar colecciones desde un espacio de trabajo de Apidog, sí. Si está migrando desde Postman, puede ejecutar puramente desde archivos JSON exportados.

¿Puede Apidog CLI ejecutar pruebas basadas en datos?

Sí. Pase un archivo de datos CSV o JSON con la bandera --iteration-data. Esto es equivalente a la bandera -d de Newman para iteraciones basadas en datos.

¿Cuál es el riesgo de la cadena de suministro con los runners basados en npm?

Cualquier paquete descargado de npm en tiempo de CI es una superficie de ataque potencial. Los paquetes comprometidos pueden exfiltrar variables de entorno, lo que en un contexto de CI incluye claves y tokens de API. Un runner binario descargado a través de HTTPS y fijado a una suma de verificación evita esta clase de riesgo.

¿k6 soporta pruebas gRPC?

Sí. k6 tiene soporte gRPC nativo, lo que lo convierte en una de las pocas herramientas de código abierto que maneja tanto REST como gRPC en la misma suite de pruebas. Si su superficie de API incluye puntos finales gRPC, k6 vale la pena evaluarlo.

¿Hurl soporta cabeceras de autenticación?

Sí. Hurl soporta cabeceras personalizadas, incluyendo Authorization, Bearer y autenticación basada en cookies. Las variables le permiten inyectar secretos desde variables de entorno en tiempo de ejecución.

La era de Newman como la elección predeterminada de CI para pruebas de API está terminando. Los riesgos de la cadena de suministro son reales, los límites del nivel gratuito han cambiado la ecuación para muchos equipos, y ahora existen mejores alternativas. La migración a un pipeline sin Newman es sencilla, especialmente si se está moviendo a Apidog CLI con sus colecciones Postman existentes.

Top comments (0)