{
  "id": 8018763,
  "title": "Getting started with Bruno: git-native API testing in 10 minutes",
  "url": "https://urgent.news/2026/09/17/getting-started-with-bruno-git-native-api-testing-in-10-minutes",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-09-17T12:00:07.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/alexai/getting-started-with-bruno-git-native-api-testing-in-10-minutes-49oj"
  },
  "original_language": "en",
  "account": "Bruno is an open source API client that stores your API requests and related configurations as plain text files rather than in a cloud-based workspace. This allows you to keep your API testing alongside your code in a Git repository. This guide provides a step-by-step walk through the process of getting started with Bruno, from installation to running your first collection in a continuous integration (CI) pipeline, all of which should take about ten minutes.\n\nThe primary advantage of using Bruno over traditional cloud-based API clients is that it keeps all the data on your local filesystem. Each request is stored in a .bru file, and each environment configuration is stored in a separate file. The entire collection is simply a folder containing these files. This approach makes it easy to commit the collection to a Git repository, review it as part of your codebase, and ensure that the tests are always up-to-date with the code it is testing.\n\nTo get started, you first need to download Bruno for your operating system (Mac, Windows, or Linux) from the official website. Once installed, create a new collection, which generates a folder with a bruno.json manifest and a sample request saved as a .bru file. Open this folder in any text editor, and you will see the request in human-readable plain text format.\n\nThe .bru file format is designed to be easy to read and edit. Example requests look like this:\n\n```json\nget { url: {{baseUrl}}/users/1 }\nheaders { Accept: application/json }\nassert { res.status: eq 200 }\n```\n\nThis format is straightforward, with variables referenced using double curly braces (e.g., {{baseUrl}}), request headers defined in a headers block, and response assertions in an assert block. Since it is plain text, you can edit it using any code editor, and it integrates seamlessly with version control systems like Git.\n\nBruno allows you to set up different environments and variables by storing them in dedicated files. You can define different base URLs for each environment (e.g., local, staging, production) and reference these using {{baseUrl}} within your requests. For sensitive information such as API tokens, you can store these values in a dotenv file, which is excluded from version control to keep them secure. In Bruno, you can reference these variables within your .bru files without hardcoding them.\n\nWriting tests in Bruno is straightforward. The client supports basic assertions, and for more complex logic, you can write JavaScript within an assert block. Example tests might look like this:\n\n```javascript\ntest('status is 200', function() {\nexpect(res.getStatus()).to.equal(200);\n});\n\ntest('returns a user id', function() {\nexpect(res.getBody().id).to.be.a('number');\n});\n```\n\nBruno also supports pre-request scripts that can be used to set up data or compute signatures before the API call is made, and post-response scripts for validating results or chaining data to subsequent requests.\n\nAfter setting up your collection and tests, you can run the entire collection through Bruno's command-line interface (CLI). The CLI can be installed globally via npm, and you can run your collection with a specified environment and desired reporter format (JSON, JUnit, or HTML). For CI integration, Bruno provides Docker images that allow you to run the CLI without the need for Node.js installation on the CI runner. This makes it easy to integrate your API tests into pipelines like GitHub Actions, GitLab CI, or Jenkins, ensuring that your API tests are part of your continuous delivery process.\n\nIf you are migrating from other API testing tools like Postman or Insomnia, Bruno offers an import feature that allows you to bring your existing collections into the Bruno format. This helps you transition to Bruno while preserving your existing work. For those interested in structuring larger collections or setting up a full CI pipeline, Bruno provides additional documentation on advanced topics like structuring collections and integrating CI/CD processes.\n\nIn summary, Bruno is a free, open-source tool that enables API testing within a version-controlled environment by storing all relevant data as plain text files. This approach simplifies collaboration, testing, and integration into CI/CD pipelines, making it easier to maintain and update API tests alongside your code.",
  "summary": "Bruno is an open source API client that stores your collections as plain text files instead of in a cloud workspace. If you have ever wanted your API requests to live in Git next to your code, this is the tool for the job. This guide walks through everything from install to running your first collection in CI, and it should take about ten minutes. Why Bruno instead of a cloud client Most API…",
  "key_points": [],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}