Симулировать закрытие / повторное открытие браузера в огурце / капибаре? - PullRequest
10 голосов
/ 11 сентября 2011

Я пишу тесты на огурец для проверки функциональности типа «Запомнить меня», и для этого в реальной жизни пользователь должен закрыть свой браузер, снова открыть свой браузер и вернуться на сайт.

Мой тест до сих пор выглядит так:

Scenario: 'Remember me' checked
  Given I have checked "Remember me"
  And I am logged in as "test@test.com"
  When I close and re-open my browser
  And I come back to the dashboard
  Then I should be on the dashboard

Однако я не знаю, что заполнять для определения шага «Когда я закрываю и снова открываю браузер».

Кто-нибудь знает, как я это сделаю (или если это не то, что я должен делать, как я должен это проверять?)

Ответы [ 5 ]

2 голосов
/ 18 февраля 2012

Я использую Покажите мне печенье .

Добавьте в связку с 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
1 голос
/ 12 июля 2012

Этот драгоценный камень облегчает: https://github.com/nruth/show_me_the_cookies

1 голос
/ 12 сентября 2011

Вы можете просто очистить куки.

When /^I clear cookies$/ do
  browser = Capybara.current_session.driver.browser
  browser.manage.delete_all_cookies
end
1 голос
/ 11 сентября 2011

Может быть, создать второй сеанс Капибара?http://rubydoc.info/github/jnicklas/capybara/master/Capybara/Session

0 голосов
/ 31 марта 2016

Я пытался протестировать то же самое, заставил его работать так:

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 удаляет куки, поэтому я танцую с куки
  • Я попытался закрыть окно с помощью 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 работают в Капибаре. Также кажется, что копирование файлов cookie - это своего рода обман моего интеграционного теста. Надеюсь, в следующих версиях есть лучший способ добиться всего этого.

...