0

我在运行使用 capybara-webkit 驱动程序的 cuke 测试用例时遇到了很多麻烦。因为这是一个无头服务器,我正在尝试运行 xvfb-run 来运行测试,但一直遇到障碍。

如果我尝试跑步

xvfb-run rake cucumber:all

然后我从我的服务器收到错误,即 rake 不存在。(尽管确实如此)

如果我尝试通过 bundle exec 运行它

xvfb-run bundle exec rake cucumber:all

然后我收到一条错误消息,告诉我捆绑包不存在!

这两个命令都可以从 ssh 进入服务器,但只有当来自 Bamboo 时它们才不会。我已经尝试了 Rake 任务,并且只是编写了一个脚本来运行 bundle exec,但是 nada。

我想知道其他人是否有这个设置,如果他们可以指导我如何在竹子中设置它......这是一个非常典型的 Rails 项目,这是我启动 CI 之前的最后阶段和运行。

谢谢!

4

2 回答 2

0

我想我已经根据我在这里找到的这个页面弄清楚了,这是关于使用 Jenkins 的。 http://sermoa.wordpress.com/2011/07/02/cucumber-running-headless-selenium-with-jenkins-the-easy-way/

基本思想是使用“无头”gem,然后将此部分放在您的 env.rb 中用于黄瓜:

if ENV['HEADLESS'] == 'true'
  require 'headless'

  headless = Headless.new
  headless.start

  at_exit do
    headless.destroy
  end
end

然后使用环境变量“HEADLESS=true”在竹子中运行您的正常 rake 任务。

您还必须在服务器上安装 xvfb。(sudo apt-get install xvfb)

于 2012-10-09T18:40:53.213 回答
0

这是一个有效的更新版本,它将使用 before/after 钩子为黄瓜设置 capybara-webkit 和 headless。只需将其包含在您的 support/env.rb 或其他支持文件中(我使用了 support/javascript.rb,因为我做了一些相关的事情):

Capybara.javascript_driver = :webkit

Before do
  # run capybara-webkit headless if not on mac and this test is selenium based.
  if Capybara.current_driver == :selenium
    require 'headless'
    @headless = Headless.new
    @headless.start
  end
end

After do
  @headless.destroy
end

编辑:这是一个带有一些可标记优点的要点,如果需要,您可以在本地开发模式下使用 :chrome,同时确保 CI 环境保持无头:

https://gist.github.com/rosskevin/5937888

于 2013-07-05T16:18:14.430 回答