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,99 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# NOTE: This file uses `sleep` to sync up parts of the tests. This is only implemented like this
|
|
4
|
+
# because of the methods being tested. In tests using Capybara this type of behavior should be implemented
|
|
5
|
+
# using Capybara provided assertions with builtin waiting behavior.
|
|
6
|
+
|
|
7
|
+
Capybara::SpecHelper.spec '#window_opened_by', requires: [:windows] do
|
|
8
|
+
before do
|
|
9
|
+
@window = @session.current_window
|
|
10
|
+
@session.visit('/with_windows')
|
|
11
|
+
@session.assert_selector(:css, 'body.loaded')
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
after do
|
|
15
|
+
(@session.windows - [@window]).each do |w|
|
|
16
|
+
@session.switch_to_window w
|
|
17
|
+
w.close
|
|
18
|
+
end
|
|
19
|
+
@session.switch_to_window(@window)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
let(:zero_windows_message) { 'block passed to #window_opened_by opened 0 windows instead of 1' }
|
|
23
|
+
let(:two_windows_message) { 'block passed to #window_opened_by opened 2 windows instead of 1' }
|
|
24
|
+
|
|
25
|
+
context 'with :wait option' do
|
|
26
|
+
it 'should raise error if value of :wait is less than timeout' do
|
|
27
|
+
# So large value is used as `driver.window_handles` takes up to 800 ms on Travis
|
|
28
|
+
Capybara.using_wait_time 2 do
|
|
29
|
+
button = @session.find(:css, '#openWindowWithLongerTimeout')
|
|
30
|
+
expect do
|
|
31
|
+
@session.window_opened_by(wait: 0.3) do
|
|
32
|
+
button.click
|
|
33
|
+
end
|
|
34
|
+
end.to raise_error(Capybara::WindowError, zero_windows_message)
|
|
35
|
+
end
|
|
36
|
+
@session.document.synchronize(5, errors: [Capybara::CapybaraError]) do
|
|
37
|
+
raise Capybara::CapybaraError if @session.windows.size != 2
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
it 'should find window if value of :wait is more than timeout' do
|
|
42
|
+
button = @session.find(:css, '#openWindowWithTimeout')
|
|
43
|
+
Capybara.using_wait_time 0.1 do
|
|
44
|
+
window = @session.window_opened_by(wait: 1.5) do
|
|
45
|
+
button.click
|
|
46
|
+
end
|
|
47
|
+
expect(window).to be_instance_of(Capybara::Window)
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
context 'without :wait option' do
|
|
53
|
+
it 'should raise error if default_max_wait_time is less than timeout' do
|
|
54
|
+
button = @session.find(:css, '#openWindowWithTimeout')
|
|
55
|
+
Capybara.using_wait_time 0.1 do
|
|
56
|
+
expect do
|
|
57
|
+
@session.window_opened_by do
|
|
58
|
+
button.click
|
|
59
|
+
end
|
|
60
|
+
end.to raise_error(Capybara::WindowError, zero_windows_message)
|
|
61
|
+
end
|
|
62
|
+
@session.document.synchronize(2, errors: [Capybara::CapybaraError]) do
|
|
63
|
+
raise Capybara::CapybaraError if @session.windows.size != 2
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
it 'should find window if default_max_wait_time is more than timeout' do
|
|
68
|
+
button = @session.find(:css, '#openWindowWithTimeout')
|
|
69
|
+
Capybara.using_wait_time 5 do
|
|
70
|
+
window = @session.window_opened_by do
|
|
71
|
+
button.click
|
|
72
|
+
end
|
|
73
|
+
expect(window).to be_instance_of(Capybara::Window)
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
it 'should raise error when two windows have been opened by block' do
|
|
79
|
+
button = @session.find(:css, '#openTwoWindows')
|
|
80
|
+
expect do
|
|
81
|
+
@session.window_opened_by do
|
|
82
|
+
button.click
|
|
83
|
+
sleep 1 # It's possible for window_opened_by to be fullfilled before the second window opens
|
|
84
|
+
end
|
|
85
|
+
end.to raise_error(Capybara::WindowError, two_windows_message)
|
|
86
|
+
@session.document.synchronize(2, errors: [Capybara::CapybaraError]) do
|
|
87
|
+
raise Capybara::CapybaraError if @session.windows.size != 3
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
it 'should raise error when no windows were opened by block' do
|
|
92
|
+
button = @session.find(:css, '#doesNotOpenWindows')
|
|
93
|
+
expect do
|
|
94
|
+
@session.window_opened_by do
|
|
95
|
+
button.click
|
|
96
|
+
end
|
|
97
|
+
end.to raise_error(Capybara::WindowError, zero_windows_message)
|
|
98
|
+
end
|
|
99
|
+
end
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# NOTE: This file uses `sleep` to sync up parts of the tests. This is only implemented like this
|
|
4
|
+
# because of the methods being tested. In tests using Capybara this type of behavior should be implemented
|
|
5
|
+
# using Capybara provided assertions with builtin waiting behavior.
|
|
6
|
+
|
|
7
|
+
Capybara::SpecHelper.spec Capybara::Window, requires: [:windows] do
|
|
8
|
+
let!(:orig_window) { @session.current_window }
|
|
9
|
+
before do
|
|
10
|
+
@session.visit('/with_windows')
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
after do
|
|
14
|
+
(@session.windows - [orig_window]).each do |w|
|
|
15
|
+
@session.switch_to_window w
|
|
16
|
+
w.close
|
|
17
|
+
end
|
|
18
|
+
@session.switch_to_window(orig_window)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
describe '#exists?' do
|
|
22
|
+
it 'should become false after window was closed' do
|
|
23
|
+
other_window = @session.window_opened_by do
|
|
24
|
+
@session.find(:css, '#openWindow').click
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
expect do
|
|
28
|
+
@session.switch_to_window other_window
|
|
29
|
+
other_window.close
|
|
30
|
+
end.to change(other_window, :exists?).from(true).to(false)
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
describe '#closed?' do
|
|
35
|
+
it 'should become true after window was closed' do
|
|
36
|
+
other_window = @session.window_opened_by do
|
|
37
|
+
@session.find(:css, '#openWindow').click
|
|
38
|
+
end
|
|
39
|
+
expect do
|
|
40
|
+
@session.switch_to_window other_window
|
|
41
|
+
other_window.close
|
|
42
|
+
end.to change { other_window.closed? }.from(false).to(true)
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
describe '#current?' do
|
|
47
|
+
let(:other_window) do
|
|
48
|
+
@session.window_opened_by do
|
|
49
|
+
@session.find(:css, '#openWindow').click
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
it 'should become true after switching to window' do
|
|
54
|
+
expect do
|
|
55
|
+
@session.switch_to_window(other_window)
|
|
56
|
+
end.to change(other_window, :current?).from(false).to(true)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
it 'should return false if window is closed' do
|
|
60
|
+
@session.switch_to_window(other_window)
|
|
61
|
+
other_window.close
|
|
62
|
+
expect(other_window.current?).to be(false)
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
describe '#close' do
|
|
67
|
+
let!(:other_window) do
|
|
68
|
+
@session.window_opened_by do
|
|
69
|
+
@session.find(:css, '#openWindow').click
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
it 'should switch to original window if invoked not for current window' do
|
|
74
|
+
expect(@session.windows.size).to eq(2)
|
|
75
|
+
expect(@session.current_window).to eq(orig_window)
|
|
76
|
+
other_window.close
|
|
77
|
+
expect(@session.windows.size).to eq(1)
|
|
78
|
+
expect(@session.current_window).to eq(orig_window)
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
it 'should make subsequent invocations of other methods raise no_such_window_error if invoked for current window' do
|
|
82
|
+
@session.switch_to_window(other_window)
|
|
83
|
+
expect(@session.current_window).to eq(other_window)
|
|
84
|
+
other_window.close
|
|
85
|
+
expect do
|
|
86
|
+
@session.find(:css, '#some_id')
|
|
87
|
+
end.to raise_error(@session.driver.no_such_window_error)
|
|
88
|
+
@session.switch_to_window(orig_window)
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
describe '#size' do
|
|
93
|
+
def win_size
|
|
94
|
+
@session.evaluate_script('[window.outerWidth || window.innerWidth, window.outerHeight || window.innerHeight]')
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
it 'should return size of whole window', requires: %i[windows js] do
|
|
98
|
+
expect(@session.current_window.size).to eq win_size
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
it 'should switch to original window if invoked not for current window' do
|
|
102
|
+
other_window = @session.window_opened_by do
|
|
103
|
+
@session.find(:css, '#openWindow').click
|
|
104
|
+
end
|
|
105
|
+
sleep 1
|
|
106
|
+
size = @session.within_window(other_window) do
|
|
107
|
+
win_size
|
|
108
|
+
end
|
|
109
|
+
expect(other_window.size).to eq(size)
|
|
110
|
+
expect(@session.current_window).to eq(orig_window)
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
describe '#resize_to' do
|
|
115
|
+
let!(:initial_size) { @session.current_window.size }
|
|
116
|
+
|
|
117
|
+
after do
|
|
118
|
+
@session.current_window.resize_to(*initial_size)
|
|
119
|
+
sleep 1
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
it 'should be able to resize window', requires: %i[windows js] do
|
|
123
|
+
width, height = initial_size
|
|
124
|
+
@session.current_window.resize_to(width - 100, height - 100)
|
|
125
|
+
sleep 1
|
|
126
|
+
expect(@session.current_window.size).to eq([width - 100, height - 100])
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
it 'should stay on current window if invoked not for current window', requires: %i[windows js] do
|
|
130
|
+
other_window = @session.window_opened_by do
|
|
131
|
+
@session.find(:css, '#openWindow').click
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
other_window.resize_to(600, 400)
|
|
135
|
+
expect(@session.current_window).to eq(orig_window)
|
|
136
|
+
|
|
137
|
+
@session.within_window(other_window) do
|
|
138
|
+
expect(@session.current_window.size).to eq([600, 400])
|
|
139
|
+
end
|
|
140
|
+
end
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
describe '#maximize' do
|
|
144
|
+
let! :initial_size do
|
|
145
|
+
@session.current_window.size
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
after do
|
|
149
|
+
@session.current_window.resize_to(*initial_size)
|
|
150
|
+
sleep 0.5
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
it 'should be able to maximize window', requires: %i[windows js] do
|
|
154
|
+
start_width, start_height = 400, 300
|
|
155
|
+
@session.current_window.resize_to(start_width, start_height)
|
|
156
|
+
sleep 0.5
|
|
157
|
+
|
|
158
|
+
@session.current_window.maximize
|
|
159
|
+
sleep 0.5 # The timing on maximize is finicky on Travis -- wait a bit for maximize to occur
|
|
160
|
+
|
|
161
|
+
max_width, max_height = @session.current_window.size
|
|
162
|
+
|
|
163
|
+
# maximize behavior is window manage dependant, so just make sure it increases in size
|
|
164
|
+
expect(max_width).to be > start_width
|
|
165
|
+
expect(max_height).to be > start_height
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
it 'should stay on current window if invoked not for current window', requires: %i[windows js] do
|
|
169
|
+
other_window = @session.window_opened_by do
|
|
170
|
+
@session.find(:css, '#openWindow').click
|
|
171
|
+
end
|
|
172
|
+
other_window.resize_to(400, 300)
|
|
173
|
+
sleep 0.5
|
|
174
|
+
other_window.maximize
|
|
175
|
+
sleep 0.5 # The timing on maximize is finicky on Travis -- wait a bit for maximize to occur
|
|
176
|
+
|
|
177
|
+
expect(@session.current_window).to eq(orig_window)
|
|
178
|
+
# Maximizing the browser affects all tabs so this may not be valid in real browsers
|
|
179
|
+
# expect(@session.current_window.size).to eq(initial_size)
|
|
180
|
+
|
|
181
|
+
ow_width, ow_height = other_window.size
|
|
182
|
+
expect(ow_width).to be > 400
|
|
183
|
+
expect(ow_height).to be > 300
|
|
184
|
+
end
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
describe '#fullscreen' do
|
|
188
|
+
let! :initial_size do
|
|
189
|
+
@session.current_window.size
|
|
190
|
+
end
|
|
191
|
+
|
|
192
|
+
after do
|
|
193
|
+
@session.current_window.resize_to(*initial_size)
|
|
194
|
+
sleep 1
|
|
195
|
+
end
|
|
196
|
+
|
|
197
|
+
it 'should be able to fullscreen the window' do
|
|
198
|
+
expect do
|
|
199
|
+
@session.current_window.fullscreen
|
|
200
|
+
end.not_to raise_error
|
|
201
|
+
end
|
|
202
|
+
end
|
|
203
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# NOTE: This file uses `sleep` to sync up parts of the tests. This is only implemented like this
|
|
4
|
+
# because of the methods being tested. In tests using Capybara this type of behavior should be implemented
|
|
5
|
+
# using Capybara provided assertions with builtin waiting behavior.
|
|
6
|
+
|
|
7
|
+
Capybara::SpecHelper.spec '#windows', requires: [:windows] do
|
|
8
|
+
before do
|
|
9
|
+
@window = @session.current_window
|
|
10
|
+
@session.visit('/with_windows')
|
|
11
|
+
@session.find(:css, '#openTwoWindows').click
|
|
12
|
+
|
|
13
|
+
@session.document.synchronize(3, errors: [Capybara::CapybaraError]) do
|
|
14
|
+
raise Capybara::CapybaraError if @session.windows.size != 3
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
after do
|
|
19
|
+
(@session.windows - [@window]).each(&:close)
|
|
20
|
+
@session.switch_to_window(@window)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
it 'should return objects of Capybara::Window class' do
|
|
24
|
+
expect(@session.windows.map { |window| window.instance_of?(Capybara::Window) }).to eq([true] * 3)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
it 'should be able to switch to windows' do
|
|
28
|
+
sleep 1 # give windows enough time to fully load
|
|
29
|
+
titles = @session.windows.map do |window|
|
|
30
|
+
@session.within_window(window) { @session.title }
|
|
31
|
+
end
|
|
32
|
+
expect(titles).to match_array(['With Windows', 'Title of the first popup', 'Title of popup two']) # rubocop:disable RSpec/MatchArray
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
Capybara::SpecHelper.spec '#within_window', requires: [:windows] do
|
|
4
|
+
before do
|
|
5
|
+
@window = @session.current_window
|
|
6
|
+
@session.visit('/with_windows')
|
|
7
|
+
@session.find(:css, '#openTwoWindows').click
|
|
8
|
+
|
|
9
|
+
@session.document.synchronize(3, errors: [Capybara::CapybaraError]) do
|
|
10
|
+
raise Capybara::CapybaraError if @session.windows.size != 3
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
after do
|
|
15
|
+
(@session.windows - [@window]).each do |w|
|
|
16
|
+
@session.switch_to_window w
|
|
17
|
+
w.close
|
|
18
|
+
end
|
|
19
|
+
@session.switch_to_window(@window)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
context 'with an instance of Capybara::Window' do
|
|
23
|
+
it 'should not invoke driver#switch_to_window when given current window' do
|
|
24
|
+
allow(@session.driver).to receive(:switch_to_window).and_call_original
|
|
25
|
+
@session.within_window @window do
|
|
26
|
+
expect(@session.title).to eq('With Windows')
|
|
27
|
+
end
|
|
28
|
+
expect(@session.driver).not_to have_received(:switch_to_window)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
it 'should be able to switch to another window' do
|
|
32
|
+
window = (@session.windows - [@window]).first
|
|
33
|
+
@session.within_window window do
|
|
34
|
+
expect(@session).to have_title(/Title of the first popup|Title of popup two/)
|
|
35
|
+
end
|
|
36
|
+
expect(@session.title).to eq('With Windows')
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
it 'returns value from the block' do
|
|
40
|
+
window = (@session.windows - [@window]).first
|
|
41
|
+
value = @session.within_window window do
|
|
42
|
+
43252003274489856000
|
|
43
|
+
end
|
|
44
|
+
expect(value).to eq(43252003274489856000)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
it 'should switch back if exception was raised inside block' do
|
|
48
|
+
window = (@session.windows - [@window]).first
|
|
49
|
+
expect do
|
|
50
|
+
@session.within_window(window) do
|
|
51
|
+
@session.within 'html' do
|
|
52
|
+
raise 'some error'
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end.to raise_error(StandardError, 'some error')
|
|
56
|
+
expect(@session.current_window).to eq(@window)
|
|
57
|
+
expect(@session).to have_css('#doesNotOpenWindows')
|
|
58
|
+
expect(@session.send(:scopes)).to eq([nil])
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
it 'should leave correct scopes after execution in case of error', requires: %i[windows frames] do
|
|
62
|
+
window = (@session.windows - [@window]).first
|
|
63
|
+
expect do
|
|
64
|
+
@session.within_frame 'frameOne' do
|
|
65
|
+
@session.within_window(window) {}
|
|
66
|
+
end
|
|
67
|
+
end.to raise_error(Capybara::ScopeError)
|
|
68
|
+
expect(@session.current_window).to eq(@window)
|
|
69
|
+
expect(@session).to have_css('#doesNotOpenWindows')
|
|
70
|
+
expect(@session.send(:scopes)).to eq([nil])
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
it 'should raise error if closed window was passed' do
|
|
74
|
+
other_window = (@session.windows - [@window]).first
|
|
75
|
+
@session.within_window other_window do
|
|
76
|
+
other_window.close
|
|
77
|
+
end
|
|
78
|
+
expect do
|
|
79
|
+
@session.within_window(other_window) do
|
|
80
|
+
raise 'should not be invoked'
|
|
81
|
+
end
|
|
82
|
+
end.to raise_error(@session.driver.no_such_window_error)
|
|
83
|
+
expect(@session.current_window).to eq(@window)
|
|
84
|
+
expect(@session).to have_css('#doesNotOpenWindows')
|
|
85
|
+
expect(@session.send(:scopes)).to eq([nil])
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
context 'with lambda' do
|
|
90
|
+
it 'should find the div in another window' do
|
|
91
|
+
@session.within_window(-> { @session.title == 'Title of the first popup' }) do
|
|
92
|
+
expect(@session).to have_css('#divInPopupOne')
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
it 'should find divs in both windows' do
|
|
97
|
+
@session.within_window(-> { @session.title == 'Title of popup two' }) do
|
|
98
|
+
expect(@session).to have_css('#divInPopupTwo')
|
|
99
|
+
end
|
|
100
|
+
@session.within_window(-> { @session.title == 'Title of the first popup' }) do
|
|
101
|
+
expect(@session).to have_css('#divInPopupOne')
|
|
102
|
+
end
|
|
103
|
+
expect(@session.title).to eq('With Windows')
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
it 'should be able to nest within_window' do
|
|
107
|
+
@session.within_window(-> { @session.title == 'Title of popup two' }) do
|
|
108
|
+
expect(@session).to have_css('#divInPopupTwo')
|
|
109
|
+
@session.within_window(-> { @session.title == 'Title of the first popup' }) do
|
|
110
|
+
expect(@session).to have_css('#divInPopupOne')
|
|
111
|
+
end
|
|
112
|
+
expect(@session).to have_css('#divInPopupTwo')
|
|
113
|
+
expect(@session).not_to have_css('divInPopupOne')
|
|
114
|
+
end
|
|
115
|
+
expect(@session).not_to have_css('#divInPopupTwo')
|
|
116
|
+
expect(@session).not_to have_css('divInPopupOne')
|
|
117
|
+
expect(@session.title).to eq('With Windows')
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
it 'should work inside a normal scope' do
|
|
121
|
+
expect(@session).to have_css('#openWindow')
|
|
122
|
+
@session.within(:css, '#scope') do
|
|
123
|
+
@session.within_window(-> { @session.title == 'Title of the first popup' }) do
|
|
124
|
+
expect(@session).to have_css('#divInPopupOne')
|
|
125
|
+
end
|
|
126
|
+
expect(@session).to have_content('My scoped content')
|
|
127
|
+
expect(@session).not_to have_css('#openWindow')
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
it "should raise error if window wasn't found" do
|
|
132
|
+
expect do
|
|
133
|
+
@session.within_window(-> { @session.title == 'Invalid title' }) do
|
|
134
|
+
expect(@session).to have_css('#divInPopupOne')
|
|
135
|
+
end
|
|
136
|
+
end.to raise_error(Capybara::WindowError, 'Could not find a window matching block/lambda')
|
|
137
|
+
expect(@session.current_window).to eq(@window)
|
|
138
|
+
expect(@session).to have_css('#doesNotOpenWindows')
|
|
139
|
+
expect(@session.send(:scopes)).to eq([nil])
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
it 'returns value from the block' do
|
|
143
|
+
value = @session.within_window(-> { @session.title == 'Title of popup two' }) { 42 }
|
|
144
|
+
expect(value).to eq(42)
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
it 'should switch back if exception was raised inside block' do
|
|
148
|
+
expect do
|
|
149
|
+
@session.within_window(-> { @session.title == 'Title of popup two' }) do
|
|
150
|
+
raise 'some error'
|
|
151
|
+
end
|
|
152
|
+
end.to raise_error(StandardError, 'some error')
|
|
153
|
+
expect(@session.current_window).to eq(@window)
|
|
154
|
+
expect(@session.send(:scopes)).to eq([nil])
|
|
155
|
+
end
|
|
156
|
+
end
|
|
157
|
+
end
|