capybara 3.0.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 +891 -12
- data/License.txt +1 -1
- data/README.md +257 -84
- 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 +38 -9
- data/lib/capybara/dsl.rb +9 -7
- data/lib/capybara/helpers.rb +57 -8
- data/lib/capybara/minitest/spec.rb +185 -84
- data/lib/capybara/minitest.rb +264 -145
- data/lib/capybara/node/actions.rb +248 -124
- data/lib/capybara/node/base.rb +35 -20
- data/lib/capybara/node/document.rb +14 -2
- data/lib/capybara/node/document_matchers.rb +13 -15
- data/lib/capybara/node/element.rb +350 -113
- data/lib/capybara/node/finders.rb +104 -82
- data/lib/capybara/node/matchers.rb +363 -157
- data/lib/capybara/node/simple.rb +54 -15
- 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 +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 +617 -104
- 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 +106 -31
- data/lib/capybara/rack_test/driver.rb +16 -7
- data/lib/capybara/rack_test/errors.rb +6 -0
- data/lib/capybara/rack_test/form.rb +74 -49
- data/lib/capybara/rack_test/node.rb +120 -47
- data/lib/capybara/rails.rb +1 -1
- 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 +87 -53
- data/lib/capybara/rspec/features.rb +8 -10
- data/lib/capybara/rspec/matcher_proxies.rb +39 -18
- 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 +142 -315
- 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 +85 -8
- 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 +1 -0
- data/lib/capybara/selector/filter_set.rb +72 -28
- 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 +211 -0
- data/lib/capybara/selector/selector.rb +89 -200
- data/lib/capybara/selector/xpath_extensions.rb +17 -0
- data/lib/capybara/selector.rb +474 -534
- 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 +270 -245
- 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 +460 -170
- 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 +58 -67
- data/lib/capybara/session/config.rb +40 -6
- data/lib/capybara/session/matchers.rb +26 -19
- data/lib/capybara/session.rb +252 -194
- 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 +126 -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 -44
- 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} +76 -52
- data/lib/capybara/spec/session/{assert_title.rb → assert_title_spec.rb} +12 -12
- data/lib/capybara/spec/session/attach_file_spec.rb +126 -72
- data/lib/capybara/spec/session/body_spec.rb +11 -13
- data/lib/capybara/spec/session/check_spec.rb +112 -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 +89 -55
- data/lib/capybara/spec/session/current_scope_spec.rb +8 -8
- 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 +110 -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 +42 -14
- data/lib/capybara/spec/session/find_spec.rb +251 -142
- data/lib/capybara/spec/session/first_spec.rb +45 -44
- 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 +46 -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 +23 -23
- 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 +98 -12
- data/lib/capybara/spec/session/has_css_spec.rb +271 -137
- data/lib/capybara/spec/session/has_current_path_spec.rb +50 -35
- data/lib/capybara/spec/session/has_element_spec.rb +47 -0
- data/lib/capybara/spec/session/has_field_spec.rb +137 -58
- data/lib/capybara/spec/session/has_link_spec.rb +46 -6
- data/lib/capybara/spec/session/has_none_selectors_spec.rb +33 -31
- data/lib/capybara/spec/session/has_select_spec.rb +84 -50
- data/lib/capybara/spec/session/has_selector_spec.rb +117 -69
- data/lib/capybara/spec/session/has_sibling_spec.rb +50 -0
- data/lib/capybara/spec/session/has_table_spec.rb +181 -4
- data/lib/capybara/spec/session/has_text_spec.rb +101 -53
- 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 +37 -0
- data/lib/capybara/spec/session/node_spec.rb +958 -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 +65 -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 +119 -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 +41 -22
- data/lib/capybara/spec/session/unselect_spec.rb +37 -37
- data/lib/capybara/spec/session/visit_spec.rb +79 -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 +11 -8
- data/lib/capybara/spec/session/window/within_window_spec.rb +17 -16
- data/lib/capybara/spec/session/within_spec.rb +82 -44
- data/lib/capybara/spec/spec_helper.rb +46 -52
- data/lib/capybara/spec/test_app.rb +148 -41
- data/lib/capybara/spec/views/animated.erb +49 -0
- data/lib/capybara/spec/views/form.erb +156 -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 +46 -11
- 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 +1 -1
- data/lib/capybara/version.rb +1 -1
- data/lib/capybara/window.rb +32 -26
- data/lib/capybara.rb +128 -104
- data/spec/basic_node_spec.rb +59 -34
- data/spec/capybara_spec.rb +65 -51
- 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 +84 -55
- 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 +5 -5
- data/spec/fixtures/selenium_driver_rspec_success.rb +5 -5
- data/spec/minitest_spec.rb +49 -5
- data/spec/minitest_spec_spec.rb +92 -62
- data/spec/per_session_config_spec.rb +6 -6
- data/spec/rack_test_spec.rb +183 -115
- data/spec/regexp_dissassembler_spec.rb +250 -0
- data/spec/result_spec.rb +99 -39
- data/spec/rspec/features_spec.rb +28 -25
- data/spec/rspec/scenarios_spec.rb +10 -6
- data/spec/rspec/shared_spec_matchers.rb +418 -364
- data/spec/rspec/views_spec.rb +4 -3
- data/spec/rspec_matchers_spec.rb +35 -10
- data/spec/rspec_spec.rb +109 -85
- data/spec/sauce_spec_chrome.rb +43 -0
- data/spec/selector_spec.rb +392 -62
- data/spec/selenium_spec_chrome.rb +183 -41
- data/spec/selenium_spec_chrome_remote.rb +96 -0
- data/spec/selenium_spec_edge.rb +41 -8
- data/spec/selenium_spec_firefox.rb +228 -0
- data/spec/selenium_spec_firefox_remote.rb +94 -0
- data/spec/selenium_spec_ie.rb +129 -11
- data/spec/selenium_spec_safari.rb +162 -0
- data/spec/server_spec.rb +192 -81
- data/spec/session_spec.rb +52 -16
- data/spec/shared_selenium_node.rb +79 -0
- data/spec/shared_selenium_session.rb +460 -123
- data/spec/spec_helper.rb +124 -2
- data/spec/whitespace_normalizer_spec.rb +54 -0
- data/spec/xpath_builder_spec.rb +93 -0
- metadata +344 -45
- 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,39 +5,40 @@ Capybara::SpecHelper.spec '#assert_current_path' do
|
|
5
5
|
@session.visit('/with_js')
|
6
6
|
end
|
7
7
|
|
8
|
-
it
|
8
|
+
it 'should not raise if the page has the given current path' do
|
9
9
|
expect { @session.assert_current_path('/with_js') }.not_to raise_error
|
10
10
|
end
|
11
11
|
|
12
|
-
it
|
12
|
+
it 'should allow regexp matches' do
|
13
13
|
expect { @session.assert_current_path(/w[a-z]{3}_js/) }.not_to raise_error
|
14
14
|
end
|
15
15
|
|
16
|
-
it
|
17
|
-
@session.click_link(
|
18
|
-
expect { @session.assert_current_path(
|
16
|
+
it 'should wait for current_path', requires: [:js] do
|
17
|
+
@session.click_link('Change page')
|
18
|
+
expect { @session.assert_current_path('/with_html') }.not_to raise_error
|
19
19
|
end
|
20
20
|
|
21
|
-
it
|
21
|
+
it 'should raise if the page has not the given current_path' do
|
22
22
|
expect { @session.assert_current_path('/with_html') }.to raise_error(Capybara::ExpectationNotMet, 'expected "/with_js" to equal "/with_html"')
|
23
23
|
end
|
24
24
|
|
25
|
-
it
|
25
|
+
it 'should check query options' do
|
26
26
|
@session.visit('/with_js?test=test')
|
27
27
|
expect { @session.assert_current_path('/with_js?test=test') }.not_to raise_error
|
28
28
|
end
|
29
29
|
|
30
|
-
it
|
30
|
+
it 'should compare the full url' do
|
31
31
|
expect { @session.assert_current_path(%r{\Ahttp://[^/]*/with_js\Z}, url: true) }.not_to raise_error
|
32
32
|
end
|
33
33
|
|
34
|
-
it
|
34
|
+
it 'should ignore the query' do
|
35
35
|
@session.visit('/with_js?test=test')
|
36
36
|
expect { @session.assert_current_path('/with_js', ignore_query: true) }.not_to raise_error
|
37
37
|
end
|
38
38
|
|
39
|
-
it
|
40
|
-
|
39
|
+
it 'should not cause an exception when current_url is nil' do
|
40
|
+
allow(@session).to receive(:current_url).and_return(nil)
|
41
|
+
allow(@session.page).to receive(:current_url).and_return(nil) if @session.respond_to? :page
|
41
42
|
|
42
43
|
expect { @session.assert_current_path(nil) }.not_to raise_error
|
43
44
|
end
|
@@ -48,25 +49,26 @@ Capybara::SpecHelper.spec '#assert_no_current_path?' do
|
|
48
49
|
@session.visit('/with_js')
|
49
50
|
end
|
50
51
|
|
51
|
-
it
|
52
|
+
it 'should raise if the page has the given current_path' do
|
52
53
|
expect { @session.assert_no_current_path('/with_js') }.to raise_error(Capybara::ExpectationNotMet)
|
53
54
|
end
|
54
55
|
|
55
|
-
it
|
56
|
+
it 'should allow regexp matches' do
|
56
57
|
expect { @session.assert_no_current_path(/monkey/) }.not_to raise_error
|
57
58
|
end
|
58
59
|
|
59
|
-
it
|
60
|
-
@session.click_link(
|
60
|
+
it 'should wait for current_path to disappear', requires: [:js] do
|
61
|
+
@session.click_link('Change page')
|
61
62
|
expect { @session.assert_no_current_path('/with_js') }.not_to raise_error
|
62
63
|
end
|
63
64
|
|
64
|
-
it
|
65
|
+
it 'should not raise if the page has not the given current_path' do
|
65
66
|
expect { @session.assert_no_current_path('/with_html') }.not_to raise_error
|
66
67
|
end
|
67
68
|
|
68
|
-
it
|
69
|
-
|
69
|
+
it 'should not cause an exception when current_url is nil' do
|
70
|
+
allow(@session).to receive(:current_url).and_return(nil)
|
71
|
+
allow(@session.page).to receive(:current_url).and_return(nil) if @session.respond_to? :page
|
70
72
|
|
71
73
|
expect { @session.assert_no_current_path('/with_html') }.not_to raise_error
|
72
74
|
end
|
@@ -0,0 +1,143 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
Capybara::SpecHelper.spec '#assert_selector' do
|
4
|
+
before do
|
5
|
+
@session.visit('/with_html')
|
6
|
+
end
|
7
|
+
|
8
|
+
it 'should be true if the given selector is on the page' do
|
9
|
+
@session.assert_selector(:xpath, '//p')
|
10
|
+
@session.assert_selector(:css, 'p a#foo')
|
11
|
+
@session.assert_selector("//p[contains(.,'est')]")
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'should be false if the given selector is not on the page' do
|
15
|
+
expect { @session.assert_selector(:xpath, '//abbr') }.to raise_error(Capybara::ElementNotFound)
|
16
|
+
expect { @session.assert_selector(:css, 'p a#doesnotexist') }.to raise_error(Capybara::ElementNotFound)
|
17
|
+
expect { @session.assert_selector("//p[contains(.,'thisstringisnotonpage')]") }.to raise_error(Capybara::ElementNotFound)
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'should use default selector' do
|
21
|
+
Capybara.default_selector = :css
|
22
|
+
expect { @session.assert_selector('p a#doesnotexist') }.to raise_error(Capybara::ElementNotFound)
|
23
|
+
@session.assert_selector('p a#foo')
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'should respect scopes' do
|
27
|
+
@session.within "//p[@id='first']" do
|
28
|
+
@session.assert_selector(".//a[@id='foo']")
|
29
|
+
expect { @session.assert_selector(".//a[@id='red']") }.to raise_error(Capybara::ElementNotFound)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
context 'with count' do
|
34
|
+
it 'should be true if the content is on the page the given number of times' do
|
35
|
+
@session.assert_selector('//p', count: 3)
|
36
|
+
@session.assert_selector("//p//a[@id='foo']", count: 1)
|
37
|
+
@session.assert_selector("//p[contains(.,'est')]", count: 1)
|
38
|
+
end
|
39
|
+
|
40
|
+
it 'should be false if the content is on the page the given number of times' do
|
41
|
+
expect { @session.assert_selector('//p', count: 6) }.to raise_error(Capybara::ElementNotFound)
|
42
|
+
expect { @session.assert_selector("//p//a[@id='foo']", count: 2) }.to raise_error(Capybara::ElementNotFound)
|
43
|
+
expect { @session.assert_selector("//p[contains(.,'est')]", count: 5) }.to raise_error(Capybara::ElementNotFound)
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should be false if the content isn't on the page at all" do
|
47
|
+
expect { @session.assert_selector('//abbr', count: 2) }.to raise_error(Capybara::ElementNotFound)
|
48
|
+
expect { @session.assert_selector("//p//a[@id='doesnotexist']", count: 1) }.to raise_error(Capybara::ElementNotFound)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
context 'with text' do
|
53
|
+
it 'should discard all matches where the given string is not contained' do
|
54
|
+
@session.assert_selector('//p//a', text: 'Redirect', count: 1)
|
55
|
+
expect { @session.assert_selector('//p', text: 'Doesnotexist') }.to raise_error(Capybara::ElementNotFound)
|
56
|
+
end
|
57
|
+
|
58
|
+
it 'should discard all matches where the given regexp is not matched' do
|
59
|
+
@session.assert_selector('//p//a', text: /re[dab]i/i, count: 1)
|
60
|
+
expect { @session.assert_selector('//p//a', text: /Red$/) }.to raise_error(Capybara::ElementNotFound)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
context 'with wait', requires: [:js] do
|
65
|
+
it 'should find element if it appears before given wait duration' do
|
66
|
+
Capybara.using_wait_time(0.1) do
|
67
|
+
@session.visit('/with_js')
|
68
|
+
@session.click_link('Click me')
|
69
|
+
@session.assert_selector(:css, 'a#has-been-clicked', text: 'Has been clicked', wait: 2)
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
Capybara::SpecHelper.spec '#assert_no_selector' do
|
76
|
+
before do
|
77
|
+
@session.visit('/with_html')
|
78
|
+
end
|
79
|
+
|
80
|
+
it 'should be false if the given selector is on the page' do
|
81
|
+
expect { @session.assert_no_selector(:xpath, '//p') }.to raise_error(Capybara::ElementNotFound)
|
82
|
+
expect { @session.assert_no_selector(:css, 'p a#foo') }.to raise_error(Capybara::ElementNotFound)
|
83
|
+
expect { @session.assert_no_selector("//p[contains(.,'est')]") }.to raise_error(Capybara::ElementNotFound)
|
84
|
+
end
|
85
|
+
|
86
|
+
it 'should be true if the given selector is not on the page' do
|
87
|
+
@session.assert_no_selector(:xpath, '//abbr')
|
88
|
+
@session.assert_no_selector(:css, 'p a#doesnotexist')
|
89
|
+
@session.assert_no_selector("//p[contains(.,'thisstringisnotonpage')]")
|
90
|
+
end
|
91
|
+
|
92
|
+
it 'should use default selector' do
|
93
|
+
Capybara.default_selector = :css
|
94
|
+
@session.assert_no_selector('p a#doesnotexist')
|
95
|
+
expect { @session.assert_no_selector('p a#foo') }.to raise_error(Capybara::ElementNotFound)
|
96
|
+
end
|
97
|
+
|
98
|
+
it 'should respect scopes' do
|
99
|
+
@session.within "//p[@id='first']" do
|
100
|
+
expect { @session.assert_no_selector(".//a[@id='foo']") }.to raise_error(Capybara::ElementNotFound)
|
101
|
+
@session.assert_no_selector(".//a[@id='red']")
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
context 'with count' do
|
106
|
+
it 'should be false if the content is on the page the given number of times' do
|
107
|
+
expect { @session.assert_no_selector('//p', count: 3) }.to raise_error(Capybara::ElementNotFound)
|
108
|
+
expect { @session.assert_no_selector("//p//a[@id='foo']", count: 1) }.to raise_error(Capybara::ElementNotFound)
|
109
|
+
expect { @session.assert_no_selector("//p[contains(.,'est')]", count: 1) }.to raise_error(Capybara::ElementNotFound)
|
110
|
+
end
|
111
|
+
|
112
|
+
it 'should be true if the content is on the page the wrong number of times' do
|
113
|
+
@session.assert_no_selector('//p', count: 6)
|
114
|
+
@session.assert_no_selector("//p//a[@id='foo']", count: 2)
|
115
|
+
@session.assert_no_selector("//p[contains(.,'est')]", count: 5)
|
116
|
+
end
|
117
|
+
|
118
|
+
it "should be true if the content isn't on the page at all" do
|
119
|
+
@session.assert_no_selector('//abbr', count: 2)
|
120
|
+
@session.assert_no_selector("//p//a[@id='doesnotexist']", count: 1)
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
context 'with text' do
|
125
|
+
it 'should discard all matches where the given string is contained' do
|
126
|
+
expect { @session.assert_no_selector('//p//a', text: 'Redirect', count: 1) }.to raise_error(Capybara::ElementNotFound)
|
127
|
+
@session.assert_no_selector('//p', text: 'Doesnotexist')
|
128
|
+
end
|
129
|
+
|
130
|
+
it 'should discard all matches where the given regexp is matched' do
|
131
|
+
expect { @session.assert_no_selector('//p//a', text: /re[dab]i/i, count: 1) }.to raise_error(Capybara::ElementNotFound)
|
132
|
+
@session.assert_no_selector('//p//a', text: /Red$/)
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
context 'with wait', requires: [:js] do
|
137
|
+
it 'should not find element if it appears after given wait duration' do
|
138
|
+
@session.visit('/with_js')
|
139
|
+
@session.click_link('Click me')
|
140
|
+
@session.assert_no_selector(:css, 'a#has-been-clicked', text: 'Has been clicked', wait: 0.1)
|
141
|
+
end
|
142
|
+
end
|
143
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
Capybara::SpecHelper.spec '#assert_matches_style', requires: [:css] do
|
4
|
+
it 'should not raise if the elements style contains the given properties' do
|
5
|
+
@session.visit('/with_html')
|
6
|
+
expect do
|
7
|
+
@session.find(:css, '#first').assert_matches_style(display: 'block')
|
8
|
+
end.not_to raise_error
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should raise error if the elements style doesn't contain the given properties" do
|
12
|
+
@session.visit('/with_html')
|
13
|
+
expect do
|
14
|
+
@session.find(:css, '#first').assert_matches_style(display: 'inline')
|
15
|
+
end.to raise_error(Capybara::ExpectationNotMet, 'Expected node to have styles {"display"=>"inline"}. Actual styles were {"display"=>"block"}')
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'should wait for style', requires: %i[css js] do
|
19
|
+
@session.visit('/with_js')
|
20
|
+
el = @session.find(:css, '#change')
|
21
|
+
@session.click_link('Change size')
|
22
|
+
expect do
|
23
|
+
el.assert_matches_style({ 'font-size': '50px' }, wait: 3)
|
24
|
+
end.not_to raise_error
|
25
|
+
end
|
26
|
+
end
|
@@ -1,23 +1,42 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
Capybara::SpecHelper.spec '#assert_text' do
|
4
|
-
it
|
4
|
+
it 'should be true if the given text is on the page' do
|
5
5
|
@session.visit('/with_html')
|
6
|
-
expect(@session.assert_text('est')).to
|
7
|
-
expect(@session.assert_text('Lorem')).to
|
8
|
-
expect(@session.assert_text('Redirect')).to
|
9
|
-
expect(@session.assert_text(:Redirect)).to
|
10
|
-
expect(@session.assert_text('text with whitespace')).to
|
6
|
+
expect(@session.assert_text('est')).to be(true)
|
7
|
+
expect(@session.assert_text('Lorem')).to be(true)
|
8
|
+
expect(@session.assert_text('Redirect')).to be(true)
|
9
|
+
expect(@session.assert_text(:Redirect)).to be(true)
|
10
|
+
expect(@session.assert_text('text with whitespace')).to be(true)
|
11
11
|
end
|
12
12
|
|
13
|
-
it
|
13
|
+
it 'should support collapsing whitespace' do
|
14
|
+
@session.visit('/with_html')
|
15
|
+
expect(@session.assert_text('text with whitespace', normalize_ws: true)).to be(true)
|
16
|
+
end
|
17
|
+
|
18
|
+
context 'with enabled default collapsing whitespace' do
|
19
|
+
before { Capybara.default_normalize_ws = true }
|
20
|
+
|
21
|
+
it 'should be true if the given unnormalized text is on the page' do
|
22
|
+
@session.visit('/with_html')
|
23
|
+
expect(@session.assert_text('text with whitespace', normalize_ws: false)).to be(true)
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'should support collapsing whitespace' do
|
27
|
+
@session.visit('/with_html')
|
28
|
+
expect(@session.assert_text('text with whitespace')).to be(true)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'should take scopes into account' do
|
14
33
|
@session.visit('/with_html')
|
15
34
|
@session.within("//a[@title='awesome title']") do
|
16
|
-
expect(@session.assert_text('labore')).to
|
35
|
+
expect(@session.assert_text('labore')).to be(true)
|
17
36
|
end
|
18
37
|
end
|
19
38
|
|
20
|
-
it
|
39
|
+
it 'should raise if scoped to an element which does not have the text' do
|
21
40
|
@session.visit('/with_html')
|
22
41
|
@session.within("//a[@title='awesome title']") do
|
23
42
|
expect do
|
@@ -26,18 +45,18 @@ Capybara::SpecHelper.spec '#assert_text' do
|
|
26
45
|
end
|
27
46
|
end
|
28
47
|
|
29
|
-
it
|
48
|
+
it 'should be true if :all given and text is invisible.' do
|
30
49
|
@session.visit('/with_html')
|
31
|
-
expect(@session.assert_text(:all, 'Some of this text is hidden!')).to
|
50
|
+
expect(@session.assert_text(:all, 'Some of this text is hidden!')).to be(true)
|
32
51
|
end
|
33
52
|
|
34
|
-
it
|
53
|
+
it 'should be true if `Capybara.ignore_hidden_elements = true` and text is invisible.' do
|
35
54
|
Capybara.ignore_hidden_elements = false
|
36
55
|
@session.visit('/with_html')
|
37
|
-
expect(@session.assert_text('Some of this text is hidden!')).to
|
56
|
+
expect(@session.assert_text('Some of this text is hidden!')).to be(true)
|
38
57
|
end
|
39
58
|
|
40
|
-
it
|
59
|
+
it 'should raise error with a helpful message if the requested text is present but invisible' do
|
41
60
|
@session.visit('/with_html')
|
42
61
|
el = @session.find(:css, '#hidden-text')
|
43
62
|
expect do
|
@@ -45,14 +64,14 @@ Capybara::SpecHelper.spec '#assert_text' do
|
|
45
64
|
end.to raise_error(Capybara::ExpectationNotMet, /it was found 1 time including non-visible text/)
|
46
65
|
end
|
47
66
|
|
48
|
-
it
|
67
|
+
it 'should raise error with a helpful message if the requested text is present but with incorrect case' do
|
49
68
|
@session.visit('/with_html')
|
50
69
|
expect do
|
51
70
|
@session.assert_text('Text With Whitespace')
|
52
71
|
end.to raise_error(Capybara::ExpectationNotMet, /it was found 1 time using a case insensitive search/)
|
53
72
|
end
|
54
73
|
|
55
|
-
it
|
74
|
+
it 'should raise error with helpful message if requested text is present but invisible and with incorrect case', requires: [:js] do
|
56
75
|
@session.visit('/with_html')
|
57
76
|
el = @session.find(:css, '#uppercase')
|
58
77
|
expect do
|
@@ -60,54 +79,55 @@ Capybara::SpecHelper.spec '#assert_text' do
|
|
60
79
|
end.to raise_error(Capybara::ExpectationNotMet, /it was found 1 time using a case insensitive search and it was found 1 time including non-visible text/)
|
61
80
|
end
|
62
81
|
|
63
|
-
it
|
82
|
+
it 'should raise the correct error if requested text is missing but contains regex special characters' do
|
64
83
|
@session.visit('/with_html')
|
65
84
|
expect do
|
66
85
|
@session.assert_text('[]*.')
|
67
86
|
end.to raise_error(Capybara::ExpectationNotMet, /expected to find text "\[\]\*\."/)
|
68
87
|
end
|
69
88
|
|
70
|
-
it
|
89
|
+
it 'should be true if the text in the page matches given regexp' do
|
71
90
|
@session.visit('/with_html')
|
72
|
-
expect(@session.assert_text(/Lorem/)).to
|
91
|
+
expect(@session.assert_text(/Lorem/)).to be(true)
|
73
92
|
end
|
74
93
|
|
75
|
-
it "should
|
94
|
+
it "should raise error if the text in the page doesn't match given regexp" do
|
76
95
|
@session.visit('/with_html')
|
77
96
|
expect do
|
78
97
|
@session.assert_text(/xxxxyzzz/)
|
79
|
-
end.to raise_error(Capybara::ExpectationNotMet,
|
98
|
+
end.to raise_error(Capybara::ExpectationNotMet, %r{\Aexpected to find text matching /xxxxyzzz/ in "This is a test\\nHeader Class(.+)"\Z})
|
80
99
|
end
|
81
100
|
|
82
|
-
it
|
101
|
+
it 'should escape any characters that would have special meaning in a regexp' do
|
83
102
|
@session.visit('/with_html')
|
84
103
|
expect do
|
85
104
|
@session.assert_text('.orem')
|
86
105
|
end.to raise_error(Capybara::ExpectationNotMet)
|
87
106
|
end
|
88
107
|
|
89
|
-
it
|
108
|
+
it 'should wait for text to appear', requires: [:js] do
|
109
|
+
Capybara.default_max_wait_time = 2
|
90
110
|
@session.visit('/with_js')
|
91
111
|
@session.click_link('Click me')
|
92
|
-
expect(@session.assert_text('Has been clicked')).to
|
112
|
+
expect(@session.assert_text('Has been clicked')).to be(true)
|
93
113
|
end
|
94
114
|
|
95
|
-
context
|
96
|
-
it
|
115
|
+
context 'with between' do
|
116
|
+
it 'should be true if the text occurs within the range given' do
|
97
117
|
@session.visit('/with_count')
|
98
|
-
expect(@session.assert_text('count', between: 1..3)).to
|
118
|
+
expect(@session.assert_text('count', between: 1..3)).to be(true)
|
99
119
|
end
|
100
120
|
|
101
|
-
it
|
121
|
+
it 'should be false if the text occurs more or fewer times than range' do
|
102
122
|
@session.visit('/with_html')
|
103
123
|
expect do
|
104
124
|
@session.find(:css, '.number').assert_text(/\d/, between: 0..1)
|
105
|
-
end.to raise_error(Capybara::ExpectationNotMet,
|
125
|
+
end.to raise_error(Capybara::ExpectationNotMet, 'expected to find text matching /\\d/ between 0 and 1 times but found 2 times in "42"')
|
106
126
|
end
|
107
127
|
end
|
108
128
|
|
109
|
-
context
|
110
|
-
it
|
129
|
+
context 'with wait', requires: [:js] do
|
130
|
+
it 'should find element if it appears before given wait duration' do
|
111
131
|
Capybara.using_wait_time(0) do
|
112
132
|
@session.visit('/with_js')
|
113
133
|
@session.find(:css, '#reload-list').click
|
@@ -115,7 +135,7 @@ Capybara::SpecHelper.spec '#assert_text' do
|
|
115
135
|
end
|
116
136
|
end
|
117
137
|
|
118
|
-
it
|
138
|
+
it 'should raise error if it appears after given wait duration' do
|
119
139
|
Capybara.using_wait_time(0) do
|
120
140
|
@session.visit('/with_js')
|
121
141
|
@session.find(:css, '#reload-list').click
|
@@ -128,7 +148,7 @@ Capybara::SpecHelper.spec '#assert_text' do
|
|
128
148
|
end
|
129
149
|
|
130
150
|
context 'with multiple count filters' do
|
131
|
-
before
|
151
|
+
before do
|
132
152
|
@session.visit('/with_html')
|
133
153
|
end
|
134
154
|
|
@@ -137,58 +157,62 @@ Capybara::SpecHelper.spec '#assert_text' do
|
|
137
157
|
minimum: 6,
|
138
158
|
maximum: 0,
|
139
159
|
between: 0..4 }
|
140
|
-
expect { @session.assert_text('Header', o) }.not_to raise_error
|
160
|
+
expect { @session.assert_text('Header', **o) }.not_to raise_error
|
141
161
|
end
|
162
|
+
|
142
163
|
context 'with no :count expectation' do
|
143
164
|
it 'fails if :minimum is not met' do
|
144
165
|
o = { minimum: 6,
|
145
166
|
maximum: 5,
|
146
167
|
between: 2..7 }
|
147
|
-
expect { @session.assert_text('Header', o) }.to raise_error(Capybara::ExpectationNotMet)
|
168
|
+
expect { @session.assert_text('Header', **o) }.to raise_error(Capybara::ExpectationNotMet)
|
148
169
|
end
|
170
|
+
|
149
171
|
it 'fails if :maximum is not met' do
|
150
172
|
o = { minimum: 0,
|
151
173
|
maximum: 0,
|
152
174
|
between: 2..7 }
|
153
|
-
expect { @session.assert_text('Header', o) }.to raise_error(Capybara::ExpectationNotMet)
|
175
|
+
expect { @session.assert_text('Header', **o) }.to raise_error(Capybara::ExpectationNotMet)
|
154
176
|
end
|
177
|
+
|
155
178
|
it 'fails if :between is not met' do
|
156
179
|
o = { minimum: 0,
|
157
180
|
maximum: 5,
|
158
181
|
between: 0..4 }
|
159
|
-
expect { @session.assert_text('Header', o) }.to raise_error(Capybara::ExpectationNotMet)
|
182
|
+
expect { @session.assert_text('Header', **o) }.to raise_error(Capybara::ExpectationNotMet)
|
160
183
|
end
|
184
|
+
|
161
185
|
it 'succeeds if all combineable expectations are met' do
|
162
186
|
o = { minimum: 0,
|
163
187
|
maximum: 5,
|
164
188
|
between: 2..7 }
|
165
|
-
expect { @session.assert_text('Header', o) }.not_to raise_error
|
189
|
+
expect { @session.assert_text('Header', **o) }.not_to raise_error
|
166
190
|
end
|
167
191
|
end
|
168
192
|
end
|
169
193
|
end
|
170
194
|
|
171
195
|
Capybara::SpecHelper.spec '#assert_no_text' do
|
172
|
-
it
|
196
|
+
it 'should raise error if the given text is on the page at least once' do
|
173
197
|
@session.visit('/with_html')
|
174
198
|
expect do
|
175
199
|
@session.assert_no_text('Lorem')
|
176
200
|
end.to raise_error(Capybara::ExpectationNotMet, /\Aexpected not to find text "Lorem" in "This is a test.*"\z/)
|
177
201
|
end
|
178
202
|
|
179
|
-
it
|
203
|
+
it 'should be true if scoped to an element which does not have the text' do
|
180
204
|
@session.visit('/with_html')
|
181
205
|
@session.within("//a[@title='awesome title']") do
|
182
|
-
expect(@session.assert_no_text('monkey')).to
|
206
|
+
expect(@session.assert_no_text('monkey')).to be(true)
|
183
207
|
end
|
184
208
|
end
|
185
209
|
|
186
|
-
it
|
210
|
+
it 'should be true if the given text is on the page but not visible' do
|
187
211
|
@session.visit('/with_html')
|
188
|
-
expect(@session.assert_no_text('Inside element with hidden ancestor')).to
|
212
|
+
expect(@session.assert_no_text('Inside element with hidden ancestor')).to be(true)
|
189
213
|
end
|
190
214
|
|
191
|
-
it
|
215
|
+
it 'should raise error if :all given and text is invisible.' do
|
192
216
|
@session.visit('/with_html')
|
193
217
|
el = @session.find(:css, '#hidden-text', visible: false)
|
194
218
|
expect do
|
@@ -196,7 +220,7 @@ Capybara::SpecHelper.spec '#assert_no_text' do
|
|
196
220
|
end.to raise_error(Capybara::ExpectationNotMet, 'expected not to find text "Some of this text is hidden!" in "Some of this text is hidden!"')
|
197
221
|
end
|
198
222
|
|
199
|
-
it
|
223
|
+
it 'should raise error if :all given and text is invisible.' do
|
200
224
|
@session.visit('/with_html')
|
201
225
|
el = @session.find(:css, '#some-hidden-text', visible: false)
|
202
226
|
expect do
|
@@ -209,22 +233,22 @@ Capybara::SpecHelper.spec '#assert_no_text' do
|
|
209
233
|
@session.assert_no_text(/xxxxyzzz/)
|
210
234
|
end
|
211
235
|
|
212
|
-
context
|
213
|
-
it
|
236
|
+
context 'with count' do
|
237
|
+
it 'should be true if the text occurs within the range given' do
|
214
238
|
@session.visit('/with_count')
|
215
|
-
expect(@session.assert_text('count', count: 2)).to
|
239
|
+
expect(@session.assert_text('count', count: 2)).to be(true)
|
216
240
|
end
|
217
241
|
|
218
|
-
it
|
242
|
+
it 'should be false if the text occurs more or fewer times than range' do
|
219
243
|
@session.visit('/with_html')
|
220
244
|
expect do
|
221
245
|
@session.find(:css, '.number').assert_text(/\d/, count: 1)
|
222
|
-
end.to raise_error(Capybara::ExpectationNotMet,
|
246
|
+
end.to raise_error(Capybara::ExpectationNotMet, 'expected to find text matching /\\d/ 1 time but found 2 times in "42"')
|
223
247
|
end
|
224
248
|
end
|
225
249
|
|
226
|
-
context
|
227
|
-
it
|
250
|
+
context 'with wait', requires: [:js] do
|
251
|
+
it 'should not find element if it appears after given wait duration' do
|
228
252
|
@session.visit('/with_js')
|
229
253
|
@session.click_link('Click me')
|
230
254
|
@session.find(:css, '#reload-list').click
|
@@ -11,13 +11,13 @@ Capybara::SpecHelper.spec '#assert_title' do
|
|
11
11
|
end.not_to raise_error
|
12
12
|
end
|
13
13
|
|
14
|
-
it
|
14
|
+
it 'should not raise when given an empty string' do
|
15
15
|
expect do
|
16
16
|
@session.assert_title('')
|
17
17
|
end.not_to raise_error
|
18
18
|
end
|
19
19
|
|
20
|
-
it
|
20
|
+
it 'should allow regexp matches' do
|
21
21
|
expect do
|
22
22
|
@session.assert_title(/w[a-z]{3}_js/)
|
23
23
|
end.not_to raise_error
|
@@ -27,10 +27,10 @@ Capybara::SpecHelper.spec '#assert_title' do
|
|
27
27
|
end.to raise_error(Capybara::ExpectationNotMet, 'expected "with_js" to match /w[a-z]{10}_js/')
|
28
28
|
end
|
29
29
|
|
30
|
-
it
|
31
|
-
@session.click_link(
|
30
|
+
it 'should wait for title', requires: [:js] do
|
31
|
+
@session.click_link('Change title')
|
32
32
|
expect do
|
33
|
-
@session.assert_title(
|
33
|
+
@session.assert_title('changed title', wait: 3)
|
34
34
|
end.not_to raise_error
|
35
35
|
end
|
36
36
|
|
@@ -40,12 +40,12 @@ Capybara::SpecHelper.spec '#assert_title' do
|
|
40
40
|
end.to raise_error(Capybara::ExpectationNotMet, 'expected "with_js" to include "monkey"')
|
41
41
|
end
|
42
42
|
|
43
|
-
it
|
43
|
+
it 'should not normalize given title' do
|
44
44
|
@session.visit('/with_js')
|
45
45
|
expect { @session.assert_title(' with_js ') }.to raise_error(Capybara::ExpectationNotMet)
|
46
46
|
end
|
47
47
|
|
48
|
-
it
|
48
|
+
it 'should match correctly normalized title' do
|
49
49
|
uri = Addressable::URI.parse('/with_title')
|
50
50
|
uri.query_values = { title: ' with space title ' }
|
51
51
|
@session.visit(uri.to_s)
|
@@ -53,7 +53,7 @@ Capybara::SpecHelper.spec '#assert_title' do
|
|
53
53
|
expect { @session.assert_title('with space title') }.to raise_error(Capybara::ExpectationNotMet)
|
54
54
|
end
|
55
55
|
|
56
|
-
it
|
56
|
+
it 'should not normalize given title in error message' do
|
57
57
|
expect do
|
58
58
|
@session.assert_title(2)
|
59
59
|
end.to raise_error(Capybara::ExpectationNotMet, 'expected "with_js" to include "2"')
|
@@ -65,21 +65,21 @@ Capybara::SpecHelper.spec '#assert_no_title' do
|
|
65
65
|
@session.visit('/with_js')
|
66
66
|
end
|
67
67
|
|
68
|
-
it
|
68
|
+
it 'should raise error if the title contains the given string' do
|
69
69
|
expect do
|
70
70
|
@session.assert_no_title('with_j')
|
71
71
|
end.to raise_error(Capybara::ExpectationNotMet, 'expected "with_js" not to include "with_j"')
|
72
72
|
end
|
73
73
|
|
74
|
-
it
|
74
|
+
it 'should allow regexp matches' do
|
75
75
|
expect do
|
76
76
|
@session.assert_no_title(/w[a-z]{3}_js/)
|
77
77
|
end.to raise_error(Capybara::ExpectationNotMet, 'expected "with_js" not to match /w[a-z]{3}_js/')
|
78
78
|
@session.assert_no_title(/monkey/)
|
79
79
|
end
|
80
80
|
|
81
|
-
it
|
82
|
-
@session.click_link(
|
81
|
+
it 'should wait for title to disappear', requires: [:js] do
|
82
|
+
@session.click_link('Change title')
|
83
83
|
expect do
|
84
84
|
@session.assert_no_title('with_js', wait: 3)
|
85
85
|
end.not_to raise_error
|