Posted at

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


はじめに

railsでconfirmダイアログのテストをしたい。


app/views/xxxxx.html.erb

<%= link_to user_destroy_path, method: :delete, id: "delete_button", data: {confirm: "本当に削除しますか?"} %>


のように削除のときなどに確認のために使うダイアログのテスト。

javascriptのalert形式で出てくるのでテストがしにくいイメージですが、

selenium-webdriverがこのテストにも対応しているので簡易に確認するためのメモです。

この記事はrails newできたからとりあえずテスト自動化してみた(selenium/rspec/capybara) - QiitaでSeleniumやRSpecの設定が完了している前提で記載してます。


使い方


confirmダイアログでOKを選択する


spec/features/xxxxx_spec.rb

page.driver.browser.switch_to.alert.accept



confirmダイアログでキャンセルを選択する


spec/features/xxxxx_spec.rb

page.driver.browser.switch_to.alert.dismiss



confirmダイアログの表示内容をテストする


spec/features/xxxxx_spec.rb

expect(page.driver.browser.switch_to.alert.text).to eq "本当に削除しますか?"


ちなみにalertをだしたままscenarioを終えるとエラーになるので、表示内容のテストのあとにdismissacceptをいれておく必要があります。


Reference