We just released a new open source library for running RSpec test suites in parallel, either locally or across multiple CI jobs, and I wanted to share it with the RSpec community.
It’s built using bindings into ABQ, which is a universal test runner. ABQ wraps existing test suites to distribute tests using a message queue.https://github.com/rwx-research/abqhttps://github.com/rwx-research/rspec-abq
We’ve designed it as a drop-in developer experience. For example:
# without abq
bundle exec rspec
# add rspec-abq
bundle add rspec-abq --group test
# use abq to run the rspec test suite in 3 parallel processes
abq test -n 3 -- bundle exec rspec
Because ABQ wraps native test frameworks rather than replacing them, you can continue using the RSpec CLI and any of the options it supports, such as --tag or --example.
Unlike other libraries that split tests for parallel execution, ABQ will aggregate all of the results into a single report to make it easier to review failures across workers, especially when splitting across multiple CI jobs.
For more context see the announcement blog post and the documentation:https://www.rwx.com/blog/abq-1-3-generally-available-open-source-releasehttps://www.rwx.com/docs/abq
We have lots of ideas for additional functionality we could add to ABQ, and I’d love to hear from anybody who wants to chat about test parallelization or performance.