Reputation: 7533
currently I'm running more than 1k examples and it's taking a long time to complete (more than 20 minutes!!!).
I'd like to identify which examples are the ones taking more time to complete, is there any way to run rspec and return the time each example takes to complete(individually)? I'm using rspec 1.3.0 and rspec-rails 1.2.3
Upvotes: 37
Views: 11214
Reputation: 52967
Add this line to the rails_helper.rb
file
RSpec.configure do |config|
config.profile_examples = true
end
now running rspec
gives some output like this:
(times of each test ^^, then)
Finished in 2 minutes 25.1 seconds (files took 1.22 seconds to load)
71 examples, 0 failures, 15 pending
Upvotes: 0
Reputation: 34350
You can use profiling to list your 10 slowest examples:
spec -p spec/*/*_spec.rb --colour --format profile
If you run this on a specific test suite you can get the 10 slowest examples from a smaller subset of examples:
spec -p spec/models/user_spec.rb --format profile
For newer versions of rspec you should use the --profile
option:
rspec spec/ --profile | (shows the 10 slowest examples)
rspec spec/ --profile 2 | (shows the 2 slowest examples)
Upvotes: 58