How do I confirm a javascript popup with Capybara?
Adding an answer for those hitting this in 2016 and beyond. You can now use Capybara directly to accept a confirmation box. You do this by wrapping the code that causes the confirmation box to appear in the accept_confirm function.
accept_confirm do click_link 'Destroy'end
First of all switch to using Selenium as the driver by putting an @javascript tag in front of your scenario.
The following code in your cucumber step will then confirm the dialogue:
page.driver.browser.switch_to.alert.accept# orpage.driver.browser.switch_to.alert.dismiss# orpage.driver.browser.switch_to.alert.text
As @NobbZ said, this question has been asked and answered before here: How to test a confirm dialog with Cucumber?.
More selenium documentation available here too: http://code.google.com/p/selenium/wiki/RubyBindings#JavaScript_dialogs
for capybara-webkit:
page.driver.browser.accept_js_confirmspage.driver.browser.reject_js_confirms
which is still working, but the documentation says also:
page.driver.accept_js_confirms!page.driver.accept_js_confirms!
See https://github.com/thoughtbot/capybara-webkit , search "accept_js_confirms"