Domanda

Is it possible globally configure RSpec to use Capybara's (default or custom) JavaScript driver for all request specs? We sometimes forget to manually add js: true to every request spec and it's kind of annoying.

È stato utile?

Soluzione

In spec_helper.rb, set the following:

  config.before(:each) do
    if example.metadata[:type] == :request
      Capybara.current_driver = :selenium # or equivalent javascript driver you are using
    else
      Capybara.use_default_driver # presumed to be :rack_test
    end
  end

Altri suggerimenti

For later versions of capybara and rspec, it's important to check for type being "feature"

config.before(:each) do
  if [:request, :feature].include? example.metadata[:type]
    Capybara.current_driver = :poltergeist # or equivalent javascript driver you are using
  else
    Capybara.use_default_driver # presumed to be :rack_test
  end
end

or for RSpec 3 (pass example into the block)

config.before(:each) do |example|
  if [:request, :feature].include? example.metadata[:type]
    Capybara.current_driver = :poltergeist # or equivalent javascript driver you are using
  else
    Capybara.use_default_driver # presumed to be :rack_test
  end
end

Refer to this solution if you want to run all test cases at once.

Rspec+Capybara optionally change JS driver

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top