Bruno es un cliente API completamente open-source construido alrededor de una filosofía Git-nativa: las colecciones se almacenan como archivos de texto .bru en tu sistema de archivos, no en ninguna nube. Lanzado en 2022, superó las 40,000 estrellas en GitHub en dos años, convirtiéndose en una de las herramientas API de más rápido crecimiento en el ecosistema open-source. A diferencia de Postman o Insomnia, Bruno no requiere cuenta, login ni conexión a internet — todo se ejecuta localmente. El formato .bru es legible por humanos y conveniente para diffs, lo que significa que toda tu colección API puede vivir junto a tu código en control de versiones. Para equipos de QA frustrados con el vendor lock-in y los crecientes costos de SaaS, el enfoque offline-first de Bruno representa un cambio fundamental en cómo pueden funcionar las herramientas de testing de API.
“Bruno resolvió un problema que no me di cuenta era urgente hasta que perdí acceso a la sincronización en la nube en medio de una sesión de testing. Tener colecciones como archivos reales en mi repositorio Git cambió cómo nuestro equipo revisa los cambios de API — ahora es simplemente un diff en un PR.” — Yuri Kan, Senior QA Lead
Si estás aprendiendo testing de API, Bruno ofrece una alternativa convincente a las herramientas basadas en la nube. Los equipos que migran de Postman a automatización encontrarán el flujo de trabajo Git-nativo de Bruno particularmente atractivo. La herramienta se integra bien con pipelines de CI/CD y soporta flujos de testing continuo a través de su CLI.
TL;DR — Bruno almacena colecciones API como archivos
.brude texto plano (100% Git-nativo), no requiere cuenta ni nube, y es completamente MIT. Más de 40,000 estrellas en GitHub. Soporte CI/CD vía@usebruno/cli. Importa colecciones Postman directamente. Assertions Chai incorporadas.
Introducción a Bruno API Client
Lanzado en 2022, Bruno rápidamente ganó tracción entre desarrolladores frustrados con modelos de precios por suscripción y dependencia de la nube. Es particularmente atractivo para equipos que ya usan flujos de trabajo Git. Según la documentación oficial de Bruno, la herramienta está diseñada para ser el “Notepad++ de los clientes API” — simple, rápido y bajo tu control total.
Por Qué Bruno Destaca
Filosofía Central y Ventajas
Arquitectura Offline-First Bruno no requiere sincronización en la nube ni cuentas. Todo se ejecuta localmente:
- No requiere login
- Privacidad completa
- Funciona sin conexión a internet
- Rápido y responsivo
Flujo de Trabajo Nativo de Git
Las colecciones son archivos de texto plano (formato .bru) que se integran perfectamente con Git:
- Control de versiones incorporado
- Revisiones de código fáciles para cambios de API
- Desarrollo basado en branches
- Resolución de conflictos de merge usando herramientas Git estándar
Open Source y Gratuito Licenciado bajo MIT, Bruno es verdaderamente gratuito sin limitaciones artificiales:
- Sin tiers pagos ni características premium
- Desarrollo impulsado por la comunidad
- Roadmap transparente
- Arquitectura extensible
Colecciones como Código
El formato de archivo .bru es legible por humanos y diseñado para desarrolladores:
meta {
name: Get User
type: http
seq: 1
}
get {
url: {{base_url}}/api/users/{{user_id}}
}
headers {
Authorization: Bearer {{token}}
Content-Type: application/json
}
vars:pre-request {
user_id: 123
}
tests {
test("Status code is 200", function() {
expect(res.status).to.equal(200);
});
test("Response has user data", function() {
expect(res.body).to.have.property('id');
expect(res.body).to.have.property('name');
});
}
Comenzando con Bruno
Instalación
Bruno está disponible para todas las plataformas principales:
# macOS (Homebrew)
brew install bruno
# Windows (Chocolatey)
choco install bruno
# Linux (Snap)
snap install bruno
# O descarga desde GitHub releases
# https://github.com/usebruno/bruno/releases
Creando Tu Primera Colección
- Crear Nueva Colección: File → New Collection
- Elegir Ubicación: Selecciona una carpeta en tu repositorio Git
- Agregar Environment: Crea archivos de entorno para diferentes configuraciones
- Crear Requests: Clic derecho en colección → New Request
Estructura de Directorio
my-api/
├── bruno.json # Metadata de colección
├── environments/
│ ├── local.bru
│ ├── staging.bru
│ └── production.bru
└── requests/
├── auth/
│ ├── login.bru
│ └── refresh.bru
└── users/
├── get-user.bru
├── create-user.bru
└── update-user.bru
Migración desde Postman
Proceso de Importación
Bruno soporta importar colecciones Postman. Si estás evaluando diferentes herramientas de testing de API, la capacidad de importación de Bruno hace que el cambio sea fluido:
- Exportar desde Postman: Collection → Export → Collection v2.1
- Importar a Bruno: Collection → Import → Select Postman JSON
- Revisar mapeo: Verificar variables de entorno y scripts
- Ajustar diferencias: Modificar scripts si es necesario
Diferencias Clave a Entender
| Característica | Postman | Bruno |
|---|---|---|
| Almacenamiento | Cloud | Sistema de archivos |
| Formato | JSON | .bru (texto) |
| Sync | Automático | Git |
| Precio | Freemium | Gratis |
| Colaboración | Incorporada | Basada en Git |
| Scripts | Sandbox Postman | Módulos Node.js |
| Workspaces | Cloud workspaces | Carpetas |
Migración de Scripts
Script de Postman
pm.environment.set("token", pm.response.json().access_token);
pm.test("Status is 200", () => {
pm.response.to.have.status(200);
});
Equivalente en Bruno
bru.setEnvVar("token", res.body.access_token);
test("Status is 200", function() {
expect(res.status).to.equal(200);
});
CLI y Automatización
Bruno CLI
Ejecuta colecciones desde línea de comandos:
# Instalar CLI
npm install -g @usebruno/cli
# Ejecutar colección completa
bru run --collection ./my-api
# Ejecutar carpeta específica
bru run --collection ./my-api --folder users
# Usar entorno específico
bru run --collection ./my-api --env production
# Formatos de output
bru run --collection ./my-api --output junit.xml --format junit
Integración CI/CD
Ejemplo GitHub Actions
name: API Tests
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install Bruno CLI
run: npm install -g @usebruno/cli
- name: Run API Tests
run: bru run --collection ./api-tests --env ci
env:
API_KEY: ${{ secrets.API_KEY }}
BASE_URL: ${{ secrets.BASE_URL }}
Comparación: Bruno vs Competidores
Al elegir un cliente API, vale la pena comparar Bruno contra alternativas como Insomnia REST client:
| Característica | Bruno | Postman | Insomnia | Thunder Client |
|---|---|---|---|---|
| Costo | Gratis | Freemium | Freemium | Gratis + Pro |
| Offline | Sí | Limitado | Sí | Sí |
| Almacenamiento | Archivos locales | Cloud | Híbrido | Workspace VS Code |
| Compatible Git | Excelente | Pobre | Moderado | Bueno |
| Colaboración | Basada en Git | Incorporada | Pago | Limitada |
Preguntas Frecuentes
¿Es Bruno API Client completamente gratuito? Sí, Bruno es totalmente open-source bajo la licencia MIT, sin planes de pago, funciones premium ni costos de suscripción. Todo es gratuito para siempre.
¿Cómo se diferencia Bruno de Postman? Bruno almacena colecciones como archivos .bru de texto plano en tu sistema de archivos (Git-nativo), mientras Postman usa almacenamiento en la nube. Bruno no requiere cuenta, funciona completamente offline y no tiene precios de suscripción.
¿Puedo importar mis colecciones de Postman a Bruno? Sí, Bruno soporta importar archivos JSON de Postman Collection v2.1. Ve a Collection → Import → selecciona Postman JSON, luego revisa las variables de entorno y scripts.
¿Bruno soporta pipelines de CI/CD?
Sí, Bruno provee un CLI (@usebruno/cli) que ejecuta colecciones desde línea de comandos con salida en JUnit XML, compatible con GitHub Actions, GitLab CI, Jenkins y cualquier otro sistema de CI.
Conclusión
Bruno API Client representa un cambio de paradigma en herramientas de testing de API, priorizando flujos de trabajo de desarrollador, propiedad de datos y simplicidad. Su arquitectura basada en archivos se alinea perfectamente con prácticas modernas de desarrollo centradas en Git.
La naturaleza open-source asegura transparencia, innovación impulsada por la comunidad y libertad del vendor lock-in.
Fuentes: Documentación Oficial de Bruno · Repositorio GitHub de Bruno
Ver También
- Domina el Testing de APIs - Fundamentos y mejores prácticas de testing de API
- Postman: de Manual a Automatización - Aprende testing de API con Postman antes de migrar a Bruno
- Optimización de CI/CD para Equipos de QA - Integra Bruno CLI en tus pipelines automatizados
- Testing Continuo en DevOps - Implementa testing continuo de API
- Insomnia REST Client - Otra alternativa popular a Postman
