Collect RSpec test results with a view to catching new performance issues as they're introduced.
- Ruby 3.1.4
- Rails 6
There's two parts to storing test results with RSpec-timings:
- You'll need this app deployed somewhere, e.g. on Heroku, and a project set up in it corresponding to the app you're monitoring.
- In the app you wish to monitor, you'll need to add an extra step in your CI to send the test results to RSpec-timings.
Generate new credentials and set the secret_key_base:
rails credentials:edit
bundle install
yarn
# create an empty database
bundle exec rails db:create
Everything in RSpec-timings is behind Balrog.
In test and development, the password is 'password' (see config/initializers/balrog.rb
).
Once you have generated the Balrog password hash, update the .env
.
Then start the application:
foreman start
Generate new credentials and set the secret_key_base:
rails secret # to be copied into credentials
rails credentials:edit
Once your RSpec-timings app is deployed, you'll need to login with the password you created using Balrog. Create a new project for the app you wish to monitor, and note the project UID as you'll need it to send the test results.
To view a summary of the top five most significant changes in your tests for each pull request, you need to set up a GitHub App. This app will have permission to monitor your repository and automatically generate summary reports for your pull requests.
First, set up a Github App.
The webhook url is https://your-deployed-rspec-timings-app.com/webhooks/github
Configure the following permissions:
- Commit statuses -> Read and write
- Pull requests -> Read and write
Second, install the Github App on the repository you wish to monitor.
As part of this, you will get a Github private key, which you should add to
your .env
. You can copy .env.sample
to .env
to see the required variables.
GITHUB_APP_ID
GITHUB_PRIVATE_KEY
In addition to the test results, you will need the project UID, branch name and commit number. The test results should be sent as XML formatted by rspec_junit_formatter.
With your test results saved as XML, e.g. in /tmp/test-results/rspec.xml
, you
can then add a simple curl request to your CI config:
curl https://your-deployed-rspec-timings-app.com/project/{project_uid}/test_runs \
-F file=@/tmp/test-results/rspec.xml \
-F branch=BRANCH \
-F commit=COMMIT