LoginSignup
80
80

More than 3 years have passed since last update.

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

Last updated at Posted at 2018-09-25

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

80
80
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
80
80