Trying to get selenium working in rails 3 - "WebMock::NetConnectNotAllowedError"

capybara, ruby-on-rails-3, selenium

Solution

It's because you are using webmock. It blocks all outbound HTTP requests.

If you don't need it, remove it from the Gemfile. If you do need it, then you may need to configure it more precisely to your needs:

https://github.com/bblimke/webmock

Problem

I'm trying to use selenium for the first time in a rails 3 app. (I've used it before with rails 2). I'm in an rvm which of course has its own gemset. I first ran a task with capybara, without selenium: ``` #./spec/requests/homepage_spec.rb require 'spec_helper' describe 'home page', :type => :request do it 'should welcome the user' do visit '/' page.should have_content('Buddy') end end ``` This ran fine. I then added a ":js => true" option to the options for describe, which is supposed to make it run using selenium (as far as i know). And got this error: ``` Failure/Error: @page.start_new_browser_session WebMock::NetConnectNotAllowedError: Real HTTP connections are disabled. Unregistered request: POST http://localhost:4444/selenium-server/driver/ with body 'cmd=getNewBrowserSession&1=%2Afirefox&2=http%3A%2F%2Flocalhost%3A3000&3=&4=' with headers {'Accept'=>'*/*', 'Content-Type'=>'application/x-www-form-urlencoded; charset=utf-8', 'User-Agent'=>'Ruby'} You can stub this request with the following snippet: stub_request(:post, "http://localhost:4444/selenium-server/driver/"). with(:body => "cmd=getNewBrowserSession&1=%2Afirefox&2=http%3A%2F%2Flocalhost%3A3000&3=&4=", :headers => {'Accept'=>'*/*', 'Content-Type'=>'application/x-www-form-urlencoded; charset=utf-8', 'User-Agent'=>'Ruby'}). to_return(:status => 200, :body => "", :headers => {}) ============================================================ ``` It's my first time using capybara and i think my config is just wrong somehow. Maybe missing some essential gems? I was following this blog post: Capybara (and Selenium) with RSpec & Rails 3: quick tutorial Any ideas? PS, here's my Gemfile contents: ``` source 'http://rubygems.org' gem 'rails', '3.0.7' gem 'haml' gem 'heroku' gem "heroku_backup_task" gem 'authlogic', '3.0.2' gem 'rails3-generators' gem 'txtlocal', :git => 'git://github.com/epigenesys/txtlocal.git' gem 'chronic' gem 'sqlite3-ruby', :require => 'sqlite3' gem 'bcrypt-ruby' group :development, :test do gem 'rspec' gem 'mocha' gem "rspec-rails", "~> 2.4" gem "webmock" gem 'database_cleaner', '0.5.2' gem 'capybara', :git => 'git://github.com/jnicklas/capybara.git' gem 'selenium-client' end ``` and my Gemfile.lock: ``` GIT remote: git://github.com/epigenesys/txtlocal.git revision: 66aab6628d4385eda959e4a8bd083cc2c259fea0 specs: txtlocal (0.0.1) json GIT remote: git://github.com/jnicklas/capybara.git revision: 9cdf015e28637b7b0d94f5a69f9bc3605455ce22 specs: capybara (1.0.0.beta1) mime-types (>= 1.16) nokogiri (>= 1.3.3) rack (>= 1.0.0) rack-test (>= 0.5.4) selenium-webdriver (~> 0.2.0) xpath (~> 0.1.4) GEM remote: http://rubygems.org/ specs: abstract (1.0.0) actionmailer (3.0.7) actionpack (= 3.0.7) mail (~> 2.2.15) actionpack (3.0.7) activemodel (= 3.0.7) activesupport (= 3.0.7) builder (~> 2.1.2) erubis (~> 2.6.6) i18n (~> 0.5.0) rack (~> 1.2.1) rack-mount (~> 0.6.14) rack-test (~> 0.5.7) tzinfo (~> 0.3.23) activemodel (3.0.7) activesupport (= 3.0.7) builder (~> 2.1.2) i18n (~> 0.5.0) activerecord (3.0.7) activemodel (= 3.0.7) activesupport (= 3.0.7) arel (~> 2.0.2) tzinfo (~> 0.3.23) activeresource (3.0.7) activemodel (= 3.0.7) activesupport (= 3.0.7) activesupport (3.0.7) addressable (2.2.5) arel (2.0.9) authlogic (3.0.2) activerecord (~> 3.0.7) activerecord (~> 3.0.7) bcrypt-ruby (2.1.4) builder (2.1.2) childprocess (0.1.8) ffi (~> 1.0.6) chronic (0.3.0) configuration (1.2.0) crack (0.1.8) database_cleaner (0.5.2) diff-lcs (1.1.2) erubis (2.6.6) abstract (>= 1.0.0) ffi (1.0.7) rake (>= 0.8.7) haml (3.1.1) heroku (2.1.2) launchy (>= 0.3.2) rest-client (~> 1.6.1) term-ansicolor (~> 1.0.5) heroku_backup_task (0.0.5) heroku (>= 1.13.7) rake i18n (0.5.0) json (1.5.1) json_pure (1.5.1) launchy (0.4.0) configuration (>= 0.0.5) rake (>= 0.8.1) mail (2.2.19) activesupport (>= 2.3.6) i18n (>= 0.4.0) mime-types (~> 1.16) treetop (~> 1.4.8) mime-types (1.16) mocha (0.9.12) nokogiri (1.4.4) polyglot (0.3.1) rack (1.2.2) rack-mount (0.6.14) rack (>= 1.0.0) rack-test (0.5.7) rack (>= 1.0) rails (3.0.7) actionmailer (= 3.0.7) actionpack (= 3.0.7) activerecord (= 3.0.7) activeresource (= 3.0.7) activesupport (= 3.0.7) bundler (~> 1.0) railties (= 3.0.7) rails3-generators (0.17.4) railties (>= 3.0.0) railties (3.0.7) actionpack (= 3.0.7) activesupport (= 3.0.7) rake (>= 0.8.7) thor (~> 0.14.4) rake (0.8.7) rest-client (1.6.1) mime-types (>= 1.16) rspec (2.6.0) rspec-core (~> 2.6.0) rspec-expectations (~> 2.6.0) rspec-mocks (~> 2.6.0) rspec-core (2.6.0) rspec-expectations (2.6.0) diff-lcs (~> 1.1.2) rspec-mocks (2.6.0) rspec-rails (2.6.0) actionpack (~> 3.0) activesupport (~> 3.0) railties (~> 3.0) rspec (~> 2.6.0) rubyzip (0.9.4) selenium-client (1.2.18) selenium-webdriver (0.2.0) childprocess (>= 0.1.7) ffi (>= 1.0.7) json_pure rubyzip sqlite3 (1.3.3) sqlite3-ruby (1.3.3) sqlite3 (>= 1.3.3) term-ansicolor (1.0.5) thor (0.14.6) treetop (1.4.9) polyglot (>= 0.3.1) tzinfo (0.3.27) webmock (1.6.2) addressable (>= 2.2.2) crack (>= 0.1.7) xpath (0.1.4) nokogiri (~> 1.3) PLATFORMS ruby DEPENDENCIES authlogic (= 3.0.2) bcrypt-ruby capybara! chronic database_cleaner (= 0.5.2) haml heroku heroku_backup_task mocha rails (= 3.0.7) rails3-generators rspec rspec-rails (~> 2.4) selenium-client sqlite3-ruby txtlocal! webmock ```

Original source