各 it
毎にブラウザの SessionStorage
の内容をクリアしたい。
ソースコード追ったときのメモ。
JavaScript 経由でクリアするパターン
RSpec.configure do |config|
config.prepend_after(:each, type: :feature) do
Capybara.execute_script 'localStorage.clear()'
end
end
参考: Capybara driver for Selenium needs to clean localStorage between tests
Capybara のメソッドで削除するパターン
Capybara.reset_sessions!
を使う。
RSpec.configure do |config|
config.prepend_after(:each, type: :feature) do
Capybara.reset_sessions!
end
end
reset_session!
は reset!
のエイリアス。
https://github.com/teamcapybara/capybara/blob/master/lib/capybara/session.rb#L124-L133
reset! 自体は内部で clear_browser_state
を呼び出し
- クッキー
- SessionStorage
- LocalStorage
の削除をしている。
https://github.com/teamcapybara/capybara/blob/master/lib/capybara/selenium/driver.rb#L262-L274
なお、Storage関連はオプションでクリアを有効にしないと処理がスキップされる。
clear_session_storage
clear_local_storage