持续集成 - 运行需要xvfb的并行测试套件

时间:2013-04-04 22:58:50

标签: ruby-on-rails ubuntu continuous-integration x11 xvfb

我遇到需要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

任何有关破译的帮助都会很棒!

1 个答案:

答案 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