Created
March 20, 2013 20:04
-
-
Save mikepack/5207962 to your computer and use it in GitHub Desktop.
This is a comparision of handling JavaScript alert/confirm/prompt notifications with Capybara.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This is a comparision of handling JavaScript alert/confirm/prompt notifications with Capybara. | |
Proposed consolidated API in Capybara: | |
There are two styles of notification handling: proactive or reactive. | |
- Proactive is used in headless environments to queue up responses. | |
- Reactive is used in environments with actual notifications that mandate a response (eg selenium). | |
alert - # Reactive | |
page.driver.accept_alert | |
# Shared | |
page.driver.alert_messages | |
confirm - # Proactive | |
page.driver.confirm_responses(true, false, true) | |
page.driver.accept_confirms | |
page.driver.reject_confirms | |
# Reactive | |
page.driver.accept_confirm | |
page.driver.reject_confirm | |
# Shared | |
page.driver.confirm_messages | |
prompt - # Proactive | |
page.driver.prompt_responses('One', 'Two') | |
page.driver.accept_prompts | |
page.driver.reject_prompts | |
# Reactive | |
page.driver.respond_to_prompt('One') | |
page.driver.accept_prompt | |
page.driver.reject_prompt | |
# Shared | |
page.driver.prompt_messages | |
Rack::Test | |
alert - not supported | |
confirm - not supported | |
prompt - not supported | |
Selenium | |
alert - page.driver.browser.switch_to.alert.accept | |
confirm - confirm = page.driver.browser.switch_to.alert | |
confirm.accept | |
confirm.dismiss | |
prompt - prompt = page.driver.browser.switch_to.alert | |
prompt.send_keys('My Response') | |
prompt.accept | |
capybara-webkit | |
alert - page.driver.alert_messages | |
page.driver.browser.alert_messages | |
confirm - page.driver.confirm_messages | |
page.driver.browser.confirm_messages | |
* page.driver.accept_js_confirms! | |
* page.driver.browser.accept_js_confirms | |
* page.driver.dismiss_js_confirms! | |
* page.driver.browser.reject_js_confirms | |
prompt - page.driver.prompt_messages | |
page.driver.browser.prompt_messages | |
Accepting/Dismissing the prompt | |
- By the nature of prompts, accepting is the same as clicking | |
OK without filling out a response. | |
--------------------------------------------------------- | |
* page.driver.accept_js_prompts! | |
* page.driver.browser.accept_js_prompts | |
* page.driver.dismiss_js_prompts! | |
* page.driver.browser.reject_js_prompts | |
Setting the prompt | |
--------------------------------------------------------- | |
* page.driver.js_prompt_input = 'My Response' | |
* page.driver.accept_js_prompts! | |
* page.driver.browser.set_prompt_text_to('My Response') | |
* page.driver.browser.accept_js_prompts | |
Clearing the prompt | |
- Unnecessary, can be accomplished with: | |
page.driver.js_prompt_input = '' | |
--------------------------------------------------------- | |
* page.driver.js_prompt_input = nil | |
* page.driver.accept_js_prompts! | |
* page.driver.browser.clear_prompt_text | |
* page.driver.browser.accept_js_prompts | |
potergeist | |
This API is in proposition. | |
alert - page.driver.js_alert_messages | |
page.driver.browser.js_alert_messages | |
confirm - page.driver.js_confirm_messages | |
page.driver.browser.js_confirm_messages | |
page.driver.js_confirm_set_responses(true, false, true) | |
page.driver.browser.js_confirm_responses([true, false, true]) | |
prompt - page.driver.js_prompt_messages | |
page.driver.browser.js_prompt_messages | |
page.driver.js_prompt_set_responses('My Response', 'Another Response') | |
page.driver.browser.js_prompt_responses(['My Response', 'Another Response']) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment