RSpec is not running some tests
If RSpec is not running some of your tests, the Knapsack Pro dashboard will show them having an execution time of 0 seconds (as they didn't run at all).
Check your codebase for using these deprecated RSpec options:
# DO NOT USE THESE DEPRECATED OPTIONS
RSpec.configure do |c|
c.filter_run :focus => true
c.run_all_when_everything_filtered = true
end
Please remove it from your code, as it can cause the described problem.
If you'd like to keep using the :focus
tag in development, you can do this instead:
# this can be used instead of #run_all_when_everything_filtered
RSpec.configure do |c|
c.filter_run_when_matching :focus
end
Beware that committing tagged examples to your repository might result in RSpec skipping other tests on your CI! This applies to the explicit :focus
tag, as well as its shorthand versions (fit
, fdescribe
, fcontext
). Make sure they don't appear in your repository.
I want to keep tagged examples committed in my repository
If you really want to commit tagged examples to your repository (or it's painful to remove them), you can alternatively make the configuration conditional on the environment:
# Set this environment variable on your CI server:
CI=true
# Then use this in RSpec:
RSpec.configure do |c|
unless ENV['CI']
c.filter_run_when_matching :focus
end
end
This would keep you protected from skipping tests on your CI. It can be useful if you are concerned that someone might mistakenly commit tagged examples into your codebase.