0 votes
1 view
in Devops and Agile by (17.9k points)

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

1 Answer

0 votes
by (48.5k points)

Use this code:

WebMock.disable_net_connect!(:allow_localhost => true)

which allows real web access to your localhost. It's appropriate when you need to use Selenium for your application and, at the same time, mock external resources.

Hope this helps!

...