Help us understand the problem. What is going on with this article?

RSpec + capybara で SessionStorage クリアする

More than 1 year has passed since last update.

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

https://gist.github.com/nruth/864dc9875b4feb183b7b10ddbd25c7f4#file-selenium-rb-L43-L55

tanakaworld
A Software Engineer. Creator of proff.io
https://tanaka.world
mercari
フリマアプリ「メルカリ」を、グローバルで開発しています。
https://tech.mercari.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away