How to use Capybara in pure Ruby (without Rails)?

Neal Enssle picture Neal Enssle · Aug 14, 2010 · Viewed 15k times · Source

I'm trying to get Capybara running in a simple Ruby script -- i.e. without/outside of Rails. Here's the script:

require 'rubygems'
require 'capybara'
require 'capybara/dsl'

include Capybara

Capybara.current_driver = :selenium
Capybara.app_host = 'http://www.google.com'

visit('/')

The problem is that when I run this I get this error:

NameError: uninitialized constant Capybara::Session

at top level    in dsl.rb at line 52
method gem_original_require in custom_require.rb at line 36
method require  in custom_require.rb at line 36
at top level    in capybara_test.rb at line 3
method gem_original_require in custom_require.rb at line 31
method require  in custom_require.rb at line 31
at top level    in capybara_test.rb at line 

What am I doing wrong?

Some more info:

  • Mac OS X 10.5
  • ruby 1.8.6 (2009-06-08 patchlevel 369) [universal-darwin9.0]
  • capybara (0.3.9)

Thanks!

Neal

Note: Per the comment from jnicklas I tried this, which matches the new README more closely:

require 'rubygems'
require 'capybara'
require 'capybara/dsl'

Capybara.default_driver = :selenium
Capybara.app_host = 'http://www.google.com'

module MyCapybaraTest
  include Capybara

  def test_google
    visit('/')
  end
end

Unfortunately, I'm still seeing the same error:

NameError: uninitialized constant Capybara::Session

Thoughts?

Thanks!

Answer

Pål Brattberg picture Pål Brattberg · Nov 13, 2010

Here's something that seems to work for me:

require 'rubygems'
require 'capybara'
require 'capybara/dsl'

Capybara.run_server = false
Capybara.current_driver = :selenium
Capybara.app_host = 'http://www.google.com'

module MyCapybaraTest
  class Test
    include Capybara::DSL
    def test_google
      visit('/')
    end
  end
end

t = MyCapybaraTest::Test.new
t.test_google