Capybara-webkit, спецификации интеграции rspec и xvfb: webkit_server: фатальная ошибка ввода-вывода: клиент убит

Я пытаюсь получить набор спецификаций интеграции, работающих на CI-модуле Ubuntu-сервера, используя безголовый гем, xvfb и capybara-webkit для безголового тестирования. Все отлично работает на локальном устройстве разработки, но все становится интересным, как только он перенесен на CI-сервер.

В хелпере спецификаций есть немного переноса кода:js включил спецификации интеграции в блок без заголовка, например:

  config.around(:each, :js => true) do |example|
    Headless.ly &example 
  end

Как я уже сказал, все это прекрасно работает на локальном устройстве разработчика. В CI, который использует безголовый гем и xvfb в качестве одного и того же пользователя для тестов для другого проекта, попытка запустить спецификации интеграции приводит к следующей ошибке, когда спецификации потребуется создать экземпляр браузера:

webkit_server: фатальная ошибка ввода-вывода: клиент убит

Я пытался выяснить, что может быть причиной этой ошибки, но даже не могу найти ни следа того, откуда это могло появиться, ни какой-либо другой информации, которая помогла бы отладить проблему.

Пока я проверил / попробовал следующее:

  • Пользователь CI определенно имеет права на запуск xvfb
  • Запуск "Xvfb:99 -ac" в качестве пользователя CI дает одно предупреждение о не найденном шрифте, никаких других проблем

У кого-нибудь есть идеи, что может быть причиной этого, или где я могу найти дополнительную информацию? Я довольно озадачен этим.

Спасибо!

3 ответа

Решение

Я не уверен, что это совершенно правильное решение, но, похоже, оно мне подходит. Вместо того, чтобы делать:

bundle exec spec

Запустите команду с Xvfb следующим образом и удалите использование безголового гема:

xvfb-run bundle exec spec

Кажется немного неправильно, но это работает.

У меня сработало следующее. Я не уверен, почему отсутствует "-a" не удается запустить xvfb. Моя сборка сейчас работает с тестами @javascript на ubuntu+jenkins CI

DISPLAY=localhost:0.0 xvfb-run -a bundle exec cucumber

Не уверен, что это связано (я использовал capybara-webkit вместо драгоценного камня без головы), но на моем экземпляре Ubuntu (Ubuntu Lucid на EC2) мне также нужно было запустить:

sudo xhost +local:jenkins

дать разрешение учетной записи Дженкинс поговорить с xvfb. Смотрите: Не удается подключиться к X-серверу:0.0 с приложением Qt

Другие вопросы по тегам