← Retour à la liste
★★★★½ 4.5 / 5
Catégorie 03EXT.

Bruno

Client API git-friendly — alternative open-source à Postman

Installation
macOSbrew install --cask bruno
Windowswinget install Bruno.Bruno # Ou télécharger l'installeur .exe sur usebruno.com
Linux (AppImage)# Télécharger le .AppImage sur usebruno.com/downloads chmod +x bruno-*.AppImage sudo mv bruno-*.AppImage /usr/local/bin/bruno
CLI (npm global)npm install -g @usebruno/cli
Versionv1.x (mai 2026)
PrixGratuit (open-source MIT) — Golden Edition 19 $ one-shot (optionnel)
Plateformes
WindowsmacOSLinux
Commandes5
Exemples3
EXT
À propos

Bruno est un client API desktop open-source (MIT) qui stocke les collections directement dans des fichiers texte `.bru` versionnés en Git — zéro cloud, zéro sync forcé, zéro compte requis. Alternative directe à Postman et Insomnia, Bruno permet de partager les collections API dans le dépôt du projet. Supporte REST, GraphQL et le scripting (pre-request/post-response) en JavaScript. Une CLI (`bru run`) permet d'exécuter les collections en CI/CD.

Fonctionnalités clés
Collections en fichiers .bru versionnés GitChaque requête est un fichier texte `.bru` dans votre dépôt. Commitez, reviewez en PR, mergez — les collections API suivent le cycle de vie du code. Fini les exports JSON obscurs de Postman.
CLI bru run pour CI/CDExécutez toutes vos requêtes en pipeline : `bru run --env production --reporter junit`. Génère des rapports JUnit/HTML pour GitLab CI, GitHub Actions, Jenkins.
Variables d'environnement et secretsGestion multi-environnements (dev, staging, prod) avec fichiers `.env` locaux (non versionnés) pour les secrets. Les variables publiques restent dans le dépôt ; les clés API restent hors Git.
Scripting pre/post requestScripts JavaScript avant et après chaque requête — authentification automatique, extraction de tokens, assertions sur la réponse. Même puissance que Postman sans le cloud.
Support GraphQL natifÉditeur GraphQL intégré avec introspection du schéma, autocomplétion des champs et variables. Pas besoin d'un outil séparé pour tester vos endpoints GraphQL.
Collections partagées dans le projetUne collection Bruno vit dans `tests/api/` ou `bruno/` à la racine du projet. Chaque développeur clone le repo et a instantanément accès aux requêtes — pas d'import/export manuel.
Commandes
CommandeDescription
bru runExécuter toutes les requêtes d'une collection
bru run --env stagingExécuter avec l'environnement "staging"
bru run request.bruExécuter une seule requête par son fichier
bru run --reporter junitGénérer un rapport JUnit pour CI/CD
bru run --env prod --reporter html --output report.htmlRapport HTML complet pour une collection en production
Exemples
Requête Drupal JSON:API avec token BearerCODE
# GET articles.bru
get {
  url: {{base_url}}/jsonapi/node/article
  body: none
  auth: bearer
}

auth:bearer {
  token: {{access_token}}
}

script:post-response {
  // Extraire le token de rafraîchissement automatiquement
  if (res.status === 401) {
    const tokenRes = await bru.sendRequest({
      method: 'POST',
      url: bru.getEnvVar('base_url') + '/oauth/token',
      body: { ... }
    });
    bru.setEnvVar('access_token', tokenRes.data.access_token);
  }
}
Exécution CI/CD GitLabCODE
# .gitlab-ci.yml
api-tests:
  image: node:20-alpine
  script:
    - npm install -g @usebruno/cli
    - bru run bruno/ --env ci --reporter junit --output report.xml
  artifacts:
    reports:
      junit: report.xml
  only:
    - merge_requests
Test GraphQL avec introspectionCODE
# graphql/get-articles.bru
post {
  url: {{base_url}}/graphql
  body: graphql
  auth: bearer
}

auth:bearer {
  token: {{access_token}}
}

body:graphql {
  query {
    nodeArticles(first: 10) {
      nodes {
        id
        title
        body { value }
      }
    }
  }
}
Points forts & faibles
Points forts
+Open-source MIT — aucun lock-in, aucun abonnement
+Collections en fichiers texte versionnés dans Git
+CLI pour CI/CD — exécution automatisée des tests API
+Aucun compte requis, zéro télémétrie, zéro sync cloud forcé
+Supporte REST, GraphQL, multipart, WebSockets
+Léger et rapide — pas d'Electron lourd comme Postman
+Migration depuis Postman/Insomnia facilitée (import direct)
Points faibles
Moins de fonctionnalités avancées que Postman Pro (monitors, mock servers)
Documentation moins fournie que Postman
Pas de collaboration en temps réel (by design — c'est Git qui remplace)
Golden Edition requise pour les certificates clients et NTLM
Pas de version web — desktop uniquement
Verdict

Le remplacement idéal de Postman pour les équipes qui travaillent en Git. Stocker les collections comme du code (`.bru` files) change radicalement la collaboration et la revue de code. La CLI `bru run` en CI/CD est un argument décisif.

Toute équipe qui partage des collections Postman via exports JSON ou des workspaces cloud. Parfait pour les projets Drupal API, Next.js ou tout backend REST/GraphQL.