PIYO - Tech & Life -

Capybaraで別タブで開いたWindowを閉じる

Rails RSpec Capybara

利用規約を確認しないとチェックボックスにチェックできないみたいな仕組みを簡易で作りまして、それのテストを書くときにちょっと迷ったので残しときます。

利用規約のリンクを押すと別タブで規約ページが開くと同時にチェックボックスのdisabledが外れる仕組みになっているとします。

テストではclick_link '利用規約'とすると別ウィンドウ(別タブ)が開いてしまい、そのままではチェックボックスを操作できません。新しく開いたウィンドウを閉じてあげなければいけません。

そこで↓のようにします。

window = window_opened_by { click_link '利用規約' }
window.close
check 'terms_of_use'

Windowを保持できるので、それをcloseするだけ。そしたら元にWindowに戻った扱いになるので、あとは普通にテストを書けばOKです。