Files
bruno/packages/bruno-cli
sanish-bruno 4bb01ca0ac feat: hooks runtime
add: hooks component

add support for hooks within bruno-lang

fix: hooks is not getting save

hooks implemtation

add hooks component within folders, requests

add: quick js shims for hooks

fix: garbage collected hook managers

send logs to main

rm: hook manager store

feat: introduce HOOK_EVENTS constant for improved hook management

add folder start/end events

add folder run events

rm: folder run related events

add cli support for hooks

support script:hooks instead of hooks

move hooks to script tab

make outer scope available within callback in safemode

added runner, req apis as an abstraction over event based hooks

fix: crash while editing folder hooks

rm: unused files

fix: self review changes

refactor, request specific hook manager deleted once

add: cm

rm: spaces

add prompt var

rm: indent

fix: lint

refactor: shims handling for hooks

fix: enable async calling in dev mode for gui, cli

fix: support async callbacks within safe mode

rm: vm instance

fix: review comments

fix: review comments

add cli tests for hooks

rm: client certs

fix: add hooks to oc yaml

fix: rename uid ot path name for better clarity, app crash when saving folder hooks

rm: console

rm: vm2 runtime leftover

rm: check

add: handler cleanup function

add: playwright test case for hooks

rm: review fixes

fix: review comments

add fallback hook manager

add fallback hook manager

fix: show error from hooks scripts within response pane

change: collection events name

feat: add name spaced hooks

fix: review comments

add: hooks specific collection for testing

use hooks manager as a private field

fix: tests

use collection from bruno-test within playwright

rm: databuffer test

fix: playwright test

rm: unintended changes

rm: file
2026-01-28 19:13:57 +05:30
..
2023-02-06 02:27:22 +05:30
2026-01-28 19:13:57 +05:30
2024-02-06 05:00:25 +05:30
2023-04-01 13:40:23 +05:30

Bruno CLI

With Bruno CLI, you can now run your API collections with ease using simple command line commands.

This makes it easier to test your APIs in different environments, automate your testing process, and integrate your API tests with your continuous integration and deployment workflows.

For detailed documentation, visit Bruno CLI Documentation.

Installation

To install the Bruno CLI, use the node package manager of your choice, such as NPM:

npm install -g @usebruno/cli

Getting started

Navigate to the directory where your API collection resides, and then run:

bru run

This command will run all the requests in your collection. You can also run a single request by specifying its filename:

bru run request.bru

Or run all requests in a collection's subfolder:

bru run folder

If you need to use an environment, you can specify it with the --env option:

bru run folder --env Local

If you need to collect the results of your API tests, you can specify the --output option:

bru run folder --output results.json

If you need to run a set of requests that connect to peers with both publicly and privately signed certificates respectively, you can add private CA certificates via the --cacert option. By default, these certificates will be used in addition to the default truststore:

bru run folder --cacert myCustomCA.pem

If you need to limit the trusted CA to a specified set when validating the request peer, provide them via --cacert and in addition use --ignore-truststore to disable the default truststore:

bru run request.bru --cacert myCustomCA.pem --ignore-truststore

Importing Collections

You can import collections from other formats, such as OpenAPI, using the import command:

bru import openapi --source api.yml --output ~/Desktop/my-collection --collection-name "My API"

You can also use the shorter form with aliases:

bru import openapi -s api.yml -o ~/Desktop/my-collection -n "My API"

This creates a Bruno collection directory that can be opened in Bruno.

You can also import directly from a URL:

bru import openapi --source https://example.com/api-spec.json --output ~/Desktop --collection-name "Remote API"

You can also export the collection as a JSON file:

bru import openapi --source api.yml --output-file ~/Desktop/my-collection.json --collection-name "My API"

Import Options:

Option Details
--source, -s Path to the source file or URL (required)
--output, -o Path to the output directory
--output-file, -f Path to the output JSON file
--collection-name, -n Name for the imported collection
--insecure Skip SSL certificate validation when fetching from URLs

Command Line Options

Option Details
-h, --help Show help
--version Show version number
-r Indicates a recursive run (default: false)
--cacert [string] CA certificate to verify peer against
--env [string] Specify environment to run with
--env-var [string] Overwrite a single environment variable, multiple usages possible
-o, --output [string] Path to write file results to
-f, --format [string] Format of the file results; available formats are "json" (default) or "junit"
--reporter-json [string] Path to generate a JSON report
--reporter-junit [string] Path to generate a JUnit report
--reporter-html [string] Path to generate an HTML report
--insecure Allow insecure server connections
--tests-only Only run requests that have tests
--bail Stop execution after a failure of a request, test, or assertion
--csv-file-path CSV file to run the collection with
--reporter--skip-all-headers Skip all headers in the report
--reporter-skip-headers Skip specific headers in the report
--client-cert-config Client certificate configuration by passing a JSON file
--delay [number] Add delay to each request

Scripting

Bruno cli returns the following exit status codes:

  • 0 -- execution successful
  • 1 -- an assertion, test, or request in the executed collection failed
  • 2 -- the specified output directory does not exist
  • 3 -- the request chain seems to loop endlessly
  • 4 -- bru was called outside of a collection root directory
  • 5 -- the specified input file does not exist
  • 6 -- the specified environment does not exist
  • 7 -- the environment override was not a string or object
  • 8 -- an environment override is malformed
  • 9 -- an invalid output format was requested
  • 255 -- another error occurred

Demo

demo

Support

If you encounter any issues or have any feedback or suggestions, please raise them on our GitHub repository

Thank you for using Bruno CLI!

Changelog

See https://github.com/usebruno/bruno/releases

License

MIT