capybara 2.18.0 → 3.40.0
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 +4 -4
- data/.yardopts +1 -1
- data/History.md +945 -12
- data/License.txt +1 -1
- data/README.md +264 -90
- data/lib/capybara/config.rb +29 -57
- data/lib/capybara/cucumber.rb +2 -3
- data/lib/capybara/driver/base.rb +35 -18
- data/lib/capybara/driver/node.rb +40 -10
- data/lib/capybara/dsl.rb +10 -7
- data/lib/capybara/helpers.rb +70 -31
- data/lib/capybara/minitest/spec.rb +185 -83
- data/lib/capybara/minitest.rb +232 -112
- data/lib/capybara/node/actions.rb +274 -171
- data/lib/capybara/node/base.rb +42 -34
- data/lib/capybara/node/document.rb +15 -3
- data/lib/capybara/node/document_matchers.rb +19 -21
- data/lib/capybara/node/element.rb +362 -135
- data/lib/capybara/node/finders.rb +151 -137
- data/lib/capybara/node/matchers.rb +394 -209
- data/lib/capybara/node/simple.rb +59 -26
- data/lib/capybara/node/whitespace_normalizer.rb +81 -0
- data/lib/capybara/queries/active_element_query.rb +18 -0
- data/lib/capybara/queries/ancestor_query.rb +12 -9
- data/lib/capybara/queries/base_query.rb +39 -28
- data/lib/capybara/queries/current_path_query.rb +21 -27
- data/lib/capybara/queries/match_query.rb +14 -7
- data/lib/capybara/queries/selector_query.rb +659 -149
- data/lib/capybara/queries/sibling_query.rb +11 -9
- data/lib/capybara/queries/style_query.rb +45 -0
- data/lib/capybara/queries/text_query.rb +56 -38
- data/lib/capybara/queries/title_query.rb +8 -11
- data/lib/capybara/rack_test/browser.rb +114 -42
- data/lib/capybara/rack_test/css_handlers.rb +6 -4
- data/lib/capybara/rack_test/driver.rb +22 -17
- data/lib/capybara/rack_test/errors.rb +6 -0
- data/lib/capybara/rack_test/form.rb +93 -58
- data/lib/capybara/rack_test/node.rb +184 -81
- data/lib/capybara/rails.rb +3 -7
- data/lib/capybara/registration_container.rb +41 -0
- data/lib/capybara/registrations/drivers.rb +42 -0
- data/lib/capybara/registrations/patches/puma_ssl.rb +29 -0
- data/lib/capybara/registrations/servers.rb +66 -0
- data/lib/capybara/result.rb +97 -63
- data/lib/capybara/rspec/features.rb +17 -50
- data/lib/capybara/rspec/matcher_proxies.rb +52 -15
- data/lib/capybara/rspec/matchers/base.rb +113 -0
- data/lib/capybara/rspec/matchers/become_closed.rb +33 -0
- data/lib/capybara/rspec/matchers/compound.rb +88 -0
- data/lib/capybara/rspec/matchers/count_sugar.rb +37 -0
- data/lib/capybara/rspec/matchers/have_ancestor.rb +28 -0
- data/lib/capybara/rspec/matchers/have_current_path.rb +29 -0
- data/lib/capybara/rspec/matchers/have_selector.rb +69 -0
- data/lib/capybara/rspec/matchers/have_sibling.rb +27 -0
- data/lib/capybara/rspec/matchers/have_text.rb +33 -0
- data/lib/capybara/rspec/matchers/have_title.rb +29 -0
- data/lib/capybara/rspec/matchers/match_selector.rb +27 -0
- data/lib/capybara/rspec/matchers/match_style.rb +43 -0
- data/lib/capybara/rspec/matchers/spatial_sugar.rb +39 -0
- data/lib/capybara/rspec/matchers.rb +146 -310
- data/lib/capybara/rspec.rb +7 -11
- data/lib/capybara/selector/builders/css_builder.rb +84 -0
- data/lib/capybara/selector/builders/xpath_builder.rb +71 -0
- data/lib/capybara/selector/css.rb +85 -13
- data/lib/capybara/selector/definition/button.rb +68 -0
- data/lib/capybara/selector/definition/checkbox.rb +26 -0
- data/lib/capybara/selector/definition/css.rb +10 -0
- data/lib/capybara/selector/definition/datalist_input.rb +35 -0
- data/lib/capybara/selector/definition/datalist_option.rb +25 -0
- data/lib/capybara/selector/definition/element.rb +28 -0
- data/lib/capybara/selector/definition/field.rb +40 -0
- data/lib/capybara/selector/definition/fieldset.rb +14 -0
- data/lib/capybara/selector/definition/file_field.rb +13 -0
- data/lib/capybara/selector/definition/fillable_field.rb +33 -0
- data/lib/capybara/selector/definition/frame.rb +17 -0
- data/lib/capybara/selector/definition/id.rb +6 -0
- data/lib/capybara/selector/definition/label.rb +62 -0
- data/lib/capybara/selector/definition/link.rb +55 -0
- data/lib/capybara/selector/definition/link_or_button.rb +16 -0
- data/lib/capybara/selector/definition/option.rb +27 -0
- data/lib/capybara/selector/definition/radio_button.rb +27 -0
- data/lib/capybara/selector/definition/select.rb +81 -0
- data/lib/capybara/selector/definition/table.rb +109 -0
- data/lib/capybara/selector/definition/table_row.rb +21 -0
- data/lib/capybara/selector/definition/xpath.rb +5 -0
- data/lib/capybara/selector/definition.rb +280 -0
- data/lib/capybara/selector/filter.rb +2 -17
- data/lib/capybara/selector/filter_set.rb +80 -33
- data/lib/capybara/selector/filters/base.rb +50 -6
- data/lib/capybara/selector/filters/expression_filter.rb +8 -26
- data/lib/capybara/selector/filters/locator_filter.rb +29 -0
- data/lib/capybara/selector/filters/node_filter.rb +16 -12
- data/lib/capybara/selector/regexp_disassembler.rb +211 -0
- data/lib/capybara/selector/selector.rb +93 -210
- data/lib/capybara/selector/xpath_extensions.rb +17 -0
- data/lib/capybara/selector.rb +475 -523
- data/lib/capybara/selenium/atoms/getAttribute.min.js +1 -0
- data/lib/capybara/selenium/atoms/isDisplayed.min.js +1 -0
- data/lib/capybara/selenium/atoms/src/getAttribute.js +161 -0
- data/lib/capybara/selenium/atoms/src/isDisplayed.js +454 -0
- data/lib/capybara/selenium/driver.rb +298 -267
- data/lib/capybara/selenium/driver_specializations/chrome_driver.rb +117 -0
- data/lib/capybara/selenium/driver_specializations/edge_driver.rb +128 -0
- data/lib/capybara/selenium/driver_specializations/firefox_driver.rb +84 -0
- data/lib/capybara/selenium/driver_specializations/internet_explorer_driver.rb +26 -0
- data/lib/capybara/selenium/driver_specializations/safari_driver.rb +24 -0
- data/lib/capybara/selenium/extensions/file_input_click_emulation.rb +34 -0
- data/lib/capybara/selenium/extensions/find.rb +110 -0
- data/lib/capybara/selenium/extensions/html5_drag.rb +229 -0
- data/lib/capybara/selenium/extensions/modifier_keys_stack.rb +28 -0
- data/lib/capybara/selenium/extensions/scroll.rb +76 -0
- data/lib/capybara/selenium/node.rb +517 -145
- data/lib/capybara/selenium/nodes/chrome_node.rb +125 -0
- data/lib/capybara/selenium/nodes/edge_node.rb +110 -0
- data/lib/capybara/selenium/nodes/firefox_node.rb +136 -0
- data/lib/capybara/selenium/nodes/ie_node.rb +22 -0
- data/lib/capybara/selenium/nodes/safari_node.rb +118 -0
- data/lib/capybara/selenium/patches/atoms.rb +18 -0
- data/lib/capybara/selenium/patches/is_displayed.rb +16 -0
- data/lib/capybara/selenium/patches/logs.rb +45 -0
- data/lib/capybara/selenium/patches/pause_duration_fix.rb +9 -0
- data/lib/capybara/selenium/patches/persistent_client.rb +20 -0
- data/lib/capybara/server/animation_disabler.rb +80 -0
- data/lib/capybara/server/checker.rb +44 -0
- data/lib/capybara/server/middleware.rb +71 -0
- data/lib/capybara/server.rb +59 -67
- data/lib/capybara/session/config.rb +81 -67
- data/lib/capybara/session/matchers.rb +28 -20
- data/lib/capybara/session.rb +337 -365
- data/lib/capybara/spec/public/jquery.js +5 -5
- data/lib/capybara/spec/public/offset.js +6 -0
- data/lib/capybara/spec/public/test.js +151 -12
- data/lib/capybara/spec/session/accept_alert_spec.rb +12 -11
- data/lib/capybara/spec/session/accept_confirm_spec.rb +6 -5
- data/lib/capybara/spec/session/accept_prompt_spec.rb +10 -10
- data/lib/capybara/spec/session/active_element_spec.rb +31 -0
- data/lib/capybara/spec/session/all_spec.rb +161 -57
- data/lib/capybara/spec/session/ancestor_spec.rb +27 -24
- data/lib/capybara/spec/session/assert_all_of_selectors_spec.rb +68 -38
- data/lib/capybara/spec/session/assert_current_path_spec.rb +75 -0
- data/lib/capybara/spec/session/assert_selector_spec.rb +143 -0
- data/lib/capybara/spec/session/assert_style_spec.rb +26 -0
- data/lib/capybara/spec/session/assert_text_spec.rb +258 -0
- data/lib/capybara/spec/session/{assert_title.rb → assert_title_spec.rb} +22 -12
- data/lib/capybara/spec/session/attach_file_spec.rb +144 -69
- data/lib/capybara/spec/session/body_spec.rb +12 -13
- data/lib/capybara/spec/session/check_spec.rb +117 -55
- data/lib/capybara/spec/session/choose_spec.rb +64 -31
- data/lib/capybara/spec/session/click_button_spec.rb +231 -173
- data/lib/capybara/spec/session/click_link_or_button_spec.rb +55 -35
- data/lib/capybara/spec/session/click_link_spec.rb +93 -58
- data/lib/capybara/spec/session/current_scope_spec.rb +12 -11
- data/lib/capybara/spec/session/current_url_spec.rb +57 -39
- data/lib/capybara/spec/session/dismiss_confirm_spec.rb +4 -4
- data/lib/capybara/spec/session/dismiss_prompt_spec.rb +3 -2
- data/lib/capybara/spec/session/element/{assert_match_selector.rb → assert_match_selector_spec.rb} +11 -9
- data/lib/capybara/spec/session/element/match_css_spec.rb +18 -10
- data/lib/capybara/spec/session/element/match_xpath_spec.rb +9 -7
- data/lib/capybara/spec/session/element/matches_selector_spec.rb +71 -57
- data/lib/capybara/spec/session/evaluate_async_script_spec.rb +8 -7
- data/lib/capybara/spec/session/evaluate_script_spec.rb +29 -8
- data/lib/capybara/spec/session/execute_script_spec.rb +10 -8
- data/lib/capybara/spec/session/fill_in_spec.rb +134 -43
- data/lib/capybara/spec/session/find_button_spec.rb +25 -24
- data/lib/capybara/spec/session/find_by_id_spec.rb +10 -9
- data/lib/capybara/spec/session/find_field_spec.rb +37 -41
- data/lib/capybara/spec/session/find_link_spec.rb +46 -17
- data/lib/capybara/spec/session/find_spec.rb +260 -145
- data/lib/capybara/spec/session/first_spec.rb +80 -52
- data/lib/capybara/spec/session/frame/frame_title_spec.rb +23 -0
- data/lib/capybara/spec/session/frame/frame_url_spec.rb +23 -0
- data/lib/capybara/spec/session/frame/switch_to_frame_spec.rb +33 -20
- data/lib/capybara/spec/session/frame/within_frame_spec.rb +52 -32
- data/lib/capybara/spec/session/go_back_spec.rb +2 -1
- data/lib/capybara/spec/session/go_forward_spec.rb +2 -1
- data/lib/capybara/spec/session/has_all_selectors_spec.rb +31 -31
- data/lib/capybara/spec/session/has_ancestor_spec.rb +46 -0
- data/lib/capybara/spec/session/has_any_selectors_spec.rb +29 -0
- data/lib/capybara/spec/session/has_button_spec.rb +100 -13
- data/lib/capybara/spec/session/has_css_spec.rb +272 -137
- data/lib/capybara/spec/session/has_current_path_spec.rb +60 -61
- data/lib/capybara/spec/session/has_element_spec.rb +47 -0
- data/lib/capybara/spec/session/has_field_spec.rb +139 -59
- data/lib/capybara/spec/session/has_link_spec.rb +47 -6
- data/lib/capybara/spec/session/has_none_selectors_spec.rb +42 -40
- data/lib/capybara/spec/session/has_select_spec.rb +107 -72
- data/lib/capybara/spec/session/has_selector_spec.rb +120 -71
- data/lib/capybara/spec/session/has_sibling_spec.rb +50 -0
- data/lib/capybara/spec/session/has_table_spec.rb +183 -5
- data/lib/capybara/spec/session/has_text_spec.rb +106 -62
- data/lib/capybara/spec/session/has_title_spec.rb +20 -14
- data/lib/capybara/spec/session/has_xpath_spec.rb +57 -38
- data/lib/capybara/spec/session/{headers.rb → headers_spec.rb} +3 -2
- data/lib/capybara/spec/session/html_spec.rb +14 -6
- data/lib/capybara/spec/session/matches_style_spec.rb +37 -0
- data/lib/capybara/spec/session/node_spec.rb +1024 -153
- data/lib/capybara/spec/session/node_wrapper_spec.rb +39 -0
- data/lib/capybara/spec/session/refresh_spec.rb +12 -6
- data/lib/capybara/spec/session/reset_session_spec.rb +82 -35
- data/lib/capybara/spec/session/{response_code.rb → response_code_spec.rb} +2 -1
- data/lib/capybara/spec/session/save_and_open_page_spec.rb +3 -2
- data/lib/capybara/spec/session/save_and_open_screenshot_spec.rb +8 -12
- data/lib/capybara/spec/session/save_page_spec.rb +42 -55
- data/lib/capybara/spec/session/save_screenshot_spec.rb +16 -14
- data/lib/capybara/spec/session/screenshot_spec.rb +2 -2
- data/lib/capybara/spec/session/scroll_spec.rb +119 -0
- data/lib/capybara/spec/session/select_spec.rb +107 -81
- data/lib/capybara/spec/session/selectors_spec.rb +52 -19
- data/lib/capybara/spec/session/sibling_spec.rb +10 -10
- data/lib/capybara/spec/session/text_spec.rb +37 -21
- data/lib/capybara/spec/session/title_spec.rb +17 -5
- data/lib/capybara/spec/session/uncheck_spec.rb +43 -23
- data/lib/capybara/spec/session/unselect_spec.rb +39 -38
- data/lib/capybara/spec/session/visit_spec.rb +85 -53
- data/lib/capybara/spec/session/window/become_closed_spec.rb +24 -20
- data/lib/capybara/spec/session/window/current_window_spec.rb +5 -3
- data/lib/capybara/spec/session/window/open_new_window_spec.rb +5 -3
- data/lib/capybara/spec/session/window/switch_to_window_spec.rb +27 -22
- data/lib/capybara/spec/session/window/window_opened_by_spec.rb +12 -6
- data/lib/capybara/spec/session/window/window_spec.rb +97 -63
- data/lib/capybara/spec/session/window/windows_spec.rb +12 -10
- data/lib/capybara/spec/session/window/within_window_spec.rb +31 -86
- data/lib/capybara/spec/session/within_spec.rb +83 -44
- data/lib/capybara/spec/spec_helper.rb +54 -44
- data/lib/capybara/spec/test_app.rb +158 -43
- data/lib/capybara/spec/views/animated.erb +49 -0
- data/lib/capybara/spec/views/form.erb +163 -42
- data/lib/capybara/spec/views/frame_child.erb +4 -3
- data/lib/capybara/spec/views/frame_one.erb +2 -1
- data/lib/capybara/spec/views/frame_parent.erb +1 -1
- data/lib/capybara/spec/views/frame_two.erb +1 -1
- data/lib/capybara/spec/views/initial_alert.erb +2 -1
- data/lib/capybara/spec/views/layout.erb +10 -0
- data/lib/capybara/spec/views/obscured.erb +47 -0
- data/lib/capybara/spec/views/offset.erb +33 -0
- data/lib/capybara/spec/views/path.erb +2 -2
- data/lib/capybara/spec/views/popup_one.erb +1 -1
- data/lib/capybara/spec/views/popup_two.erb +1 -1
- data/lib/capybara/spec/views/react.erb +45 -0
- data/lib/capybara/spec/views/scroll.erb +21 -0
- data/lib/capybara/spec/views/spatial.erb +31 -0
- data/lib/capybara/spec/views/tables.erb +68 -1
- data/lib/capybara/spec/views/with_animation.erb +81 -0
- data/lib/capybara/spec/views/with_base_tag.erb +2 -2
- data/lib/capybara/spec/views/with_dragula.erb +24 -0
- data/lib/capybara/spec/views/with_fixed_header_footer.erb +2 -1
- data/lib/capybara/spec/views/with_hover.erb +3 -2
- data/lib/capybara/spec/views/with_hover1.erb +10 -0
- data/lib/capybara/spec/views/with_html.erb +69 -12
- data/lib/capybara/spec/views/with_html5_svg.erb +20 -0
- data/lib/capybara/spec/views/with_jquery_animation.erb +24 -0
- data/lib/capybara/spec/views/with_js.erb +30 -5
- data/lib/capybara/spec/views/with_jstree.erb +26 -0
- data/lib/capybara/spec/views/with_namespace.erb +21 -0
- data/lib/capybara/spec/views/with_scope.erb +2 -2
- data/lib/capybara/spec/views/with_scope_other.erb +6 -0
- data/lib/capybara/spec/views/with_shadow.erb +31 -0
- data/lib/capybara/spec/views/with_slow_unload.erb +2 -1
- data/lib/capybara/spec/views/with_sortable_js.erb +21 -0
- data/lib/capybara/spec/views/with_unload_alert.erb +1 -0
- data/lib/capybara/spec/views/with_windows.erb +1 -1
- data/lib/capybara/spec/views/within_frames.erb +5 -2
- data/lib/capybara/version.rb +2 -1
- data/lib/capybara/window.rb +36 -34
- data/lib/capybara.rb +134 -107
- data/spec/basic_node_spec.rb +60 -34
- data/spec/capybara_spec.rb +63 -88
- data/spec/counter_spec.rb +35 -0
- data/spec/css_builder_spec.rb +101 -0
- data/spec/css_splitter_spec.rb +38 -0
- data/spec/dsl_spec.rb +85 -64
- data/spec/filter_set_spec.rb +27 -9
- data/spec/fixtures/certificate.pem +25 -0
- data/spec/fixtures/key.pem +27 -0
- data/spec/fixtures/selenium_driver_rspec_failure.rb +6 -5
- data/spec/fixtures/selenium_driver_rspec_success.rb +6 -5
- data/spec/minitest_spec.rb +52 -7
- data/spec/minitest_spec_spec.rb +94 -63
- data/spec/per_session_config_spec.rb +14 -13
- data/spec/rack_test_spec.rb +194 -125
- data/spec/regexp_dissassembler_spec.rb +250 -0
- data/spec/result_spec.rb +111 -50
- data/spec/rspec/features_spec.rb +37 -31
- data/spec/rspec/scenarios_spec.rb +10 -8
- data/spec/rspec/shared_spec_matchers.rb +473 -422
- data/spec/rspec/views_spec.rb +5 -3
- data/spec/rspec_matchers_spec.rb +52 -11
- data/spec/rspec_spec.rb +109 -89
- data/spec/sauce_spec_chrome.rb +43 -0
- data/spec/selector_spec.rb +397 -68
- data/spec/selenium_spec_chrome.rb +187 -40
- data/spec/selenium_spec_chrome_remote.rb +96 -0
- data/spec/selenium_spec_edge.rb +60 -0
- data/spec/selenium_spec_firefox.rb +201 -41
- data/spec/selenium_spec_firefox_remote.rb +94 -0
- data/spec/selenium_spec_ie.rb +149 -0
- data/spec/selenium_spec_safari.rb +162 -0
- data/spec/server_spec.rb +213 -102
- data/spec/session_spec.rb +53 -16
- data/spec/shared_selenium_node.rb +79 -0
- data/spec/shared_selenium_session.rb +473 -122
- data/spec/spec_helper.rb +126 -7
- data/spec/whitespace_normalizer_spec.rb +54 -0
- data/spec/xpath_builder_spec.rb +93 -0
- metadata +355 -73
- data/.yard/templates_custom/default/class/html/selectors.erb +0 -38
- data/.yard/templates_custom/default/class/html/setup.rb +0 -17
- data/.yard/yard_extensions.rb +0 -78
- data/lib/capybara/query.rb +0 -7
- data/lib/capybara/rspec/compound.rb +0 -95
- data/lib/capybara/spec/session/assert_current_path.rb +0 -72
- data/lib/capybara/spec/session/assert_selector.rb +0 -148
- data/lib/capybara/spec/session/assert_text.rb +0 -234
- data/lib/capybara/spec/session/source_spec.rb +0 -0
- data/lib/capybara/spec/views/with_title.erb +0 -5
- data/spec/selenium_spec_marionette.rb +0 -127
|
@@ -1,177 +1,279 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'minitest/spec'
|
|
2
4
|
|
|
3
5
|
module Capybara
|
|
4
6
|
module Minitest
|
|
5
7
|
module Expectations
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
##
|
|
9
|
+
# Expectation that there is an ancestor
|
|
10
|
+
#
|
|
11
|
+
# @!method must_have_ancestor
|
|
12
|
+
# See {Capybara::Node::Matchers#has_ancestor?}
|
|
10
13
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
%w(selector xpath css).flat_map do |assertion|
|
|
17
|
-
[["assert_matches_#{assertion}", "must_match_#{assertion}"],
|
|
18
|
-
["refute_matches_#{assertion}", "wont_match_#{assertion}"]]
|
|
19
|
-
end).each do |(meth, new_name)|
|
|
20
|
-
self.class_eval <<-EOM, __FILE__, __LINE__ + 1
|
|
21
|
-
def #{new_name} *args, &block
|
|
22
|
-
::Minitest::Expectation.new(self, ::Minitest::Spec.current).#{new_name}(*args, &block)
|
|
23
|
-
end
|
|
24
|
-
EOM
|
|
14
|
+
##
|
|
15
|
+
# Expectation that there is button
|
|
16
|
+
#
|
|
17
|
+
# @!method must_have_button
|
|
18
|
+
# See {Capybara::Node::Matchers#has_button?}
|
|
25
19
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
end
|
|
20
|
+
##
|
|
21
|
+
# Expectation that there is no button
|
|
22
|
+
#
|
|
23
|
+
# @!method wont_have_button
|
|
24
|
+
# See {Capybara::Node::Matchers#has_no_button?}
|
|
32
25
|
|
|
33
26
|
##
|
|
34
|
-
# Expectation that there is
|
|
27
|
+
# Expectation that there is checked_field
|
|
35
28
|
#
|
|
36
|
-
# @!method
|
|
37
|
-
#
|
|
29
|
+
# @!method must_have_checked_field
|
|
30
|
+
# See {Capybara::Node::Matchers#has_checked_field?}
|
|
38
31
|
|
|
39
32
|
##
|
|
40
|
-
# Expectation that there is no
|
|
33
|
+
# Expectation that there is no checked_field
|
|
41
34
|
#
|
|
42
|
-
# @!method
|
|
43
|
-
#
|
|
35
|
+
# @!method wont_have_checked_field
|
|
36
|
+
# See {Capybara::Node::Matchers#has_no_checked_field?}
|
|
44
37
|
|
|
45
38
|
##
|
|
46
|
-
# Expectation that there is
|
|
39
|
+
# Expectation that there is unchecked_field
|
|
47
40
|
#
|
|
48
|
-
# @!method
|
|
49
|
-
#
|
|
41
|
+
# @!method must_have_unchecked_field
|
|
42
|
+
# See {Capybara::Node::Matchers#has_unchecked_field?}
|
|
50
43
|
|
|
51
44
|
##
|
|
52
|
-
# Expectation that there is no
|
|
45
|
+
# Expectation that there is no unchecked_field
|
|
53
46
|
#
|
|
54
|
-
# @!method
|
|
55
|
-
#
|
|
47
|
+
# @!method wont_have_unchecked_field
|
|
48
|
+
# See {Capybara::Node::Matchers#has_no_unchecked_field?}
|
|
56
49
|
|
|
57
50
|
##
|
|
58
|
-
# Expectation that
|
|
51
|
+
# Expectation that page content does match
|
|
59
52
|
#
|
|
60
|
-
# @!method
|
|
61
|
-
#
|
|
53
|
+
# @!method must_have_content
|
|
54
|
+
# See {Capybara::Node::Matchers#has_content?}
|
|
62
55
|
|
|
63
56
|
##
|
|
64
|
-
# Expectation that
|
|
57
|
+
# Expectation that page content does not match
|
|
65
58
|
#
|
|
66
|
-
# @!method
|
|
67
|
-
#
|
|
59
|
+
# @!method wont_have_content
|
|
60
|
+
# See {Capybara::Node::Matchers#has_no_content?}
|
|
68
61
|
|
|
69
62
|
##
|
|
70
|
-
# Expectation that there is
|
|
63
|
+
# Expectation that there is css
|
|
71
64
|
#
|
|
72
|
-
# @!method
|
|
73
|
-
#
|
|
65
|
+
# @!method must_have_css
|
|
66
|
+
# See {Capybara::Node::Matchers#has_css?}
|
|
74
67
|
|
|
75
68
|
##
|
|
76
|
-
# Expectation that there is no
|
|
69
|
+
# Expectation that there is no css
|
|
77
70
|
#
|
|
78
|
-
# @!method
|
|
79
|
-
#
|
|
71
|
+
# @!method wont_have_css
|
|
72
|
+
# See {Capybara::Node::Matchers#has_no_css?}
|
|
73
|
+
|
|
74
|
+
##
|
|
75
|
+
# Expectation that current path matches
|
|
76
|
+
#
|
|
77
|
+
# @!method must_have_current_path
|
|
78
|
+
# See {Capybara::SessionMatchers#has_current_path?}
|
|
79
|
+
|
|
80
|
+
##
|
|
81
|
+
# Expectation that current page does not match
|
|
82
|
+
#
|
|
83
|
+
# @!method wont_have_current_path
|
|
84
|
+
# See {Capybara::SessionMatchers#has_no_current_path?}
|
|
80
85
|
|
|
81
86
|
##
|
|
82
87
|
# Expectation that there is field
|
|
83
88
|
#
|
|
84
89
|
# @!method must_have_field
|
|
85
|
-
#
|
|
90
|
+
# See {Capybara::Node::Matchers#has_field?}
|
|
86
91
|
|
|
87
92
|
##
|
|
88
93
|
# Expectation that there is no field
|
|
89
94
|
#
|
|
90
95
|
# @!method wont_have_field
|
|
91
|
-
#
|
|
96
|
+
# See {Capybara::Node::Matchers#has_no_field?}
|
|
92
97
|
|
|
93
98
|
##
|
|
94
|
-
# Expectation that there is
|
|
99
|
+
# Expectation that there is element
|
|
95
100
|
#
|
|
96
|
-
# @!method
|
|
97
|
-
#
|
|
101
|
+
# @!method must_have_element
|
|
102
|
+
# See {Capybara::Node::Matchers#has_element?}
|
|
98
103
|
|
|
99
104
|
##
|
|
100
|
-
# Expectation that there is no
|
|
105
|
+
# Expectation that there is no element
|
|
101
106
|
#
|
|
102
|
-
# @!method
|
|
107
|
+
# @!method wont_have_element
|
|
108
|
+
# See {Capybara::Node::Matchers#has_no_element?}
|
|
103
109
|
|
|
104
110
|
##
|
|
105
|
-
# Expectation that there is
|
|
111
|
+
# Expectation that there is link
|
|
106
112
|
#
|
|
107
|
-
# @!method
|
|
108
|
-
#
|
|
113
|
+
# @!method must_have_link
|
|
114
|
+
# See {Capybara::Node::Matchers#has_link?}
|
|
109
115
|
|
|
110
116
|
##
|
|
111
|
-
# Expectation that there is no
|
|
117
|
+
# Expectation that there is no link
|
|
112
118
|
#
|
|
113
|
-
# @!method
|
|
119
|
+
# @!method wont_have_link
|
|
120
|
+
# See {Capybara::Node::Matchers#has_no_link?}
|
|
121
|
+
|
|
122
|
+
##
|
|
123
|
+
# Expectation that page text does match
|
|
124
|
+
#
|
|
125
|
+
# @!method must_have_text
|
|
126
|
+
# See {Capybara::Node::Matchers#has_text?}
|
|
127
|
+
|
|
128
|
+
##
|
|
129
|
+
# Expectation that page text does not match
|
|
130
|
+
#
|
|
131
|
+
# @!method wont_have_text
|
|
132
|
+
# See {Capybara::Node::Matchers#has_no_text?}
|
|
133
|
+
|
|
134
|
+
##
|
|
135
|
+
# Expectation that page title does match
|
|
136
|
+
#
|
|
137
|
+
# @!method must_have_title
|
|
138
|
+
# See {Capybara::Node::DocumentMatchers#has_title?}
|
|
139
|
+
|
|
140
|
+
##
|
|
141
|
+
# Expectation that page title does not match
|
|
142
|
+
#
|
|
143
|
+
# @!method wont_have_title
|
|
144
|
+
# See {Capybara::Node::DocumentMatchers#has_no_title?}
|
|
114
145
|
|
|
115
146
|
##
|
|
116
147
|
# Expectation that there is select
|
|
117
148
|
#
|
|
118
149
|
# @!method must_have_select
|
|
119
|
-
#
|
|
150
|
+
# See {Capybara::Node::Matchers#has_select?}
|
|
120
151
|
|
|
121
152
|
##
|
|
122
153
|
# Expectation that there is no select
|
|
123
154
|
#
|
|
124
155
|
# @!method wont_have_select
|
|
125
|
-
#
|
|
156
|
+
# See {Capybara::Node::Matchers#has_no_select?}
|
|
126
157
|
|
|
127
158
|
##
|
|
128
|
-
# Expectation that there is
|
|
159
|
+
# Expectation that there is a selector
|
|
129
160
|
#
|
|
130
|
-
# @!method
|
|
131
|
-
#
|
|
161
|
+
# @!method must_have_selector
|
|
162
|
+
# See {Capybara::Node::Matchers#has_selector?}
|
|
132
163
|
|
|
133
164
|
##
|
|
134
|
-
# Expectation that there is no
|
|
165
|
+
# Expectation that there is no selector
|
|
135
166
|
#
|
|
136
|
-
# @!method
|
|
137
|
-
#
|
|
167
|
+
# @!method wont_have_selector
|
|
168
|
+
# See {Capybara::Node::Matchers#has_no_selector?}
|
|
138
169
|
|
|
139
170
|
##
|
|
140
|
-
# Expectation that
|
|
171
|
+
# Expectation that all of the provided selectors are present
|
|
141
172
|
#
|
|
142
|
-
# @!method
|
|
143
|
-
#
|
|
173
|
+
# @!method must_have_all_of_selectors
|
|
174
|
+
# See {Capybara::Node::Matchers#assert_all_of_selectors}
|
|
144
175
|
|
|
145
176
|
##
|
|
146
|
-
# Expectation that
|
|
177
|
+
# Expectation that none of the provided selectors are present
|
|
147
178
|
#
|
|
148
|
-
# @!method
|
|
149
|
-
#
|
|
179
|
+
# @!method must_have_none_of_selectors
|
|
180
|
+
# See {Capybara::Node::Matchers#assert_none_of_selectors}
|
|
150
181
|
|
|
151
182
|
##
|
|
152
|
-
# Expectation that
|
|
183
|
+
# Expectation that any of the provided selectors are present
|
|
153
184
|
#
|
|
154
|
-
# @!method
|
|
155
|
-
#
|
|
185
|
+
# @!method must_have_any_of_selectors
|
|
186
|
+
# See {Capybara::Node::Matchers#assert_any_of_selectors}
|
|
156
187
|
|
|
157
188
|
##
|
|
158
|
-
# Expectation that
|
|
189
|
+
# Expectation that there is a sibling
|
|
159
190
|
#
|
|
160
|
-
# @!method
|
|
161
|
-
#
|
|
191
|
+
# @!method must_have_sibling
|
|
192
|
+
# See {Capybara::Node::Matchers#has_sibling?}
|
|
162
193
|
|
|
194
|
+
##
|
|
195
|
+
# Expectation that element has style
|
|
196
|
+
#
|
|
197
|
+
# @!method must_match_style
|
|
198
|
+
# See {Capybara::Node::Matchers#matches_style?}
|
|
199
|
+
|
|
200
|
+
##
|
|
201
|
+
# Expectation that there is table
|
|
202
|
+
#
|
|
203
|
+
# @!method must_have_table
|
|
204
|
+
# See {Capybara::Node::Matchers#has_table?}
|
|
205
|
+
|
|
206
|
+
##
|
|
207
|
+
# Expectation that there is no table
|
|
208
|
+
#
|
|
209
|
+
# @!method wont_have_table
|
|
210
|
+
# See {Capybara::Node::Matchers#has_no_table?}
|
|
211
|
+
|
|
212
|
+
##
|
|
213
|
+
# Expectation that there is xpath
|
|
214
|
+
#
|
|
215
|
+
# @!method must_have_xpath
|
|
216
|
+
# See {Capybara::Node::Matchers#has_xpath?}
|
|
217
|
+
|
|
218
|
+
##
|
|
219
|
+
# Expectation that there is no xpath
|
|
220
|
+
#
|
|
221
|
+
# @!method wont_have_xpath
|
|
222
|
+
# See {Capybara::Node::Matchers#has_no_xpath?}
|
|
223
|
+
|
|
224
|
+
# This currently doesn't work for Ruby 2.8 due to Minitest not forwarding keyword args separately
|
|
225
|
+
# %w[text content title current_path].each do |assertion|
|
|
226
|
+
# infect_an_assertion "assert_#{assertion}", "must_have_#{assertion}", :reverse
|
|
227
|
+
# infect_an_assertion "refute_#{assertion}", "wont_have_#{assertion}", :reverse
|
|
228
|
+
# end
|
|
229
|
+
|
|
230
|
+
# rubocop:disable Style/MultilineBlockChain
|
|
231
|
+
(%w[text content title current_path
|
|
232
|
+
selector xpath css link button field select table checked_field unchecked_field
|
|
233
|
+
ancestor sibling].flat_map do |assertion|
|
|
234
|
+
[%W[assert_#{assertion} must_have_#{assertion}],
|
|
235
|
+
%W[refute_#{assertion} wont_have_#{assertion}]]
|
|
236
|
+
end + [%w[assert_all_of_selectors must_have_all_of_selectors],
|
|
237
|
+
%w[assert_none_of_selectors must_have_none_of_selectors],
|
|
238
|
+
%w[assert_any_of_selectors must_have_any_of_selectors],
|
|
239
|
+
%w[assert_matches_style must_match_style]] +
|
|
240
|
+
%w[selector xpath css].flat_map do |assertion|
|
|
241
|
+
[%W[assert_matches_#{assertion} must_match_#{assertion}],
|
|
242
|
+
%W[refute_matches_#{assertion} wont_match_#{assertion}]]
|
|
243
|
+
end).each do |(meth, new_name)|
|
|
244
|
+
class_eval <<-ASSERTION, __FILE__, __LINE__ + 1
|
|
245
|
+
def #{new_name}(...)
|
|
246
|
+
::Minitest::Expectation.new(self, ::Minitest::Spec.current).#{new_name}(...)
|
|
247
|
+
end
|
|
248
|
+
ASSERTION
|
|
249
|
+
|
|
250
|
+
::Minitest::Expectation.class_eval <<-ASSERTION, __FILE__, __LINE__ + 1
|
|
251
|
+
def #{new_name}(...)
|
|
252
|
+
raise "Calling ##{new_name} outside of test." unless ctx
|
|
253
|
+
ctx.#{meth}(target, ...)
|
|
254
|
+
end
|
|
255
|
+
ASSERTION
|
|
256
|
+
end
|
|
257
|
+
# rubocop:enable Style/MultilineBlockChain
|
|
258
|
+
|
|
259
|
+
##
|
|
260
|
+
# @deprecated
|
|
261
|
+
def must_have_style(...)
|
|
262
|
+
warn 'must_have_style is deprecated, please use must_match_style'
|
|
263
|
+
must_match_style(...)
|
|
264
|
+
end
|
|
163
265
|
end
|
|
164
266
|
end
|
|
165
267
|
end
|
|
166
268
|
|
|
167
269
|
class Capybara::Session
|
|
168
|
-
include Capybara::Minitest::Expectations unless ENV[
|
|
270
|
+
include Capybara::Minitest::Expectations unless ENV['MT_NO_EXPECTATIONS']
|
|
169
271
|
end
|
|
170
272
|
|
|
171
273
|
class Capybara::Node::Base
|
|
172
|
-
include Capybara::Minitest::Expectations unless ENV[
|
|
274
|
+
include Capybara::Minitest::Expectations unless ENV['MT_NO_EXPECTATIONS']
|
|
173
275
|
end
|
|
174
276
|
|
|
175
277
|
class Capybara::Node::Simple
|
|
176
|
-
include Capybara::Minitest::Expectations unless ENV[
|
|
278
|
+
include Capybara::Minitest::Expectations unless ENV['MT_NO_EXPECTATIONS']
|
|
177
279
|
end
|