CircleCI没有使用capybara webkit(Rails)

时间:2017-01-12 12:17:48

标签: ruby-on-rails rspec capybara capybara-webkit circleci

我有一个项目(Rails 5,Capybara-webkit,Rspec),我试图在circleci上设置。

我将 circle.yml 文件添加到我的项目根目录,使用 elasticsearch 服务,因为我的项目使用的是searchkick:

machine:
  timezone:
    America/Los_Angeles
  ruby:
    version: 2.3.0
  services:
    - elasticsearch

问题是circleci给我发了下一个错误:

  

1.1)失败/错误:访问products_path

     

水豚::的Webkit :: NoResponseError:               没有收到服务器的响应。             #./spec/features/shop/index/add_product_to_list_spec.rb:48:in`block(6   在'

中      

1.2)失败/错误:@ socket.puts string

     

errno的:: EPIPE:               破管

     

/home/ubuntu/regalitos/vendor/bundle/ruby/2.3.0/gems/capybara-webkit-1.1.0/lib/capybara/webkit/connection.rb:29:in'写&#39 ;             #home/ubuntu/regalitos/vendor/bundle/ruby/2.3.0/gems/capybara-webkit-1.1.0/lib/capybara/webkit/connection.rb:29:in' puts'             #home/ubuntu/regalitos/vendor/bundle/ruby/2.3.0/gems/capybara-webkit-1.1.0/lib/capybara/webkit/connection.rb:29:in' puts'             #home/ubuntu/regalitos/vendor/bundle/ruby/2.3.0/gems/capybara-webkit-1.1.0/lib/capybara/webkit/browser.rb:146:in command' # /home/ubuntu/regalitos/vendor/bundle/ruby/2.3.0/gems/capybara-webkit-1.1.0/lib/capybara/webkit/browser.rb:78:in current_url'             #home/ubuntu/regalitos/vendor/bundle/ruby/2.3.0/gems/capybara-webkit-1.1.0/lib/capybara/webkit/driver.rb:25:in   current_url' # /home/ubuntu/regalitos/vendor/bundle/ruby/2.3.0/gems/capybara-2.9.2/lib/capybara/session.rb:188:in current_url'             #home/ubuntu/regalitos/vendor/bundle/ruby/2.3.0/gems/capybara-screenshot-1.0.14/lib/capybara-screenshot/rspec.rb:55:in   block in after_failed_example' # /home/ubuntu/regalitos/vendor/bundle/ruby/2.3.0/gems/capybara-2.9.2/lib/capybara.rb:355:in using_session'             #home/ubuntu/regalitos/vendor/bundle/ruby/2.3.0/gems/capybara-screenshot-1.0.14/lib/capybara-screenshot/rspec.rb:54:in   &{39;

after_failed_example' # /home/ubuntu/regalitos/vendor/bundle/ruby/2.3.0/gems/capybara-screenshot-1.0.14/lib/capybara-screenshot/rspec.rb:84:in 阻止(2个级别)

所有其他功能测试也会返回损坏的管道错误。

在搜索了一下之后,我看到一个可能的解决方案是在xvfb-run中执行测试,所以我更新了我的 circle.yml 文件,并将其保留为:

machine:
  timezone:
    America/Los_Angeles
  ruby:
    version: 2.3.0
  services:
    - elasticsearch

test:
  override:
    - xvfb-run -a bundle exec rspec:
        parallel: false
        files:
          - spec/**/*_spec.rb

但我仍然得到同样的错误。有什么想法吗?

1 个答案:

答案 0 :(得分:-1)

显然我必须在文件中添加 capybara-webkit 所需的 qt5 安装。

我得到了它的工作。这是 circle.yml 我曾经让它发挥作用:

machine:
  timezone:
    America/Los_Angeles
  ruby:
    version: 2.3.0
  services:
    - elasticsearch

dependencies:
  pre:
    - sudo add-apt-repository ppa:beineri/opt-qt542-trusty -y
    - sudo apt-get update -y; true
    - sudo apt-get install -y qt54webkit libwebkit-dev libgstreamer0.10-dev
    - echo "/opt/qt54/bin/qt54-env.sh" >> ~/.circlerc

您可以在此处阅读更多内容:https://discuss.circleci.com/t/using-qt-5-with-circleci/88/16