- 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
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
- feature/[feature name]: This branch should contain changes for a specific feature