# n8n benchmarking tool Tool for executing benchmarks against an n8n instance. ## Running locally with Docker Build the Docker image: ```sh # Must be run in the repository root # k6 doesn't have an arm64 build available for linux, we need to build against amd64 docker build --platform linux/amd64 -t n8n-benchmark -f packages/@n8n/benchmark/Dockerfile . ``` Run the image ```sh docker run \ -e N8N_USER_EMAIL=user@n8n.io \ -e N8N_USER_PASSWORD=password \ # For macos, n8n running outside docker -e N8N_BASE_URL=http://host.docker.internal:5678 \ n8n-benchmark ``` ## Running locally without Docker Requirements: - [k6](https://grafana.com/docs/k6/latest/set-up/install-k6/) - Node.js v20 or higher ```sh pnpm build # Run tests against http://localhost:5678 with specified email and password N8N_USER_EMAIL=user@n8n.io N8N_USER_PASSWORD=password ./bin/n8n-benchmark run # If you installed k6 using brew, you might have to specify it explicitly K6_PATH=/opt/homebrew/bin/k6 N8N_USER_EMAIL=user@n8n.io N8N_USER_PASSWORD=password ./bin/n8n-benchmark run ``` ## Running in the cloud There's a script to run the performance tests in a cloud environment. The script provisions a cloud environment, sets up n8n in the environment, runs the tests and destroys the environment. ```sh pnpm run-in-cloud ``` ## Configuration The configuration options the cli accepts can be seen from [config.ts](./src/config/config.ts) ## Benchmark scenarios A benchmark scenario defines one or multiple steps to execute and measure. It consists of: - Manifest file which describes and configures the scenario - Any test data that is imported before the scenario is run - A [`k6`](https://grafana.com/docs/k6/latest/using-k6/http-requests/) script which executes the steps and receives `API_BASE_URL` environment variable in runtime. Available scenarios are located in [`./scenarios`](./scenarios/).