DEV Community

Cover image for Exécuter Collections Postman en CI Sans Newman
Antoine Laurent
Antoine Laurent

Posted on • Originally published at apidog.com

Exécuter Collections Postman en CI Sans Newman

En bref

Newman, l'exécuteur CLI officiel de Postman, nécessite npm et Node.js dans votre pipeline CI. Cela introduit un risque lié à la chaîne d'approvisionnement, ajoute une surcharge de gestion des dépendances et, sur le forfait gratuit de Postman, les exécutions de collections via l'API sont désormais soumises à des limites de débit. Ce guide présente trois alternatives pour exécuter des tests d'API en CI sans Newman : l'exécuteur CLI d'Apidog, k6 et Hurl. Apidog est la voie la plus directe si vous avez des collections Postman existantes, car il les importe nativement et n'a aucune limite par exécution.

Essayez Apidog dès aujourd'hui

💡Apidog est une plateforme de développement d'API tout-en-un gratuite. Son exécuteur CLI exécute des collections compatibles Postman en CI sans dépendance npm et sans limite de nombre d'exécutions. Essayez Apidog gratuitement, aucune carte de crédit requise.

Introduction

Newman était une bonne idée. Un outil CLI qui exécute les collections Postman dans les pipelines CI a rendu les tests d'API portables et automatisables. Il bénéficiait de la confiance de la marque Postman, s'intégrait à GitHub Actions via une action communautaire populaire, et fonctionnait assez bien pour que de nombreuses équipes construisent leur stratégie d'automatisation des tests d'API autour de lui.

Puis trois problèmes sont apparus.

Premièrement, Newman est un package npm. Chaque pipeline qui l'utilise tire du registre npm au moment de la construction. La compromission de ua-parser-js en 2021 et l'incident de node-ipc en 2022 ont démontré que les attaques de la chaîne d'approvisionnement npm ne sont pas théoriques. Les équipes de sécurité ont commencé à se demander pourquoi la couche de test d'API avait besoin de npm.

Deuxièmement, Postman a commencé à limiter les exécutions de collections sur les forfaits gratuits et basiques. Les équipes qui comptaient sur l'exécution de collections via l'API Postman dans le cadre de leur CI ont atteint les quotas et ont dû soit mettre à niveau leurs plans, soit repenser leurs pipelines.

Troisièmement, le rythme de maintenance de Newman a ralenti. Les problèmes restent ouverts sur GitHub pendant des mois. Certaines API de script Postman plus récentes ont un support incohérent dans Newman.

Le résultat : les développeurs qui ont construit des pipelines CI sur Newman recherchent maintenant des alternatives. Voici ce qui est disponible.

Option 1 : Apidog CLI (recommandé pour les utilisateurs de collections Postman)

L'exécuteur CLI d'Apidog est le remplacement fonctionnel le plus proche de Newman si vous avez déjà investi dans les collections Postman.

Fonctionnalités prises en charge :

  • Format Postman Collection v2 et v2.1
  • Environnements Postman (exportation JSON)
  • pm.test, pm.expect, pm.environment.set, pm.collectionVariables.set
  • Scripts de pré-requête et de post-requête
  • Tests basés sur les données via des fichiers de données CSV et JSON
  • Sortie JUnit XML et JSON pour les rapports CI

Aucun npm requis. L'Apidog CLI est distribué en tant qu'exécutable autonome. Téléchargez-le, ajoutez-le à votre PATH, et il s'exécute immédiatement.

Aucune limite par exécution. Apidog ne limite pas le nombre d'exécutions de collections sur aucun plan. Exécutez autant de collections que nécessaire dans vos pipelines.

Installation

Téléchargez l'exécutable CLI pour votre plateforme depuis apidog.com/cli ou utilisez l'installeur shell :

# macOS / Linux
curl -sSf https://apidog.com/cli/install.sh?utm_source=dev.to&utm_medium=wanda&utm_content=n8n-post-automation | sh

# Vérifier
apidog --version
Enter fullscreen mode Exit fullscreen mode

Pour les exécuteurs CI basés sur Docker, utilisez l'image officielle :

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

Exécuter une collection Postman

  1. Exportez votre collection depuis Postman (Fichier > Exporter > Collection v2.1) et votre environnement (Gérer les environnements > Exporter).
  2. Exécutez la commande suivante :
apidog run collection.json \
  --environment environment.json \
  --reporter-junit results.xml
Enter fullscreen mode Exit fullscreen mode

Exemple GitHub Actions

name: Tests API

on: [push, pull_request]

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

      - name: Installer Apidog CLI
        run: curl -sSf https://apidog.com/cli/install.sh?utm_source=dev.to&utm_medium=wanda&utm_content=n8n-post-automation | sh

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

      - name: Télécharger les résultats des tests
        uses: actions/upload-artifact@v4
        if: always()
        with:
          name: api-test-results
          path: test-results.xml
Enter fullscreen mode Exit fullscreen mode

Aucun npm install, aucun package.json, aucune matrice de version Node.js. La tâche s'exécute plus rapidement et la surface de dépendance est réduite.

Exemple 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

Option 2 : k6

k6 est un outil de test de charge de Grafana Labs qui gère également les tests d'API fonctionnels. Il est particulièrement adapté si vous souhaitez combiner tests fonctionnels et de performance.

Fonctionnalités prises en charge :

  • HTTP/1.1, HTTP/2, WebSocket, gRPC
  • Scripts de test JavaScript (ES6+)
  • Seuils pour les assertions de performance
  • Sortie vers InfluxDB, Prometheus, Datadog

Limites :

  • Pas de support natif du format Postman. Conversion possible via postman-to-k6, mais un nettoyage manuel est souvent nécessaire.
  • L'API pm.* de Postman n'est pas prise en charge nativement.

Quand choisir k6 :

  • Combinez tests fonctionnels et de performance dans un même pipeline.
  • Pour remplacer Newman sur des tests purement fonctionnels, Apidog est plus rapide à mettre en place.

Utilisation de base de k6 en CI :

# Installer (Linux)
sudo apt-get install k6

# Exécuter un script de test
k6 run api-tests.js
Enter fullscreen mode Exit fullscreen mode

Pour la sortie JUnit XML, utilisez le package k6-reporter.

Option 3 : Hurl

Hurl est un outil de test HTTP open-source écrit en Rust. Il est rapide, autonome et utilise un DSL en texte clair pour les requêtes et assertions.

Fonctionnalités prises en charge :

  • HTTP/1.1 et HTTP/2
  • Assertions JSON, XPath et regex
  • Variables et enchaînement de requêtes
  • Sortie HTML, JUnit et JSON

Limites :

  • Aucun support des collections Postman ; nécessite de réécrire les tests au format .hurl.
  • Pas de scripting JavaScript ; assertions uniquement déclaratives.

Quand choisir Hurl :

  • Idéal pour les nouveaux projets ou si vous êtes prêt à réécrire vos tests dans le DSL Hurl.
  • Exécutable autonome d'environ 10 Mo.

Exemple de test Hurl de base :

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

Hurl dans GitHub Actions :

- name: Installer 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: Exécuter les tests API
  run: hurl --test tests/*.hurl
Enter fullscreen mode Exit fullscreen mode

Comparaison des trois options

Fonctionnalité Apidog CLI k6 Hurl
Import Postman Natif Convertisseur (perte de données) Non
Dépendance npm Non Non Non
Scripting JavaScript Oui (API pm.*) Oui (ES6) Non (DSL uniquement)
Test de performance Non Oui Non
Taille de l'exécutable ~50 Mo ~30 Mo ~10 Mo
Limites d'exécution gratuites Aucune Aucune Aucune
Sortie JUnit Oui Via plugin Oui

Migration depuis Newman : étapes pratiques

Si vous avez un pipeline existant basé sur Newman, migrez facilement vers Apidog CLI :

  1. Exportez vos collections. Dans Postman, faites un clic droit sur chaque collection et exportez-la en version 2.1. Exportez aussi vos environnements.

  2. Installez Apidog CLI. Ajoutez l'étape d'installation à votre configuration CI.

  3. Remplacez la commande Newman.

    Exemple Newman :

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

Équivalent Apidog :

   apidog run collection.json --environment environment.json --reporter-junit results.xml
Enter fullscreen mode Exit fullscreen mode
  1. Vérifiez la compatibilité des scripts. Exécutez votre collection localement avec Apidog CLI avant de valider la modification CI. La plupart des scripts pm.* fonctionnent sans modification. Les scripts utilisant pm.require pour charger des modules externes nécessitent un ajustement.

  2. Supprimez Node.js de votre configuration CI.

    Si Newman était la seule raison d'utiliser Node.js, vous pouvez retirer les étapes liées à Node.js et à npm install.

FAQ

Newman est-il officiellement déprécié ?

Non, début 2026, Newman est toujours maintenu par Postman. Cependant, le rythme de maintenance est lent et plusieurs problèmes ouverts affectent des cas d'utilisation réels. Il reste utilisable, mais démarrer de nouveaux pipelines avec lui comporte un risque croissant.

Apidog CLI nécessite-t-il un compte Apidog ?

Pour l'exécution de collections exportées localement : non. Pour la synchronisation à partir d'un espace de travail Apidog : oui. Si vous migrez depuis Postman, l'exécution depuis des fichiers JSON exportés suffit.

Apidog CLI peut-il exécuter des tests basés sur les données ?

Oui. Passez un fichier de données CSV ou JSON avec l'option --iteration-data. Cela équivaut à l'option -d de Newman.

Quel est le risque de la chaîne d'approvisionnement avec les exécuteurs basés sur npm ?

Tout package tiré de npm en CI est une surface d'attaque potentielle : des packages compromis peuvent exfiltrer des variables d'environnement (clés API, jetons). Un exécutable binaire téléchargé via HTTPS et épinglé à une somme de contrôle réduit ce risque.

k6 prend-il en charge les tests gRPC ?

Oui. k6 a un support gRPC natif, ce qui en fait un des rares outils open-source couvrant à la fois REST et gRPC.

Hurl prend-il en charge les en-têtes d'authentification ?

Oui. Hurl gère les en-têtes personnalisés, y compris Authorization, Bearer et l'authentification basée sur les cookies. Les variables permettent d'injecter des secrets à partir des variables d'environnement lors de l'exécution.

L'ère de Newman comme choix par défaut pour les tests d'API en CI touche à sa fin. Les risques liés à la chaîne d'approvisionnement sont réels, les limites du forfait gratuit ont changé la donne, et de meilleures alternatives existent désormais. La migration vers un pipeline sans Newman est simple, surtout si vous passez à Apidog CLI avec vos collections Postman existantes.

Top comments (0)