Re Watirgrid ...
С тех пор я добавил итеративный метод, которому можно передать блок кода watir для выполнения с удаленными объектами браузера.Таким образом, объекты браузера становятся повторно используемыми между шагами.Обновленный подробный пример с огурцом находится здесь:
https://github.com/90kts/watirgrid/blob/master/examples/cucumber/step_definitions/example_steps.rb
Ваши шаги в конце выглядят так:
Given /^navigate to the portal$/ do
@grid.iterate {|browser| browser.goto "http://gridinit.com/examples/logon.html" }
end
When /^they enter their credentials$/ do
@grid.iterate do |browser|
browser.text_field(:name => "email").set "tim@mahenterprize.com"
browser.text_field(:name => "password").set "mahsecretz"
browser.button(:type => "submit").click
end
end
Then /^they should see their account settings$/ do
@grid.iterate do |browser|
browser.text.should =~ /Maybe I should get a real Gridinit account/
end
end
Если у вас есть какие-либо вопросы, не стесняйтесь отбрасыватьмне линию.У нас также есть коммерческая реализация watirgrid для EC2, доступная для бета-версии на http://gridinit.com/public/examples, так что следите за обновлениями с различными тестовыми средами!
Помните, что помощники по управлению / итерации в последней версии watirgridv1.1.2
В качестве альтернативы сделать это параллельно с различными сценариями для каждого из провайдеров, я просто хотел бы иметь support / env.rb, который выглядит примерно так:
require 'watirgrid'
require 'rspec/expectations';
ENV["GRID"] = 'true'
ENV["controller_uri"] = "druby://10.0.1.3:11235"
if ENV["GRID"] then
params = {}
params[:controller_uri] = ENV["controller_uri"]
params[:browser] = 'chrome' # type of webdriver browser to spawn
grid ||= Watir::Grid.new(params)
grid.start(:initiate => true, :quantity => 1, :take_all => true)
else
@browser ||= Watir::Browser.new :chrome
end
Before do |scenario|
@browser = grid.providers.first
end
at_exit do
grid.iterate do |browser|
browser.close
end
grid.release_tuples
end
Примечание. Я использую :take_all => true
для получения эксклюзивного доступа к провайдеру и освобождаю его обратно в сетку at_exit
... Затем я бы вызывал свои сценарии из отдельного тестового прогона, используя CLI, возможно, в оболочкев сценарии bash или DOS, например
cucumber features --name "Name of scenario 1"
cucumber features --name "Name of scenario 2"
cucumber features --name "Name of scenario 3"
...
etc