Rspe c - Как я могу закрыть текущий браузер на системном spe c? - PullRequest
1 голос
/ 15 марта 2020

Я использую rspe c 3.9, капибару 3.3 и selenium-webdriver 3.142 с chrome для теста.
Я хочу убедиться, что браузер сохраняет файлы cookie "Запомнить меня" после закрытия / повторного открытия браузера.
Но я не могу закрыть текущий браузер.

current_window
=> #<Window @handle="CDwindow-EE538F0EA985E268B76B91E21375BBD2">

current_window.close
ArgumentError: Not allowed to close the primary window
from /Users/otake/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/capybara-3.30.0/lib/capybara/selenium/driver.rb:200:in `close_window'

Такая же ошибка возникает после ввода команды "switch_to_window (open_new_window)" then "windows .first.close"

I ' хотелось бы узнать, как:
1. закрыть текущий браузер
2. открыть новый браузер

Спасибо

1 Ответ

0 голосов
/ 15 марта 2020

Вы можете сделать так, чтобы Capybara закрыла браузер:

Capybara.current_session.quit

Новая откроется автоматически со следующей функцией spe c. Не уверен, что ваши куки сохранятся.

Но есть и другие способы проверить куки

https://relishapp.com/rspec/rspec-rails/docs/controller-specs/cookies

describe do
  specify do
    get "/"

    Timecop.travel(35.minutes.from_now) do
      get "/"

      cookie = get_cookie(cookies, "foo")
      expect(cookie.value).to eq("some value!")
      expect(cookie.expires).to be_present
    end
  end

  # That will be built-in in rack-test > 0.6.3
  def get_cookie(cookies, name)
    cookies.send(:hash_for, nil).fetch(name, nil)
  end
end
...