capybara 3.3.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 -0
- data/History.md +803 -13
- data/License.txt +1 -1
- data/README.md +257 -84
- data/lib/capybara/config.rb +25 -9
- data/lib/capybara/cucumber.rb +1 -1
- data/lib/capybara/driver/base.rb +17 -3
- data/lib/capybara/driver/node.rb +31 -6
- data/lib/capybara/dsl.rb +9 -7
- data/lib/capybara/helpers.rb +31 -7
- data/lib/capybara/minitest/spec.rb +180 -88
- data/lib/capybara/minitest.rb +262 -149
- data/lib/capybara/node/actions.rb +202 -116
- data/lib/capybara/node/base.rb +34 -19
- data/lib/capybara/node/document.rb +14 -2
- data/lib/capybara/node/document_matchers.rb +10 -12
- data/lib/capybara/node/element.rb +269 -115
- data/lib/capybara/node/finders.rb +99 -77
- data/lib/capybara/node/matchers.rb +327 -151
- data/lib/capybara/node/simple.rb +48 -13
- 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 +8 -9
- data/lib/capybara/queries/base_query.rb +23 -16
- data/lib/capybara/queries/current_path_query.rb +16 -6
- data/lib/capybara/queries/match_query.rb +1 -0
- data/lib/capybara/queries/selector_query.rb +587 -130
- data/lib/capybara/queries/sibling_query.rb +8 -6
- data/lib/capybara/queries/style_query.rb +6 -2
- data/lib/capybara/queries/text_query.rb +28 -14
- data/lib/capybara/queries/title_query.rb +2 -2
- data/lib/capybara/rack_test/browser.rb +92 -25
- 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 +68 -41
- data/lib/capybara/rack_test/node.rb +106 -39
- 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 +75 -52
- data/lib/capybara/rspec/features.rb +7 -7
- 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 +141 -339
- data/lib/capybara/rspec.rb +2 -0
- 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 +27 -25
- 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 +73 -25
- data/lib/capybara/selector/filters/base.rb +24 -5
- data/lib/capybara/selector/filters/expression_filter.rb +3 -3
- data/lib/capybara/selector/filters/locator_filter.rb +29 -0
- data/lib/capybara/selector/filters/node_filter.rb +16 -2
- data/lib/capybara/selector/regexp_disassembler.rb +211 -0
- data/lib/capybara/selector/selector.rb +85 -348
- data/lib/capybara/selector/xpath_extensions.rb +17 -0
- data/lib/capybara/selector.rb +474 -447
- 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 +255 -143
- data/lib/capybara/selenium/driver_specializations/chrome_driver.rb +93 -11
- 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 +436 -134
- 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 +56 -19
- data/lib/capybara/server/checker.rb +9 -3
- data/lib/capybara/server/middleware.rb +28 -12
- data/lib/capybara/server.rb +33 -10
- data/lib/capybara/session/config.rb +34 -10
- data/lib/capybara/session/matchers.rb +23 -16
- data/lib/capybara/session.rb +230 -170
- 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 +121 -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 +127 -40
- 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_spec.rb +21 -18
- data/lib/capybara/spec/session/assert_selector_spec.rb +52 -58
- data/lib/capybara/spec/session/assert_style_spec.rb +7 -7
- data/lib/capybara/spec/session/assert_text_spec.rb +74 -50
- data/lib/capybara/spec/session/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 +6 -6
- data/lib/capybara/spec/session/check_spec.rb +102 -47
- data/lib/capybara/spec/session/choose_spec.rb +58 -32
- data/lib/capybara/spec/session/click_button_spec.rb +219 -163
- data/lib/capybara/spec/session/click_link_or_button_spec.rb +49 -23
- data/lib/capybara/spec/session/click_link_spec.rb +77 -54
- data/lib/capybara/spec/session/current_scope_spec.rb +8 -8
- data/lib/capybara/spec/session/current_url_spec.rb +38 -29
- 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_spec.rb +8 -8
- data/lib/capybara/spec/session/element/match_css_spec.rb +16 -10
- data/lib/capybara/spec/session/element/match_xpath_spec.rb +6 -6
- data/lib/capybara/spec/session/element/matches_selector_spec.rb +68 -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 +101 -46
- data/lib/capybara/spec/session/find_button_spec.rb +23 -23
- data/lib/capybara/spec/session/find_by_id_spec.rb +7 -7
- data/lib/capybara/spec/session/find_field_spec.rb +32 -30
- data/lib/capybara/spec/session/find_link_spec.rb +31 -21
- data/lib/capybara/spec/session/find_spec.rb +244 -141
- data/lib/capybara/spec/session/first_spec.rb +43 -43
- data/lib/capybara/spec/session/frame/frame_title_spec.rb +5 -5
- data/lib/capybara/spec/session/frame/frame_url_spec.rb +5 -5
- data/lib/capybara/spec/session/frame/switch_to_frame_spec.rb +30 -18
- data/lib/capybara/spec/session/frame/within_frame_spec.rb +45 -18
- 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 +94 -13
- data/lib/capybara/spec/session/has_css_spec.rb +272 -132
- 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 +44 -4
- data/lib/capybara/spec/session/has_none_selectors_spec.rb +31 -31
- data/lib/capybara/spec/session/has_select_spec.rb +84 -50
- data/lib/capybara/spec/session/has_selector_spec.rb +111 -71
- 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_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 +894 -142
- data/lib/capybara/spec/session/node_wrapper_spec.rb +10 -7
- data/lib/capybara/spec/session/refresh_spec.rb +9 -7
- data/lib/capybara/spec/session/reset_session_spec.rb +63 -35
- data/lib/capybara/spec/session/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 +2 -2
- data/lib/capybara/spec/session/save_page_spec.rb +37 -37
- data/lib/capybara/spec/session/save_screenshot_spec.rb +10 -10
- 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 +85 -85
- data/lib/capybara/spec/session/selectors_spec.rb +49 -18
- data/lib/capybara/spec/session/sibling_spec.rb +9 -9
- data/lib/capybara/spec/session/text_spec.rb +25 -24
- data/lib/capybara/spec/session/title_spec.rb +7 -6
- data/lib/capybara/spec/session/uncheck_spec.rb +33 -21
- data/lib/capybara/spec/session/unselect_spec.rb +37 -37
- data/lib/capybara/spec/session/visit_spec.rb +68 -49
- data/lib/capybara/spec/session/window/become_closed_spec.rb +20 -17
- data/lib/capybara/spec/session/window/current_window_spec.rb +1 -1
- data/lib/capybara/spec/session/window/switch_to_window_spec.rb +20 -16
- data/lib/capybara/spec/session/window/window_opened_by_spec.rb +6 -2
- data/lib/capybara/spec/session/window/window_spec.rb +62 -63
- data/lib/capybara/spec/session/window/windows_spec.rb +5 -1
- data/lib/capybara/spec/session/window/within_window_spec.rb +14 -14
- data/lib/capybara/spec/session/within_spec.rb +79 -42
- data/lib/capybara/spec/spec_helper.rb +41 -53
- data/lib/capybara/spec/test_app.rb +132 -43
- data/lib/capybara/spec/views/animated.erb +49 -0
- data/lib/capybara/spec/views/form.erb +139 -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 +67 -0
- data/lib/capybara/spec/views/with_animation.erb +39 -4
- 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 +37 -9
- 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 +26 -5
- data/lib/capybara/spec/views/with_jstree.erb +26 -0
- data/lib/capybara/spec/views/with_namespace.erb +1 -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 +19 -25
- data/lib/capybara.rb +126 -111
- data/spec/basic_node_spec.rb +59 -34
- data/spec/capybara_spec.rb +56 -44
- data/spec/counter_spec.rb +35 -0
- data/spec/css_builder_spec.rb +101 -0
- data/spec/css_splitter_spec.rb +8 -8
- data/spec/dsl_spec.rb +79 -52
- data/spec/filter_set_spec.rb +9 -9
- 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 +45 -7
- data/spec/minitest_spec_spec.rb +87 -64
- data/spec/per_session_config_spec.rb +6 -6
- data/spec/rack_test_spec.rb +172 -116
- data/spec/regexp_dissassembler_spec.rb +250 -0
- data/spec/result_spec.rb +80 -72
- data/spec/rspec/features_spec.rb +21 -16
- data/spec/rspec/scenarios_spec.rb +10 -6
- data/spec/rspec/shared_spec_matchers.rb +407 -365
- data/spec/rspec/views_spec.rb +3 -3
- data/spec/rspec_matchers_spec.rb +35 -10
- data/spec/rspec_spec.rb +63 -41
- data/spec/sauce_spec_chrome.rb +43 -0
- data/spec/selector_spec.rb +334 -89
- data/spec/selenium_spec_chrome.rb +176 -62
- data/spec/selenium_spec_chrome_remote.rb +54 -14
- 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 +171 -97
- data/spec/session_spec.rb +34 -18
- data/spec/shared_selenium_node.rb +79 -0
- data/spec/shared_selenium_session.rb +344 -80
- data/spec/spec_helper.rb +124 -2
- data/spec/whitespace_normalizer_spec.rb +54 -0
- data/spec/xpath_builder_spec.rb +93 -0
- metadata +326 -28
- data/lib/capybara/rspec/compound.rb +0 -94
- data/lib/capybara/selenium/driver_specializations/marionette_driver.rb +0 -31
- data/lib/capybara/selenium/nodes/marionette_node.rb +0 -31
- data/lib/capybara/spec/session/has_style_spec.rb +0 -25
- 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 -167
|
@@ -1,69 +1,79 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
Capybara::SpecHelper.spec '#click_link_or_button' do
|
|
4
|
-
it
|
|
4
|
+
it 'should click on a link' do
|
|
5
5
|
@session.visit('/with_html')
|
|
6
6
|
@session.click_link_or_button('labore')
|
|
7
7
|
expect(@session).to have_content('Bar')
|
|
8
8
|
end
|
|
9
9
|
|
|
10
|
-
it
|
|
10
|
+
it 'should click on a button' do
|
|
11
11
|
@session.visit('/form')
|
|
12
12
|
@session.click_link_or_button('awe123')
|
|
13
13
|
expect(extract_results(@session)['first_name']).to eq('John')
|
|
14
14
|
end
|
|
15
15
|
|
|
16
|
-
it
|
|
16
|
+
it 'should click on a button with no type attribute' do
|
|
17
17
|
@session.visit('/form')
|
|
18
18
|
@session.click_link_or_button('no_type')
|
|
19
19
|
expect(extract_results(@session)['first_name']).to eq('John')
|
|
20
20
|
end
|
|
21
21
|
|
|
22
|
-
it
|
|
22
|
+
it 'should be aliased as click_on' do
|
|
23
23
|
@session.visit('/form')
|
|
24
24
|
@session.click_on('awe123')
|
|
25
25
|
expect(extract_results(@session)['first_name']).to eq('John')
|
|
26
26
|
end
|
|
27
27
|
|
|
28
|
-
it
|
|
28
|
+
it 'should wait for asynchronous load', requires: [:js] do
|
|
29
|
+
Capybara.default_max_wait_time = 2
|
|
29
30
|
@session.visit('/with_js')
|
|
30
31
|
@session.click_link('Click me')
|
|
31
32
|
@session.click_link_or_button('Has been clicked')
|
|
32
33
|
end
|
|
33
34
|
|
|
34
|
-
it
|
|
35
|
+
it 'casts to string' do
|
|
35
36
|
@session.visit('/form')
|
|
36
37
|
@session.click_link_or_button(:awe123)
|
|
37
38
|
expect(extract_results(@session)['first_name']).to eq('John')
|
|
38
39
|
end
|
|
39
40
|
|
|
40
|
-
context
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
context 'with test_id' do
|
|
42
|
+
it 'should click on a button' do
|
|
43
|
+
Capybara.test_id = 'data-test-id'
|
|
44
|
+
@session.visit('/form')
|
|
45
|
+
@session.click_link_or_button('test_id_button')
|
|
46
|
+
expect(extract_results(@session)['first_name']).to eq('John')
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
context 'with :exact option' do
|
|
51
|
+
context 'when `false`' do
|
|
52
|
+
it 'clicks on approximately matching link' do
|
|
43
53
|
@session.visit('/with_html')
|
|
44
54
|
@session.click_link_or_button('abore', exact: false)
|
|
45
55
|
expect(@session).to have_content('Bar')
|
|
46
56
|
end
|
|
47
57
|
|
|
48
|
-
it
|
|
58
|
+
it 'clicks on approximately matching button' do
|
|
49
59
|
@session.visit('/form')
|
|
50
60
|
@session.click_link_or_button('awe', exact: false)
|
|
51
61
|
expect(extract_results(@session)['first_name']).to eq('John')
|
|
52
62
|
end
|
|
53
63
|
end
|
|
54
64
|
|
|
55
|
-
context
|
|
56
|
-
it
|
|
65
|
+
context 'when `true`' do
|
|
66
|
+
it 'does not click on link which matches approximately' do
|
|
57
67
|
@session.visit('/with_html')
|
|
58
|
-
msg =
|
|
68
|
+
msg = 'Unable to find link or button "abore"'
|
|
59
69
|
expect do
|
|
60
70
|
@session.click_link_or_button('abore', exact: true)
|
|
61
71
|
end.to raise_error(Capybara::ElementNotFound, msg)
|
|
62
72
|
end
|
|
63
73
|
|
|
64
|
-
it
|
|
74
|
+
it 'does not click on approximately matching button' do
|
|
65
75
|
@session.visit('/form')
|
|
66
|
-
msg =
|
|
76
|
+
msg = 'Unable to find link or button "awe"'
|
|
67
77
|
|
|
68
78
|
expect do
|
|
69
79
|
@session.click_link_or_button('awe', exact: true)
|
|
@@ -73,40 +83,56 @@ Capybara::SpecHelper.spec '#click_link_or_button' do
|
|
|
73
83
|
end
|
|
74
84
|
|
|
75
85
|
context "with a locator that doesn't exist" do
|
|
76
|
-
it
|
|
86
|
+
it 'should raise an error' do
|
|
77
87
|
@session.visit('/with_html')
|
|
78
|
-
msg =
|
|
88
|
+
msg = 'Unable to find link or button "does not exist"'
|
|
79
89
|
expect do
|
|
80
90
|
@session.click_link_or_button('does not exist')
|
|
81
91
|
end.to raise_error(Capybara::ElementNotFound, msg)
|
|
82
92
|
end
|
|
83
93
|
end
|
|
84
94
|
|
|
85
|
-
context
|
|
86
|
-
it
|
|
95
|
+
context 'with :disabled option' do
|
|
96
|
+
it 'ignores disabled buttons when false' do
|
|
87
97
|
@session.visit('/form')
|
|
88
98
|
expect do
|
|
89
99
|
@session.click_link_or_button('Disabled button', disabled: false)
|
|
90
100
|
end.to raise_error(Capybara::ElementNotFound)
|
|
91
101
|
end
|
|
92
102
|
|
|
93
|
-
it
|
|
103
|
+
it 'ignores disabled buttons by default' do
|
|
94
104
|
@session.visit('/form')
|
|
95
105
|
expect do
|
|
96
106
|
@session.click_link_or_button('Disabled button')
|
|
97
107
|
end.to raise_error(Capybara::ElementNotFound)
|
|
98
108
|
end
|
|
99
109
|
|
|
100
|
-
it
|
|
110
|
+
it 'happily clicks on links which incorrectly have the disabled attribute' do
|
|
101
111
|
@session.visit('/with_html')
|
|
102
112
|
@session.click_link_or_button('Disabled link')
|
|
103
|
-
expect(@session).to have_content(
|
|
113
|
+
expect(@session).to have_content('Bar')
|
|
104
114
|
end
|
|
105
115
|
end
|
|
106
116
|
|
|
107
|
-
it
|
|
117
|
+
it 'should return the element clicked' do
|
|
108
118
|
@session.visit('/with_html')
|
|
109
119
|
link = @session.find(:link, 'Blank Anchor')
|
|
110
120
|
expect(@session.click_link_or_button('Blank Anchor')).to eq link
|
|
111
121
|
end
|
|
122
|
+
|
|
123
|
+
context 'with enable_aria_label' do
|
|
124
|
+
it 'should click on link' do
|
|
125
|
+
@session.visit('/with_html')
|
|
126
|
+
expect do
|
|
127
|
+
@session.click_link_or_button('Go to simple', enable_aria_label: true)
|
|
128
|
+
end.not_to raise_error
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
it 'should click on button' do
|
|
132
|
+
@session.visit('/form')
|
|
133
|
+
expect do
|
|
134
|
+
@session.click_link_or_button('Aria button', enable_aria_label: true)
|
|
135
|
+
end.not_to raise_error
|
|
136
|
+
end
|
|
137
|
+
end
|
|
112
138
|
end
|
|
@@ -5,212 +5,235 @@ Capybara::SpecHelper.spec '#click_link' do
|
|
|
5
5
|
@session.visit('/with_html')
|
|
6
6
|
end
|
|
7
7
|
|
|
8
|
-
it
|
|
8
|
+
it 'should wait for asynchronous load', requires: [:js] do
|
|
9
|
+
Capybara.default_max_wait_time = 2
|
|
9
10
|
@session.visit('/with_js')
|
|
10
11
|
@session.click_link('Click me')
|
|
11
12
|
@session.click_link('Has been clicked')
|
|
12
13
|
end
|
|
13
14
|
|
|
14
|
-
it
|
|
15
|
+
it 'casts to string' do
|
|
15
16
|
@session.click_link(:foo)
|
|
16
17
|
expect(@session).to have_content('Another World')
|
|
17
18
|
end
|
|
18
19
|
|
|
19
|
-
it
|
|
20
|
-
quietly { @session.visit(
|
|
20
|
+
it 'raises any errors caught inside the server', requires: [:server] do
|
|
21
|
+
quietly { @session.visit('/error') }
|
|
21
22
|
expect do
|
|
22
23
|
@session.click_link('foo')
|
|
23
24
|
end.to raise_error(TestApp::TestAppError)
|
|
24
25
|
end
|
|
25
26
|
|
|
26
|
-
context
|
|
27
|
-
it
|
|
27
|
+
context 'with id given' do
|
|
28
|
+
it 'should take user to the linked page' do
|
|
28
29
|
@session.click_link('foo')
|
|
29
30
|
expect(@session).to have_content('Another World')
|
|
30
31
|
end
|
|
31
32
|
end
|
|
32
33
|
|
|
33
|
-
context
|
|
34
|
-
it
|
|
34
|
+
context 'with text given' do
|
|
35
|
+
it 'should take user to the linked page' do
|
|
35
36
|
@session.click_link('labore')
|
|
36
37
|
expect(@session).to have_content('Bar')
|
|
37
38
|
end
|
|
38
39
|
|
|
39
|
-
it
|
|
40
|
+
it 'should accept partial matches', :exact_false do
|
|
40
41
|
@session.click_link('abo')
|
|
41
42
|
expect(@session).to have_content('Bar')
|
|
42
43
|
end
|
|
43
44
|
end
|
|
44
45
|
|
|
45
|
-
context
|
|
46
|
-
it
|
|
46
|
+
context 'with title given' do
|
|
47
|
+
it 'should take user to the linked page' do
|
|
47
48
|
@session.click_link('awesome title')
|
|
48
49
|
expect(@session).to have_content('Bar')
|
|
49
50
|
end
|
|
50
51
|
|
|
51
|
-
it
|
|
52
|
+
it 'should accept partial matches', :exact_false do
|
|
52
53
|
@session.click_link('some titl')
|
|
53
54
|
expect(@session).to have_content('Bar')
|
|
54
55
|
end
|
|
55
56
|
end
|
|
56
57
|
|
|
57
|
-
context
|
|
58
|
-
it
|
|
58
|
+
context 'with alternative text given to a contained image' do
|
|
59
|
+
it 'should take user to the linked page' do
|
|
59
60
|
@session.click_link('awesome image')
|
|
60
61
|
expect(@session).to have_content('Bar')
|
|
61
62
|
end
|
|
62
63
|
|
|
63
|
-
it
|
|
64
|
+
it 'should accept partial matches', :exact_false do
|
|
64
65
|
@session.click_link('some imag')
|
|
65
66
|
expect(@session).to have_content('Bar')
|
|
66
67
|
end
|
|
67
68
|
end
|
|
68
69
|
|
|
69
70
|
context "with a locator that doesn't exist" do
|
|
70
|
-
it
|
|
71
|
-
msg =
|
|
71
|
+
it 'should raise an error' do
|
|
72
|
+
msg = 'Unable to find link "does not exist"'
|
|
72
73
|
expect do
|
|
73
74
|
@session.click_link('does not exist')
|
|
74
75
|
end.to raise_error(Capybara::ElementNotFound, msg)
|
|
75
76
|
end
|
|
76
77
|
end
|
|
77
78
|
|
|
78
|
-
context
|
|
79
|
-
it
|
|
79
|
+
context 'with :href option given' do
|
|
80
|
+
it 'should find links with valid href' do
|
|
80
81
|
@session.click_link('labore', href: '/with_simple_html')
|
|
81
82
|
expect(@session).to have_content('Bar')
|
|
82
83
|
end
|
|
83
84
|
|
|
84
85
|
it "should raise error if link wasn't found" do
|
|
85
|
-
expect { @session.click_link('labore', href: 'invalid_href') }.to raise_error(Capybara::ElementNotFound)
|
|
86
|
+
expect { @session.click_link('labore', href: 'invalid_href') }.to raise_error(Capybara::ElementNotFound, /with href "invalid_href/)
|
|
86
87
|
end
|
|
87
88
|
end
|
|
88
89
|
|
|
89
|
-
context
|
|
90
|
-
it
|
|
90
|
+
context 'with a regex :href option given' do
|
|
91
|
+
it 'should find a link matching an all-matching regex pattern' do
|
|
91
92
|
@session.click_link('labore', href: /.+/)
|
|
92
93
|
expect(@session).to have_content('Bar')
|
|
93
94
|
end
|
|
94
95
|
|
|
95
|
-
it
|
|
96
|
+
it 'should find a link matching an exact regex pattern' do
|
|
96
97
|
@session.click_link('labore', href: %r{/with_simple_html})
|
|
97
98
|
expect(@session).to have_content('Bar')
|
|
98
99
|
end
|
|
99
100
|
|
|
100
|
-
it
|
|
101
|
+
it 'should find a link matching a partial regex pattern' do
|
|
101
102
|
@session.click_link('labore', href: %r{/with_simple})
|
|
102
103
|
expect(@session).to have_content('Bar')
|
|
103
104
|
end
|
|
104
105
|
|
|
105
106
|
it "should raise an error if no link's href matched the pattern" do
|
|
106
|
-
expect { @session.click_link('labore', href: /invalid_pattern/) }.to raise_error(Capybara::ElementNotFound)
|
|
107
|
-
expect { @session.click_link('labore', href: /.+d+/) }.to raise_error(Capybara::ElementNotFound)
|
|
107
|
+
expect { @session.click_link('labore', href: /invalid_pattern/) }.to raise_error(Capybara::ElementNotFound, %r{with href matching /invalid_pattern/})
|
|
108
|
+
expect { @session.click_link('labore', href: /.+d+/) }.to raise_error(Capybara::ElementNotFound, /#{Regexp.quote 'with href matching /.+d+/'}/)
|
|
108
109
|
end
|
|
109
110
|
|
|
110
111
|
context 'href: nil' do
|
|
111
|
-
it
|
|
112
|
+
it 'should not raise an error on links with no href attribute' do
|
|
112
113
|
expect { @session.click_link('No Href', href: nil) }.not_to raise_error
|
|
113
114
|
end
|
|
114
115
|
|
|
115
|
-
it
|
|
116
|
-
expect { @session.click_link('Blank Href', href: nil) }.to raise_error(Capybara::ElementNotFound)
|
|
117
|
-
expect { @session.click_link('Normal Anchor', href: nil) }.to raise_error(Capybara::ElementNotFound)
|
|
116
|
+
it 'should raise an error if href attribute exists' do
|
|
117
|
+
expect { @session.click_link('Blank Href', href: nil) }.to raise_error(Capybara::ElementNotFound, /with no href attribute/)
|
|
118
|
+
expect { @session.click_link('Normal Anchor', href: nil) }.to raise_error(Capybara::ElementNotFound, /with no href attribute/)
|
|
118
119
|
end
|
|
119
120
|
end
|
|
121
|
+
|
|
122
|
+
context 'href: false' do
|
|
123
|
+
it 'should not raise an error on links with no href attribute' do
|
|
124
|
+
expect { @session.click_link('No Href', href: false) }.not_to raise_error
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
it 'should not raise an error if href attribute exists' do
|
|
128
|
+
expect { @session.click_link('Blank Href', href: false) }.not_to raise_error
|
|
129
|
+
expect { @session.click_link('Normal Anchor', href: false) }.not_to raise_error
|
|
130
|
+
end
|
|
131
|
+
end
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
context 'with :target option given' do
|
|
135
|
+
it 'should find links with valid target' do
|
|
136
|
+
@session.click_link('labore', target: '_self')
|
|
137
|
+
expect(@session).to have_content('Bar')
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
it "should raise error if link wasn't found" do
|
|
141
|
+
expect { @session.click_link('labore', target: '_blank') }.to raise_error(Capybara::ElementNotFound, /Unable to find link "labore"/)
|
|
142
|
+
end
|
|
120
143
|
end
|
|
121
144
|
|
|
122
|
-
it
|
|
145
|
+
it 'should follow relative links' do
|
|
123
146
|
@session.visit('/')
|
|
124
147
|
@session.click_link('Relative')
|
|
125
148
|
expect(@session).to have_content('This is a test')
|
|
126
149
|
end
|
|
127
150
|
|
|
128
|
-
it
|
|
151
|
+
it 'should follow protocol relative links' do
|
|
129
152
|
@session.click_link('Protocol')
|
|
130
153
|
expect(@session).to have_content('Another World')
|
|
131
154
|
end
|
|
132
155
|
|
|
133
|
-
it
|
|
156
|
+
it 'should follow redirects' do
|
|
134
157
|
@session.click_link('Redirect')
|
|
135
158
|
expect(@session).to have_content('You landed')
|
|
136
159
|
end
|
|
137
160
|
|
|
138
|
-
it
|
|
161
|
+
it 'should follow redirects back to itself' do
|
|
139
162
|
@session.click_link('BackToMyself')
|
|
140
163
|
expect(@session).to have_css('#referrer', text: %r{/with_html$})
|
|
141
164
|
expect(@session).to have_content('This is a test')
|
|
142
165
|
end
|
|
143
166
|
|
|
144
|
-
it
|
|
167
|
+
it 'should add query string to current URL with naked query string' do
|
|
145
168
|
@session.click_link('Naked Query String')
|
|
146
169
|
expect(@session).to have_content('Query String sent')
|
|
147
170
|
end
|
|
148
171
|
|
|
149
|
-
it
|
|
150
|
-
@session.fill_in(
|
|
172
|
+
it 'should do nothing on anchor links' do
|
|
173
|
+
@session.fill_in('test_field', with: 'blah')
|
|
151
174
|
@session.click_link('Normal Anchor')
|
|
152
|
-
expect(@session.find_field(
|
|
175
|
+
expect(@session.find_field('test_field').value).to eq('blah')
|
|
153
176
|
@session.click_link('Blank Anchor')
|
|
154
|
-
expect(@session.find_field(
|
|
177
|
+
expect(@session.find_field('test_field').value).to eq('blah')
|
|
155
178
|
@session.click_link('Blank JS Anchor')
|
|
156
|
-
expect(@session.find_field(
|
|
179
|
+
expect(@session.find_field('test_field').value).to eq('blah')
|
|
157
180
|
end
|
|
158
181
|
|
|
159
|
-
it
|
|
160
|
-
@session.fill_in(
|
|
182
|
+
it 'should do nothing on URL+anchor links for the same page' do
|
|
183
|
+
@session.fill_in('test_field', with: 'blah')
|
|
161
184
|
@session.click_link('Anchor on same page')
|
|
162
|
-
expect(@session.find_field(
|
|
185
|
+
expect(@session.find_field('test_field').value).to eq('blah')
|
|
163
186
|
end
|
|
164
187
|
|
|
165
|
-
it
|
|
188
|
+
it 'should follow link on URL+anchor links for a different page' do
|
|
166
189
|
@session.click_link('Anchor on different page')
|
|
167
190
|
expect(@session).to have_content('Bar')
|
|
168
191
|
end
|
|
169
192
|
|
|
170
|
-
it
|
|
193
|
+
it 'should follow link on anchor if the path has regex special characters' do
|
|
171
194
|
@session.visit('/with.*html')
|
|
172
195
|
@session.click_link('Anchor on different page')
|
|
173
196
|
expect(@session).to have_content('Bar')
|
|
174
197
|
end
|
|
175
198
|
|
|
176
|
-
it
|
|
199
|
+
it 'should raise an error with links with no href' do
|
|
177
200
|
expect do
|
|
178
201
|
@session.click_link('No Href')
|
|
179
202
|
end.to raise_error(Capybara::ElementNotFound)
|
|
180
203
|
end
|
|
181
204
|
|
|
182
|
-
context
|
|
183
|
-
it
|
|
205
|
+
context 'with :exact option' do
|
|
206
|
+
it 'should accept partial matches when false' do
|
|
184
207
|
@session.click_link('abo', exact: false)
|
|
185
208
|
expect(@session).to have_content('Bar')
|
|
186
209
|
end
|
|
187
210
|
|
|
188
|
-
it
|
|
211
|
+
it 'should not accept partial matches when true' do
|
|
189
212
|
expect do
|
|
190
213
|
@session.click_link('abo', exact: true)
|
|
191
214
|
end.to raise_error(Capybara::ElementNotFound)
|
|
192
215
|
end
|
|
193
216
|
end
|
|
194
217
|
|
|
195
|
-
context
|
|
196
|
-
it
|
|
218
|
+
context 'without locator' do
|
|
219
|
+
it 'uses options' do
|
|
197
220
|
@session.click_link(href: '/foo')
|
|
198
221
|
expect(@session).to have_content('Another World')
|
|
199
222
|
end
|
|
200
223
|
end
|
|
201
224
|
|
|
202
|
-
it
|
|
225
|
+
it 'should return element clicked' do
|
|
203
226
|
el = @session.find(:link, 'Normal Anchor')
|
|
204
227
|
expect(@session.click_link('Normal Anchor')).to eq el
|
|
205
228
|
end
|
|
206
229
|
|
|
207
|
-
it
|
|
230
|
+
it 'can download a file', requires: [:download] do
|
|
208
231
|
# This requires the driver used for the test to be configured
|
|
209
232
|
# to download documents with the mime type "text/csv"
|
|
210
233
|
download_file = File.join(Capybara.save_path, 'download.csv')
|
|
211
234
|
expect(File).not_to exist(download_file)
|
|
212
235
|
@session.click_link('Download Me')
|
|
213
|
-
sleep 2
|
|
236
|
+
sleep 2 # allow time for file to download
|
|
214
237
|
expect(File).to exist(download_file)
|
|
215
238
|
FileUtils.rm_rf download_file
|
|
216
239
|
end
|
|
@@ -5,22 +5,22 @@ Capybara::SpecHelper.spec '#current_scope' do
|
|
|
5
5
|
@session.visit('/with_scope')
|
|
6
6
|
end
|
|
7
7
|
|
|
8
|
-
context
|
|
9
|
-
it
|
|
10
|
-
expect(@session.current_scope).to
|
|
8
|
+
context 'when not in a #within block' do
|
|
9
|
+
it 'should return the document' do
|
|
10
|
+
expect(@session.current_scope).to be_a Capybara::Node::Document
|
|
11
11
|
end
|
|
12
12
|
end
|
|
13
13
|
|
|
14
|
-
context
|
|
15
|
-
it
|
|
16
|
-
@session.within(:css,
|
|
14
|
+
context 'when in a #within block' do
|
|
15
|
+
it 'should return the element in scope' do
|
|
16
|
+
@session.within(:css, '#simple_first_name') do
|
|
17
17
|
expect(@session.current_scope[:name]).to eq 'first_name'
|
|
18
18
|
end
|
|
19
19
|
end
|
|
20
20
|
end
|
|
21
21
|
|
|
22
|
-
context
|
|
23
|
-
it
|
|
22
|
+
context 'when in a nested #within block' do
|
|
23
|
+
it 'should return the element in scope' do
|
|
24
24
|
@session.within("//div[@id='for_bar']") do
|
|
25
25
|
@session.within(".//input[@value='Peter']") do
|
|
26
26
|
expect(@session.current_scope[:name]).to eq 'form[first_name]'
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require
|
|
3
|
+
require 'capybara/spec/test_app'
|
|
4
4
|
|
|
5
5
|
Capybara::SpecHelper.spec '#current_url, #current_path, #current_host' do
|
|
6
6
|
before :all do # rubocop:disable RSpec/BeforeAfterAll
|
|
@@ -14,7 +14,7 @@ Capybara::SpecHelper.spec '#current_url, #current_path, #current_host' do
|
|
|
14
14
|
@servers.map { |s| "http://#{s.host}:#{s.port}" }
|
|
15
15
|
end
|
|
16
16
|
|
|
17
|
-
def should_be_on(server_index, path =
|
|
17
|
+
def should_be_on(server_index, path = '/host', scheme = 'http')
|
|
18
18
|
# Check that we are on /host on the given server
|
|
19
19
|
s = @servers[server_index]
|
|
20
20
|
|
|
@@ -22,7 +22,7 @@ Capybara::SpecHelper.spec '#current_url, #current_path, #current_host' do
|
|
|
22
22
|
|
|
23
23
|
expect(@session.current_url.chomp('?')).to eq("#{scheme}://#{s.host}:#{s.port}#{path}")
|
|
24
24
|
expect(@session.current_host).to eq("#{scheme}://#{s.host}") # no port
|
|
25
|
-
expect(@session.current_path).to eq(path)
|
|
25
|
+
expect(@session.current_path).to eq(path.split('#')[0])
|
|
26
26
|
# Server should agree with us
|
|
27
27
|
expect(@session).to have_content("Current host is #{scheme}://#{s.host}:#{s.port}") if path == '/host'
|
|
28
28
|
end
|
|
@@ -31,12 +31,12 @@ Capybara::SpecHelper.spec '#current_url, #current_path, #current_host' do
|
|
|
31
31
|
@session.visit("#{bases[0]}/host_links?absolute_host=#{bases[1]}")
|
|
32
32
|
end
|
|
33
33
|
|
|
34
|
-
it
|
|
34
|
+
it 'is affected by visiting a page directly' do
|
|
35
35
|
@session.visit("#{bases[0]}/host")
|
|
36
36
|
should_be_on 0
|
|
37
37
|
end
|
|
38
38
|
|
|
39
|
-
it
|
|
39
|
+
it 'returns to the app host when visiting a relative url' do
|
|
40
40
|
Capybara.app_host = bases[1]
|
|
41
41
|
@session.visit("#{bases[0]}/host")
|
|
42
42
|
should_be_on 0
|
|
@@ -45,67 +45,76 @@ Capybara::SpecHelper.spec '#current_url, #current_path, #current_host' do
|
|
|
45
45
|
Capybara.app_host = nil
|
|
46
46
|
end
|
|
47
47
|
|
|
48
|
-
it
|
|
48
|
+
it 'is affected by setting Capybara.app_host' do
|
|
49
49
|
Capybara.app_host = bases[0]
|
|
50
|
-
@session.visit(
|
|
50
|
+
@session.visit('/host')
|
|
51
51
|
should_be_on 0
|
|
52
52
|
Capybara.app_host = bases[1]
|
|
53
|
-
@session.visit(
|
|
53
|
+
@session.visit('/host')
|
|
54
54
|
should_be_on 1
|
|
55
55
|
Capybara.app_host = nil
|
|
56
56
|
end
|
|
57
57
|
|
|
58
|
-
it
|
|
58
|
+
it 'is unaffected by following a relative link' do
|
|
59
59
|
visit_host_links
|
|
60
|
-
@session.click_link(
|
|
60
|
+
@session.click_link('Relative Host')
|
|
61
61
|
should_be_on 0
|
|
62
62
|
end
|
|
63
63
|
|
|
64
|
-
it
|
|
64
|
+
it 'is affected by following an absolute link' do
|
|
65
65
|
visit_host_links
|
|
66
|
-
@session.click_link(
|
|
66
|
+
@session.click_link('Absolute Host')
|
|
67
67
|
should_be_on 1
|
|
68
68
|
end
|
|
69
69
|
|
|
70
|
-
it
|
|
70
|
+
it 'is unaffected by posting through a relative form' do
|
|
71
71
|
visit_host_links
|
|
72
|
-
@session.click_button(
|
|
72
|
+
@session.click_button('Relative Host')
|
|
73
73
|
should_be_on 0
|
|
74
74
|
end
|
|
75
75
|
|
|
76
|
-
it
|
|
76
|
+
it 'is affected by posting through an absolute form' do
|
|
77
77
|
visit_host_links
|
|
78
|
-
@session.click_button(
|
|
78
|
+
@session.click_button('Absolute Host')
|
|
79
79
|
should_be_on 1
|
|
80
80
|
end
|
|
81
81
|
|
|
82
|
-
it
|
|
82
|
+
it 'is affected by following a redirect' do
|
|
83
83
|
@session.visit("#{bases[0]}/redirect")
|
|
84
|
-
should_be_on 0,
|
|
84
|
+
should_be_on 0, '/landed'
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
it 'maintains fragment' do
|
|
88
|
+
@session.visit("#{bases[0]}/redirect#fragment")
|
|
89
|
+
should_be_on 0, '/landed#fragment'
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
it 'redirects to a fragment' do
|
|
93
|
+
@session.visit("#{bases[0]}/redirect_with_fragment")
|
|
94
|
+
should_be_on 0, '/landed#with_fragment'
|
|
85
95
|
end
|
|
86
96
|
|
|
87
|
-
it
|
|
88
|
-
@session.visit(
|
|
97
|
+
it 'is affected by pushState', requires: [:js] do
|
|
98
|
+
@session.visit('/with_js')
|
|
89
99
|
@session.execute_script("window.history.pushState({}, '', '/pushed')")
|
|
90
|
-
expect(@session.current_path).to eq(
|
|
100
|
+
expect(@session.current_path).to eq('/pushed')
|
|
91
101
|
end
|
|
92
102
|
|
|
93
|
-
it
|
|
94
|
-
@session.visit(
|
|
103
|
+
it 'is affected by replaceState', requires: [:js] do
|
|
104
|
+
@session.visit('/with_js')
|
|
95
105
|
@session.execute_script("window.history.replaceState({}, '', '/replaced')")
|
|
96
|
-
expect(@session.current_path).to eq(
|
|
106
|
+
expect(@session.current_path).to eq('/replaced')
|
|
97
107
|
end
|
|
98
108
|
|
|
99
|
-
it "doesn't raise exception on a nil current_url" do
|
|
100
|
-
skip "Only makes sense when there is a real driver" unless @session.respond_to?(:driver)
|
|
109
|
+
it "doesn't raise exception on a nil current_url", requires: [:driver] do
|
|
101
110
|
allow(@session.driver).to receive(:current_url).and_return(nil)
|
|
102
|
-
@session.visit(
|
|
111
|
+
@session.visit('/')
|
|
103
112
|
expect { @session.current_url }.not_to raise_exception
|
|
104
113
|
expect { @session.current_path }.not_to raise_exception
|
|
105
114
|
end
|
|
106
115
|
|
|
107
|
-
context
|
|
108
|
-
it
|
|
116
|
+
context 'within iframe', requires: [:frames] do
|
|
117
|
+
it 'should get the url of the top level browsing context' do
|
|
109
118
|
@session.visit('/within_frames')
|
|
110
119
|
expect(@session.current_url).to match(/within_frames\z/)
|
|
111
120
|
@session.within_frame('frameOne') do
|
|
@@ -5,14 +5,14 @@ Capybara::SpecHelper.spec '#dismiss_confirm', requires: [:modals] do
|
|
|
5
5
|
@session.visit('/with_js')
|
|
6
6
|
end
|
|
7
7
|
|
|
8
|
-
it
|
|
8
|
+
it 'should dismiss the confirm' do
|
|
9
9
|
@session.dismiss_confirm do
|
|
10
10
|
@session.click_link('Open confirm')
|
|
11
11
|
end
|
|
12
12
|
expect(@session).to have_xpath("//a[@id='open-confirm' and @confirmed='false']")
|
|
13
13
|
end
|
|
14
14
|
|
|
15
|
-
it
|
|
15
|
+
it 'should dismiss the confirm if the message matches' do
|
|
16
16
|
@session.dismiss_confirm 'Confirm opened' do
|
|
17
17
|
@session.click_link('Open confirm')
|
|
18
18
|
end
|
|
@@ -27,7 +27,7 @@ Capybara::SpecHelper.spec '#dismiss_confirm', requires: [:modals] do
|
|
|
27
27
|
end.to raise_error(Capybara::ModalNotFound)
|
|
28
28
|
end
|
|
29
29
|
|
|
30
|
-
it
|
|
30
|
+
it 'should return the message presented' do
|
|
31
31
|
message = @session.dismiss_confirm do
|
|
32
32
|
@session.click_link('Open confirm')
|
|
33
33
|
end
|