Я использую огурец + capybara для тестирования веб-автоматизации. Мне бы хотелось, чтобы у меня был собственный тег (что-то вроде @all_browsers до сценария), и он запускается против списка установленных мной веб-драйверов (celerity, selenium on firefox, ie и chrome). Я не хочу писать сценарий 4 раза с 4 разными тегами спереди. Я искал попытку сделать это с помощью нового драйвера, через который я зарегистрировался через:
Capybara.register_driver :all_browsers do |app|
# What would even work in here? I don't think anything will.
end
И затем следуйте за ним:
Before('@all_browsers') do
# Same problem here.
end
Но я не совсем уверен, что добавить в это, прежде чем метод, который может действительно работать.
Я пробовал использовать крючки огурца, в частности:
Around('@all_browsers') do |scenario, block|
Capybara.current_driver = :selenium_firefox
block.call
Capybara.current_driver = :selenium_chrome
block.call
# etc
end
Но это не ведет себя так, как я надеялся. Он использует один и тот же драйвер и дважды запускает сценарий с ним.
Следуя вдоль линий крюка, это из документации огурца: You may also provide an AfterConfiguration hook that will be run after Cucumber has been configured. This hook will run only once; after support has been loaded but before features are loaded. You can use this hook to extend Cucumber, for example you could affect how features are loaded...
Это может быть потенциальным препятствием для этого, но мне не удалось придумать что-нибудь, что здесь работает.
Я просмотрел пользовательские форматы, но они действительно выглядят так, как будто они делают именно это - форматируют вывод, а не столько определяют, как функции фактически выполняются.
Я посмотрел на переориентирующую функцию огурца, но это не выглядит просто или дружелюбно. Помоги пожалуйста? Кто-нибудь?