Bruno: test API offline, lưu collection trong Git thay cho Postman
Tóm tắt
Bruno lưu collection API thành file văn bản trong repo, cộng tác qua Git, chạy offline không đồng bộ cloud. Viết test bằng JavaScript, chạy trong CI bằng bru run --env, và giữ secret ngoài file request.
Postman là công cụ test API quen thuộc, nhưng nhiều team gặp cùng vấn đề: collection nằm trên cloud của nhà cung cấp, đồng bộ cần tài khoản, giới hạn số người cộng tác, và collection không nằm cạnh code nên thường lệch với API thật. Bruno là IDE mã nguồn mở để khám phá và test API, chọn hướng ngược lại: collection lưu thành file văn bản thuần trong một thư mục trên máy bạn, nên commit vào Git cùng với code. Bruno cam kết chạy offline, và theo README không có kế hoạch thêm đồng bộ cloud.

Cài đặt
brew install bruno # macOS
winget install Bruno.Bruno # Windows
# Linux: tải bản .deb/.AppImage/Snap trên trang usebruno.com
npm install -g @usebruno/cli # CLI để chạy trong terminal và CI
Bắt đầu với một collection
- Mở Bruno, chọn Create Collection, chọn thư mục, nên đặt trong repo, ví dụ
api-tests/. - Thêm request: chọn method, URL, header, body. Mỗi request được lưu thành một file
.bru. - Tạo Environment (Local, Staging…) chứa biến như
baseUrl,token; dùng trong request bằng{{baseUrl}}. - Commit thư mục collection; đồng đội pull về là có cùng bộ request.
Nhờ là file văn bản, khi API thay đổi, bạn sửa request trong cùng PR với code, và reviewer thấy diff rõ ràng.
Script và test
Mỗi request có tab Script (chạy trước và sau request) và tab Tests, viết bằng JavaScript:
// Tab Tests
test("trả về 200", function () {
expect(res.getStatus()).to.equal(200);
});
test("có danh sách user", function () {
expect(res.getBody().data).to.be.an("array");
});
// Tab Script (post-response): lưu token để request sau dùng
bru.setVar("token", res.getBody().accessToken);
Chạy bằng CLI và trong CI
| Lệnh | Tác dụng |
|---|---|
bru run | Chạy mọi request trong collection (chạy trong thư mục collection) |
bru run users/get-user.bru | Chạy một request |
bru run users | Chạy cả một thư mục |
bru run --env Staging | Chọn environment |
bru run --output results.json | Xuất kết quả để lưu làm artifact CI |
bru import openapi --source api.yml ... | Tạo collection từ file OpenAPI |
Bruno cũng nhập được collection từ Postman và Insomnia, giúp chuyển đổi nhanh.
Lưu ý
- Đừng commit secret: để token, mật khẩu trong biến môi trường đánh dấu secret hoặc file
.env(thêm vào.gitignore), không ghi thẳng vào file request. - Bản mã nguồn mở đủ cho phần lớn nhu cầu; một số tính năng nâng cao thuộc phiên bản trả phí. Kiểm tra trang giá nếu team cần.
- Không có đồng bộ cloud nghĩa là cộng tác hoàn toàn qua Git; team chưa quen Git cần hướng dẫn.
Áp dụng thế nào?
- Dev: Đặt collection Bruno trong repo backend, cập nhật request cùng PR thay đổi API.
- Tech Lead/QA: Chạy
bru run --env Stagingsau mỗi lần deploy staging như một bộ smoke test API, fail pipeline khi test hỏng. - PM: Dữ liệu API (kể cả ví dụ request có thông tin khách hàng) không rời khỏi máy và repo công ty, dễ đáp ứng yêu cầu bảo mật hơn so với lưu trên cloud bên thứ ba.
Nguồn & tham khảo
- usebruno/bruno — usebruno (GitHub)
- Bruno documentation — usebruno