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
|
@@ -5,19 +5,31 @@ Capybara::SpecHelper.spec '#has_link?' do
|
|
|
5
5
|
@session.visit('/with_html')
|
|
6
6
|
end
|
|
7
7
|
|
|
8
|
-
it
|
|
8
|
+
it 'should be true if the given link is on the page' do
|
|
9
9
|
expect(@session).to have_link('foo')
|
|
10
10
|
expect(@session).to have_link('awesome title')
|
|
11
11
|
expect(@session).to have_link('A link', href: '/with_simple_html')
|
|
12
12
|
expect(@session).to have_link(:'A link', href: :'/with_simple_html')
|
|
13
|
-
expect(@session).to have_link('A link', href:
|
|
13
|
+
expect(@session).to have_link('A link', href: %r{/with_simple_html})
|
|
14
14
|
end
|
|
15
15
|
|
|
16
|
-
it
|
|
16
|
+
it 'should be false if the given link is not on the page' do
|
|
17
17
|
expect(@session).not_to have_link('monkey')
|
|
18
18
|
expect(@session).not_to have_link('A link', href: '/nonexistent-href')
|
|
19
19
|
expect(@session).not_to have_link('A link', href: /nonexistent/)
|
|
20
20
|
end
|
|
21
|
+
|
|
22
|
+
context 'with focused:', requires: [:active_element] do
|
|
23
|
+
it 'should be true if the given link is on the page and has focus' do
|
|
24
|
+
@session.send_keys(:tab)
|
|
25
|
+
|
|
26
|
+
expect(@session).to have_link('labore', focused: true)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
it 'should be false if the given link is on the page and does not have focus' do
|
|
30
|
+
expect(@session).to have_link('labore', focused: false)
|
|
31
|
+
end
|
|
32
|
+
end
|
|
21
33
|
end
|
|
22
34
|
|
|
23
35
|
Capybara::SpecHelper.spec '#has_no_link?' do
|
|
@@ -25,15 +37,27 @@ Capybara::SpecHelper.spec '#has_no_link?' do
|
|
|
25
37
|
@session.visit('/with_html')
|
|
26
38
|
end
|
|
27
39
|
|
|
28
|
-
it
|
|
40
|
+
it 'should be false if the given link is on the page' do
|
|
29
41
|
expect(@session).not_to have_no_link('foo')
|
|
30
42
|
expect(@session).not_to have_no_link('awesome title')
|
|
31
43
|
expect(@session).not_to have_no_link('A link', href: '/with_simple_html')
|
|
32
44
|
end
|
|
33
45
|
|
|
34
|
-
it
|
|
46
|
+
it 'should be true if the given link is not on the page' do
|
|
35
47
|
expect(@session).to have_no_link('monkey')
|
|
36
48
|
expect(@session).to have_no_link('A link', href: '/nonexistent-href')
|
|
37
|
-
expect(@session).to have_no_link('A link', href:
|
|
49
|
+
expect(@session).to have_no_link('A link', href: %r{/nonexistent-href})
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
context 'with focused:', requires: [:active_element] do
|
|
53
|
+
it 'should be true if the given link is on the page and has focus' do
|
|
54
|
+
expect(@session).to have_no_link('labore', focused: true)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
it 'should be false if the given link is on the page and does not have focus' do
|
|
58
|
+
@session.send_keys(:tab)
|
|
59
|
+
|
|
60
|
+
expect(@session).to have_no_link('labore', focused: false)
|
|
61
|
+
end
|
|
38
62
|
end
|
|
39
63
|
end
|
|
@@ -1,32 +1,34 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
Capybara::SpecHelper.spec '#have_none_of_selectors' do
|
|
2
4
|
before do
|
|
3
5
|
@session.visit('/with_html')
|
|
4
6
|
end
|
|
5
7
|
|
|
6
|
-
it
|
|
8
|
+
it 'should be false if any of the given locators are on the page' do
|
|
7
9
|
expect do
|
|
8
|
-
expect(@session).to have_none_of_selectors(:xpath,
|
|
10
|
+
expect(@session).to have_none_of_selectors(:xpath, '//p', '//a')
|
|
9
11
|
end.to raise_error ::RSpec::Expectations::ExpectationNotMetError
|
|
10
12
|
expect do
|
|
11
|
-
expect(@session).to have_none_of_selectors(:css,
|
|
13
|
+
expect(@session).to have_none_of_selectors(:css, 'p a#foo')
|
|
12
14
|
end.to raise_error ::RSpec::Expectations::ExpectationNotMetError
|
|
13
15
|
end
|
|
14
16
|
|
|
15
|
-
it
|
|
16
|
-
expect(@session).to have_none_of_selectors(:xpath,
|
|
17
|
-
expect(@session).to have_none_of_selectors(:css,
|
|
17
|
+
it 'should be true if none of the given locators are on the page' do
|
|
18
|
+
expect(@session).to have_none_of_selectors(:xpath, '//abbr', '//td')
|
|
19
|
+
expect(@session).to have_none_of_selectors(:css, 'p a#doesnotexist', 'abbr')
|
|
18
20
|
end
|
|
19
21
|
|
|
20
|
-
it
|
|
22
|
+
it 'should use default selector' do
|
|
21
23
|
Capybara.default_selector = :css
|
|
22
|
-
expect(@session).to have_none_of_selectors(
|
|
24
|
+
expect(@session).to have_none_of_selectors('p a#doesnotexist', 'abbr')
|
|
23
25
|
expect do
|
|
24
|
-
expect(@session).to have_none_of_selectors(
|
|
26
|
+
expect(@session).to have_none_of_selectors('abbr', 'p a#foo')
|
|
25
27
|
end.to raise_error ::RSpec::Expectations::ExpectationNotMetError
|
|
26
28
|
end
|
|
27
29
|
|
|
28
|
-
context
|
|
29
|
-
it
|
|
30
|
+
context 'should respect scopes' do
|
|
31
|
+
it 'when used with `within`' do
|
|
30
32
|
@session.within "//p[@id='first']" do
|
|
31
33
|
expect do
|
|
32
34
|
expect(@session).to have_none_of_selectors(".//a[@id='foo']")
|
|
@@ -35,7 +37,7 @@ Capybara::SpecHelper.spec '#have_none_of_selectors' do
|
|
|
35
37
|
end
|
|
36
38
|
end
|
|
37
39
|
|
|
38
|
-
it
|
|
40
|
+
it 'when called on an element' do
|
|
39
41
|
el = @session.find "//p[@id='first']"
|
|
40
42
|
expect do
|
|
41
43
|
expect(el).to have_none_of_selectors(".//a[@id='foo']")
|
|
@@ -44,33 +46,33 @@ Capybara::SpecHelper.spec '#have_none_of_selectors' do
|
|
|
44
46
|
end
|
|
45
47
|
end
|
|
46
48
|
|
|
47
|
-
context
|
|
48
|
-
it
|
|
49
|
+
context 'with options' do
|
|
50
|
+
it 'should apply the options to all locators' do
|
|
49
51
|
expect do
|
|
50
|
-
expect(@session).to have_none_of_selectors(
|
|
52
|
+
expect(@session).to have_none_of_selectors('//p//a', text: 'Redirect')
|
|
51
53
|
end.to raise_error ::RSpec::Expectations::ExpectationNotMetError
|
|
52
|
-
expect(@session).to have_none_of_selectors(
|
|
54
|
+
expect(@session).to have_none_of_selectors('//p', text: 'Doesnotexist')
|
|
53
55
|
end
|
|
54
56
|
|
|
55
|
-
it
|
|
57
|
+
it 'should discard all matches where the given regexp is matched' do
|
|
56
58
|
expect do
|
|
57
|
-
expect(@session).to have_none_of_selectors(
|
|
59
|
+
expect(@session).to have_none_of_selectors('//p//a', text: /re[dab]i/i, count: 1)
|
|
58
60
|
end.to raise_error ::RSpec::Expectations::ExpectationNotMetError
|
|
59
|
-
expect(@session).to have_none_of_selectors(
|
|
61
|
+
expect(@session).to have_none_of_selectors('//p//a', text: /Red$/)
|
|
60
62
|
end
|
|
61
63
|
end
|
|
62
64
|
|
|
63
|
-
context
|
|
64
|
-
it
|
|
65
|
+
context 'with wait', requires: [:js] do
|
|
66
|
+
it 'should not find elements if they appear after given wait duration' do
|
|
65
67
|
@session.visit('/with_js')
|
|
66
68
|
@session.click_link('Click me')
|
|
67
|
-
expect(@session).to have_none_of_selectors(:css,
|
|
69
|
+
expect(@session).to have_none_of_selectors(:css, '#new_field', 'a#has-been-clicked', wait: 0.1)
|
|
68
70
|
end
|
|
69
71
|
end
|
|
70
72
|
|
|
71
|
-
it
|
|
73
|
+
it 'cannot be negated' do
|
|
72
74
|
expect do
|
|
73
|
-
expect(@session).not_to have_none_of_selectors(:css,
|
|
75
|
+
expect(@session).not_to have_none_of_selectors(:css, 'p a#foo', 'h2#h2one', 'h2#h2two')
|
|
74
76
|
end.to raise_error ArgumentError
|
|
75
77
|
end
|
|
76
78
|
end
|
|
@@ -3,19 +3,19 @@
|
|
|
3
3
|
Capybara::SpecHelper.spec '#has_select?' do
|
|
4
4
|
before { @session.visit('/form') }
|
|
5
5
|
|
|
6
|
-
it
|
|
6
|
+
it 'should be true if the field is on the page' do
|
|
7
7
|
expect(@session).to have_select('Locale')
|
|
8
8
|
expect(@session).to have_select('form_region')
|
|
9
9
|
expect(@session).to have_select('Languages')
|
|
10
10
|
expect(@session).to have_select(:Languages)
|
|
11
11
|
end
|
|
12
12
|
|
|
13
|
-
it
|
|
13
|
+
it 'should be false if the field is not on the page' do
|
|
14
14
|
expect(@session).not_to have_select('Monkey')
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
context 'with selected value' do
|
|
18
|
-
it
|
|
18
|
+
it 'should be true if a field with the given value is on the page' do
|
|
19
19
|
expect(@session).to have_select('form_locale', selected: 'English')
|
|
20
20
|
expect(@session).to have_select('Region', selected: 'Norway')
|
|
21
21
|
expect(@session).to have_select('Underwear', selected: [
|
|
@@ -23,7 +23,7 @@ Capybara::SpecHelper.spec '#has_select?' do
|
|
|
23
23
|
])
|
|
24
24
|
end
|
|
25
25
|
|
|
26
|
-
it
|
|
26
|
+
it 'should be false if the given field is not on the page' do
|
|
27
27
|
expect(@session).not_to have_select('Locale', selected: 'Swedish')
|
|
28
28
|
expect(@session).not_to have_select('Does not exist', selected: 'John')
|
|
29
29
|
expect(@session).not_to have_select('City', selected: 'Not there')
|
|
@@ -38,24 +38,24 @@ Capybara::SpecHelper.spec '#has_select?' do
|
|
|
38
38
|
])
|
|
39
39
|
end
|
|
40
40
|
|
|
41
|
-
it
|
|
41
|
+
it 'should be true after the given value is selected' do
|
|
42
42
|
@session.select('Swedish', from: 'Locale')
|
|
43
43
|
expect(@session).to have_select('Locale', selected: 'Swedish')
|
|
44
44
|
end
|
|
45
45
|
|
|
46
|
-
it
|
|
46
|
+
it 'should be false after a different value is selected' do
|
|
47
47
|
@session.select('Swedish', from: 'Locale')
|
|
48
48
|
expect(@session).not_to have_select('Locale', selected: 'English')
|
|
49
49
|
end
|
|
50
50
|
|
|
51
|
-
it
|
|
51
|
+
it 'should be true after the given values are selected' do
|
|
52
52
|
@session.select('Boxers', from: 'Underwear')
|
|
53
53
|
expect(@session).to have_select('Underwear', selected: [
|
|
54
54
|
'Boxerbriefs', 'Briefs', 'Boxers', 'Commando', "Frenchman's Pantalons", 'Long Johns'
|
|
55
55
|
])
|
|
56
56
|
end
|
|
57
57
|
|
|
58
|
-
it
|
|
58
|
+
it 'should be false after one of the values is unselected' do
|
|
59
59
|
@session.unselect('Briefs', from: 'Underwear')
|
|
60
60
|
expect(@session).not_to have_select('Underwear', selected: [
|
|
61
61
|
'Boxerbriefs', 'Briefs', 'Commando', "Frenchman's Pantalons", 'Long Johns'
|
|
@@ -63,48 +63,48 @@ Capybara::SpecHelper.spec '#has_select?' do
|
|
|
63
63
|
end
|
|
64
64
|
|
|
65
65
|
it "should be true even when the selected option invisible, regardless of the select's visibility" do
|
|
66
|
-
expect(@session).to have_select('Icecream', visible:
|
|
66
|
+
expect(@session).to have_select('Icecream', visible: :hidden, selected: 'Chocolate')
|
|
67
67
|
expect(@session).to have_select('Sorbet', selected: 'Vanilla')
|
|
68
68
|
end
|
|
69
69
|
end
|
|
70
70
|
|
|
71
71
|
context 'with partial select' do
|
|
72
|
-
it
|
|
72
|
+
it 'should be true if a field with the given partial values is on the page' do
|
|
73
73
|
expect(@session).to have_select('Underwear', with_selected: %w[Boxerbriefs Briefs])
|
|
74
74
|
end
|
|
75
75
|
|
|
76
|
-
it
|
|
76
|
+
it 'should be false if a field with the given partial values is not on the page' do
|
|
77
77
|
expect(@session).not_to have_select('Underwear', with_selected: %w[Boxerbriefs Boxers])
|
|
78
78
|
end
|
|
79
79
|
|
|
80
|
-
it
|
|
80
|
+
it 'should be true after the given partial value is selected' do
|
|
81
81
|
@session.select('Boxers', from: 'Underwear')
|
|
82
82
|
expect(@session).to have_select('Underwear', with_selected: %w[Boxerbriefs Boxers])
|
|
83
83
|
end
|
|
84
84
|
|
|
85
|
-
it
|
|
85
|
+
it 'should be false after one of the given partial values is unselected' do
|
|
86
86
|
@session.unselect('Briefs', from: 'Underwear')
|
|
87
87
|
expect(@session).not_to have_select('Underwear', with_selected: %w[Boxerbriefs Briefs])
|
|
88
88
|
end
|
|
89
89
|
|
|
90
90
|
it "should be true even when the selected values are invisible, regardless of the select's visibility" do
|
|
91
|
-
expect(@session).to have_select('Dessert', visible:
|
|
91
|
+
expect(@session).to have_select('Dessert', visible: :hidden, with_options: %w[Pudding Tiramisu])
|
|
92
92
|
expect(@session).to have_select('Cake', with_selected: ['Chocolate Cake', 'Sponge Cake'])
|
|
93
93
|
end
|
|
94
94
|
|
|
95
|
-
it
|
|
95
|
+
it 'should support non array partial values' do
|
|
96
96
|
expect(@session).to have_select('Underwear', with_selected: 'Briefs')
|
|
97
97
|
expect(@session).not_to have_select('Underwear', with_selected: 'Boxers')
|
|
98
98
|
end
|
|
99
99
|
end
|
|
100
100
|
|
|
101
101
|
context 'with exact options' do
|
|
102
|
-
it
|
|
102
|
+
it 'should be true if a field with the given options is on the page' do
|
|
103
103
|
expect(@session).to have_select('Region', options: %w[Norway Sweden Finland])
|
|
104
104
|
expect(@session).to have_select('Tendency', options: [])
|
|
105
105
|
end
|
|
106
106
|
|
|
107
|
-
it
|
|
107
|
+
it 'should be false if the given field is not on the page' do
|
|
108
108
|
expect(@session).not_to have_select('Locale', options: ['Swedish'])
|
|
109
109
|
expect(@session).not_to have_select('Does not exist', options: ['John'])
|
|
110
110
|
expect(@session).not_to have_select('City', options: ['London', 'Made up city'])
|
|
@@ -112,46 +112,74 @@ Capybara::SpecHelper.spec '#has_select?' do
|
|
|
112
112
|
expect(@session).not_to have_select('Region', options: %w[Norway Norway Norway])
|
|
113
113
|
end
|
|
114
114
|
|
|
115
|
-
it
|
|
116
|
-
expect(@session).to have_select(
|
|
115
|
+
it 'should be true even when the options are invisible, if the select itself is invisible' do
|
|
116
|
+
expect(@session).to have_select('Icecream', visible: :hidden, options: %w[Chocolate Vanilla Strawberry])
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
context 'with enabled options' do
|
|
121
|
+
it 'should be true if the listed options exist and are enabled' do
|
|
122
|
+
expect(@session).to have_select('form_title', enabled_options: %w[Mr Mrs Miss])
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
it 'should be false if the listed options do not exist' do
|
|
126
|
+
expect(@session).not_to have_select('form_title', enabled_options: ['Not there'])
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
it 'should be false if the listed option exists but is not enabled' do
|
|
130
|
+
expect(@session).not_to have_select('form_title', enabled_options: %w[Mr Mrs Miss Other])
|
|
131
|
+
end
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
context 'with disabled options' do
|
|
135
|
+
it 'should be true if the listed options exist and are disabled' do
|
|
136
|
+
expect(@session).to have_select('form_title', disabled_options: ['Other'])
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
it 'should be false if the listed options do not exist' do
|
|
140
|
+
expect(@session).not_to have_select('form_title', disabled_options: ['Not there'])
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
it 'should be false if the listed option exists but is not disabled' do
|
|
144
|
+
expect(@session).not_to have_select('form_title', disabled_options: %w[Other Mrs])
|
|
117
145
|
end
|
|
118
146
|
end
|
|
119
147
|
|
|
120
148
|
context 'with partial options' do
|
|
121
|
-
it
|
|
149
|
+
it 'should be true if a field with the given partial options is on the page' do
|
|
122
150
|
expect(@session).to have_select('Region', with_options: %w[Norway Sweden])
|
|
123
151
|
expect(@session).to have_select('City', with_options: ['London'])
|
|
124
152
|
end
|
|
125
153
|
|
|
126
|
-
it
|
|
154
|
+
it 'should be false if a field with the given partial options is not on the page' do
|
|
127
155
|
expect(@session).not_to have_select('Locale', with_options: ['Uruguayan'])
|
|
128
156
|
expect(@session).not_to have_select('Does not exist', with_options: ['John'])
|
|
129
157
|
expect(@session).not_to have_select('Region', with_options: %w[Norway Sweden Finland Latvia])
|
|
130
158
|
end
|
|
131
159
|
|
|
132
|
-
it
|
|
133
|
-
expect(@session).to have_select(
|
|
160
|
+
it 'should be true even when the options are invisible, if the select itself is invisible' do
|
|
161
|
+
expect(@session).to have_select('Icecream', visible: :hidden, with_options: %w[Vanilla Strawberry])
|
|
134
162
|
end
|
|
135
163
|
end
|
|
136
164
|
|
|
137
165
|
context 'with multiple option' do
|
|
138
|
-
it
|
|
166
|
+
it 'should find multiple selects if true' do
|
|
139
167
|
expect(@session).to have_select('form_languages', multiple: true)
|
|
140
168
|
expect(@session).not_to have_select('form_other_title', multiple: true)
|
|
141
169
|
end
|
|
142
170
|
|
|
143
|
-
it
|
|
171
|
+
it 'should not find multiple selects if false' do
|
|
144
172
|
expect(@session).not_to have_select('form_languages', multiple: false)
|
|
145
173
|
expect(@session).to have_select('form_other_title', multiple: false)
|
|
146
174
|
end
|
|
147
175
|
|
|
148
|
-
it
|
|
176
|
+
it 'should find both if not specified' do
|
|
149
177
|
expect(@session).to have_select('form_languages')
|
|
150
178
|
expect(@session).to have_select('form_other_title')
|
|
151
179
|
end
|
|
152
180
|
end
|
|
153
181
|
|
|
154
|
-
it
|
|
182
|
+
it 'should support locator-less usage' do
|
|
155
183
|
expect(@session.has_select?(with_options: %w[Norway Sweden])).to eq true
|
|
156
184
|
expect(@session).to have_select(with_options: ['London'])
|
|
157
185
|
expect(@session.has_select?(with_selected: %w[Commando Boxerbriefs])).to eq true
|
|
@@ -162,18 +190,18 @@ end
|
|
|
162
190
|
Capybara::SpecHelper.spec '#has_no_select?' do
|
|
163
191
|
before { @session.visit('/form') }
|
|
164
192
|
|
|
165
|
-
it
|
|
193
|
+
it 'should be false if the field is on the page' do
|
|
166
194
|
expect(@session).not_to have_no_select('Locale')
|
|
167
195
|
expect(@session).not_to have_no_select('form_region')
|
|
168
196
|
expect(@session).not_to have_no_select('Languages')
|
|
169
197
|
end
|
|
170
198
|
|
|
171
|
-
it
|
|
199
|
+
it 'should be true if the field is not on the page' do
|
|
172
200
|
expect(@session).to have_no_select('Monkey')
|
|
173
201
|
end
|
|
174
202
|
|
|
175
203
|
context 'with selected value' do
|
|
176
|
-
it
|
|
204
|
+
it 'should be false if a field with the given value is on the page' do
|
|
177
205
|
expect(@session).not_to have_no_select('form_locale', selected: 'English')
|
|
178
206
|
expect(@session).not_to have_no_select('Region', selected: 'Norway')
|
|
179
207
|
expect(@session).not_to have_no_select('Underwear', selected: [
|
|
@@ -181,7 +209,7 @@ Capybara::SpecHelper.spec '#has_no_select?' do
|
|
|
181
209
|
])
|
|
182
210
|
end
|
|
183
211
|
|
|
184
|
-
it
|
|
212
|
+
it 'should be true if the given field is not on the page' do
|
|
185
213
|
expect(@session).to have_no_select('Locale', selected: 'Swedish')
|
|
186
214
|
expect(@session).to have_no_select('Does not exist', selected: 'John')
|
|
187
215
|
expect(@session).to have_no_select('City', selected: 'Not there')
|
|
@@ -196,24 +224,24 @@ Capybara::SpecHelper.spec '#has_no_select?' do
|
|
|
196
224
|
])
|
|
197
225
|
end
|
|
198
226
|
|
|
199
|
-
it
|
|
227
|
+
it 'should be false after the given value is selected' do
|
|
200
228
|
@session.select('Swedish', from: 'Locale')
|
|
201
229
|
expect(@session).not_to have_no_select('Locale', selected: 'Swedish')
|
|
202
230
|
end
|
|
203
231
|
|
|
204
|
-
it
|
|
232
|
+
it 'should be true after a different value is selected' do
|
|
205
233
|
@session.select('Swedish', from: 'Locale')
|
|
206
234
|
expect(@session).to have_no_select('Locale', selected: 'English')
|
|
207
235
|
end
|
|
208
236
|
|
|
209
|
-
it
|
|
237
|
+
it 'should be false after the given values are selected' do
|
|
210
238
|
@session.select('Boxers', from: 'Underwear')
|
|
211
239
|
expect(@session).not_to have_no_select('Underwear', selected: [
|
|
212
240
|
'Boxerbriefs', 'Briefs', 'Boxers', 'Commando', "Frenchman's Pantalons", 'Long Johns'
|
|
213
241
|
])
|
|
214
242
|
end
|
|
215
243
|
|
|
216
|
-
it
|
|
244
|
+
it 'should be true after one of the values is unselected' do
|
|
217
245
|
@session.unselect('Briefs', from: 'Underwear')
|
|
218
246
|
expect(@session).to have_no_select('Underwear', selected: [
|
|
219
247
|
'Boxerbriefs', 'Briefs', 'Commando', "Frenchman's Pantalons", 'Long Johns'
|
|
@@ -222,36 +250,36 @@ Capybara::SpecHelper.spec '#has_no_select?' do
|
|
|
222
250
|
end
|
|
223
251
|
|
|
224
252
|
context 'with partial select' do
|
|
225
|
-
it
|
|
253
|
+
it 'should be false if a field with the given partial values is on the page' do
|
|
226
254
|
expect(@session).not_to have_no_select('Underwear', with_selected: %w[Boxerbriefs Briefs])
|
|
227
255
|
end
|
|
228
256
|
|
|
229
|
-
it
|
|
257
|
+
it 'should be true if a field with the given partial values is not on the page' do
|
|
230
258
|
expect(@session).to have_no_select('Underwear', with_selected: %w[Boxerbriefs Boxers])
|
|
231
259
|
end
|
|
232
260
|
|
|
233
|
-
it
|
|
261
|
+
it 'should be false after the given partial value is selected' do
|
|
234
262
|
@session.select('Boxers', from: 'Underwear')
|
|
235
263
|
expect(@session).not_to have_no_select('Underwear', with_selected: %w[Boxerbriefs Boxers])
|
|
236
264
|
end
|
|
237
265
|
|
|
238
|
-
it
|
|
266
|
+
it 'should be true after one of the given partial values is unselected' do
|
|
239
267
|
@session.unselect('Briefs', from: 'Underwear')
|
|
240
268
|
expect(@session).to have_no_select('Underwear', with_selected: %w[Boxerbriefs Briefs])
|
|
241
269
|
end
|
|
242
270
|
|
|
243
|
-
it
|
|
271
|
+
it 'should support non array partial values' do
|
|
244
272
|
expect(@session).not_to have_no_select('Underwear', with_selected: 'Briefs')
|
|
245
273
|
expect(@session).to have_no_select('Underwear', with_selected: 'Boxers')
|
|
246
274
|
end
|
|
247
275
|
end
|
|
248
276
|
|
|
249
277
|
context 'with exact options' do
|
|
250
|
-
it
|
|
278
|
+
it 'should be false if a field with the given options is on the page' do
|
|
251
279
|
expect(@session).not_to have_no_select('Region', options: %w[Norway Sweden Finland])
|
|
252
280
|
end
|
|
253
281
|
|
|
254
|
-
it
|
|
282
|
+
it 'should be true if the given field is not on the page' do
|
|
255
283
|
expect(@session).to have_no_select('Locale', options: ['Swedish'])
|
|
256
284
|
expect(@session).to have_no_select('Does not exist', options: ['John'])
|
|
257
285
|
expect(@session).to have_no_select('City', options: ['London', 'Made up city'])
|
|
@@ -261,22 +289,22 @@ Capybara::SpecHelper.spec '#has_no_select?' do
|
|
|
261
289
|
end
|
|
262
290
|
|
|
263
291
|
context 'with partial options' do
|
|
264
|
-
it
|
|
292
|
+
it 'should be false if a field with the given partial options is on the page' do
|
|
265
293
|
expect(@session).not_to have_no_select('Region', with_options: %w[Norway Sweden])
|
|
266
294
|
expect(@session).not_to have_no_select('City', with_options: ['London'])
|
|
267
295
|
end
|
|
268
296
|
|
|
269
|
-
it
|
|
297
|
+
it 'should be true if a field with the given partial options is not on the page' do
|
|
270
298
|
expect(@session).to have_no_select('Locale', with_options: ['Uruguayan'])
|
|
271
299
|
expect(@session).to have_no_select('Does not exist', with_options: ['John'])
|
|
272
300
|
expect(@session).to have_no_select('Region', with_options: %w[Norway Sweden Finland Latvia])
|
|
273
301
|
end
|
|
274
302
|
end
|
|
275
303
|
|
|
276
|
-
it
|
|
304
|
+
it 'should support locator-less usage' do
|
|
277
305
|
expect(@session.has_no_select?(with_options: %w[Norway Sweden Finland Latvia])).to eq true
|
|
278
306
|
expect(@session).to have_no_select(with_options: ['New London'])
|
|
279
|
-
expect(@session.has_no_select?(with_selected: ['Boxers'])).to eq true
|
|
280
|
-
expect(@session).to have_no_select(with_selected: %w[Commando Boxers])
|
|
307
|
+
expect(@session.has_no_select?(id: 'form_underwear', with_selected: ['Boxers'])).to eq true
|
|
308
|
+
expect(@session).to have_no_select(id: 'form_underwear', with_selected: %w[Commando Boxers])
|
|
281
309
|
end
|
|
282
310
|
end
|