railsでconfirmダイアログのテストコードのメモです。
<%= link_to user_destroy_path, method: :delete, id: "delete_button", data: {confirm: "本当に削除しますか?"} %>
scaffoldなどでデータ削除の時に書かれているこんなコードのテストです。
confirmダイアログでOKを選択する
click_on :delete_button
page.driver.browser.switch_to.alert.accept
【2020/04/25追記】
Capybaraで用意しているaccept_confirm
を利用して以下のように記述する方が望ましいようです。
page.accept_confirm do
click_on :delete_button
end
confirmダイアログでキャンセルを選択する
click_on :delete_button
page.driver.browser.switch_to.alert.dismiss
【2020/04/25追記】
Capybaraで用意しているdismiss_confirm
を利用して以下のように記述する方が望ましいようです。
page.dismiss_confirm do
click_on :delete_button
end
confirmダイアログの表示内容をテストする
click_on :delete_button
expect(page.driver.browser.switch_to.alert.text).to eq "本当に削除しますか?"
page.driver.browser.switch_to.alert.dismiss
ちなみにconfirmをだしたままscenarioを終えるとエラーになるので、表示内容のテストのあとにdismiss
をいれておく必要があります。
【2020/04/25追記】
Capybaraで用意しているdismiss_confirm
を利用して以下のように記述する方が望ましいようです。
page.dismiss_confirm("本当に削除しますか?") do
click_on :delete_button
end