J'ai abandonné Postman pour adopter Bruno

Avec la hype en ce moment autour de ce nouveau client API, j’ai testé Bruno, et je dois dire que je suis conquis. Voici pourquoi j’ai abandonné Postman pour adopter Bruno.

Bruno

Reprise en main des données

Le premier point hyper important, c’est la reprise en main de mes données. Avec Postman, les données sont stockées dans le cloud et il est difficile de les partager sans payer. Bruno, en revanche, stocke les données sous forme de fichiers directement dans notre projet. Cela signifie que toutes les collections et requêtes API sont versionnées avec Git et incluses dans le processus de développement. Plus besoin de jongler avec des exports/imports compliqués ou de s’inquiéter de la sécurité des données dans le cloud.

Intégration fluide avec CI/CD

Le deuxième point fort de Bruno est sa CLI. Cette interface en ligne de commande permet d’exécuter des tests API facilement et de les intégrer directement dans le pipeline CI/CD. Grâce à cela, les tests API peuvent être automatisés et exécutés à chaque build ou déploiement, assurant ainsi que l’API fonctionne toujours comme prévu. C’est un véritable gain de temps et une garantie supplémentaire de qualité pour nos projets.

Facilité de prise en main

Les interfaces de Bruno et Postman sont très proches, ce qui rend la transition extrêmement facile. On s’y retrouve rapidement et on peut immédiatement commencer à travailler.

En termes de fonctionnalités, on peut tout ou quasiment tout faire avec Bruno. Jusqu’à présent, je n’ai jamais été coincé.

En pratique

La migration n’a pas été compliquée, mais l’import n’a pas été possible à cause des noms des requêtes qui étaient les mêmes dans Postman (ce qui n’est pas possible dans Bruno vu que le nom des requêtes est aussi le nom des fichiers). J’ai finalement décidé de tout recréer à la main, ce qui m’a permis de revoir mes collections et de les organiser de manière plus logique. Ce fut un peu fastidieux, mais cela a permis de refaire une passe et de repartir sur de bonnes bases.

J’en ai profité dans la foulée pour créer des tests et des asserts pour la majorité des requêtes. J’ai aussi joué avec les variables “Pre Request” et “Post Response” pour automatiser au maximum les tests. Au final, j’ai créé 120 assertions et écris 11 tests pour 37 requêtes. Et le meilleur dans tout ça, c’est que je peux choisir quels dossiers de requêtes tester sur la prod et/ou la preprod.

Voici ce que donne mon fichier de configuration pour la CI/CD :

name: API

on:
    push:
        branches:
            - main
    pull_request:
        branches:
            - main

jobs:
    api-test:
        name: 'Test'
        runs-on: ubuntu-latest
        defaults:
            run:
                working-directory: docs/bruno
        steps:
            - uses: actions/checkout@v4
            - uses: actions/setup-node@v4
              with:
                  node-version: 20
                  cache: yarn
            - name: Install dependencies
              run: yarn install --frozen-lockfile
            - name: Create .env file
              run: |
                echo "ACCESS_KEY=${{ secrets.ACCESS_KEY }}" > .env
                echo "SECRET_KEY=${{ secrets.SECRET_KEY }}" >> .env
                echo "ADMIN_ACCESS_KEY=${{ secrets.ADMIN_ACCESS_KEY }}" >> .env
                echo "ADMIN_SECRET_KEY=${{ secrets.ADMIN_SECRET_KEY }}" >> .env
            - name: Test API for preprod
              run: npx bru run Sitting -r --env=preprod
            - name: Test API for prod
              run: |
                npx bru run Sitting/Address --env=prod
                npx bru run Sitting/Bottle --env=prod
                npx bru run Sitting/Invoice --env=prod
                npx bru run Sitting/Putaway --env=prod
                npx bru run "Sitting/Statistics (Admin Only)" --env=prod
                npx bru run Sitting/Transaction --env=prod
                npx bru run Sitting/User --env=prod
                npx bru run "Sitting/Wine Comment" --env=prod
                npx bru run "Sitting/Wine Price" --env=prod

Enfin, je rencontre quelques bugs, notamment un gênant en ce moment qui ne me permet pas d’accéder aux menus déroulants. Impossible donc de choisir un environnement ou une variable, ce qui est un peu embêtant. Je persévère et clique un peu partout et parfois ça finit par fonctionner, mais c’est un peu frustrant. Bizarrement lorsque j’ai testé la première fois et ensuite tout mis en place, je n’ai pas rencontré ce problème…

J’attends les prochaines mises à jour avec impatience pour voir si ces problèmes seront corrigés et découvrir les nouvelles fonctionnalités.