Capybara-webkit、rspec 集成规范和 xvfb:webkit_server:致命 IO 错误:客户端被杀死
Posted
技术标签:
【中文标题】Capybara-webkit、rspec 集成规范和 xvfb:webkit_server:致命 IO 错误:客户端被杀死【英文标题】:Capybara-webkit, rspec integration specs, and xvfb: webkit_server: Fatal IO error: client killed 【发布时间】:2011-08-19 03:29:04 【问题描述】:我正在尝试使用无头 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”会给出一个关于未找到字体的警告,没有其他问题有没有人知道可能是什么原因造成的,或者我可以在哪里寻找更多信息?我对此感到很困惑。
谢谢!
【问题讨论】:
【参考方案1】:我不确定这是否完全是正确的解决方案,但它似乎对我有用。而不是这样做:
bundle exec spec
像这样使用 Xvfb 运行命令,并删除无头 gem 的使用:
xvfb-run bundle exec spec
似乎有点不对劲,但确实有效。
【讨论】:
【参考方案2】:对我来说,以下工作。我不确定为什么缺少“-a”无法运行 xvfb。我的构建现在正在 ubuntu+jenkins CI 上运行 @javascript 测试
DISPLAY=localhost:0.0 xvfb-run -a bundle exec cucumber
【讨论】:
【参考方案3】:不确定这是否相关(我使用的是 capybara-webkit 而不是 Headless gem)但在我的 ubuntu 实例上(ec2 上的 ubuntu lucid)我还需要运行:
sudo xhost +local:jenkins
授予 jenkins 帐户与 xvfb 交谈的权限。见:Cannot connect to X server :0.0 with a Qt application
【讨论】:
以上是关于Capybara-webkit、rspec 集成规范和 xvfb:webkit_server:致命 IO 错误:客户端被杀死的主要内容,如果未能解决你的问题,请参考以下文章
使用 Quilljs 和 capybara-webkit 进行 Capybara 测试
ruby 持续集成,parallel_tests,黄瓜,无头,capybara-webkit,chrome。对于mac和linux。有条件的@show chrome浏览器(:
ruby 持续集成,parallel_tests,黄瓜,无头,capybara-webkit,chrome。对于mac和linux。有条件的@show chrome浏览器(: