【问题标题】:Cucumber test suite with Capybara and Chromedriver hangs带有 Capybara 和 Chromedriver 的 Cucumber 测试套件挂起
【发布时间】:2013-04-13 05:47:09
【问题描述】:

我有一个黄瓜测试套件,自从我搬到新电脑后,它无法运行。

测试套件使用Capybara (v1.1.2)Chrome Driver (v26.0.1383.0)Selenium-Webdriver (v2.27.1) 在 Chrome 中运行 JavaScript 测试。

每次测试都会挂起 Chrome 的蓝色死亡“aw snap”。如果我用CTRL-C 终止当前测试运行,则下一个测试运行也会失败。

我完全不知所措。这个完全相同的测试套件在 Circle CI 和同事的 Mac 上运行良好。

我还尝试将 Chrome 驱动程序 换成其他 Capybara 驱动程序 Phantom JSCapybara Webkit

Phantom JS 有点被淘汰了 :(

Capybara Webkit 取得了更大的进步,但仍然未能通过许多测试:Broken pipe (Errno::EPIPE)

我认为我机器上的 Webkit 存在根本性问题。

我正在运行 Mac OS X 10.8。

有什么想法吗?

更新

features/support/env.rb

require 'cucumber/rails'

Capybara.default_selector = :css

ActionController::Base.allow_rescue = false

begin
  require 'database_cleaner'
  require 'database_cleaner/cucumber'
  DatabaseCleaner.orm = 'mongoid'
  DatabaseCleaner.strategy = :truncation
rescue NameError
  raise "You need to add database_cleaner to your Gemfile (in the :test group) if you wish to use it."
end

Cucumber::Rails::Database.javascript_strategy = :truncation

require 'minitest/spec'
World(MiniTest::Assertions)
MiniTest::Spec.new(nil)

features/support/chrome.rb

Capybara.register_driver :chrome do |app|
  Capybara::Selenium::Driver.new(app, :browser => :chrome)
end

Capybara.javascript_driver = :chrome

Gemfile

source 'http://rubygems.org'

ruby '1.9.3'
gem 'rails', '3.2.11'

group :assets do
  gem 'sass-rails',   '~> 3.2.3'
  gem 'coffee-rails', '~> 3.2.1'
  gem 'bootstrap-sass'
  gem 'font-awesome-rails'
  gem 'uglifier', '>= 1.0.3'
  gem 'jquery-datatables-rails', github: 'rweng/jquery-datatables-rails'
end

group :test, :development do
  gem 'factory_girl_rails'
  gem 'minitest-rails'
  gem 'minitest-rails-capybara' # provides integration_test generator
  gem 'capybara_minitest_spec' # provides RSpec-like matchers
  gem 'capybara-screenshot'
  gem 'debugger' # please only enable debugger when needed
  gem 'quiet_assets'
  gem 'jasmine-rails'
end

group :test do
  gem 'minitest-matchers'
  gem 'shoulda-matchers'
  gem 'cucumber-rails', :require  => false
  gem 'capybara'
  gem 'capybara-email'
  gem 'database_cleaner'
  gem 'factory_girl_rails'
  gem 'launchy' # for save and open page
  gem 'timecop'
  gem 'mocha', :require => false
  gem 'vcr'
  gem 'webmock'
end

group :staging, :qa do
  gem 'database_cleaner'
  gem 'factory_girl_rails'
end

gem 'jquery-rails'

gem 'thin'
gem 'ey_config'

gem 'memcachier'
gem 'dalli'

gem 'mongoid'
gem 'mongoid-history', github: 'stengland/mongoid-history'
gem 'bson_ext'

gem 'devise'
gem 'devise_invitable'
gem 'omniauth-facebook'
gem 'omniauth-twitter'
gem 'switch_user'

gem 'cancan'

gem 'simple_form', '~> 2.0'
gem 'dragonfly', '~> 0.9.12'
gem 'mongoid-grid_fs'

gem 'momentjs-rails', github: 'tkrotoff/momentjs-rails'

gem 'tabulous'

gem 'cocoon'
gem 'backbone-on-rails'

gem 'mustache'

gem 'gon'

gem 'activemerchant'
gem 'state_machine'
gem 'ruby-graphviz', :require => 'graphviz'
gem 'twilio-ruby'
gem 'twitter'

gem 'prawn'

gem "bootstrap-wysihtml5-rails", "~> 0.3.1.14"

gem 'country_select'

【问题讨论】:

    标签: macos selenium cucumber capybara selenium-chromedriver


    【解决方案1】:

    如果您仍然可以访问旧系统,您应该检查您在那里安装的 gem 的版本;

    gem list --local
    

    然后在新系统上做同样的比较。可能需要的 gem 不存在或版本错误。

    如果您为测试添加 Cucumber 输出和您的 env.rb 文件,我们可能会提供更多有用的答案。

    【讨论】:

    • 我已经更新了我的原始帖子以包含请求的文件。我会努力获得更好的黄瓜产量。不幸的是,我无法再访问旧机器,但是这个确切的设置可以在其他机器上运行,所以它是特定于机器的。我认为这与宝石无关,但显然,我不知道它是什么:(
    • 我强烈建议从另一台可以运行的机器获取 gem 列表。除此之外,黄瓜输出应该提供更多指示,说明当挂起发生时它正在尝试做什么。
    • 成功了吗?
    猜你喜欢
    • 1970-01-01
    • 2018-06-06
    • 2011-10-08
    • 2016-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-19
    • 2011-11-12
    相关资源
    最近更新 更多