mega-max-rb 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/capybara-3.40.0/History.md +2043 -0
- data/capybara-3.40.0/License.txt +22 -0
- data/capybara-3.40.0/README.md +1264 -0
- data/capybara-3.40.0/lib/capybara/config.rb +104 -0
- data/capybara-3.40.0/lib/capybara/cucumber.rb +27 -0
- data/capybara-3.40.0/lib/capybara/driver/base.rb +178 -0
- data/capybara-3.40.0/lib/capybara/driver/node.rb +143 -0
- data/capybara-3.40.0/lib/capybara/dsl.rb +59 -0
- data/capybara-3.40.0/lib/capybara/helpers.rb +127 -0
- data/capybara-3.40.0/lib/capybara/minitest/spec.rb +279 -0
- data/capybara-3.40.0/lib/capybara/minitest.rb +398 -0
- data/capybara-3.40.0/lib/capybara/node/actions.rb +420 -0
- data/capybara-3.40.0/lib/capybara/node/base.rb +144 -0
- data/capybara-3.40.0/lib/capybara/node/document.rb +48 -0
- data/capybara-3.40.0/lib/capybara/node/document_matchers.rb +67 -0
- data/capybara-3.40.0/lib/capybara/node/element.rb +613 -0
- data/capybara-3.40.0/lib/capybara/node/finders.rb +335 -0
- data/capybara-3.40.0/lib/capybara/node/matchers.rb +908 -0
- data/capybara-3.40.0/lib/capybara/node/simple.rb +216 -0
- data/capybara-3.40.0/lib/capybara/node/whitespace_normalizer.rb +81 -0
- data/capybara-3.40.0/lib/capybara/queries/active_element_query.rb +18 -0
- data/capybara-3.40.0/lib/capybara/queries/ancestor_query.rb +28 -0
- data/capybara-3.40.0/lib/capybara/queries/base_query.rb +106 -0
- data/capybara-3.40.0/lib/capybara/queries/current_path_query.rb +61 -0
- data/capybara-3.40.0/lib/capybara/queries/match_query.rb +26 -0
- data/capybara-3.40.0/lib/capybara/queries/selector_query.rb +761 -0
- data/capybara-3.40.0/lib/capybara/queries/sibling_query.rb +27 -0
- data/capybara-3.40.0/lib/capybara/queries/style_query.rb +45 -0
- data/capybara-3.40.0/lib/capybara/queries/text_query.rb +116 -0
- data/capybara-3.40.0/lib/capybara/queries/title_query.rb +39 -0
- data/capybara-3.40.0/lib/capybara/rack_test/browser.rb +200 -0
- data/capybara-3.40.0/lib/capybara/rack_test/css_handlers.rb +13 -0
- data/capybara-3.40.0/lib/capybara/rack_test/driver.rb +110 -0
- data/capybara-3.40.0/lib/capybara/rack_test/errors.rb +6 -0
- data/capybara-3.40.0/lib/capybara/rack_test/form.rb +149 -0
- data/capybara-3.40.0/lib/capybara/rack_test/node.rb +324 -0
- data/capybara-3.40.0/lib/capybara/rails.rb +16 -0
- data/capybara-3.40.0/lib/capybara/registration_container.rb +41 -0
- data/capybara-3.40.0/lib/capybara/registrations/drivers.rb +42 -0
- data/capybara-3.40.0/lib/capybara/registrations/patches/puma_ssl.rb +29 -0
- data/capybara-3.40.0/lib/capybara/registrations/servers.rb +66 -0
- data/capybara-3.40.0/lib/capybara/result.rb +186 -0
- data/capybara-3.40.0/lib/capybara/rspec/features.rb +23 -0
- data/capybara-3.40.0/lib/capybara/rspec/matcher_proxies.rb +82 -0
- data/capybara-3.40.0/lib/capybara/rspec/matchers/base.rb +113 -0
- data/capybara-3.40.0/lib/capybara/rspec/matchers/become_closed.rb +33 -0
- data/capybara-3.40.0/lib/capybara/rspec/matchers/compound.rb +88 -0
- data/capybara-3.40.0/lib/capybara/rspec/matchers/count_sugar.rb +37 -0
- data/capybara-3.40.0/lib/capybara/rspec/matchers/have_ancestor.rb +28 -0
- data/capybara-3.40.0/lib/capybara/rspec/matchers/have_current_path.rb +29 -0
- data/capybara-3.40.0/lib/capybara/rspec/matchers/have_selector.rb +69 -0
- data/capybara-3.40.0/lib/capybara/rspec/matchers/have_sibling.rb +27 -0
- data/capybara-3.40.0/lib/capybara/rspec/matchers/have_text.rb +33 -0
- data/capybara-3.40.0/lib/capybara/rspec/matchers/have_title.rb +29 -0
- data/capybara-3.40.0/lib/capybara/rspec/matchers/match_selector.rb +27 -0
- data/capybara-3.40.0/lib/capybara/rspec/matchers/match_style.rb +43 -0
- data/capybara-3.40.0/lib/capybara/rspec/matchers/spatial_sugar.rb +39 -0
- data/capybara-3.40.0/lib/capybara/rspec/matchers.rb +207 -0
- data/capybara-3.40.0/lib/capybara/rspec.rb +31 -0
- data/capybara-3.40.0/lib/capybara/selector/builders/css_builder.rb +84 -0
- data/capybara-3.40.0/lib/capybara/selector/builders/xpath_builder.rb +71 -0
- data/capybara-3.40.0/lib/capybara/selector/css.rb +102 -0
- data/capybara-3.40.0/lib/capybara/selector/definition/button.rb +68 -0
- data/capybara-3.40.0/lib/capybara/selector/definition/checkbox.rb +26 -0
- data/capybara-3.40.0/lib/capybara/selector/definition/css.rb +10 -0
- data/capybara-3.40.0/lib/capybara/selector/definition/datalist_input.rb +35 -0
- data/capybara-3.40.0/lib/capybara/selector/definition/datalist_option.rb +25 -0
- data/capybara-3.40.0/lib/capybara/selector/definition/element.rb +28 -0
- data/capybara-3.40.0/lib/capybara/selector/definition/field.rb +40 -0
- data/capybara-3.40.0/lib/capybara/selector/definition/fieldset.rb +14 -0
- data/capybara-3.40.0/lib/capybara/selector/definition/file_field.rb +13 -0
- data/capybara-3.40.0/lib/capybara/selector/definition/fillable_field.rb +33 -0
- data/capybara-3.40.0/lib/capybara/selector/definition/frame.rb +17 -0
- data/capybara-3.40.0/lib/capybara/selector/definition/id.rb +6 -0
- data/capybara-3.40.0/lib/capybara/selector/definition/label.rb +62 -0
- data/capybara-3.40.0/lib/capybara/selector/definition/link.rb +55 -0
- data/capybara-3.40.0/lib/capybara/selector/definition/link_or_button.rb +16 -0
- data/capybara-3.40.0/lib/capybara/selector/definition/option.rb +27 -0
- data/capybara-3.40.0/lib/capybara/selector/definition/radio_button.rb +27 -0
- data/capybara-3.40.0/lib/capybara/selector/definition/select.rb +81 -0
- data/capybara-3.40.0/lib/capybara/selector/definition/table.rb +109 -0
- data/capybara-3.40.0/lib/capybara/selector/definition/table_row.rb +21 -0
- data/capybara-3.40.0/lib/capybara/selector/definition/xpath.rb +5 -0
- data/capybara-3.40.0/lib/capybara/selector/definition.rb +280 -0
- data/capybara-3.40.0/lib/capybara/selector/filter.rb +5 -0
- data/capybara-3.40.0/lib/capybara/selector/filter_set.rb +121 -0
- data/capybara-3.40.0/lib/capybara/selector/filters/base.rb +77 -0
- data/capybara-3.40.0/lib/capybara/selector/filters/expression_filter.rb +22 -0
- data/capybara-3.40.0/lib/capybara/selector/filters/locator_filter.rb +29 -0
- data/capybara-3.40.0/lib/capybara/selector/filters/node_filter.rb +31 -0
- data/capybara-3.40.0/lib/capybara/selector/regexp_disassembler.rb +211 -0
- data/capybara-3.40.0/lib/capybara/selector/selector.rb +159 -0
- data/capybara-3.40.0/lib/capybara/selector/xpath_extensions.rb +17 -0
- data/capybara-3.40.0/lib/capybara/selector.rb +494 -0
- data/capybara-3.40.0/lib/capybara/selenium/atoms/getAttribute.min.js +1 -0
- data/capybara-3.40.0/lib/capybara/selenium/atoms/isDisplayed.min.js +1 -0
- data/capybara-3.40.0/lib/capybara/selenium/atoms/src/getAttribute.js +161 -0
- data/capybara-3.40.0/lib/capybara/selenium/atoms/src/isDisplayed.js +454 -0
- data/capybara-3.40.0/lib/capybara/selenium/driver.rb +517 -0
- data/capybara-3.40.0/lib/capybara/selenium/driver_specializations/chrome_driver.rb +117 -0
- data/capybara-3.40.0/lib/capybara/selenium/driver_specializations/edge_driver.rb +128 -0
- data/capybara-3.40.0/lib/capybara/selenium/driver_specializations/firefox_driver.rb +84 -0
- data/capybara-3.40.0/lib/capybara/selenium/driver_specializations/internet_explorer_driver.rb +26 -0
- data/capybara-3.40.0/lib/capybara/selenium/driver_specializations/safari_driver.rb +24 -0
- data/capybara-3.40.0/lib/capybara/selenium/extensions/file_input_click_emulation.rb +34 -0
- data/capybara-3.40.0/lib/capybara/selenium/extensions/find.rb +110 -0
- data/capybara-3.40.0/lib/capybara/selenium/extensions/html5_drag.rb +229 -0
- data/capybara-3.40.0/lib/capybara/selenium/extensions/modifier_keys_stack.rb +28 -0
- data/capybara-3.40.0/lib/capybara/selenium/extensions/scroll.rb +76 -0
- data/capybara-3.40.0/lib/capybara/selenium/node.rb +636 -0
- data/capybara-3.40.0/lib/capybara/selenium/nodes/chrome_node.rb +125 -0
- data/capybara-3.40.0/lib/capybara/selenium/nodes/edge_node.rb +110 -0
- data/capybara-3.40.0/lib/capybara/selenium/nodes/firefox_node.rb +136 -0
- data/capybara-3.40.0/lib/capybara/selenium/nodes/ie_node.rb +22 -0
- data/capybara-3.40.0/lib/capybara/selenium/nodes/safari_node.rb +118 -0
- data/capybara-3.40.0/lib/capybara/selenium/patches/atoms.rb +18 -0
- data/capybara-3.40.0/lib/capybara/selenium/patches/is_displayed.rb +16 -0
- data/capybara-3.40.0/lib/capybara/selenium/patches/logs.rb +45 -0
- data/capybara-3.40.0/lib/capybara/selenium/patches/pause_duration_fix.rb +9 -0
- data/capybara-3.40.0/lib/capybara/selenium/patches/persistent_client.rb +20 -0
- data/capybara-3.40.0/lib/capybara/server/animation_disabler.rb +80 -0
- data/capybara-3.40.0/lib/capybara/server/checker.rb +44 -0
- data/capybara-3.40.0/lib/capybara/server/middleware.rb +71 -0
- data/capybara-3.40.0/lib/capybara/server.rb +126 -0
- data/capybara-3.40.0/lib/capybara/session/config.rb +128 -0
- data/capybara-3.40.0/lib/capybara/session/matchers.rb +87 -0
- data/capybara-3.40.0/lib/capybara/session.rb +951 -0
- data/capybara-3.40.0/lib/capybara/spec/fixtures/another_test_file.txt +1 -0
- data/capybara-3.40.0/lib/capybara/spec/fixtures/capybara.jpg +3 -0
- data/capybara-3.40.0/lib/capybara/spec/fixtures/no_extension +1 -0
- data/capybara-3.40.0/lib/capybara/spec/fixtures/test_file.txt +1 -0
- data/capybara-3.40.0/lib/capybara/spec/public/jquery-ui.js +13 -0
- data/capybara-3.40.0/lib/capybara/spec/public/jquery.js +5 -0
- data/capybara-3.40.0/lib/capybara/spec/public/offset.js +6 -0
- data/capybara-3.40.0/lib/capybara/spec/public/test.js +284 -0
- data/capybara-3.40.0/lib/capybara/spec/session/accept_alert_spec.rb +81 -0
- data/capybara-3.40.0/lib/capybara/spec/session/accept_confirm_spec.rb +32 -0
- data/capybara-3.40.0/lib/capybara/spec/session/accept_prompt_spec.rb +78 -0
- data/capybara-3.40.0/lib/capybara/spec/session/active_element_spec.rb +31 -0
- data/capybara-3.40.0/lib/capybara/spec/session/all_spec.rb +274 -0
- data/capybara-3.40.0/lib/capybara/spec/session/ancestor_spec.rb +88 -0
- data/capybara-3.40.0/lib/capybara/spec/session/assert_all_of_selectors_spec.rb +140 -0
- data/capybara-3.40.0/lib/capybara/spec/session/assert_current_path_spec.rb +75 -0
- data/capybara-3.40.0/lib/capybara/spec/session/assert_selector_spec.rb +143 -0
- data/capybara-3.40.0/lib/capybara/spec/session/assert_style_spec.rb +26 -0
- data/capybara-3.40.0/lib/capybara/spec/session/assert_text_spec.rb +258 -0
- data/capybara-3.40.0/lib/capybara/spec/session/assert_title_spec.rb +93 -0
- data/capybara-3.40.0/lib/capybara/spec/session/attach_file_spec.rb +222 -0
- data/capybara-3.40.0/lib/capybara/spec/session/body_spec.rb +23 -0
- data/capybara-3.40.0/lib/capybara/spec/session/check_spec.rb +251 -0
- data/capybara-3.40.0/lib/capybara/spec/session/choose_spec.rb +127 -0
- data/capybara-3.40.0/lib/capybara/spec/session/click_button_spec.rb +517 -0
- data/capybara-3.40.0/lib/capybara/spec/session/click_link_or_button_spec.rb +138 -0
- data/capybara-3.40.0/lib/capybara/spec/session/click_link_spec.rb +240 -0
- data/capybara-3.40.0/lib/capybara/spec/session/current_scope_spec.rb +31 -0
- data/capybara-3.40.0/lib/capybara/spec/session/current_url_spec.rb +125 -0
- data/capybara-3.40.0/lib/capybara/spec/session/dismiss_confirm_spec.rb +36 -0
- data/capybara-3.40.0/lib/capybara/spec/session/dismiss_prompt_spec.rb +21 -0
- data/capybara-3.40.0/lib/capybara/spec/session/element/assert_match_selector_spec.rb +38 -0
- data/capybara-3.40.0/lib/capybara/spec/session/element/match_css_spec.rb +31 -0
- data/capybara-3.40.0/lib/capybara/spec/session/element/match_xpath_spec.rb +25 -0
- data/capybara-3.40.0/lib/capybara/spec/session/element/matches_selector_spec.rb +120 -0
- data/capybara-3.40.0/lib/capybara/spec/session/evaluate_async_script_spec.rb +23 -0
- data/capybara-3.40.0/lib/capybara/spec/session/evaluate_script_spec.rb +49 -0
- data/capybara-3.40.0/lib/capybara/spec/session/execute_script_spec.rb +28 -0
- data/capybara-3.40.0/lib/capybara/spec/session/fill_in_spec.rb +292 -0
- data/capybara-3.40.0/lib/capybara/spec/session/find_button_spec.rb +74 -0
- data/capybara-3.40.0/lib/capybara/spec/session/find_by_id_spec.rb +33 -0
- data/capybara-3.40.0/lib/capybara/spec/session/find_field_spec.rb +113 -0
- data/capybara-3.40.0/lib/capybara/spec/session/find_link_spec.rb +80 -0
- data/capybara-3.40.0/lib/capybara/spec/session/find_spec.rb +545 -0
- data/capybara-3.40.0/lib/capybara/spec/session/first_spec.rb +156 -0
- data/capybara-3.40.0/lib/capybara/spec/session/frame/frame_title_spec.rb +23 -0
- data/capybara-3.40.0/lib/capybara/spec/session/frame/frame_url_spec.rb +23 -0
- data/capybara-3.40.0/lib/capybara/spec/session/frame/switch_to_frame_spec.rb +116 -0
- data/capybara-3.40.0/lib/capybara/spec/session/frame/within_frame_spec.rb +114 -0
- data/capybara-3.40.0/lib/capybara/spec/session/go_back_spec.rb +12 -0
- data/capybara-3.40.0/lib/capybara/spec/session/go_forward_spec.rb +14 -0
- data/capybara-3.40.0/lib/capybara/spec/session/has_all_selectors_spec.rb +69 -0
- data/capybara-3.40.0/lib/capybara/spec/session/has_ancestor_spec.rb +46 -0
- data/capybara-3.40.0/lib/capybara/spec/session/has_any_selectors_spec.rb +29 -0
- data/capybara-3.40.0/lib/capybara/spec/session/has_button_spec.rb +150 -0
- data/capybara-3.40.0/lib/capybara/spec/session/has_css_spec.rb +375 -0
- data/capybara-3.40.0/lib/capybara/spec/session/has_current_path_spec.rb +151 -0
- data/capybara-3.40.0/lib/capybara/spec/session/has_element_spec.rb +47 -0
- data/capybara-3.40.0/lib/capybara/spec/session/has_field_spec.rb +389 -0
- data/capybara-3.40.0/lib/capybara/spec/session/has_link_spec.rb +79 -0
- data/capybara-3.40.0/lib/capybara/spec/session/has_none_selectors_spec.rb +78 -0
- data/capybara-3.40.0/lib/capybara/spec/session/has_select_spec.rb +316 -0
- data/capybara-3.40.0/lib/capybara/spec/session/has_selector_spec.rb +217 -0
- data/capybara-3.40.0/lib/capybara/spec/session/has_sibling_spec.rb +50 -0
- data/capybara-3.40.0/lib/capybara/spec/session/has_table_spec.rb +209 -0
- data/capybara-3.40.0/lib/capybara/spec/session/has_text_spec.rb +375 -0
- data/capybara-3.40.0/lib/capybara/spec/session/has_title_spec.rb +71 -0
- data/capybara-3.40.0/lib/capybara/spec/session/has_xpath_spec.rb +149 -0
- data/capybara-3.40.0/lib/capybara/spec/session/headers_spec.rb +8 -0
- data/capybara-3.40.0/lib/capybara/spec/session/html_spec.rb +47 -0
- data/capybara-3.40.0/lib/capybara/spec/session/matches_style_spec.rb +37 -0
- data/capybara-3.40.0/lib/capybara/spec/session/node_spec.rb +1399 -0
- data/capybara-3.40.0/lib/capybara/spec/session/node_wrapper_spec.rb +39 -0
- data/capybara-3.40.0/lib/capybara/spec/session/refresh_spec.rb +34 -0
- data/capybara-3.40.0/lib/capybara/spec/session/reset_session_spec.rb +161 -0
- data/capybara-3.40.0/lib/capybara/spec/session/response_code_spec.rb +8 -0
- data/capybara-3.40.0/lib/capybara/spec/session/save_and_open_page_spec.rb +21 -0
- data/capybara-3.40.0/lib/capybara/spec/session/save_and_open_screenshot_spec.rb +43 -0
- data/capybara-3.40.0/lib/capybara/spec/session/save_page_spec.rb +110 -0
- data/capybara-3.40.0/lib/capybara/spec/session/save_screenshot_spec.rb +55 -0
- data/capybara-3.40.0/lib/capybara/spec/session/screenshot_spec.rb +18 -0
- data/capybara-3.40.0/lib/capybara/spec/session/scroll_spec.rb +119 -0
- data/capybara-3.40.0/lib/capybara/spec/session/select_spec.rb +229 -0
- data/capybara-3.40.0/lib/capybara/spec/session/selectors_spec.rb +98 -0
- data/capybara-3.40.0/lib/capybara/spec/session/sibling_spec.rb +52 -0
- data/capybara-3.40.0/lib/capybara/spec/session/text_spec.rb +74 -0
- data/capybara-3.40.0/lib/capybara/spec/session/title_spec.rb +29 -0
- data/capybara-3.40.0/lib/capybara/spec/session/uncheck_spec.rb +100 -0
- data/capybara-3.40.0/lib/capybara/spec/session/unselect_spec.rb +116 -0
- data/capybara-3.40.0/lib/capybara/spec/session/visit_spec.rb +224 -0
- data/capybara-3.40.0/lib/capybara/spec/session/window/become_closed_spec.rb +89 -0
- data/capybara-3.40.0/lib/capybara/spec/session/window/current_window_spec.rb +28 -0
- data/capybara-3.40.0/lib/capybara/spec/session/window/open_new_window_spec.rb +31 -0
- data/capybara-3.40.0/lib/capybara/spec/session/window/switch_to_window_spec.rb +132 -0
- data/capybara-3.40.0/lib/capybara/spec/session/window/window_opened_by_spec.rb +99 -0
- data/capybara-3.40.0/lib/capybara/spec/session/window/window_spec.rb +203 -0
- data/capybara-3.40.0/lib/capybara/spec/session/window/windows_spec.rb +34 -0
- data/capybara-3.40.0/lib/capybara/spec/session/window/within_window_spec.rb +157 -0
- data/capybara-3.40.0/lib/capybara/spec/session/within_spec.rb +212 -0
- data/capybara-3.40.0/lib/capybara/spec/spec_helper.rb +141 -0
- data/capybara-3.40.0/lib/capybara/spec/test_app.rb +305 -0
- data/capybara-3.40.0/lib/capybara/spec/views/animated.erb +49 -0
- data/capybara-3.40.0/lib/capybara/spec/views/buttons.erb +5 -0
- data/capybara-3.40.0/lib/capybara/spec/views/fieldsets.erb +30 -0
- data/capybara-3.40.0/lib/capybara/spec/views/form.erb +738 -0
- data/capybara-3.40.0/lib/capybara/spec/views/frame_child.erb +18 -0
- data/capybara-3.40.0/lib/capybara/spec/views/frame_one.erb +10 -0
- data/capybara-3.40.0/lib/capybara/spec/views/frame_parent.erb +9 -0
- data/capybara-3.40.0/lib/capybara/spec/views/frame_two.erb +9 -0
- data/capybara-3.40.0/lib/capybara/spec/views/header_links.erb +8 -0
- data/capybara-3.40.0/lib/capybara/spec/views/host_links.erb +13 -0
- data/capybara-3.40.0/lib/capybara/spec/views/initial_alert.erb +11 -0
- data/capybara-3.40.0/lib/capybara/spec/views/layout.erb +10 -0
- data/capybara-3.40.0/lib/capybara/spec/views/obscured.erb +47 -0
- data/capybara-3.40.0/lib/capybara/spec/views/offset.erb +33 -0
- data/capybara-3.40.0/lib/capybara/spec/views/path.erb +13 -0
- data/capybara-3.40.0/lib/capybara/spec/views/popup_one.erb +9 -0
- data/capybara-3.40.0/lib/capybara/spec/views/popup_two.erb +9 -0
- data/capybara-3.40.0/lib/capybara/spec/views/postback.erb +14 -0
- data/capybara-3.40.0/lib/capybara/spec/views/react.erb +45 -0
- data/capybara-3.40.0/lib/capybara/spec/views/scroll.erb +21 -0
- data/capybara-3.40.0/lib/capybara/spec/views/spatial.erb +31 -0
- data/capybara-3.40.0/lib/capybara/spec/views/tables.erb +130 -0
- data/capybara-3.40.0/lib/capybara/spec/views/with_animation.erb +81 -0
- data/capybara-3.40.0/lib/capybara/spec/views/with_base_tag.erb +11 -0
- data/capybara-3.40.0/lib/capybara/spec/views/with_count.erb +8 -0
- data/capybara-3.40.0/lib/capybara/spec/views/with_dragula.erb +24 -0
- data/capybara-3.40.0/lib/capybara/spec/views/with_fixed_header_footer.erb +18 -0
- data/capybara-3.40.0/lib/capybara/spec/views/with_hover.erb +24 -0
- data/capybara-3.40.0/lib/capybara/spec/views/with_hover1.erb +10 -0
- data/capybara-3.40.0/lib/capybara/spec/views/with_html.erb +210 -0
- data/capybara-3.40.0/lib/capybara/spec/views/with_html5_svg.erb +20 -0
- data/capybara-3.40.0/lib/capybara/spec/views/with_html_entities.erb +2 -0
- data/capybara-3.40.0/lib/capybara/spec/views/with_jquery_animation.erb +24 -0
- data/capybara-3.40.0/lib/capybara/spec/views/with_js.erb +162 -0
- data/capybara-3.40.0/lib/capybara/spec/views/with_jstree.erb +26 -0
- data/capybara-3.40.0/lib/capybara/spec/views/with_namespace.erb +21 -0
- data/capybara-3.40.0/lib/capybara/spec/views/with_scope.erb +42 -0
- data/capybara-3.40.0/lib/capybara/spec/views/with_scope_other.erb +6 -0
- data/capybara-3.40.0/lib/capybara/spec/views/with_shadow.erb +31 -0
- data/capybara-3.40.0/lib/capybara/spec/views/with_simple_html.erb +2 -0
- data/capybara-3.40.0/lib/capybara/spec/views/with_slow_unload.erb +18 -0
- data/capybara-3.40.0/lib/capybara/spec/views/with_sortable_js.erb +21 -0
- data/capybara-3.40.0/lib/capybara/spec/views/with_unload_alert.erb +15 -0
- data/capybara-3.40.0/lib/capybara/spec/views/with_windows.erb +54 -0
- data/capybara-3.40.0/lib/capybara/spec/views/within_frames.erb +15 -0
- data/capybara-3.40.0/lib/capybara/version.rb +5 -0
- data/capybara-3.40.0/lib/capybara/window.rb +142 -0
- data/capybara-3.40.0/lib/capybara.rb +521 -0
- data/capybara-3.40.0/spec/basic_node_spec.rb +168 -0
- data/capybara-3.40.0/spec/capybara_spec.rb +124 -0
- data/capybara-3.40.0/spec/counter_spec.rb +35 -0
- data/capybara-3.40.0/spec/css_builder_spec.rb +101 -0
- data/capybara-3.40.0/spec/css_splitter_spec.rb +38 -0
- data/capybara-3.40.0/spec/dsl_spec.rb +291 -0
- data/capybara-3.40.0/spec/filter_set_spec.rb +46 -0
- data/capybara-3.40.0/spec/fixtures/capybara.csv +1 -0
- data/capybara-3.40.0/spec/fixtures/certificate.pem +25 -0
- data/capybara-3.40.0/spec/fixtures/key.pem +27 -0
- data/capybara-3.40.0/spec/fixtures/selenium_driver_rspec_failure.rb +13 -0
- data/capybara-3.40.0/spec/fixtures/selenium_driver_rspec_success.rb +13 -0
- data/capybara-3.40.0/spec/minitest_spec.rb +175 -0
- data/capybara-3.40.0/spec/minitest_spec_spec.rb +166 -0
- data/capybara-3.40.0/spec/per_session_config_spec.rb +68 -0
- data/capybara-3.40.0/spec/rack_test_spec.rb +297 -0
- data/capybara-3.40.0/spec/regexp_dissassembler_spec.rb +250 -0
- data/capybara-3.40.0/spec/result_spec.rb +202 -0
- data/capybara-3.40.0/spec/rspec/features_spec.rb +101 -0
- data/capybara-3.40.0/spec/rspec/scenarios_spec.rb +23 -0
- data/capybara-3.40.0/spec/rspec/shared_spec_matchers.rb +983 -0
- data/capybara-3.40.0/spec/rspec/views_spec.rb +14 -0
- data/capybara-3.40.0/spec/rspec_matchers_spec.rb +87 -0
- data/capybara-3.40.0/spec/rspec_spec.rb +149 -0
- data/capybara-3.40.0/spec/sauce_spec_chrome.rb +43 -0
- data/capybara-3.40.0/spec/selector_spec.rb +528 -0
- data/capybara-3.40.0/spec/selenium_spec_chrome.rb +209 -0
- data/capybara-3.40.0/spec/selenium_spec_chrome_remote.rb +96 -0
- data/capybara-3.40.0/spec/selenium_spec_edge.rb +60 -0
- data/capybara-3.40.0/spec/selenium_spec_firefox.rb +228 -0
- data/capybara-3.40.0/spec/selenium_spec_firefox_remote.rb +94 -0
- data/capybara-3.40.0/spec/selenium_spec_ie.rb +149 -0
- data/capybara-3.40.0/spec/selenium_spec_safari.rb +162 -0
- data/capybara-3.40.0/spec/server_spec.rb +315 -0
- data/capybara-3.40.0/spec/session_spec.rb +91 -0
- data/capybara-3.40.0/spec/shared_selenium_node.rb +79 -0
- data/capybara-3.40.0/spec/shared_selenium_session.rb +566 -0
- data/capybara-3.40.0/spec/spec_helper.rb +133 -0
- data/capybara-3.40.0/spec/whitespace_normalizer_spec.rb +54 -0
- data/capybara-3.40.0/spec/xpath_builder_spec.rb +93 -0
- data/mega-max-rb.gemspec +12 -0
- metadata +358 -0
|
@@ -0,0 +1,517 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
Capybara::SpecHelper.spec '#click_button' do
|
|
4
|
+
before do
|
|
5
|
+
@session.visit('/form')
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
it 'should wait for asynchronous load', requires: [:js] do
|
|
9
|
+
@session.visit('/with_js')
|
|
10
|
+
@session.using_wait_time(1.5) do
|
|
11
|
+
@session.click_link('Click me')
|
|
12
|
+
@session.click_button('New Here')
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it 'casts to string' do
|
|
17
|
+
@session.click_button(:'Relative Action')
|
|
18
|
+
expect(extract_results(@session)['relative']).to eq('Relative Action')
|
|
19
|
+
expect(@session.current_path).to eq('/relative')
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
context 'with multiple values with the same name' do
|
|
23
|
+
it 'should use the latest given value' do
|
|
24
|
+
@session.check('Terms of Use')
|
|
25
|
+
@session.click_button('awesome')
|
|
26
|
+
expect(extract_results(@session)['terms_of_use']).to eq('1')
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
context 'with a form that has a relative url as an action' do
|
|
31
|
+
it 'should post to the correct url' do
|
|
32
|
+
@session.click_button('Relative Action')
|
|
33
|
+
expect(extract_results(@session)['relative']).to eq('Relative Action')
|
|
34
|
+
expect(@session.current_path).to eq('/relative')
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
context 'with a form that has no action specified' do
|
|
39
|
+
it 'should post to the correct url' do
|
|
40
|
+
@session.click_button('No Action')
|
|
41
|
+
expect(extract_results(@session)['no_action']).to eq('No Action')
|
|
42
|
+
expect(@session.current_path).to eq('/form')
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
context 'with value given on a submit button' do
|
|
47
|
+
context 'on a form with HTML5 fields' do
|
|
48
|
+
let(:results) { extract_results(@session) }
|
|
49
|
+
|
|
50
|
+
before do
|
|
51
|
+
@session.click_button('html5_submit')
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
it 'should serialise and submit search fields' do
|
|
55
|
+
expect(results['html5_search']).to eq('what are you looking for')
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
it 'should serialise and submit email fields' do
|
|
59
|
+
expect(results['html5_email']).to eq('person@email.com')
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
it 'should serialise and submit url fields' do
|
|
63
|
+
expect(results['html5_url']).to eq('http://www.example.com')
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
it 'should serialise and submit tel fields' do
|
|
67
|
+
expect(results['html5_tel']).to eq('911')
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
it 'should serialise and submit color fields' do
|
|
71
|
+
expect(results['html5_color'].upcase).to eq('#FFFFFF')
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
context 'on an HTML4 form' do
|
|
76
|
+
let(:results) { extract_results(@session) }
|
|
77
|
+
|
|
78
|
+
before do
|
|
79
|
+
@session.click_button('awesome')
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
it 'should serialize and submit text fields' do
|
|
83
|
+
expect(results['first_name']).to eq('John')
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
it 'should escape fields when submitting' do
|
|
87
|
+
expect(results['phone']).to eq('+1 555 7021')
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
it 'should serialize and submit password fields' do
|
|
91
|
+
expect(results['password']).to eq('seeekrit')
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
it 'should serialize and submit hidden fields' do
|
|
95
|
+
expect(results['token']).to eq('12345')
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
it 'should not serialize fields from other forms' do
|
|
99
|
+
expect(results['middle_name']).to be_nil
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
it 'should submit the button that was clicked, but not other buttons' do
|
|
103
|
+
expect(results['awesome']).to eq('awesome')
|
|
104
|
+
expect(results['crappy']).to be_nil
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
it 'should serialize radio buttons' do
|
|
108
|
+
expect(results['gender']).to eq('female')
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
it "should default radio value to 'on' if none specified" do
|
|
112
|
+
expect(results['valueless_radio']).to eq('on')
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
it 'should serialize check boxes' do
|
|
116
|
+
expect(results['pets']).to include('dog', 'hamster')
|
|
117
|
+
expect(results['pets']).not_to include('cat')
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
it "should default checkbox value to 'on' if none specififed" do
|
|
121
|
+
expect(results['valueless_checkbox']).to eq('on')
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
it 'should serialize text areas' do
|
|
125
|
+
expect(results['description']).to eq('Descriptive text goes here')
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
it 'should serialize select tag with values' do
|
|
129
|
+
expect(results['locale']).to eq('en')
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
it 'should serialize select tag without values' do
|
|
133
|
+
expect(results['region']).to eq('Norway')
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
it 'should serialize first option for select tag with no selection' do
|
|
137
|
+
expect(results['city']).to eq('London')
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
it 'should not serialize a select tag without options' do
|
|
141
|
+
expect(results['tendency']).to be_nil
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
it 'should convert lf to cr/lf in submitted textareas' do
|
|
145
|
+
expect(results['newline']).to eq("\r\nNew line after and before textarea tag\r\n")
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
it 'should not submit disabled fields' do
|
|
149
|
+
expect(results['disabled_text_field']).to be_nil
|
|
150
|
+
expect(results['disabled_textarea']).to be_nil
|
|
151
|
+
expect(results['disabled_checkbox']).to be_nil
|
|
152
|
+
expect(results['disabled_radio']).to be_nil
|
|
153
|
+
expect(results['disabled_select']).to be_nil
|
|
154
|
+
expect(results['disabled_file']).to be_nil
|
|
155
|
+
end
|
|
156
|
+
end
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
context 'input type=submit button' do
|
|
160
|
+
it 'should submit by button id' do
|
|
161
|
+
@session.click_button('awe123')
|
|
162
|
+
expect(extract_results(@session)['first_name']).to eq('John')
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
it 'should submit by specific button id' do
|
|
166
|
+
@session.click_button(id: 'awe123')
|
|
167
|
+
expect(extract_results(@session)['first_name']).to eq('John')
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
it 'should submit by button title' do
|
|
171
|
+
@session.click_button('What an Awesome Button')
|
|
172
|
+
expect(extract_results(@session)['first_name']).to eq('John')
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
it 'should submit by partial title', :exact_false do
|
|
176
|
+
@session.click_button('What an Awesome')
|
|
177
|
+
expect(extract_results(@session)['first_name']).to eq('John')
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
it 'should submit by button name' do
|
|
181
|
+
@session.click_button('form[awesome]')
|
|
182
|
+
expect(extract_results(@session)['first_name']).to eq('John')
|
|
183
|
+
end
|
|
184
|
+
|
|
185
|
+
it 'should submit by specific button name' do
|
|
186
|
+
@session.click_button(name: 'form[awesome]')
|
|
187
|
+
expect(extract_results(@session)['first_name']).to eq('John')
|
|
188
|
+
end
|
|
189
|
+
|
|
190
|
+
it 'should submit by specific button name regex' do
|
|
191
|
+
@session.click_button(name: /form\[awes.*\]/)
|
|
192
|
+
expect(extract_results(@session)['first_name']).to eq('John')
|
|
193
|
+
end
|
|
194
|
+
end
|
|
195
|
+
|
|
196
|
+
context 'when Capybara.enable_aria_role = true' do
|
|
197
|
+
it 'should click on a button role', requires: [:js] do
|
|
198
|
+
Capybara.enable_aria_role = true
|
|
199
|
+
@session.using_wait_time(1.5) do
|
|
200
|
+
@session.visit('/with_js')
|
|
201
|
+
@session.click_button('ARIA button')
|
|
202
|
+
expect(@session).to have_button('ARIA button has been clicked')
|
|
203
|
+
end
|
|
204
|
+
end
|
|
205
|
+
end
|
|
206
|
+
|
|
207
|
+
context 'with fields associated with the form using the form attribute', requires: [:form_attribute] do
|
|
208
|
+
let(:results) { extract_results(@session) }
|
|
209
|
+
|
|
210
|
+
before do
|
|
211
|
+
@session.click_button('submit_form1')
|
|
212
|
+
end
|
|
213
|
+
|
|
214
|
+
it 'should serialize and submit text fields' do
|
|
215
|
+
expect(results['outside_input']).to eq('outside_input')
|
|
216
|
+
end
|
|
217
|
+
|
|
218
|
+
it 'should serialize text areas' do
|
|
219
|
+
expect(results['outside_textarea']).to eq('Some text here')
|
|
220
|
+
end
|
|
221
|
+
|
|
222
|
+
it 'should serialize select tags' do
|
|
223
|
+
expect(results['outside_select']).to eq('Ruby')
|
|
224
|
+
end
|
|
225
|
+
|
|
226
|
+
it 'should not serliaze fields associated with a different form' do
|
|
227
|
+
expect(results['for_form2']).to be_nil
|
|
228
|
+
end
|
|
229
|
+
end
|
|
230
|
+
|
|
231
|
+
context 'with submit button outside the form defined by <button> tag', requires: [:form_attribute] do
|
|
232
|
+
let(:results) { extract_results(@session) }
|
|
233
|
+
|
|
234
|
+
before do
|
|
235
|
+
@session.click_button('outside_button')
|
|
236
|
+
end
|
|
237
|
+
|
|
238
|
+
it 'should submit the associated form' do
|
|
239
|
+
expect(results['which_form']).to eq('form2')
|
|
240
|
+
end
|
|
241
|
+
|
|
242
|
+
it 'should submit the button that was clicked, but not other buttons' do
|
|
243
|
+
expect(results['outside_button']).to eq('outside_button')
|
|
244
|
+
expect(results['unused']).to be_nil
|
|
245
|
+
end
|
|
246
|
+
end
|
|
247
|
+
|
|
248
|
+
context "with submit button outside the form defined by <input type='submit'> tag", requires: [:form_attribute] do
|
|
249
|
+
let(:results) { extract_results(@session) }
|
|
250
|
+
|
|
251
|
+
before do
|
|
252
|
+
@session.click_button('outside_submit')
|
|
253
|
+
end
|
|
254
|
+
|
|
255
|
+
it 'should submit the associated form' do
|
|
256
|
+
expect(results['which_form']).to eq('form1')
|
|
257
|
+
end
|
|
258
|
+
|
|
259
|
+
it 'should submit the button that was clicked, but not other buttons' do
|
|
260
|
+
expect(results['outside_submit']).to eq('outside_submit')
|
|
261
|
+
expect(results['submit_form1']).to be_nil
|
|
262
|
+
end
|
|
263
|
+
end
|
|
264
|
+
|
|
265
|
+
context 'with submit button for form1 located within form2', requires: [:form_attribute] do
|
|
266
|
+
it 'should submit the form associated with the button' do
|
|
267
|
+
@session.click_button('other_form_button')
|
|
268
|
+
expect(extract_results(@session)['which_form']).to eq('form1')
|
|
269
|
+
end
|
|
270
|
+
end
|
|
271
|
+
|
|
272
|
+
context 'with submit button not associated with any form' do
|
|
273
|
+
it 'should not error when clicked' do
|
|
274
|
+
expect { @session.click_button('no_form_button') }.not_to raise_error
|
|
275
|
+
end
|
|
276
|
+
end
|
|
277
|
+
|
|
278
|
+
context 'with alt given on an image button' do
|
|
279
|
+
it 'should submit the associated form' do
|
|
280
|
+
@session.click_button('oh hai thar')
|
|
281
|
+
expect(extract_results(@session)['first_name']).to eq('John')
|
|
282
|
+
end
|
|
283
|
+
|
|
284
|
+
it 'should work with partial matches', :exact_false do
|
|
285
|
+
@session.click_button('hai')
|
|
286
|
+
expect(extract_results(@session)['first_name']).to eq('John')
|
|
287
|
+
end
|
|
288
|
+
end
|
|
289
|
+
|
|
290
|
+
context 'with value given on an image button' do
|
|
291
|
+
it 'should submit the associated form' do
|
|
292
|
+
@session.click_button('okay')
|
|
293
|
+
expect(extract_results(@session)['first_name']).to eq('John')
|
|
294
|
+
end
|
|
295
|
+
|
|
296
|
+
it 'should work with partial matches', :exact_false do
|
|
297
|
+
@session.click_button('kay')
|
|
298
|
+
expect(extract_results(@session)['first_name']).to eq('John')
|
|
299
|
+
end
|
|
300
|
+
end
|
|
301
|
+
|
|
302
|
+
context 'with id given on an image button' do
|
|
303
|
+
it 'should submit the associated form' do
|
|
304
|
+
@session.click_button('okay556')
|
|
305
|
+
expect(extract_results(@session)['first_name']).to eq('John')
|
|
306
|
+
end
|
|
307
|
+
end
|
|
308
|
+
|
|
309
|
+
context 'with title given on an image button' do
|
|
310
|
+
it 'should submit the associated form' do
|
|
311
|
+
@session.click_button('Okay 556 Image')
|
|
312
|
+
expect(extract_results(@session)['first_name']).to eq('John')
|
|
313
|
+
end
|
|
314
|
+
|
|
315
|
+
it 'should work with partial matches', :exact_false do
|
|
316
|
+
@session.click_button('Okay 556')
|
|
317
|
+
expect(extract_results(@session)['first_name']).to eq('John')
|
|
318
|
+
end
|
|
319
|
+
end
|
|
320
|
+
|
|
321
|
+
context 'with text given on a button defined by <button> tag' do
|
|
322
|
+
it 'should submit the associated form' do
|
|
323
|
+
@session.click_button('Click me!')
|
|
324
|
+
expect(extract_results(@session)['first_name']).to eq('John')
|
|
325
|
+
end
|
|
326
|
+
|
|
327
|
+
it 'should work with partial matches', :exact_false do
|
|
328
|
+
@session.click_button('Click')
|
|
329
|
+
expect(extract_results(@session)['first_name']).to eq('John')
|
|
330
|
+
end
|
|
331
|
+
end
|
|
332
|
+
|
|
333
|
+
context 'with id given on a button defined by <button> tag' do
|
|
334
|
+
it 'should submit the associated form' do
|
|
335
|
+
@session.click_button('click_me_123')
|
|
336
|
+
expect(extract_results(@session)['first_name']).to eq('John')
|
|
337
|
+
end
|
|
338
|
+
|
|
339
|
+
it 'should serialize and send GET forms' do
|
|
340
|
+
@session.visit('/form')
|
|
341
|
+
@session.click_button('med')
|
|
342
|
+
results = extract_results(@session)
|
|
343
|
+
expect(results['middle_name']).to eq('Darren')
|
|
344
|
+
expect(results['foo']).to be_nil
|
|
345
|
+
end
|
|
346
|
+
end
|
|
347
|
+
|
|
348
|
+
context 'with name given on a button defined by <button> tag' do
|
|
349
|
+
it 'should submit the associated form when name is locator' do
|
|
350
|
+
@session.click_button('form[no_value]')
|
|
351
|
+
expect(extract_results(@session)['first_name']).to eq('John')
|
|
352
|
+
end
|
|
353
|
+
|
|
354
|
+
it 'should submit the associated form when name is specific' do
|
|
355
|
+
@session.click_button(name: 'form[no_value]')
|
|
356
|
+
expect(extract_results(@session)['first_name']).to eq('John')
|
|
357
|
+
end
|
|
358
|
+
end
|
|
359
|
+
|
|
360
|
+
context 'with value given on a button defined by <button> tag' do
|
|
361
|
+
it 'should submit the associated form' do
|
|
362
|
+
@session.click_button('click_me')
|
|
363
|
+
expect(extract_results(@session)['first_name']).to eq('John')
|
|
364
|
+
end
|
|
365
|
+
|
|
366
|
+
it 'should work with partial matches', :exact_false do
|
|
367
|
+
@session.click_button('ck_me')
|
|
368
|
+
expect(extract_results(@session)['first_name']).to eq('John')
|
|
369
|
+
end
|
|
370
|
+
end
|
|
371
|
+
|
|
372
|
+
context 'with title given on a button defined by <button> tag' do
|
|
373
|
+
it 'should submit the associated form' do
|
|
374
|
+
@session.click_button('Click Title button')
|
|
375
|
+
expect(extract_results(@session)['first_name']).to eq('John')
|
|
376
|
+
end
|
|
377
|
+
|
|
378
|
+
it 'should work with partial matches', :exact_false do
|
|
379
|
+
@session.click_button('Click Title')
|
|
380
|
+
expect(extract_results(@session)['first_name']).to eq('John')
|
|
381
|
+
end
|
|
382
|
+
end
|
|
383
|
+
|
|
384
|
+
context 'with descendant image alt given on a button defined by <button> tag' do
|
|
385
|
+
it 'should submit the associated form' do
|
|
386
|
+
@session.click_button('A horse eating hay')
|
|
387
|
+
expect(extract_results(@session)['first_name']).to eq('John')
|
|
388
|
+
end
|
|
389
|
+
|
|
390
|
+
it 'should work with partial matches', :exact_false do
|
|
391
|
+
@session.click_button('se eating h')
|
|
392
|
+
expect(extract_results(@session)['first_name']).to eq('John')
|
|
393
|
+
end
|
|
394
|
+
end
|
|
395
|
+
|
|
396
|
+
context "with a locator that doesn't exist" do
|
|
397
|
+
it 'should raise an error' do
|
|
398
|
+
msg = /Unable to find button "does not exist"/
|
|
399
|
+
expect do
|
|
400
|
+
@session.click_button('does not exist')
|
|
401
|
+
end.to raise_error(Capybara::ElementNotFound, msg)
|
|
402
|
+
end
|
|
403
|
+
end
|
|
404
|
+
|
|
405
|
+
context 'with formaction attribute on button' do
|
|
406
|
+
it 'should submit to the formaction attribute' do
|
|
407
|
+
@session.click_button('Formaction button')
|
|
408
|
+
results = extract_results(@session)
|
|
409
|
+
expect(@session.current_path).to eq '/form'
|
|
410
|
+
expect(results['which_form']).to eq 'formaction form'
|
|
411
|
+
end
|
|
412
|
+
end
|
|
413
|
+
|
|
414
|
+
context 'with formmethod attribute on button' do
|
|
415
|
+
it 'should submit to the formethod attribute' do
|
|
416
|
+
@session.click_button('Formmethod button')
|
|
417
|
+
results = extract_results(@session)
|
|
418
|
+
expect(@session.current_path).to eq '/form/get'
|
|
419
|
+
expect(results['which_form']).to eq 'formaction form'
|
|
420
|
+
end
|
|
421
|
+
end
|
|
422
|
+
|
|
423
|
+
it 'should serialize and send valueless buttons that were clicked' do
|
|
424
|
+
@session.click_button('No Value!')
|
|
425
|
+
results = extract_results(@session)
|
|
426
|
+
expect(results['no_value']).not_to be_nil
|
|
427
|
+
end
|
|
428
|
+
|
|
429
|
+
it 'should send button in document order' do
|
|
430
|
+
@session.click_button('outside_button')
|
|
431
|
+
results = extract_results(@session)
|
|
432
|
+
expect(results.keys).to eq %w[for_form2 outside_button which_form post_count]
|
|
433
|
+
end
|
|
434
|
+
|
|
435
|
+
it 'should not send image buttons that were not clicked' do
|
|
436
|
+
@session.click_button('Click me!')
|
|
437
|
+
results = extract_results(@session)
|
|
438
|
+
expect(results['okay']).to be_nil
|
|
439
|
+
end
|
|
440
|
+
|
|
441
|
+
it 'should serialize and send GET forms' do
|
|
442
|
+
@session.visit('/form')
|
|
443
|
+
@session.click_button('med')
|
|
444
|
+
results = extract_results(@session)
|
|
445
|
+
expect(results['middle_name']).to eq('Darren')
|
|
446
|
+
expect(results['foo']).to be_nil
|
|
447
|
+
end
|
|
448
|
+
|
|
449
|
+
it 'should follow redirects' do
|
|
450
|
+
@session.click_button('Go FAR')
|
|
451
|
+
expect(@session).to have_content('You landed')
|
|
452
|
+
expect(@session.current_url).to match(%r{/landed$})
|
|
453
|
+
end
|
|
454
|
+
|
|
455
|
+
it 'should follow temporary redirects that maintain method' do
|
|
456
|
+
@session.click_button('Go 307')
|
|
457
|
+
expect(@session).to have_content('You post landed: TWTW')
|
|
458
|
+
end
|
|
459
|
+
|
|
460
|
+
it 'should follow permanent redirects that maintain method' do
|
|
461
|
+
@session.click_button('Go 308')
|
|
462
|
+
expect(@session).to have_content('You post landed: TWTW')
|
|
463
|
+
end
|
|
464
|
+
|
|
465
|
+
it 'should post pack to the same URL when no action given' do
|
|
466
|
+
@session.visit('/postback')
|
|
467
|
+
@session.click_button('With no action')
|
|
468
|
+
expect(@session).to have_content('Postback')
|
|
469
|
+
end
|
|
470
|
+
|
|
471
|
+
it 'should post pack to the same URL when blank action given' do
|
|
472
|
+
@session.visit('/postback')
|
|
473
|
+
@session.click_button('With blank action')
|
|
474
|
+
expect(@session).to have_content('Postback')
|
|
475
|
+
end
|
|
476
|
+
|
|
477
|
+
it 'ignores disabled buttons' do
|
|
478
|
+
expect do
|
|
479
|
+
@session.click_button('Disabled button')
|
|
480
|
+
end.to raise_error(Capybara::ElementNotFound)
|
|
481
|
+
end
|
|
482
|
+
|
|
483
|
+
it 'should encode complex field names, like array[][value]' do
|
|
484
|
+
@session.visit('/form')
|
|
485
|
+
@session.fill_in('address1_city', with: 'Paris')
|
|
486
|
+
@session.fill_in('address1_street', with: 'CDG')
|
|
487
|
+
|
|
488
|
+
@session.fill_in('address2_city', with: 'Mikolaiv')
|
|
489
|
+
@session.fill_in('address2_street', with: 'PGS')
|
|
490
|
+
|
|
491
|
+
@session.click_button 'awesome'
|
|
492
|
+
|
|
493
|
+
addresses = extract_results(@session)['addresses']
|
|
494
|
+
expect(addresses.size).to eq(2)
|
|
495
|
+
|
|
496
|
+
expect(addresses[0]['street']).to eq('CDG')
|
|
497
|
+
expect(addresses[0]['city']).to eq('Paris')
|
|
498
|
+
expect(addresses[0]['country']).to eq('France')
|
|
499
|
+
|
|
500
|
+
expect(addresses[1]['street']).to eq('PGS')
|
|
501
|
+
expect(addresses[1]['city']).to eq('Mikolaiv')
|
|
502
|
+
expect(addresses[1]['country']).to eq('Ukraine')
|
|
503
|
+
end
|
|
504
|
+
|
|
505
|
+
context 'with :exact option' do
|
|
506
|
+
it 'should accept partial matches when false' do
|
|
507
|
+
@session.click_button('What an Awesome', exact: false)
|
|
508
|
+
expect(extract_results(@session)['first_name']).to eq('John')
|
|
509
|
+
end
|
|
510
|
+
|
|
511
|
+
it 'should not accept partial matches when true' do
|
|
512
|
+
expect do
|
|
513
|
+
@session.click_button('What an Awesome', exact: true)
|
|
514
|
+
end.to raise_error(Capybara::ElementNotFound)
|
|
515
|
+
end
|
|
516
|
+
end
|
|
517
|
+
end
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
Capybara::SpecHelper.spec '#click_link_or_button' do
|
|
4
|
+
it 'should click on a link' do
|
|
5
|
+
@session.visit('/with_html')
|
|
6
|
+
@session.click_link_or_button('labore')
|
|
7
|
+
expect(@session).to have_content('Bar')
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it 'should click on a button' do
|
|
11
|
+
@session.visit('/form')
|
|
12
|
+
@session.click_link_or_button('awe123')
|
|
13
|
+
expect(extract_results(@session)['first_name']).to eq('John')
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it 'should click on a button with no type attribute' do
|
|
17
|
+
@session.visit('/form')
|
|
18
|
+
@session.click_link_or_button('no_type')
|
|
19
|
+
expect(extract_results(@session)['first_name']).to eq('John')
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
it 'should be aliased as click_on' do
|
|
23
|
+
@session.visit('/form')
|
|
24
|
+
@session.click_on('awe123')
|
|
25
|
+
expect(extract_results(@session)['first_name']).to eq('John')
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it 'should wait for asynchronous load', requires: [:js] do
|
|
29
|
+
Capybara.default_max_wait_time = 2
|
|
30
|
+
@session.visit('/with_js')
|
|
31
|
+
@session.click_link('Click me')
|
|
32
|
+
@session.click_link_or_button('Has been clicked')
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it 'casts to string' do
|
|
36
|
+
@session.visit('/form')
|
|
37
|
+
@session.click_link_or_button(:awe123)
|
|
38
|
+
expect(extract_results(@session)['first_name']).to eq('John')
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
context 'with test_id' do
|
|
42
|
+
it 'should click on a button' do
|
|
43
|
+
Capybara.test_id = 'data-test-id'
|
|
44
|
+
@session.visit('/form')
|
|
45
|
+
@session.click_link_or_button('test_id_button')
|
|
46
|
+
expect(extract_results(@session)['first_name']).to eq('John')
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
context 'with :exact option' do
|
|
51
|
+
context 'when `false`' do
|
|
52
|
+
it 'clicks on approximately matching link' do
|
|
53
|
+
@session.visit('/with_html')
|
|
54
|
+
@session.click_link_or_button('abore', exact: false)
|
|
55
|
+
expect(@session).to have_content('Bar')
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
it 'clicks on approximately matching button' do
|
|
59
|
+
@session.visit('/form')
|
|
60
|
+
@session.click_link_or_button('awe', exact: false)
|
|
61
|
+
expect(extract_results(@session)['first_name']).to eq('John')
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
context 'when `true`' do
|
|
66
|
+
it 'does not click on link which matches approximately' do
|
|
67
|
+
@session.visit('/with_html')
|
|
68
|
+
msg = 'Unable to find link or button "abore"'
|
|
69
|
+
expect do
|
|
70
|
+
@session.click_link_or_button('abore', exact: true)
|
|
71
|
+
end.to raise_error(Capybara::ElementNotFound, msg)
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
it 'does not click on approximately matching button' do
|
|
75
|
+
@session.visit('/form')
|
|
76
|
+
msg = 'Unable to find link or button "awe"'
|
|
77
|
+
|
|
78
|
+
expect do
|
|
79
|
+
@session.click_link_or_button('awe', exact: true)
|
|
80
|
+
end.to raise_error(Capybara::ElementNotFound, msg)
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
context "with a locator that doesn't exist" do
|
|
86
|
+
it 'should raise an error' do
|
|
87
|
+
@session.visit('/with_html')
|
|
88
|
+
msg = 'Unable to find link or button "does not exist"'
|
|
89
|
+
expect do
|
|
90
|
+
@session.click_link_or_button('does not exist')
|
|
91
|
+
end.to raise_error(Capybara::ElementNotFound, msg)
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
context 'with :disabled option' do
|
|
96
|
+
it 'ignores disabled buttons when false' do
|
|
97
|
+
@session.visit('/form')
|
|
98
|
+
expect do
|
|
99
|
+
@session.click_link_or_button('Disabled button', disabled: false)
|
|
100
|
+
end.to raise_error(Capybara::ElementNotFound)
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
it 'ignores disabled buttons by default' do
|
|
104
|
+
@session.visit('/form')
|
|
105
|
+
expect do
|
|
106
|
+
@session.click_link_or_button('Disabled button')
|
|
107
|
+
end.to raise_error(Capybara::ElementNotFound)
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
it 'happily clicks on links which incorrectly have the disabled attribute' do
|
|
111
|
+
@session.visit('/with_html')
|
|
112
|
+
@session.click_link_or_button('Disabled link')
|
|
113
|
+
expect(@session).to have_content('Bar')
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
it 'should return the element clicked' do
|
|
118
|
+
@session.visit('/with_html')
|
|
119
|
+
link = @session.find(:link, 'Blank Anchor')
|
|
120
|
+
expect(@session.click_link_or_button('Blank Anchor')).to eq link
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
context 'with enable_aria_label' do
|
|
124
|
+
it 'should click on link' do
|
|
125
|
+
@session.visit('/with_html')
|
|
126
|
+
expect do
|
|
127
|
+
@session.click_link_or_button('Go to simple', enable_aria_label: true)
|
|
128
|
+
end.not_to raise_error
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
it 'should click on button' do
|
|
132
|
+
@session.visit('/form')
|
|
133
|
+
expect do
|
|
134
|
+
@session.click_link_or_button('Aria button', enable_aria_label: true)
|
|
135
|
+
end.not_to raise_error
|
|
136
|
+
end
|
|
137
|
+
end
|
|
138
|
+
end
|