例えばRailsのFeature Specsなんかでリンクをクリックするとページ遷移せずに新しいタブが開いて、そちらのタブの内容をCapybaraでテストしたい場合があると思います。通常は新しいタブが開いても元のページのままなのですが、Poltergeistのwithin_window
というメソッドを使うとタブを移動することが出来ます。
handle = page.driver.browser.window_handles.last
page.driver.browser.within_window(handle) do
# ブロック内ではタブが移動
expect(page).to have_css('canvas')
end
なおmasterブランチにはswitch_to_window
というメソッドが追加されており、こちらはメソッド実行後にタブが移動します。