Files
bruno/contributing.md
ramki-bruno 577d54b432 Added Playwright test for bruno-testbench, few sanity tests and improvements
- Trace will capture snapshots now
- Added ability to add init Electron user-data, preferences and other
  app settings.
- Improved test Fixtures
  - Use tempdir for Electron user-data
  - Ability to reuse app instance for a given init user-data by placing
    them in a folder(`pageWithUserData` Fixture)
  - Ability to create tests with fresh user-data(`newPage` Fixture)
- Improved logging
- Improved the env vars to customize the Electron user-data-path
2025-05-30 13:57:44 +05:30

4.2 KiB

English | Українська | Русский | Türkçe | Deutsch | Français | Português (BR) | 한국어 | বাংলা | Español | Italiano | Română | Polski | 简体中文 | 正體中文 | 日本語 | हिंदी | Dutch

Let's make Bruno better, together!!

We are happy that you are looking to improve Bruno. Below are the guidelines to run Bruno on your computer.

Technology Stack

Bruno is built using React and Electron.

Libraries we use

  • CSS - Tailwind
  • Code Editors - Codemirror
  • State Management - Redux
  • Icons - Tabler Icons
  • Forms - formik
  • Schema Validation - Yup
  • Request Client - axios
  • Filesystem Watcher - chokidar
  • i18n - i18next

Important

You would need Node v22.x or the latest LTS version. We use npm workspaces in the project

Development

Bruno is a desktop app. Below are the instructions to run Bruno.

Note: We use React for the frontend and rsbuild for build and dev server.

Install Dependencies

# use nodejs 22 version
nvm use

# install deps
npm i --legacy-peer-deps

Local Development

Build packages

Option 1
# build packages
npm run build:graphql-docs
npm run build:bruno-query
npm run build:bruno-common
npm run build:bruno-converters
npm run build:bruno-requests

# bundle js sandbox libraries
npm run sandbox:bundle-libraries --workspace=packages/bruno-js
Option 2
# install dependencies and setup
npm run setup

Run the app

Option 1
# run react app (terminal 1)
npm run dev:web

# run electron app (terminal 2)
npm run dev:electron
Option 2
# run electron and react app concurrently
npm run dev

Customize Electron userData path

If ELECTRON_USER_DATA_PATH env-variable is present and its development mode, then userData path is modified accordingly.

e.g.

ELECTRON_USER_DATA_PATH=$(realpath ~/Desktop/bruno-test) npm run dev:electron

This will create a bruno-test folder on your Desktop and use it as the userData path.

Troubleshooting

You might encounter a Unsupported platform error when you run npm install. To fix this, you will need to delete node_modules and package-lock.json and run npm install. This should install all the necessary packages needed to run the app.

# Delete node_modules in sub-directories
find ./ -type d -name "node_modules" -print0 | while read -d $'\0' dir; do
  rm -rf "$dir"
done

# Delete package-lock in sub-directories
find . -type f -name "package-lock.json" -delete

Testing

# run bruno-schema tests
npm run test --workspace=packages/bruno-schema

# run bruno-query tests
npm run test --workspace=packages/bruno-query

# run bruno-common tests
npm run test --workspace=packages/bruno-common

# run bruno-converters tests
npm run test --workspace=packages/bruno-converters

# run bruno-app tests
npm run test --workspace=packages/bruno-app

# run bruno-electron tests
npm run test --workspace=packages/bruno-electron

# run bruno-lang tests
npm run test --workspace=packages/bruno-lang

# run bruno-toml tests
npm run test --workspace=packages/bruno-toml

# run tests over all workspaces
npm test --workspaces --if-present

Raising Pull Requests

  • Please keep the PR's small and focused on one thing
  • Please follow the format of creating branches
    • feature/[feature name]: This branch should contain changes for a specific feature
      • Example: feature/dark-mode
    • bugfix/[bug name]: This branch should contain only bug fixes for a specific bug
      • Example bugfix/bug-1