Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby Capybara webkit、rspec集成规范和xvfb:webkit_服务器:致命IO错误:客户端被杀死_Ruby_Rspec_Capybara_Headless_Xvfb - Fatal编程技术网

Ruby Capybara webkit、rspec集成规范和xvfb:webkit_服务器:致命IO错误:客户端被杀死

Ruby Capybara webkit、rspec集成规范和xvfb:webkit_服务器:致命IO错误:客户端被杀死,ruby,rspec,capybara,headless,xvfb,Ruby,Rspec,Capybara,Headless,Xvfb,我正在尝试使用headless gem、xvfb和capybara webkit在ubuntu服务器CI盒上运行一套集成规范,以进行headless测试。在本地开发环境中,一切都运行得很好,但一旦转移到CI服务器,事情就会变得有趣 在spec helper中,有一点代码包装:无头块中启用js的集成规范,如下所示: config.around(:each, :js => true) do |example| Headless.ly &example end 正如我

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

在spec helper中,有一点代码包装:无头块中启用js的集成规范,如下所示:

  config.around(:each, :js => true) do |example|
    Headless.ly &example 
  end
正如我所说的,这一切都在本地开发设备上运行良好。在使用headless gem和xvfb作为同一用户进行不同项目测试的CI上,当规范需要实例化浏览器实例时,尝试运行集成规范会导致以下错误:

webkit_服务器:致命IO错误:客户端已终止

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

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

  • CI用户绝对有权运行xvfb
  • 当CI用户运行“Xvfb:99-ac”时,会发出一条关于找不到字体的警告,没有其他问题
有没有人知道是什么原因造成的,或者我在哪里可以找到更多的信息?这件事让我很难堪


谢谢

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

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

xvfb-run bundle exec spec
似乎有点错误,但它可以工作。

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

sudo xhost +local:jenkins

授予jenkins帐户与xvfb对话的权限。请参阅:

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

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