複数window開くときのテスト

turnip/capybaraでテスト書いてる時に、

あるリンクをクリックすると、ポップアップ開いたり新しいウィンドウ開いて、そこでなんか操作する

みたいなことがある。こんな感じでできる。

_, popup = page.driver.browser.window_handles
  within_window(popup) do
  expect(page).to have_content('message')
end

開いたままのWindowがあるせいでテストが変なこけ方したから、メインのWindow以外を閉じるみたいな感じにした。

# spec/spec_helper.rb
RSpec.configure do |config|
  config.after(:javascript => true) do
    page.driver.browser.window_handles[1..-1].each do |sub_window|
      within_window(sub_window) do
        page.execute_script "window.close();"
      end
    end
  end
end