Имитировать закрытие/повторное открытие браузера в огурцах/капибаре?
Я пишу тесты огурца, чтобы проверить функциональность типа "Запомнить меня", и для этого в реальной жизни пользователь закроет свой браузер, снова откроет браузер и вернется на сайт.
Мой тест до сих пор выглядит следующим образом:
Scenario: 'Remember me' checked
Given I have checked "Remember me"
And I am logged in as "[email protected]"
When I close and re-open my browser
And I come back to the dashboard
Then I should be on the dashboard
Однако я не знаю, что заполнить для параметра "Когда я закрываю и снова открываю определение браузера".
Кто-нибудь знает, как я буду это делать (или если это не то, что я должен делать, как я должен его тестировать?)
Ответы
Ответ 1
Я использую Покажи мне файлы cookie.
Добавьте в пакет с gem 'show_me_the_cookies'
, а затем добавьте World(ShowMeTheCookies)
в свой features/support/env.rb
Затем просто определите шаг:
When /^I reopen the browser$/ do
expire_cookies
visit [ current_path, page.driver.request.env['QUERY_STRING'] ].reject(&:blank?).join('?')
end
Ответ 2
Возможно, создайте вторую сессию Capybara? http://rubydoc.info/github/jnicklas/capybara/master/Capybara/Session
Ответ 3
Вы можете просто удалить файлы cookie.
When /^I clear cookies$/ do
browser = Capybara.current_session.driver.browser
browser.manage.delete_all_cookies
end
Ответ 4
Этот драгоценный камень облегчает: https://github.com/nruth/show_me_the_cookies
Ответ 5
Я пытался проверить одно и то же, заработал вот так:
When(/^I close and reopen the browser$/) do
# Get cookies we want to keep
remember_me_cookie = page.driver.browser.manage.cookie_named('remember_user_token')
# Close the window and delete the cookies
page.driver.quit
# Reopen the window
page.driver.switch_to_window(page.driver.current_window_handle)
# Go to our domain and add our cookies back in
visit('/')
remember_me_cookie.nil? ? @current_user = nil : page.driver.browser.manage.add_cookie(remember_me_cookie)
# Refresh the domain to activate the cookies
visit('/')
end
Несколько вещей:
-
page.driver.quit
удаляет файлы cookie, вот почему я делаю танец с файлами cookie.
- Я попытался закрыть окно с помощью
page.driver.close_window(page.driver.current_window_handle)
, а затем вернуться к нему с помощью page.driver.switch_to_window(handle)
, но это не сработало
- Я попытался закрыть окно с помощью
page.driver.close_window(page.driver.current_window_handle)
, а затем перейти в новое окно page.driver.switch_to_window(page.driver.open_new_window)
, но это не сработало
Мне кажется, что я действительно не понимаю, как отношения browser
/window
работают в Capybara. Также похоже, что копирование файлов cookie - это обман моего теста интеграции. Надеюсь, в будущих версиях есть лучший способ достичь этого.