Ruby on rails 无头gem:webkit_服务器:无法连接到X服务器
我在使用Headless gem、Xvfb和我们的ci服务器运行capybara webkit时遇到了一些问题。我们使用此设置对RubyonRails3.2应用程序进行自动集成测试和javascript测试。在测试过程中,它抱怨说Ruby on rails 无头gem:webkit_服务器:无法连接到X服务器,ruby-on-rails,ruby,ruby-on-rails-3,webkit,capybara-webkit,Ruby On Rails,Ruby,Ruby On Rails 3,Webkit,Capybara Webkit,我在使用Headless gem、Xvfb和我们的ci服务器运行capybara webkit时遇到了一些问题。我们使用此设置对RubyonRails3.2应用程序进行自动集成测试和javascript测试。在测试过程中,它抱怨说 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 /us
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
运行测试,它也只显示上面的错误日志,我无法调试错误
我想知道如何获得更多信息,甚至解决方案吗?我试图让capybara webkit gem与capybara一起工作,最后在CI作业中使用
xvfb run
进行测试
xvfb-run bundle exec cucumber ...
您的CI作业正在执行的命令是什么?我们遇到了相同的问题。。。事实证明,在spec_helper.rb中,我们缺少headless start命令(如下所示) 以下是我们的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
如果您使用的是Travis CI,您可能会从以下配置设置中获得一些里程:
before_install:
- "echo 'gem: --no-document' > ~/.gemrc"
- "echo '--colour' > ~/.rspec"
- export DISPLAY=:99.0
- sh -e /etc/init.d/xvfb start
安装xvfb
sudo apt-get install xvfb
然后使用xvfb执行命令
xvfb-run rspec
我的CI不为xvfb执行任何命令。这是在无头宝石()内处理的。现在我仔细观察了一下,我发现headless通过以下命令启动Xvfb服务器:{code>system“{CliUtil.path_to(“Xvfb”):{display}-screen 0{dimensions}-ac>/dev/null 2>&1&“,其中
CliUtil.path_to(“Xvfb”)
指的是``哪个{app app}.strip
。在我的例子中,服务器返回/usr/bin/Xvfb
。好的,我尝试暂时重写这个方法,让它返回xvfbrun
。也许这对我有帮助。我已经做了四个多小时了。似乎地球上有两个人有这个问题。为什么要在规范配置文件中检查生产环境?在生产环境中不应该加载此文件吗?前两个echo
语句不相关,可能会使其他语句混淆。