Ruby, cucumber, capybaras:当运行并行测试时,可以在酱料实验室和本地运行之间切换吗?



目前我正在研究一个应该能够在本地和酱油实验室上运行的环境,但我有以下问题:

当使用Cucumber时,需要标记"@selenium"来将酱汁与并行测试集成。然而,这个标签也强制测试在酱料实验室上运行(我希望能够在酱料和本地之间切换)。是否有一种方法可以使用环境变量或标记来改变这种行为?

OS: OSX Yosemite测试栈:Ruby, Capybara, Cucumber, Rake.

注意:没有Selenium标签,我可以同时运行酱油实验室和本地的单个测试运行或顺序的所有测试运行。我不熟悉红宝石/水豚/黄瓜,所以任何一般的技巧都非常感谢)

处理单个特征和黄瓜特征的方法:

if (ENV["RUN_ON_SAUCE"] == "true")
  puts('TRUE: ENV["RUN_ON_SAUCE"] = ' + ENV["RUN_ON_SAUCE"])
  Capybara.default_driver = :sauce
  Capybara.javascript_driver = :sauce
else
  puts('FALSE: ENV["RUN_ON_SAUCE"] = ' + ENV["RUN_ON_SAUCE"])
  Capybara.default_driver = :selenium
  Capybara.javascript_driver = :selenium
end

下面的代码为我工作。我用黄瓜和capybara,我的功能被标记为@selenium和其他几个标签(@core),我用它们来过滤。

在sauce labs上执行套件命令-

RUN_ON_SAUCE = trueSC_EXECUTABLE =路径//酱/连接/可执行START_TUNNEL=true ENVIRONMENT=staging parallel_cucumber features - 0"-t @core" -n 8

本地执行套件的命令-

parallel_cucumber features - 0"-t @core" -n 8

if ENV['HEADLESS']
  require 'capybara/poltergeist'
  Capybara.default_driver = :poltergeist
  Capybara.register_driver :poltergeist do |app|
    Capybara::Poltergeist::Driver.new(app, {:debug => false, :default_wait_time => 60, :timeout => 120, :js_errors => false, :window_size => [1024, 768]})
  end
  Capybara.javascript_driver = :poltergeist
elsif ENV['RUN_ON_SAUCE']
  require 'sauce'
  require 'sauce/capybara'
  require 'sauce/cucumber'
  Capybara.default_driver = :sauce
  Capybara.javascript_driver = :sauce
  Sauce.config do |c|
    if ENV['START_TUNNEL']
      c[:start_tunnel] = ENV['START_TUNNEL']
      c[:sauce_connect_4_executable] = ENV['SC_EXECUTABLE']
      c[:connect_options] = {tunnel_domains: "'*.example.com'", max_logsize: "10485760"}
    end
    c[:browsers] = [
        ["Windows 8", "Internet Explorer", "10"],
        ["Windows 10", "Internet Explorer", "11"],
        ["Windows XP", "Internet Explorer", "8"]
    ]
    c[:'max-duration'] = 300
  end
else
  Capybara.default_driver = :selenium
  Capybara.default_max_wait_time = 120
  Capybara.page.driver.browser.manage.window.maximize
end

相关内容

最新更新