3

我正在尝试使用无头 gem、xvfb 和 capybara-webkit 在 ubuntu 服务器 CI 盒上运行一套集成规范,以进行无头测试。一切都在本地开发盒上运行良好,但一旦转移到 CI 服务器,事情就会变得有趣。

在规范助手中有一些代码包装:js 在无头块中启用了集成规范,如下所示:

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

就像我说的,这一切都在本地开发盒上运行良好。在 CI 上,它使用 headless gem 和 xvfb 作为同一用户对不同项目进行测试,当规范需要实例化浏览器实例时,尝试运行集成规范会导致以下错误:

webkit_server:致命的 IO 错误:客户端被杀死

我一直试图找出可能导致该错误的原因,但甚至找不到可能来自何处的痕迹,或任何其他有助于调试问题的信息。

到目前为止,我已经检查/尝试了以下内容:

  • CI 用户绝对有权限运行 xvfb
  • 以 CI 用户身份运行“Xvfb :99 -ac”会给出一个关于未找到字体的警告,没有其他问题

有没有人知道可能导致这种情况的原因,或者我可以在哪里寻找更多信息?我对此感到很困惑。

谢谢!

4

3 回答 3

9

我不确定这是否完全是正确的解决方案,但它似乎对我有用。而不是这样做:

bundle exec spec

像这样使用 Xvfb 运行命令,并删除无头 gem 的使用:

xvfb-run bundle exec spec

似乎有点错误,但它确实有效。

于 2011-08-26T05:37:03.127 回答
2

对我来说,以下工作。我不确定为什么缺少“-a”无法运行 xvfb。我的构建现在正在 ubuntu+jenkins CI 上运行 @javascript 测试

DISPLAY=localhost:0.0 xvfb-run -a bundle exec cucumber
于 2012-11-22T06:32:20.417 回答
1

不确定这是否相关(我使用的是 capybara-webkit 而不是 Headless gem)但在我的 ubuntu 实例上(ec2 上的 ubuntu lucid)我还需要运行:

sudo xhost +local:jenkins

授予 jenkins 帐户与 xvfb 交谈的权限。请参阅:无法使用 Qt 应用程序连接到 X 服务器:0.0

于 2012-01-07T01:23:06.027 回答