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

【Rails】Selenium/RSpecでconfirmダイアログのテストをする

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

Reference

at-946
昨日の自分に向けて、つまづいたことや困ったことをメモってます。
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