Speeding up RSpec Tests in Bamboo

Now that roles and profiles are in my control repo my RSpec tests are taking longer then ever. As of this writing the control repo contains 938 tests and I’m still a long way from 100% coverage. This really slows down the feedback loop when running tests. When running locally I often just run RSpec against a specific spec file rather then run the whole test suite, but I still wanted a way to speed things up in Bamboo.

I had used parallel_tests before to run things quicker on my local machine but was having issues with each test overwriting the JUnit output file and giving me an incomplete result set at the end. I stumbled across a fix for this yesterday which I’m pretty happy with. My original .rspec file had the file name of the JUnit output hard coded.

--format documentation
--color
--format RspecJunitFormatter
--out results.xml

By making the following change each parallel test writes to its own JUnit output file.

--format documentation
--color
--format RspecJunitFormatter
--out results<%= ENV['TEST_ENV_NUMBER'] %>.xml

Bamboo was already parsing the results using a wildcard so no change was needed there (see this post for details on my Bamboo setup).  The last step was to change the rake task Bamboo is running from rake spec to rake parallel_spec. This change cut the test time down from an average of 24 minutes to 8 minutes and faster feedback is always a plus!

 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s