0
votes

I have a project (Rails 5, Capybara-webkit, Rspec) that I'm trying to setup on circleci.

I added a circle.yml file to my project root, with the elasticsearch service, given my project is using searchkick:

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

The problem is that circleci returns me the next error:

1.1) Failure/Error: visit products_path

Capybara::Webkit::NoResponseError: No response received from the server. # ./spec/features/shop/index/add_product_to_list_spec.rb:48:in `block (6 levels) in '

1.2) Failure/Error: @socket.puts string

Errno::EPIPE: Broken pipe

/home/ubuntu/regalitos/vendor/bundle/ruby/2.3.0/gems/capybara-webkit-1.1.0/lib/capybara/webkit/connection.rb:29:in 'write' # /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 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 block (2 levels) in '

And all other feature tests returns the broken pipe error too.

After searching for a bit, I saw that a possible solution was to execute the tests in an xvfb-run so I updated my circle.yml file and left it like this:

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

But I still get the same error. Any ideas?

1

1 Answers

-1
votes

Apparently I had to add to the file the qt5 installation what is needed by capybara-webkit.

I got it working. This is the circle.yml I used to get it work:

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

You can read more here: https://discuss.circleci.com/t/using-qt-5-with-circleci/88/16