Фон:
У меня есть набор интеграционных тестов Capybara , работающих на моем приложении Rails 3. Для других частей набора тестов я использую Rspec .
На моем компьютере с Mac OSX есть концентратор автономного сервера selenium 2.6.0.
java -jar selenium-server-standalone-2.6.0.jar -role hub
Я использую несколько виртуальных машин, каждая из которых подключена к концентратору с помощью узла селена:
java -jar selenium-server-standalone-2.6.0.jar -role webdriver -hub http://0.0.1.12:4444/grid/register port 5555 -browser browserName="internet explorer",version=8,platform=WINDOWS
Это работает нормально, на этом скриншоте консоль показывает, что у меня IE7 и браузер IE8, подключенный к хабу:
Я настроил капибару для работы с селеновым концентратором (который делегирует тесты узлам).
Capybara.app_host = "myapp.dev"
Capybara.default_driver = :selenium
Capybara.register_driver :selenium do |app|
Capybara::Selenium::Driver.new(app,
:browser => :remote,
:url => "http://localhost:4444/wd/hub",
:desired_capabilities => :internet_explorer)
end
Работает, однако тест будет запускаться только на одном узле internet_explorer. Кажется, это тот, который «первым в очереди»; Если я выключу его, тест будет успешно запущен на другом узле.
Я пробовал проект parallel_tests , настраивая капибару в соответствии с предложением, но это все равно только запускает один интеграционный тест.
Как мне запустить интеграцию на всех узлах internet_explorer одновременно?
Бонусный вопрос: Если бы я хотел запустить свои интеграционные тесты на всех подключенных узлах, независимо от возможностей браузера, как бы я это сделал?