capybara 3.0.0 → 3.36.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 +777 -10
- data/License.txt +1 -1
- data/README.md +75 -58
- data/lib/capybara/config.rb +29 -10
- data/lib/capybara/cucumber.rb +1 -1
- data/lib/capybara/driver/base.rb +22 -4
- data/lib/capybara/driver/node.rb +34 -9
- data/lib/capybara/dsl.rb +14 -6
- data/lib/capybara/helpers.rb +52 -7
- data/lib/capybara/minitest/spec.rb +173 -84
- data/lib/capybara/minitest.rb +250 -144
- data/lib/capybara/node/actions.rb +248 -124
- data/lib/capybara/node/base.rb +34 -20
- data/lib/capybara/node/document.rb +14 -2
- data/lib/capybara/node/document_matchers.rb +13 -15
- data/lib/capybara/node/element.rb +339 -113
- data/lib/capybara/node/finders.rb +95 -82
- data/lib/capybara/node/matchers.rb +338 -157
- data/lib/capybara/node/simple.rb +54 -15
- data/lib/capybara/queries/active_element_query.rb +18 -0
- data/lib/capybara/queries/ancestor_query.rb +9 -10
- data/lib/capybara/queries/base_query.rb +25 -18
- data/lib/capybara/queries/current_path_query.rb +16 -6
- data/lib/capybara/queries/match_query.rb +11 -0
- data/lib/capybara/queries/selector_query.rb +600 -103
- data/lib/capybara/queries/sibling_query.rb +9 -7
- data/lib/capybara/queries/style_query.rb +45 -0
- data/lib/capybara/queries/text_query.rb +40 -22
- data/lib/capybara/queries/title_query.rb +2 -2
- data/lib/capybara/rack_test/browser.rb +47 -28
- data/lib/capybara/rack_test/driver.rb +12 -3
- data/lib/capybara/rack_test/errors.rb +6 -0
- data/lib/capybara/rack_test/form.rb +53 -50
- data/lib/capybara/rack_test/node.rb +114 -37
- data/lib/capybara/rails.rb +1 -1
- data/lib/capybara/registration_container.rb +44 -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 +45 -0
- data/lib/capybara/result.rb +86 -52
- data/lib/capybara/rspec/features.rb +8 -10
- data/lib/capybara/rspec/matcher_proxies.rb +39 -18
- data/lib/capybara/rspec/matchers/base.rb +111 -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 +77 -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 +138 -316
- data/lib/capybara/rspec.rb +3 -2
- 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 +89 -12
- 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 +54 -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 +279 -0
- data/lib/capybara/selector/filter.rb +1 -0
- data/lib/capybara/selector/filter_set.rb +72 -27
- data/lib/capybara/selector/filters/base.rb +45 -2
- data/lib/capybara/selector/filters/expression_filter.rb +5 -6
- data/lib/capybara/selector/filters/locator_filter.rb +29 -0
- data/lib/capybara/selector/filters/node_filter.rb +18 -4
- data/lib/capybara/selector/regexp_disassembler.rb +214 -0
- data/lib/capybara/selector/selector.rb +85 -200
- data/lib/capybara/selector/xpath_extensions.rb +17 -0
- data/lib/capybara/selector.rb +226 -537
- 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 +296 -238
- data/lib/capybara/selenium/driver_specializations/chrome_driver.rb +117 -0
- data/lib/capybara/selenium/driver_specializations/edge_driver.rb +124 -0
- data/lib/capybara/selenium/driver_specializations/firefox_driver.rb +89 -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 +228 -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/logger_suppressor.rb +40 -0
- data/lib/capybara/selenium/node.rb +436 -166
- data/lib/capybara/selenium/nodes/chrome_node.rb +137 -0
- data/lib/capybara/selenium/nodes/edge_node.rb +104 -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/action_pauser.rb +26 -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 +69 -0
- data/lib/capybara/server/checker.rb +44 -0
- data/lib/capybara/server/middleware.rb +71 -0
- data/lib/capybara/server.rb +58 -67
- data/lib/capybara/session/config.rb +38 -6
- data/lib/capybara/session/matchers.rb +26 -19
- data/lib/capybara/session.rb +258 -190
- 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 +122 -8
- data/lib/capybara/spec/session/accept_alert_spec.rb +11 -11
- data/lib/capybara/spec/session/accept_confirm_spec.rb +3 -3
- data/lib/capybara/spec/session/accept_prompt_spec.rb +9 -10
- data/lib/capybara/spec/session/active_element_spec.rb +31 -0
- data/lib/capybara/spec/session/all_spec.rb +135 -42
- data/lib/capybara/spec/session/ancestor_spec.rb +24 -19
- data/lib/capybara/spec/session/assert_all_of_selectors_spec.rb +67 -38
- data/lib/capybara/spec/session/{assert_current_path.rb → assert_current_path_spec.rb} +20 -18
- 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.rb → assert_text_spec.rb} +62 -38
- data/lib/capybara/spec/session/{assert_title.rb → assert_title_spec.rb} +12 -12
- data/lib/capybara/spec/session/attach_file_spec.rb +120 -72
- data/lib/capybara/spec/session/body_spec.rb +11 -13
- data/lib/capybara/spec/session/check_spec.rb +111 -51
- data/lib/capybara/spec/session/choose_spec.rb +62 -30
- data/lib/capybara/spec/session/click_button_spec.rb +227 -161
- data/lib/capybara/spec/session/click_link_or_button_spec.rb +49 -30
- data/lib/capybara/spec/session/click_link_spec.rb +78 -55
- data/lib/capybara/spec/session/current_scope_spec.rb +7 -7
- data/lib/capybara/spec/session/current_url_spec.rb +44 -37
- data/lib/capybara/spec/session/dismiss_confirm_spec.rb +3 -3
- data/lib/capybara/spec/session/dismiss_prompt_spec.rb +2 -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 +8 -6
- data/lib/capybara/spec/session/element/matches_selector_spec.rb +70 -56
- data/lib/capybara/spec/session/evaluate_async_script_spec.rb +7 -7
- data/lib/capybara/spec/session/evaluate_script_spec.rb +28 -8
- data/lib/capybara/spec/session/execute_script_spec.rb +8 -7
- data/lib/capybara/spec/session/fill_in_spec.rb +104 -44
- data/lib/capybara/spec/session/find_button_spec.rb +23 -23
- data/lib/capybara/spec/session/find_by_id_spec.rb +8 -8
- data/lib/capybara/spec/session/find_field_spec.rb +33 -31
- data/lib/capybara/spec/session/find_link_spec.rb +32 -14
- data/lib/capybara/spec/session/find_spec.rb +236 -141
- data/lib/capybara/spec/session/first_spec.rb +44 -43
- data/lib/capybara/spec/session/frame/frame_title_spec.rb +6 -6
- data/lib/capybara/spec/session/frame/frame_url_spec.rb +6 -6
- data/lib/capybara/spec/session/frame/switch_to_frame_spec.rb +32 -20
- data/lib/capybara/spec/session/frame/within_frame_spec.rb +44 -19
- data/lib/capybara/spec/session/go_back_spec.rb +1 -1
- data/lib/capybara/spec/session/go_forward_spec.rb +1 -1
- data/lib/capybara/spec/session/has_all_selectors_spec.rb +18 -18
- 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 +92 -12
- data/lib/capybara/spec/session/has_css_spec.rb +271 -137
- data/lib/capybara/spec/session/has_current_path_spec.rb +48 -33
- data/lib/capybara/spec/session/has_field_spec.rb +137 -58
- data/lib/capybara/spec/session/has_link_spec.rb +30 -6
- data/lib/capybara/spec/session/has_none_selectors_spec.rb +26 -24
- data/lib/capybara/spec/session/has_select_spec.rb +75 -47
- data/lib/capybara/spec/session/has_selector_spec.rb +102 -69
- data/lib/capybara/spec/session/has_sibling_spec.rb +50 -0
- data/lib/capybara/spec/session/has_table_spec.rb +170 -4
- data/lib/capybara/spec/session/has_text_spec.rb +108 -52
- data/lib/capybara/spec/session/has_title_spec.rb +19 -14
- data/lib/capybara/spec/session/has_xpath_spec.rb +56 -38
- data/lib/capybara/spec/session/{headers.rb → headers_spec.rb} +1 -1
- data/lib/capybara/spec/session/html_spec.rb +13 -6
- data/lib/capybara/spec/session/matches_style_spec.rb +35 -0
- data/lib/capybara/spec/session/node_spec.rb +871 -122
- data/lib/capybara/spec/session/node_wrapper_spec.rb +15 -12
- data/lib/capybara/spec/session/refresh_spec.rb +9 -7
- data/lib/capybara/spec/session/reset_session_spec.rb +52 -37
- data/lib/capybara/spec/session/{response_code.rb → response_code_spec.rb} +1 -1
- data/lib/capybara/spec/session/save_and_open_page_spec.rb +2 -2
- data/lib/capybara/spec/session/save_and_open_screenshot_spec.rb +5 -4
- data/lib/capybara/spec/session/save_page_spec.rb +41 -38
- data/lib/capybara/spec/session/save_screenshot_spec.rb +13 -11
- data/lib/capybara/spec/session/screenshot_spec.rb +2 -2
- data/lib/capybara/spec/session/scroll_spec.rb +117 -0
- data/lib/capybara/spec/session/select_spec.rb +102 -76
- data/lib/capybara/spec/session/selectors_spec.rb +51 -18
- data/lib/capybara/spec/session/sibling_spec.rb +9 -9
- data/lib/capybara/spec/session/text_spec.rb +26 -24
- data/lib/capybara/spec/session/title_spec.rb +8 -6
- data/lib/capybara/spec/session/uncheck_spec.rb +40 -21
- data/lib/capybara/spec/session/unselect_spec.rb +37 -37
- data/lib/capybara/spec/session/visit_spec.rb +59 -53
- data/lib/capybara/spec/session/window/become_closed_spec.rb +22 -19
- data/lib/capybara/spec/session/window/current_window_spec.rb +4 -3
- data/lib/capybara/spec/session/window/open_new_window_spec.rb +4 -3
- data/lib/capybara/spec/session/window/switch_to_window_spec.rb +25 -21
- data/lib/capybara/spec/session/window/window_opened_by_spec.rb +10 -5
- data/lib/capybara/spec/session/window/window_spec.rb +88 -54
- data/lib/capybara/spec/session/window/windows_spec.rb +10 -7
- data/lib/capybara/spec/session/window/within_window_spec.rb +17 -16
- data/lib/capybara/spec/session/within_spec.rb +69 -44
- data/lib/capybara/spec/spec_helper.rb +41 -53
- data/lib/capybara/spec/test_app.rb +79 -40
- data/lib/capybara/spec/views/animated.erb +49 -0
- data/lib/capybara/spec/views/form.erb +134 -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 +43 -10
- 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_other.erb +6 -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 +1 -1
- data/lib/capybara/version.rb +1 -1
- data/lib/capybara/window.rb +31 -25
- data/lib/capybara.rb +120 -100
- data/spec/basic_node_spec.rb +59 -34
- data/spec/capybara_spec.rb +54 -52
- data/spec/css_builder_spec.rb +101 -0
- data/spec/css_splitter_spec.rb +38 -0
- data/spec/dsl_spec.rb +80 -53
- data/spec/filter_set_spec.rb +24 -7
- data/spec/fixtures/certificate.pem +25 -0
- data/spec/fixtures/key.pem +27 -0
- data/spec/fixtures/selenium_driver_rspec_failure.rb +4 -4
- data/spec/fixtures/selenium_driver_rspec_success.rb +4 -4
- data/spec/minitest_spec.rb +38 -5
- data/spec/minitest_spec_spec.rb +88 -62
- data/spec/per_session_config_spec.rb +5 -5
- data/spec/rack_test_spec.rb +169 -115
- data/spec/regexp_dissassembler_spec.rb +250 -0
- data/spec/result_spec.rb +86 -33
- data/spec/rspec/features_spec.rb +26 -23
- data/spec/rspec/scenarios_spec.rb +8 -4
- data/spec/rspec/shared_spec_matchers.rb +393 -363
- data/spec/rspec/views_spec.rb +4 -3
- data/spec/rspec_matchers_spec.rb +10 -10
- data/spec/rspec_spec.rb +109 -85
- data/spec/sauce_spec_chrome.rb +43 -0
- data/spec/selector_spec.rb +391 -61
- data/spec/selenium_spec_chrome.rb +180 -41
- data/spec/selenium_spec_chrome_remote.rb +101 -0
- data/spec/selenium_spec_edge.rb +28 -8
- data/spec/selenium_spec_firefox.rb +211 -0
- data/spec/selenium_spec_firefox_remote.rb +80 -0
- data/spec/selenium_spec_ie.rb +127 -11
- data/spec/selenium_spec_safari.rb +156 -0
- data/spec/server_spec.rb +177 -78
- data/spec/session_spec.rb +52 -16
- data/spec/shared_selenium_node.rb +79 -0
- data/spec/shared_selenium_session.rb +455 -123
- data/spec/spec_helper.rb +91 -2
- data/spec/xpath_builder_spec.rb +93 -0
- metadata +343 -42
- 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/rspec/compound.rb +0 -90
- data/lib/capybara/spec/session/assert_selector.rb +0 -149
- 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 -143
|
@@ -1,178 +1,267 @@
|
|
|
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[assert_none_of_selectors must_have_none_of_selectors]] +
|
|
17
|
-
%w[selector xpath css].flat_map do |assertion|
|
|
18
|
-
[%W[assert_matches_#{assertion} must_match_#{assertion}],
|
|
19
|
-
%W[refute_matches_#{assertion} wont_match_#{assertion}]]
|
|
20
|
-
end).each do |(meth, new_name)|
|
|
21
|
-
class_eval <<-ASSERTION, __FILE__, __LINE__ + 1
|
|
22
|
-
def #{new_name} *args, &block
|
|
23
|
-
::Minitest::Expectation.new(self, ::Minitest::Spec.current).#{new_name}(*args, &block)
|
|
24
|
-
end
|
|
25
|
-
ASSERTION
|
|
14
|
+
##
|
|
15
|
+
# Expectation that there is button
|
|
16
|
+
#
|
|
17
|
+
# @!method must_have_button
|
|
18
|
+
# See {Capybara::Node::Matchers#has_button?}
|
|
26
19
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
end
|
|
33
|
-
# rubocop:enable Style/MultilineBlockChain
|
|
20
|
+
##
|
|
21
|
+
# Expectation that there is no button
|
|
22
|
+
#
|
|
23
|
+
# @!method wont_have_button
|
|
24
|
+
# See {Capybara::Node::Matchers#has_no_button?}
|
|
34
25
|
|
|
35
26
|
##
|
|
36
|
-
# Expectation that there is
|
|
27
|
+
# Expectation that there is checked_field
|
|
37
28
|
#
|
|
38
|
-
# @!method
|
|
39
|
-
#
|
|
29
|
+
# @!method must_have_checked_field
|
|
30
|
+
# See {Capybara::Node::Matchers#has_checked_field?}
|
|
40
31
|
|
|
41
32
|
##
|
|
42
|
-
# Expectation that there is no
|
|
33
|
+
# Expectation that there is no checked_field
|
|
43
34
|
#
|
|
44
|
-
# @!method
|
|
45
|
-
#
|
|
35
|
+
# @!method wont_have_checked_field
|
|
36
|
+
# See {Capybara::Node::Matchers#has_no_checked_field?}
|
|
46
37
|
|
|
47
38
|
##
|
|
48
|
-
# Expectation that there is
|
|
39
|
+
# Expectation that there is unchecked_field
|
|
49
40
|
#
|
|
50
|
-
# @!method
|
|
51
|
-
#
|
|
41
|
+
# @!method must_have_unchecked_field
|
|
42
|
+
# See {Capybara::Node::Matchers#has_unchecked_field?}
|
|
52
43
|
|
|
53
44
|
##
|
|
54
|
-
# Expectation that there is no
|
|
45
|
+
# Expectation that there is no unchecked_field
|
|
55
46
|
#
|
|
56
|
-
# @!method
|
|
57
|
-
#
|
|
47
|
+
# @!method wont_have_unchecked_field
|
|
48
|
+
# See {Capybara::Node::Matchers#has_no_unchecked_field?}
|
|
58
49
|
|
|
59
50
|
##
|
|
60
|
-
# Expectation that
|
|
51
|
+
# Expectation that page content does match
|
|
61
52
|
#
|
|
62
|
-
# @!method
|
|
63
|
-
#
|
|
53
|
+
# @!method must_have_content
|
|
54
|
+
# See {Capybara::Node::Matchers#has_content?}
|
|
64
55
|
|
|
65
56
|
##
|
|
66
|
-
# Expectation that
|
|
57
|
+
# Expectation that page content does not match
|
|
67
58
|
#
|
|
68
|
-
# @!method
|
|
69
|
-
#
|
|
59
|
+
# @!method wont_have_content
|
|
60
|
+
# See {Capybara::Node::Matchers#has_no_content?}
|
|
70
61
|
|
|
71
62
|
##
|
|
72
|
-
# Expectation that there is
|
|
63
|
+
# Expectation that there is css
|
|
73
64
|
#
|
|
74
|
-
# @!method
|
|
75
|
-
#
|
|
65
|
+
# @!method must_have_css
|
|
66
|
+
# See {Capybara::Node::Matchers#has_css?}
|
|
76
67
|
|
|
77
68
|
##
|
|
78
|
-
# Expectation that there is no
|
|
69
|
+
# Expectation that there is no css
|
|
79
70
|
#
|
|
80
|
-
# @!method
|
|
81
|
-
#
|
|
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?}
|
|
82
85
|
|
|
83
86
|
##
|
|
84
87
|
# Expectation that there is field
|
|
85
88
|
#
|
|
86
89
|
# @!method must_have_field
|
|
87
|
-
#
|
|
90
|
+
# See {Capybara::Node::Matchers#has_field?}
|
|
88
91
|
|
|
89
92
|
##
|
|
90
93
|
# Expectation that there is no field
|
|
91
94
|
#
|
|
92
95
|
# @!method wont_have_field
|
|
93
|
-
#
|
|
96
|
+
# See {Capybara::Node::Matchers#has_no_field?}
|
|
94
97
|
|
|
95
98
|
##
|
|
96
|
-
# Expectation that there is
|
|
99
|
+
# Expectation that there is link
|
|
97
100
|
#
|
|
98
|
-
# @!method
|
|
99
|
-
#
|
|
101
|
+
# @!method must_have_link
|
|
102
|
+
# See {Capybara::Node::Matchers#has_link?}
|
|
100
103
|
|
|
101
104
|
##
|
|
102
|
-
# Expectation that there is no
|
|
105
|
+
# Expectation that there is no link
|
|
103
106
|
#
|
|
104
|
-
# @!method
|
|
107
|
+
# @!method wont_have_link
|
|
108
|
+
# See {Capybara::Node::Matchers#has_no_link?}
|
|
105
109
|
|
|
106
110
|
##
|
|
107
|
-
# Expectation that
|
|
111
|
+
# Expectation that page text does match
|
|
108
112
|
#
|
|
109
|
-
# @!method
|
|
110
|
-
#
|
|
113
|
+
# @!method must_have_text
|
|
114
|
+
# See {Capybara::Node::Matchers#has_text?}
|
|
111
115
|
|
|
112
116
|
##
|
|
113
|
-
# Expectation that
|
|
117
|
+
# Expectation that page text does not match
|
|
114
118
|
#
|
|
115
|
-
# @!method
|
|
119
|
+
# @!method wont_have_text
|
|
120
|
+
# See {Capybara::Node::Matchers#has_no_text?}
|
|
121
|
+
|
|
122
|
+
##
|
|
123
|
+
# Expectation that page title does match
|
|
124
|
+
#
|
|
125
|
+
# @!method must_have_title
|
|
126
|
+
# See {Capybara::Node::DocumentMatchers#has_title?}
|
|
127
|
+
|
|
128
|
+
##
|
|
129
|
+
# Expectation that page title does not match
|
|
130
|
+
#
|
|
131
|
+
# @!method wont_have_title
|
|
132
|
+
# See {Capybara::Node::DocumentMatchers#has_no_title?}
|
|
116
133
|
|
|
117
134
|
##
|
|
118
135
|
# Expectation that there is select
|
|
119
136
|
#
|
|
120
137
|
# @!method must_have_select
|
|
121
|
-
#
|
|
138
|
+
# See {Capybara::Node::Matchers#has_select?}
|
|
122
139
|
|
|
123
140
|
##
|
|
124
141
|
# Expectation that there is no select
|
|
125
142
|
#
|
|
126
143
|
# @!method wont_have_select
|
|
127
|
-
#
|
|
144
|
+
# See {Capybara::Node::Matchers#has_no_select?}
|
|
145
|
+
|
|
146
|
+
##
|
|
147
|
+
# Expectation that there is a selector
|
|
148
|
+
#
|
|
149
|
+
# @!method must_have_selector
|
|
150
|
+
# See {Capybara::Node::Matchers#has_selector?}
|
|
151
|
+
|
|
152
|
+
##
|
|
153
|
+
# Expectation that there is no selector
|
|
154
|
+
#
|
|
155
|
+
# @!method wont_have_selector
|
|
156
|
+
# See {Capybara::Node::Matchers#has_no_selector?}
|
|
157
|
+
|
|
158
|
+
##
|
|
159
|
+
# Expectation that all of the provided selectors are present
|
|
160
|
+
#
|
|
161
|
+
# @!method must_have_all_of_selectors
|
|
162
|
+
# See {Capybara::Node::Matchers#assert_all_of_selectors}
|
|
163
|
+
|
|
164
|
+
##
|
|
165
|
+
# Expectation that none of the provided selectors are present
|
|
166
|
+
#
|
|
167
|
+
# @!method must_have_none_of_selectors
|
|
168
|
+
# See {Capybara::Node::Matchers#assert_none_of_selectors}
|
|
169
|
+
|
|
170
|
+
##
|
|
171
|
+
# Expectation that any of the provided selectors are present
|
|
172
|
+
#
|
|
173
|
+
# @!method must_have_any_of_selectors
|
|
174
|
+
# See {Capybara::Node::Matchers#assert_any_of_selectors}
|
|
175
|
+
|
|
176
|
+
##
|
|
177
|
+
# Expectation that there is a sibling
|
|
178
|
+
#
|
|
179
|
+
# @!method must_have_sibling
|
|
180
|
+
# See {Capybara::Node::Matchers#has_sibling?}
|
|
181
|
+
|
|
182
|
+
##
|
|
183
|
+
# Expectation that element has style
|
|
184
|
+
#
|
|
185
|
+
# @!method must_match_style
|
|
186
|
+
# See {Capybara::Node::Matchers#matches_style?}
|
|
128
187
|
|
|
129
188
|
##
|
|
130
189
|
# Expectation that there is table
|
|
131
190
|
#
|
|
132
191
|
# @!method must_have_table
|
|
133
|
-
#
|
|
192
|
+
# See {Capybara::Node::Matchers#has_table?}
|
|
134
193
|
|
|
135
194
|
##
|
|
136
195
|
# Expectation that there is no table
|
|
137
196
|
#
|
|
138
197
|
# @!method wont_have_table
|
|
139
|
-
#
|
|
198
|
+
# See {Capybara::Node::Matchers#has_no_table?}
|
|
140
199
|
|
|
141
200
|
##
|
|
142
|
-
# Expectation that
|
|
201
|
+
# Expectation that there is xpath
|
|
143
202
|
#
|
|
144
|
-
# @!method
|
|
145
|
-
#
|
|
203
|
+
# @!method must_have_xpath
|
|
204
|
+
# See {Capybara::Node::Matchers#has_xpath?}
|
|
146
205
|
|
|
147
206
|
##
|
|
148
|
-
# Expectation that
|
|
207
|
+
# Expectation that there is no xpath
|
|
149
208
|
#
|
|
150
|
-
# @!method
|
|
151
|
-
#
|
|
209
|
+
# @!method wont_have_xpath
|
|
210
|
+
# See {Capybara::Node::Matchers#has_no_xpath?}
|
|
152
211
|
|
|
153
|
-
|
|
154
|
-
#
|
|
155
|
-
#
|
|
156
|
-
#
|
|
157
|
-
#
|
|
212
|
+
# This currently doesn't work for Ruby 2.8 due to Minitest not forwarding keyword args separately
|
|
213
|
+
# %w[text content title current_path].each do |assertion|
|
|
214
|
+
# infect_an_assertion "assert_#{assertion}", "must_have_#{assertion}", :reverse
|
|
215
|
+
# infect_an_assertion "refute_#{assertion}", "wont_have_#{assertion}", :reverse
|
|
216
|
+
# end
|
|
217
|
+
|
|
218
|
+
# rubocop:disable Style/MultilineBlockChain
|
|
219
|
+
(%w[text content title current_path
|
|
220
|
+
selector xpath css link button field select table checked_field unchecked_field
|
|
221
|
+
ancestor sibling].flat_map do |assertion|
|
|
222
|
+
[%W[assert_#{assertion} must_have_#{assertion}],
|
|
223
|
+
%W[refute_#{assertion} wont_have_#{assertion}]]
|
|
224
|
+
end + [%w[assert_all_of_selectors must_have_all_of_selectors],
|
|
225
|
+
%w[assert_none_of_selectors must_have_none_of_selectors],
|
|
226
|
+
%w[assert_any_of_selectors must_have_any_of_selectors],
|
|
227
|
+
%w[assert_matches_style must_match_style]] +
|
|
228
|
+
%w[selector xpath css].flat_map do |assertion|
|
|
229
|
+
[%W[assert_matches_#{assertion} must_match_#{assertion}],
|
|
230
|
+
%W[refute_matches_#{assertion} wont_match_#{assertion}]]
|
|
231
|
+
end).each do |(meth, new_name)|
|
|
232
|
+
class_eval <<-ASSERTION, __FILE__, __LINE__ + 1
|
|
233
|
+
def #{new_name} *args, **kw_args, &block
|
|
234
|
+
::Minitest::Expectation.new(self, ::Minitest::Spec.current).#{new_name}(*args, **kw_args, &block)
|
|
235
|
+
end
|
|
236
|
+
ASSERTION
|
|
237
|
+
|
|
238
|
+
::Minitest::Expectation.class_eval <<-ASSERTION, __FILE__, __LINE__ + 1
|
|
239
|
+
def #{new_name} *args, **kw_args, &block
|
|
240
|
+
raise "Calling ##{new_name} outside of test." unless ctx
|
|
241
|
+
ctx.#{meth}(target, *args, **kw_args, &block)
|
|
242
|
+
end
|
|
243
|
+
ASSERTION
|
|
244
|
+
end
|
|
245
|
+
# rubocop:enable Style/MultilineBlockChain
|
|
158
246
|
|
|
159
247
|
##
|
|
160
|
-
#
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
248
|
+
# @deprecated
|
|
249
|
+
def must_have_style(*args, **kw_args, &block)
|
|
250
|
+
warn 'must_have_style is deprecated, please use must_match_style'
|
|
251
|
+
must_match_style(*args, **kw_args, &block)
|
|
252
|
+
end
|
|
164
253
|
end
|
|
165
254
|
end
|
|
166
255
|
end
|
|
167
256
|
|
|
168
257
|
class Capybara::Session
|
|
169
|
-
include Capybara::Minitest::Expectations unless ENV[
|
|
258
|
+
include Capybara::Minitest::Expectations unless ENV['MT_NO_EXPECTATIONS']
|
|
170
259
|
end
|
|
171
260
|
|
|
172
261
|
class Capybara::Node::Base
|
|
173
|
-
include Capybara::Minitest::Expectations unless ENV[
|
|
262
|
+
include Capybara::Minitest::Expectations unless ENV['MT_NO_EXPECTATIONS']
|
|
174
263
|
end
|
|
175
264
|
|
|
176
265
|
class Capybara::Node::Simple
|
|
177
|
-
include Capybara::Minitest::Expectations unless ENV[
|
|
266
|
+
include Capybara::Minitest::Expectations unless ENV['MT_NO_EXPECTATIONS']
|
|
178
267
|
end
|