Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Capybara::Poltergeist Status error, failed to reach server

I am trying to make some tests with Rspec/Capybara/Poltergeist on my Rails 4 application, Phantomjs is installed (version 2.2.1), but I always get this error :

Failure/Error: visit(perfect_landing_page_path)

Capybara::Poltergeist::StatusFailError:

Request to 'http://127.0.0.1:49623/path' failed to reach server, check DNS and/or server status

The test i'm working on :

require 'rails_helper'

RSpec.feature 'Subscription', :type => :feature do

  let!(:plan) { create(:plan) }
  let!(:landing_page) { create(:landing_page) }

  before(:each) { landing_page.default_plan = plan }

  describe 'landing_page#perfect_show' do
    scenario 'form display', js: true do
      plan_2 = create(:plan)
      plan_3 = create(:plan)
      landing_page.plans << plan_2
      landing_page.plans << plan_3
      visit(perfect_landing_page_path)
      expect(page).to have_css(".start-now", count: 3)
      first(".start-now").click
      expect(page).to have_css("#new_user")
    end

  end

end

My Gemfile looks like this :

  gem 'rspec-rails', '~> 3.0'
  gem 'factory_girl_rails'
  gem 'guard-rspec'

group :test do
  gem 'database_cleaner'
  gem 'capybara'
  gem 'capybara-screenshot'
  gem 'poltergeist'
  gem 'selenium-webdriver'
  gem 'shoulda-matchers', require: false
  gem 'show_me_the_cookies'
end

My spec/support/capybara.rb file :

require 'capybara/rails'
require 'capybara/rspec'
require 'capybara-screenshot/rspec'

require "capybara/poltergeist" # Add this line to require poltergeist
require 'selenium-webdriver'

Capybara.register_driver :poltergeist do |app|
  Capybara::Poltergeist::Driver.new(app, {:js_errors => false, :default_max_wait_time => 30, :timeout => 30, phantomjs_options: [
                             '--load-images=no',
                             '--ignore-ssl-errors=true',
                             '--ssl-protocol=any']})
end

Capybara.register_driver :poltergeist_debug do |app|
  Capybara::Poltergeist::Driver.new(app, :inspector => true)
end

Capybara.configure do |config|
  config.javascript_driver = :poltergeist
  config.ignore_hidden_elements = true
  config.default_max_wait_time = 30
end

My spec_helper.rb file :

require 'capybara/rspec'

RSpec.configure do |config|

  config.expect_with :rspec do |expectations|
    expectations.include_chain_clauses_in_custom_matcher_descriptions = true
  end

  config.mock_with :rspec do |mocks|
    mocks.verify_partial_doubles = true
  end

  config.filter_run :focus
  config.run_all_when_everything_filtered = true

Did someone encounter this problem before ? Does anyone have a solution for this ? I have been banging my head for days looking on the web... Thank you very much.

PS : it works fine on my friend's mac (Yosemite or El Capitan), just not on mine.

like image 838
Delphine Avatar asked Mar 02 '16 09:03

Delphine


1 Answers

I was having this problem in CI (CodeShip).

Adding a call to bundle exec rake assets:precompile at the end of the setup commands seemed to fix it:

CodeShip CI Setup Commands:

rvm use 2.3.4 --install
bundle install
export RAILS_ENV=test
bundle exec rake db:schema:load
bundle exec rake assets:precompile

Also had a whitelist per @agbodike but in the rails_helper.rb

config.before(:each, js: true) do
  page.driver.browser.url_whitelist = ["127.0.0.1"]
end
like image 81
stujo Avatar answered Oct 18 '22 20:10

stujo