我遇到需要xvfb服务器的并行构建运行问题。我之前使用的是headless
ruby gem,但是当需要capybara-webkit
和xvfb服务器的某些测试套件并行运行时,偶尔会出现故障。
我的猜测是他们都试图使用相同的DISPLAY,所以我试图设置不同的DISPLAY值,然后并行运行它们,但仍然有失败。
然后我尝试删除headless
gem并运行我的测试套件:
DISPLAY=localhost:$display_num.0 xvfb-run bundle exec rake
其中$display_num
是先前设置的bash变量,两个测试套件之间的差异不同。
然后,当它们并行运行时,我得到错误:xvfb-run: error: Xvfb failed to start
。
任何有关破译的帮助都会很棒!
答案 0 :(得分:0)
Here is the gist,但最终您需要为每个进程启动一个headless
。
使用gist中引用的features/support/javascript.rb
文件有效完成,相关部分为:
# Unnecessary on mac
if (!OS.mac? && !$headless_started)
require 'headless'
# allow display autopick (by default)
# allow each headless to destroy_at_exit (by default)
# allow each process to have their own headless by setting reuse: false
headless_server = Headless.new(:reuse => false)
headless_server.start
$headless_started = true
puts "Process[#{Process.pid}] started headless server display: #{headless_server.display}"
end