require 'capybara' require 'capybara/dsl' require 'rspec/core' require 'capybara/rspec/matchers' require 'capybara/rspec/features' RSpec.configure do |config| config.expose_dsl_globally = false if config.respond_to? :expose_dsl_globally config.include Capybara::DSL, :type => :feature config.include Capybara::RSpecMatchers, :type => :feature # A work-around to support accessing the current example that works in both # RSpec 2 and RSpec 3. fetch_current_example = RSpec.respond_to?(:current_example) ? proc { RSpec.current_example } : proc { |context| context.example } # The before and after blocks must run instantaneously, because Capybara # might not actually be used in all examples where it's included. config.after do if self.class.include?(Capybara::DSL) Capybara.reset_sessions! Capybara.use_default_driver end end config.before do if self.class.include?(Capybara::DSL) example = fetch_current_example.call(self) Capybara.current_driver = Capybara.javascript_driver if example.metadata[:js] Capybara.current_driver = example.metadata[:driver] if example.metadata[:driver] end end end