travis ci et selenium-webdriver incapables d'obtenir une connexion Firefox stable en 60 secondes (127.0.0.1:7055)

StackOverflow https://stackoverflow.com//questions/21065812

Question

J'ai un blog sur lequel je travaille et j'ai ajouté du javascript pour faire apparaître le formulaire du blog lorsque vous cliquez sur un nouveau message.Tout fonctionne bien.J'ai fait des tests fonctionnant avec minitest et capybara et j'ai installé le gem selenium-webdriver, tout fonctionne bien lorsque je le teste localement.Cependant, lorsque j'accède à Github et que Travis-ci prend mes informations et exécute mes tests, cela me donne cette erreur

unable to obtain stable firefox connection in 60 seconds (127.0.0.1:7055)

Je suis un peu confus car j'obtenais cette erreur localement jusqu'à ce que je mette à jour le gem selenium-webdriver vers la version 2.39.0.Je viens de télécharger Firefox, donc autant que je sache, tout est à jour.voici certains de mes fichiers si cela peut aider.

mon test

feature "as a student I want a working blog so people can post" do
# this is line 10
  scenario "User can make a post", :js => true do
    dude_sign_up
    dude_log_in
    visit posts_path
    click_on "New Post"
    create_post
    page.must_have_content "Post was successfully created"
  end
# this is line 19

fichier gemme

group :development, :test do
  gem 'sqlite3'
  gem 'minitest-rails'
  gem 'launchy'
  gem 'coveralls', require: false
  gem 'minitest-rails-capybara'
  gem 'turn'
  gem 'pry'
  gem "selenium-webdriver", "~> 2.39.0"
end

Fichier .travis.yml

language: ruby
rvm:
  - "2.0.0"
env:
  - DB=sqlite
script:
  - RAILS_ENV=test bundle exec rake db:migrate --trace
  - bundle exec rake db:test:prepare
  - rake minitest:features
bundler_args: --binstubs=./bundler_stubs

fichier d'aide au test

require 'simplecov'
SimpleCov.start 'rails'
ENV["RAILS_ENV"] = "test"
require File.expand_path("../../config/environment", __FILE__)
require "rails/test_help"
require "minitest/rails"
require "minitest/rails/capybara"
require 'selenium-webdriver'
require 'coveralls'
Coveralls.wear!

# To add Capybara feature tests add `gem "minitest-rails-capybara"`
# to the test group in the Gemfile and uncomment the following:
# require "minitest/rails/capybara"

# Uncomment for awesome colorful output
# require "minitest/pride"

class ActiveSupport::TestCase
  # Setup all fixtures in test/fixtures/*.(yml|csv) for all tests in alphabetical order.
  fixtures :all

  # Add more helper methods to be used by all tests here...
end

class ActionDispatch::IntegrationTest
  include Rails.application.routes.url_helpers
  #include Capybara::RSpecMatchers
  include Capybara::DSL
end

Turn.config.format = :outline

def dude_sign_up
  visit new_user_path
  fill_in "Name", with: "thedude"
  fill_in "Email", with: "thedude@cool.com"
  fill_in "Password", with: 'password'
  fill_in "Bio", with: "the bio"
  fill_in "Password confirmation", with: 'password'
  click_on "Submit"
end

def dude_log_in
  visit new_session_path
  fill_in "Email", with: "thedude@cool.com"
  fill_in "Password", with: 'password'
  click_on "Log In"
end

def create_post
  fill_in "Title", with: "this is a test title"
  fill_in "Content", with: "oh how this is some crazzzzy content"
  click_on "Create Post"
end

travis erreur complète

test_0002_User can make a post                            1:00:23.767 ERROR
        unable to obtain stable firefox connection in 60 seconds (127.0.0.1:7055)
        Exception `Selenium::WebDriver::Error::WebDriverError' at:
        /home/travis/.rvm/gems/ruby-2.0.0-p353/gems/selenium-webdriver-2.39.0/lib/selenium/webdriver/firefox/launcher.rb:79:in `connect_until_stable'
        /home/travis/.rvm/gems/ruby-2.0.0-p353/gems/selenium-webdriver-2.39.0/lib/selenium/webdriver/firefox/launcher.rb:37:in `block in launch'
        /home/travis/.rvm/gems/ruby-2.0.0-p353/gems/selenium-webdriver-2.39.0/lib/selenium/webdriver/firefox/socket_lock.rb:20:in `locked'
        /home/travis/.rvm/gems/ruby-2.0.0-p353/gems/selenium-webdriver-2.39.0/lib/selenium/webdriver/firefox/launcher.rb:32:in `launch'
        /home/travis/.rvm/gems/ruby-2.0.0-p353/gems/selenium-webdriver-2.39.0/lib/selenium/webdriver/firefox/bridge.rb:24:in `initialize'
        /home/travis/.rvm/gems/ruby-2.0.0-p353/gems/selenium-webdriver-2.39.0/lib/selenium/webdriver/common/driver.rb:31:in `new'
        /home/travis/.rvm/gems/ruby-2.0.0-p353/gems/selenium-webdriver-2.39.0/lib/selenium/webdriver/common/driver.rb:31:in `for'
        /home/travis/.rvm/gems/ruby-2.0.0-p353/gems/selenium-webdriver-2.39.0/lib/selenium/webdriver.rb:67:in `for'
        /home/travis/.rvm/gems/ruby-2.0.0-p353/gems/capybara-2.1.0/lib/capybara/selenium/driver.rb:11:in `browser'
        /home/travis/.rvm/gems/ruby-2.0.0-p353/gems/capybara-2.1.0/lib/capybara/selenium/driver.rb:43:in `visit'
        /home/travis/.rvm/gems/ruby-2.0.0-p353/gems/capybara-2.1.0/lib/capybara/session.rb:193:in `visit'
        /home/travis/.rvm/gems/ruby-2.0.0-p353/gems/capybara-2.1.0/lib/capybara/dsl.rb:51:in `block (2 levels) in <module:DSL>'
        test/test_helper.rb:35:in `dude_sign_up'
        test/features/blog_system_works_test.rb:12:in `block (2 levels) in <top (required)>'

est-ce que quelqu'un comprend pourquoi cela fonctionne localement mais pas avec travis-ci ?

Était-ce utile?

La solution

hey je vais me faire remarquer dans la bonne direction;Cependant, j'ai trouvé que le problème était dans mon fichier .travis.yml

Si vous allez à

http://karma-runner.github.io/0.8/Plus / Travis-CI.HTML

Ils vous diront que pour configurer Travis pour utiliser Firefox, vous devez ajouter

before_script:
  - export DISPLAY=:99.0
  - sh -e /etc/init.d/xvfb start

à votre fichier Travis.

Après avoir changé mon fichier .travis.yml vers

language: ruby
rvm:
  - "2.0.0"
env:
  - DB=sqlite
before_script:
  - export DISPLAY=:99.0
  - sh -e /etc/init.d/xvfb start
script:
  - RAILS_ENV=test bundle exec rake db:migrate --trace
  - bundle exec rake db:test:prepare
  - rake minitest:features
bundler_args: --binstubs=./bundler_stubs

Tout a fonctionné bien avec Travis

Autres conseils

Essayez de définir transactional_fixture à false dans ton rspec_spec.rb:

config.use_transactional_fixtures = false
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top