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.
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:
rspec_junit_formatter to your gemfile and run
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.