Изменение домена / поддомена селена в сценариях огурца
Итак, у меня есть веб-приложение Rails, которое использует субдомены для отделения функциональности администратора от общедоступной функциональности с использованием subdomain-fu. Таким образом, есть функциональность (которую я хочу протестировать!), Содержащаяся в двух URL-адресах (например, admin.example.com
а также www.example.com
). Я хочу, чтобы некоторые сценарии работали с доменом администратора, а некоторые - с доменом www.
Моя проблема в том, что я не могу понять, как изменить домен, который использует селен, в любое время после запуска. Я могу положить что-то вроде этого в моем env.rb:
Webrat.configure do |config|
config.mode = :selenium
config.application_address = "admin.example.com"
end
И это будет работать, но только для сценариев, которым нужен домен администратора. Если я попробую что-то вроде:
host! "www.example.com"
в моих шагах, ну, кажется, это просто игнорируется селеном, который продолжает использовать "admin.example.com"
Есть идеи? Или, если это невозможно, есть идеи для обхода?
2 ответа
У меня не работает это с помощью Webrat, но с Cabybara у меня работает следующее.
Given /^I visit subdomain "(.+)"$/ do |sub|
# host! "#{sub}.example.com" #for webrat
Capybara.default_host = "#{sub}.example.com" #for Rack::Test
Capybara.app_host = "http://#{sub}.example.com:9887" if Capybara.current_driver == :selenium
################################################################################
# As far as I know, you have to put all the {sub}.example.com entries that you're
# using in your /etc/hosts file for the Culerity tests. This didn't seem to be
# required for Rack::Test
################################################################################
end
Я никогда не использовал webrat, но в обычном тесте, если бы вы открыли полный путь вместо относительного пути.
так
selenium.open("http://foo/bar");
заставит тест перейти на полный URL