Безголовый камень: webkit_server: не удается подключиться к X-серверу

У меня возникли проблемы с запуском capybara-webkit с драгоценным камнем Headless, Xvfb и нашим ci-сервером. Мы используем эту настройку для автоматического тестирования интеграции и тестирования javascript нашего приложения Ruby on Rails 3.2. Во время тестов жалуется, что

webkit_server: cannot connect to X server

Но когда я ps aux | grep Xvfb

deploy    1602  0.0  0.1  61696  1912 pts/2    S+   Jul10   0:00 /usr/bin/Xvfb :99 -screen 0 1280x1024x24 -ac

Я вижу, что Xvfb работает. Если я запускаю тесты с --trace, он также показывает только журнал ошибок выше, и я не могу отладить ошибку.

Любые идеи, как я мог бы получить дополнительную информацию или даже решение?


person 23tux    schedule 12.07.2012    source источник


Ответы (4)


Я пытался заставить гем capybara-webkit работать с капибарой и в итоге использовал xvfb-run в задании CI для своих тестов.

xvfb-run bundle exec cucumber ...

Какую команду выполняет ваша задача CI?

person mdgreenfield    schedule 16.07.2012
comment
Мой CI не выполняет никаких команд для xvfb. Это обрабатывается внутри гема Headless (github.com/leonid-shevtsov/headless). Теперь я присмотрелся к этому поближе и понял, что безголовый запускает сервер Xvfb с помощью этой команды system "#{CliUtil.path_to("Xvfb")} :#{display} -screen 0 #{dimensions} -ac >/dev/null 2>&1 &", где CliUtil.path_to("Xvfb") относится к ``какое #{приложение}.strip. В моем случае сервер возвращает /usr/bin/Xvfb. Хорошо, я пытаюсь временно переопределить этот метод, чтобы он вместо этого возвращал xvfb-run. Может это поможет - person 23tux; 22.07.2012
comment
такая же проблема здесь. был на этом в течение более четырех часов. кажется, что есть два человека на планете с этой проблемой. - person kikuchiyo; 23.07.2012

Мы столкнулись с той же проблемой... Оказывается, в нашем spec_helper.rb нам не хватало команды безголового запуска (ниже).

Вот наша конфигурация rspec:

require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'
require 'rspec/autorun'
require 'capybara/rspec'
require 'capybara/webkit'
require 'headless'

Capybara.register_driver :webkit do |app|
  Capybara::Driver::Webkit.new(app, :ignore_ssl_errors => true)
end

Capybara.javascript_driver = :webkit

# don't run on the local machine (since we don't have xvfb running locally)
if Rails.env.production?
    headless = Headless.new
    headless.start
end
person ryanjones    schedule 30.08.2012
comment
почему вы проверяете производственную среду в файле конфигурации спецификации? разве этот файл НЕ должен загружаться в рабочей среде? - person Peter P.; 17.10.2013

Если вы используете Travis CI, вы можете извлечь пользу из этого параметра конфигурации:

before_install:
- "echo 'gem: --no-document' > ~/.gemrc"
- "echo '--colour' > ~/.rspec"
- export DISPLAY=:99.0
- sh -e /etc/init.d/xvfb start
person Dan Croak    schedule 16.10.2013
comment
Первые два оператора echo не связаны друг с другом и могут ввести в заблуждение других. - person Koen.; 07.04.2016

Установить xvfb

sudo apt-get install xvfb 

Затем выполните вашу команду, используя xvfb

xvfb-run rspec
person jlucasps    schedule 30.09.2014