undefined method `visit' when using RSpec and Capybara in rails undefined method `visit' when using RSpec and Capybara in rails ruby-on-rails ruby-on-rails

undefined method `visit' when using RSpec and Capybara in rails


Try to add:

  config.include Capybara::DSL

to your config block.

# This file is copied to spec/ when you run 'rails generate rspec:install'ENV["RAILS_ENV"] ||= 'test'require File.expand_path("../../config/environment", __FILE__)require 'rspec/rails'require 'rspec/autorun'# Requires supporting ruby files with custom matchers and macros, etc,# in spec/support/ and its subdirectories.Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}RSpec.configure do |config|  # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures  # config.fixture_path = "#{::Rails.root}/spec/fixtures"  config.use_transactional_fixtures = true  config.infer_base_class_for_anonymous_controllers = false  config.order = "random"  # Include path helpers  config.include Rails.application.routes.url_helpers  config.include Capybara::DSLend


Adding require 'rails_helper' at the top of my feature ended up fixing my problem:

require 'rails_helper'describe "security", :type => :feature do  it "signs users in" do    visit new_sessions_path    fill_in "username", :with => "user"    fill_in "password", :with => "pass"    click_button "Sign In"    page.should have_content('Login Successful')  endend

This seems odd to me since every example I've seen for rspec and capybara didn't have that require, but oh well. Problem solved.

Original Answer (older versions of rspec)

require 'spec_helper' is used by older versions of RSpec. The better answer would be require 'rails_helper'.


Since Capybara 2.0 one has to use folder spec/features Capybara commands don't work in folder spec/requests anymore.