Why when I use Queue Mode for RSpec then my tests fail?
knapsack_pro Queue Mode uses
RSpec::Core::Runner feature that allows running specs multiple times with different runner options in the same process.
Thanks to that we can run subset of test suite pulled from Knapsack Pro API work queue. This allows dynamic allocation of your tests across CI nodes without reloading whole Ruby/Rails application for each run of test suite subset.
If you have custom things that are not common in how typical RSpec spec looks like then the RSpec feature won't be able to handle it between test suite subset runs. In that case you need to resolve failed tests in a way that allows RSpec to run the tests. Feel free to ask me for help.
You can learn more about recent RSpec team changes that was backported into
To solve failing tests in Queue Mode you can check:
- you use full namespacing. If you see error like
NameError: uninitialized constant MyModule::ModelNamethen in some cases a top-level constant would be matched if the code hadn't been loaded for the scoped constant. Try to use full namespacing
you can try to use binary version of
knapsack_proinstead of running it via rake task. This helps if your rake tasks mess up with tests and make
knapsack_proQueue Mode fail. See example:
# Knapsack Pro Queue Mode run via binary bundle exec knapsack_pro queue:rspec "--profile 10 --format progress"
You can check below questions for common reasons of failing tests in Queue Mode