Enabling JUnit formatter for RSpec in Gitlab CI
Context
It can be cumbersome sometimes to go and check Gitlab CI pipeline to see what automated tests failed. We can reduce number of extra clicks that developers have to perform through Gitlab GUI to see the results.
Solution
We can achive this by providing JUnit reports to be used and displayed nicely within each Merge Request.
To do this in RSpec in a Ruby application follow steps below:
Add rspec_junit_formatter
to your gemfile and run bundle install
.
group :test do
gem "rspec_junit_formatter"
end
Now we have the formatter in our application, we can run:
RAILS_ENV=test bundle exec rspec --format RspecJunitFormatter --out rspec.xml
and see test results output as XML file in the project’s root folder.
To make sure Gitlab has access to this file on CI and can read it properly, add
following lines to your .gitlab-ci.yml
file. Asssuming you have a step for
rspec, that would look like below:
rspec:
stage: test
script:
- RAILS_ENV=test bundle exec rake db:create db:schema:load
- RAILS_ENV=test bundle exec rspec --format RspecJunitFormatter --out rspec.xml
artifacts:
reports:
junit: rspec.xml
Voila! Now push the commit to your Gitlab repo and see Gitlab automatically detecting RSpec tests and including the results within Merge Request.