Debugging 🐞

In order to keep track of the interactions being performed in the test, it can be very convenient to print any test helper methods as they are executed, which can also help to detect slow paths.

You can easily achieve this by adding CapybaraTestHelpers::BenchmarkHelpers to your BaseTestHelper:

require 'capybara_test_helpers/benchmark_helpers' if ENV['CI']

class BaseTestHelper < Capybara::TestHelper
  include CapybaraTestHelpers::BenchmarkHelpers if ENV['CI']
end

In the snippet above, we skip the extra output if we are running tests in a continuous integration server.

These helpers need the rainbow gem to be installed for nicer output:

gem :development, :test do
  gem 'rainbow'
end

And the result:

benchmark_helpers

Pausing on Failures 🦸

When running tests locally, it can be really helpful to pause and debug when an assertion or find fails.

pry-rescue is excellent for this purpose when running integration tests in RSpec. You can install it by adding the following to your Gemfile:

group :development do
  gem 'pry-rescue'
  gem 'pry-stack_explorer'
end

and then requiring it in spec_helper.rb, base_test_helper.rb, or similar:

require 'pry-rescue/rspec' unless ENV['CI']

Whenever a test fails, it will start an interactive session, allowing you to query the page contents and call any test helper methods:

benchmark_helpers

You can navigate through the stack by running the up and down commands.