capybara 3.3.1 → 3.4.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.
Files changed (159) hide show
  1. checksums.yaml +4 -4
  2. data/History.md +16 -0
  3. data/README.md +5 -7
  4. data/lib/capybara.rb +7 -6
  5. data/lib/capybara/config.rb +1 -1
  6. data/lib/capybara/dsl.rb +2 -2
  7. data/lib/capybara/helpers.rb +3 -3
  8. data/lib/capybara/minitest/spec.rb +3 -3
  9. data/lib/capybara/node/actions.rb +18 -18
  10. data/lib/capybara/node/base.rb +1 -1
  11. data/lib/capybara/node/element.rb +2 -2
  12. data/lib/capybara/node/finders.rb +6 -6
  13. data/lib/capybara/node/matchers.rb +5 -5
  14. data/lib/capybara/node/simple.rb +2 -2
  15. data/lib/capybara/queries/ancestor_query.rb +1 -1
  16. data/lib/capybara/queries/base_query.rb +12 -11
  17. data/lib/capybara/queries/current_path_query.rb +1 -1
  18. data/lib/capybara/queries/selector_query.rb +39 -15
  19. data/lib/capybara/queries/sibling_query.rb +1 -1
  20. data/lib/capybara/queries/text_query.rb +1 -1
  21. data/lib/capybara/rack_test/browser.rb +7 -7
  22. data/lib/capybara/rack_test/driver.rb +1 -1
  23. data/lib/capybara/rack_test/form.rb +7 -7
  24. data/lib/capybara/rack_test/node.rb +16 -16
  25. data/lib/capybara/rails.rb +1 -1
  26. data/lib/capybara/result.rb +8 -4
  27. data/lib/capybara/rspec/features.rb +4 -4
  28. data/lib/capybara/rspec/matchers.rb +6 -6
  29. data/lib/capybara/selector.rb +106 -90
  30. data/lib/capybara/selector/css.rb +4 -4
  31. data/lib/capybara/selector/filter_set.rb +52 -8
  32. data/lib/capybara/selector/selector.rb +39 -15
  33. data/lib/capybara/selenium/driver.rb +10 -10
  34. data/lib/capybara/selenium/driver_specializations/chrome_driver.rb +8 -0
  35. data/lib/capybara/selenium/node.rb +9 -10
  36. data/lib/capybara/selenium/nodes/chrome_node.rb +18 -0
  37. data/lib/capybara/selenium/nodes/marionette_node.rb +32 -7
  38. data/lib/capybara/server.rb +3 -3
  39. data/lib/capybara/server/animation_disabler.rb +1 -1
  40. data/lib/capybara/server/middleware.rb +1 -1
  41. data/lib/capybara/session.rb +23 -19
  42. data/lib/capybara/session/config.rb +18 -3
  43. data/lib/capybara/spec/public/test.js +1 -1
  44. data/lib/capybara/spec/session/accept_alert_spec.rb +10 -10
  45. data/lib/capybara/spec/session/accept_confirm_spec.rb +3 -3
  46. data/lib/capybara/spec/session/accept_prompt_spec.rb +9 -10
  47. data/lib/capybara/spec/session/all_spec.rb +33 -32
  48. data/lib/capybara/spec/session/ancestor_spec.rb +19 -19
  49. data/lib/capybara/spec/session/assert_all_of_selectors_spec.rb +38 -38
  50. data/lib/capybara/spec/session/assert_current_path_spec.rb +16 -16
  51. data/lib/capybara/spec/session/assert_selector_spec.rb +53 -53
  52. data/lib/capybara/spec/session/assert_style_spec.rb +3 -3
  53. data/lib/capybara/spec/session/assert_text_spec.rb +31 -30
  54. data/lib/capybara/spec/session/assert_title_spec.rb +12 -12
  55. data/lib/capybara/spec/session/attach_file_spec.rb +51 -52
  56. data/lib/capybara/spec/session/body_spec.rb +6 -6
  57. data/lib/capybara/spec/session/check_spec.rb +52 -47
  58. data/lib/capybara/spec/session/choose_spec.rb +32 -32
  59. data/lib/capybara/spec/session/click_button_spec.rb +103 -103
  60. data/lib/capybara/spec/session/click_link_or_button_spec.rb +24 -23
  61. data/lib/capybara/spec/session/click_link_spec.rb +49 -48
  62. data/lib/capybara/spec/session/current_scope_spec.rb +7 -7
  63. data/lib/capybara/spec/session/current_url_spec.rb +26 -27
  64. data/lib/capybara/spec/session/dismiss_confirm_spec.rb +3 -3
  65. data/lib/capybara/spec/session/dismiss_prompt_spec.rb +2 -2
  66. data/lib/capybara/spec/session/element/assert_match_selector_spec.rb +8 -8
  67. data/lib/capybara/spec/session/element/match_css_spec.rb +10 -10
  68. data/lib/capybara/spec/session/element/match_xpath_spec.rb +6 -6
  69. data/lib/capybara/spec/session/element/matches_selector_spec.rb +51 -51
  70. data/lib/capybara/spec/session/evaluate_async_script_spec.rb +7 -7
  71. data/lib/capybara/spec/session/evaluate_script_spec.rb +15 -8
  72. data/lib/capybara/spec/session/execute_script_spec.rb +7 -7
  73. data/lib/capybara/spec/session/fill_in_spec.rb +43 -42
  74. data/lib/capybara/spec/session/find_button_spec.rb +23 -23
  75. data/lib/capybara/spec/session/find_by_id_spec.rb +7 -7
  76. data/lib/capybara/spec/session/find_field_spec.rb +32 -30
  77. data/lib/capybara/spec/session/find_link_spec.rb +21 -21
  78. data/lib/capybara/spec/session/find_spec.rb +153 -135
  79. data/lib/capybara/spec/session/first_spec.rb +41 -41
  80. data/lib/capybara/spec/session/frame/frame_title_spec.rb +5 -5
  81. data/lib/capybara/spec/session/frame/frame_url_spec.rb +5 -5
  82. data/lib/capybara/spec/session/frame/switch_to_frame_spec.rb +17 -17
  83. data/lib/capybara/spec/session/frame/within_frame_spec.rb +31 -17
  84. data/lib/capybara/spec/session/go_back_spec.rb +1 -1
  85. data/lib/capybara/spec/session/go_forward_spec.rb +1 -1
  86. data/lib/capybara/spec/session/has_all_selectors_spec.rb +17 -17
  87. data/lib/capybara/spec/session/has_button_spec.rb +13 -13
  88. data/lib/capybara/spec/session/has_css_spec.rb +133 -131
  89. data/lib/capybara/spec/session/has_current_path_spec.rb +29 -29
  90. data/lib/capybara/spec/session/has_field_spec.rb +58 -58
  91. data/lib/capybara/spec/session/has_link_spec.rb +4 -4
  92. data/lib/capybara/spec/session/has_none_selectors_spec.rb +24 -24
  93. data/lib/capybara/spec/session/has_select_spec.rb +43 -43
  94. data/lib/capybara/spec/session/has_selector_spec.rb +71 -71
  95. data/lib/capybara/spec/session/has_style_spec.rb +3 -3
  96. data/lib/capybara/spec/session/has_table_spec.rb +4 -4
  97. data/lib/capybara/spec/session/has_text_spec.rb +53 -52
  98. data/lib/capybara/spec/session/has_title_spec.rb +14 -14
  99. data/lib/capybara/spec/session/has_xpath_spec.rb +39 -38
  100. data/lib/capybara/spec/session/headers_spec.rb +1 -1
  101. data/lib/capybara/spec/session/html_spec.rb +6 -6
  102. data/lib/capybara/spec/session/node_spec.rb +129 -123
  103. data/lib/capybara/spec/session/node_wrapper_spec.rb +10 -7
  104. data/lib/capybara/spec/session/refresh_spec.rb +4 -7
  105. data/lib/capybara/spec/session/reset_session_spec.rb +28 -28
  106. data/lib/capybara/spec/session/response_code_spec.rb +1 -1
  107. data/lib/capybara/spec/session/save_and_open_page_spec.rb +2 -2
  108. data/lib/capybara/spec/session/save_page_spec.rb +37 -37
  109. data/lib/capybara/spec/session/save_screenshot_spec.rb +6 -6
  110. data/lib/capybara/spec/session/screenshot_spec.rb +2 -2
  111. data/lib/capybara/spec/session/select_spec.rb +81 -81
  112. data/lib/capybara/spec/session/selectors_spec.rb +17 -17
  113. data/lib/capybara/spec/session/sibling_spec.rb +9 -9
  114. data/lib/capybara/spec/session/text_spec.rb +23 -23
  115. data/lib/capybara/spec/session/title_spec.rb +5 -5
  116. data/lib/capybara/spec/session/uncheck_spec.rb +24 -20
  117. data/lib/capybara/spec/session/unselect_spec.rb +37 -37
  118. data/lib/capybara/spec/session/visit_spec.rb +48 -49
  119. data/lib/capybara/spec/session/window/current_window_spec.rb +1 -1
  120. data/lib/capybara/spec/session/window/switch_to_window_spec.rb +16 -16
  121. data/lib/capybara/spec/session/window/window_opened_by_spec.rb +2 -2
  122. data/lib/capybara/spec/session/window/window_spec.rb +4 -4
  123. data/lib/capybara/spec/session/window/within_window_spec.rb +14 -14
  124. data/lib/capybara/spec/session/within_spec.rb +41 -41
  125. data/lib/capybara/spec/spec_helper.rb +11 -9
  126. data/lib/capybara/spec/test_app.rb +18 -17
  127. data/lib/capybara/spec/views/form.erb +29 -31
  128. data/lib/capybara/spec/views/with_html.erb +2 -2
  129. data/lib/capybara/version.rb +1 -1
  130. data/spec/basic_node_spec.rb +23 -23
  131. data/spec/capybara_spec.rb +20 -20
  132. data/spec/css_splitter_spec.rb +7 -7
  133. data/spec/dsl_spec.rb +37 -32
  134. data/spec/filter_set_spec.rb +4 -4
  135. data/spec/fixtures/selenium_driver_rspec_failure.rb +1 -1
  136. data/spec/fixtures/selenium_driver_rspec_success.rb +1 -1
  137. data/spec/minitest_spec.rb +4 -4
  138. data/spec/minitest_spec_spec.rb +23 -23
  139. data/spec/per_session_config_spec.rb +5 -5
  140. data/spec/rack_test_spec.rb +44 -44
  141. data/spec/result_spec.rb +14 -14
  142. data/spec/rspec/features_spec.rb +13 -13
  143. data/spec/rspec/scenarios_spec.rb +4 -4
  144. data/spec/rspec/shared_spec_matchers.rb +282 -281
  145. data/spec/rspec/views_spec.rb +3 -3
  146. data/spec/rspec_matchers_spec.rb +10 -10
  147. data/spec/rspec_spec.rb +29 -29
  148. data/spec/selector_spec.rb +64 -64
  149. data/spec/selenium_spec_chrome.rb +14 -22
  150. data/spec/selenium_spec_chrome_remote.rb +28 -8
  151. data/spec/selenium_spec_edge.rb +9 -4
  152. data/spec/selenium_spec_firefox_remote.rb +87 -0
  153. data/spec/selenium_spec_ie.rb +9 -4
  154. data/spec/selenium_spec_marionette.rb +42 -18
  155. data/spec/server_spec.rb +29 -27
  156. data/spec/session_spec.rb +17 -17
  157. data/spec/shared_selenium_session.rb +70 -52
  158. data/spec/spec_helper.rb +1 -1
  159. metadata +4 -2
@@ -1,23 +1,23 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  Capybara::SpecHelper.spec '#title' do
4
- it "should get the title of the page" do
4
+ it 'should get the title of the page' do
5
5
  @session.visit('/with_title')
6
6
  expect(@session.title).to eq('Test Title')
7
7
  end
8
8
 
9
- context "with css as default selector" do
9
+ context 'with css as default selector' do
10
10
  before { Capybara.default_selector = :css }
11
11
 
12
- it "should get the title of the page" do
12
+ it 'should get the title of the page' do
13
13
  @session.visit('/with_title')
14
14
  expect(@session.title).to eq('Test Title')
15
15
  end
16
16
  after { Capybara.default_selector = :xpath }
17
17
  end
18
18
 
19
- context "within iframe", requires: [:frames] do
20
- it "should get the title of the top level browsing context" do
19
+ context 'within iframe', requires: [:frames] do
20
+ it 'should get the title of the top level browsing context' do
21
21
  @session.visit('/within_frames')
22
22
  expect(@session.title).to eq('With Frames')
23
23
  @session.within_frame('frameOne') do
@@ -1,87 +1,91 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- Capybara::SpecHelper.spec "#uncheck" do
3
+ Capybara::SpecHelper.spec '#uncheck' do
4
4
  before do
5
5
  @session.visit('/form')
6
6
  end
7
7
 
8
- it "should uncheck a checkbox by id" do
9
- @session.uncheck("form_pets_hamster")
8
+ it 'should uncheck a checkbox by id' do
9
+ @session.uncheck('form_pets_hamster')
10
10
  @session.click_button('awesome')
11
11
  expect(extract_results(@session)['pets']).to include('dog')
12
12
  expect(extract_results(@session)['pets']).not_to include('hamster')
13
13
  end
14
14
 
15
- it "should uncheck a checkbox by label" do
16
- @session.uncheck("Hamster")
15
+ it 'should uncheck a checkbox by label' do
16
+ @session.uncheck('Hamster')
17
17
  @session.click_button('awesome')
18
18
  expect(extract_results(@session)['pets']).to include('dog')
19
19
  expect(extract_results(@session)['pets']).not_to include('hamster')
20
20
  end
21
21
 
22
- it "should work without a locator string" do
23
- @session.uncheck(id: "form_pets_hamster")
22
+ it 'should work without a locator string' do
23
+ @session.uncheck(id: 'form_pets_hamster')
24
24
  @session.click_button('awesome')
25
25
  expect(extract_results(@session)['pets']).to include('dog')
26
26
  expect(extract_results(@session)['pets']).not_to include('hamster')
27
27
  end
28
28
 
29
- it "casts to string" do
29
+ it 'casts to string' do
30
30
  @session.uncheck(:form_pets_hamster)
31
31
  @session.click_button('awesome')
32
32
  expect(extract_results(@session)['pets']).to include('dog')
33
33
  expect(extract_results(@session)['pets']).not_to include('hamster')
34
34
  end
35
35
 
36
- context "with :exact option" do
37
- it "should accept partial matches when false" do
36
+ context 'with :exact option' do
37
+ it 'should accept partial matches when false' do
38
38
  @session.uncheck('Ham', exact: false)
39
39
  @session.click_button('awesome')
40
40
  expect(extract_results(@session)['pets']).not_to include('hamster')
41
41
  end
42
42
 
43
- it "should not accept partial matches when true" do
43
+ it 'should not accept partial matches when true' do
44
44
  expect do
45
45
  @session.uncheck('Ham', exact: true)
46
46
  end.to raise_error(Capybara::ElementNotFound)
47
47
  end
48
48
  end
49
49
 
50
- context "when checkbox hidden" do
51
- context "with Capybara.automatic_label_click == true" do
50
+ context 'when checkbox hidden' do
51
+ context 'with Capybara.automatic_label_click == true' do
52
52
  around do |spec|
53
53
  old_click_label, Capybara.automatic_label_click = Capybara.automatic_label_click, true
54
54
  spec.run
55
55
  Capybara.automatic_label_click = old_click_label
56
56
  end
57
57
 
58
- it "should uncheck via clicking the label with :for attribute if possible" do
58
+ it 'should uncheck via clicking the label with :for attribute if possible' do
59
59
  expect(@session.find(:checkbox, 'form_cars_jaguar', checked: true, visible: :hidden)).to be_truthy
60
60
  @session.uncheck('form_cars_jaguar')
61
61
  @session.click_button('awesome')
62
62
  expect(extract_results(@session)['cars']).not_to include('jaguar')
63
63
  end
64
64
 
65
- it "should uncheck via clicking the wrapping label if possible" do
65
+ it 'should uncheck via clicking the wrapping label if possible' do
66
66
  expect(@session.find(:checkbox, 'form_cars_koenigsegg', checked: true, visible: :hidden)).to be_truthy
67
67
  @session.uncheck('form_cars_koenigsegg')
68
68
  @session.click_button('awesome')
69
69
  expect(extract_results(@session)['cars']).not_to include('koenigsegg')
70
70
  end
71
71
 
72
- it "should not click the label if unneeded" do
72
+ it 'should not click the label if unneeded' do
73
73
  expect(@session.find(:checkbox, 'form_cars_tesla', unchecked: true, visible: :hidden)).to be_truthy
74
74
  @session.uncheck('form_cars_tesla')
75
75
  @session.click_button('awesome')
76
76
  expect(extract_results(@session)['cars']).not_to include('tesla')
77
77
  end
78
78
 
79
- it "should raise original error when no label available" do
80
- expect { @session.uncheck('form_cars_porsche') }.to raise_error(Capybara::ElementNotFound, 'Unable to find visible checkbox "form_cars_porsche" that is not disabled')
79
+ it 'should raise original error when no label available' do
80
+ expect { @session.uncheck('form_cars_porsche') }.to raise_error(Capybara::ElementNotFound, 'Unable to find visible checkbox "form_cars_porsche"')
81
81
  end
82
82
 
83
- it "should raise error if not allowed to click label" do
84
- expect { @session.uncheck('form_cars_jaguar', allow_label_click: false) }.to raise_error(Capybara::ElementNotFound, 'Unable to find visible checkbox "form_cars_jaguar" that is not disabled')
83
+ it 'should raise error if not allowed to click label' do
84
+ expect { @session.uncheck('form_cars_jaguar', allow_label_click: false) }.to raise_error(Capybara::ElementNotFound, 'Unable to find visible checkbox "form_cars_jaguar"')
85
+ end
86
+
87
+ it 'should include node filter description in error if necessary' do
88
+ expect { @session.uncheck('form_cars_maserati', allow_label_click: false) }.to raise_error(Capybara::ElementNotFound, 'Unable to find visible checkbox "form_cars_maserati" that is not disabled')
85
89
  end
86
90
  end
87
91
  end
@@ -1,46 +1,46 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- Capybara::SpecHelper.spec "#unselect" do
3
+ Capybara::SpecHelper.spec '#unselect' do
4
4
  before do
5
5
  @session.visit('/form')
6
6
  end
7
7
 
8
- context "with multiple select" do
9
- it "should unselect an option from a select box by id" do
8
+ context 'with multiple select' do
9
+ it 'should unselect an option from a select box by id' do
10
10
  @session.unselect('Commando', from: 'form_underwear')
11
11
  @session.click_button('awesome')
12
12
  expect(extract_results(@session)['underwear']).to include('Briefs', 'Boxerbriefs')
13
13
  expect(extract_results(@session)['underwear']).not_to include('Commando')
14
14
  end
15
15
 
16
- it "should unselect an option without a select box" do
16
+ it 'should unselect an option without a select box' do
17
17
  @session.unselect('Commando')
18
18
  @session.click_button('awesome')
19
19
  expect(extract_results(@session)['underwear']).to include('Briefs', 'Boxerbriefs')
20
20
  expect(extract_results(@session)['underwear']).not_to include('Commando')
21
21
  end
22
22
 
23
- it "should unselect an option from a select box by label" do
23
+ it 'should unselect an option from a select box by label' do
24
24
  @session.unselect('Commando', from: 'Underwear')
25
25
  @session.click_button('awesome')
26
26
  expect(extract_results(@session)['underwear']).to include('Briefs', 'Boxerbriefs')
27
27
  expect(extract_results(@session)['underwear']).not_to include('Commando')
28
28
  end
29
29
 
30
- it "should favour exact matches to option labels" do
31
- @session.unselect("Briefs", from: 'Underwear')
30
+ it 'should favour exact matches to option labels' do
31
+ @session.unselect('Briefs', from: 'Underwear')
32
32
  @session.click_button('awesome')
33
33
  expect(extract_results(@session)['underwear']).to include('Commando', 'Boxerbriefs')
34
34
  expect(extract_results(@session)['underwear']).not_to include('Briefs')
35
35
  end
36
36
 
37
- it "should escape quotes" do
37
+ it 'should escape quotes' do
38
38
  @session.unselect("Frenchman's Pantalons", from: 'Underwear')
39
39
  @session.click_button('awesome')
40
40
  expect(extract_results(@session)['underwear']).not_to include("Frenchman's Pantalons")
41
41
  end
42
42
 
43
- it "casts to string" do
43
+ it 'casts to string' do
44
44
  @session.unselect(:Briefs, from: :Underwear)
45
45
  @session.click_button('awesome')
46
46
  expect(extract_results(@session)['underwear']).to include('Commando', 'Boxerbriefs')
@@ -48,15 +48,15 @@ Capybara::SpecHelper.spec "#unselect" do
48
48
  end
49
49
  end
50
50
 
51
- context "with single select" do
52
- it "should raise an error" do
53
- expect { @session.unselect("English", from: 'form_locale') }.to raise_error(Capybara::UnselectNotAllowed)
51
+ context 'with single select' do
52
+ it 'should raise an error' do
53
+ expect { @session.unselect('English', from: 'form_locale') }.to raise_error(Capybara::UnselectNotAllowed)
54
54
  end
55
55
  end
56
56
 
57
57
  context "with a locator that doesn't exist" do
58
- it "should raise an error" do
59
- msg = "Unable to find visible select box \"does not exist\" that is not disabled"
58
+ it 'should raise an error' do
59
+ msg = 'Unable to find select box "does not exist"'
60
60
  expect do
61
61
  @session.unselect('foo', from: 'does not exist')
62
62
  end.to raise_error(Capybara::ElementNotFound, msg)
@@ -64,51 +64,51 @@ Capybara::SpecHelper.spec "#unselect" do
64
64
  end
65
65
 
66
66
  context "with an option that doesn't exist" do
67
- it "should raise an error" do
68
- msg = /^Unable to find visible option "Does not Exist" within/
67
+ it 'should raise an error' do
68
+ msg = /^Unable to find option "Does not Exist" within/
69
69
  expect do
70
70
  @session.unselect('Does not Exist', from: 'form_underwear')
71
71
  end.to raise_error(Capybara::ElementNotFound, msg)
72
72
  end
73
73
  end
74
74
 
75
- context "with :exact option" do
76
- context "when `false`" do
77
- it "can match select box approximately" do
78
- @session.unselect("Boxerbriefs", from: "Under", exact: false)
79
- @session.click_button("awesome")
80
- expect(extract_results(@session)["underwear"]).not_to include("Boxerbriefs")
75
+ context 'with :exact option' do
76
+ context 'when `false`' do
77
+ it 'can match select box approximately' do
78
+ @session.unselect('Boxerbriefs', from: 'Under', exact: false)
79
+ @session.click_button('awesome')
80
+ expect(extract_results(@session)['underwear']).not_to include('Boxerbriefs')
81
81
  end
82
82
 
83
- it "can match option approximately" do
84
- @session.unselect("Boxerbr", from: "Underwear", exact: false)
85
- @session.click_button("awesome")
86
- expect(extract_results(@session)["underwear"]).not_to include("Boxerbriefs")
83
+ it 'can match option approximately' do
84
+ @session.unselect('Boxerbr', from: 'Underwear', exact: false)
85
+ @session.click_button('awesome')
86
+ expect(extract_results(@session)['underwear']).not_to include('Boxerbriefs')
87
87
  end
88
88
 
89
- it "can match option approximately when :from not given" do
90
- @session.unselect("Boxerbr", exact: false)
91
- @session.click_button("awesome")
92
- expect(extract_results(@session)["underwear"]).not_to include("Boxerbriefs")
89
+ it 'can match option approximately when :from not given' do
90
+ @session.unselect('Boxerbr', exact: false)
91
+ @session.click_button('awesome')
92
+ expect(extract_results(@session)['underwear']).not_to include('Boxerbriefs')
93
93
  end
94
94
  end
95
95
 
96
- context "when `true`" do
97
- it "can match select box approximately" do
96
+ context 'when `true`' do
97
+ it 'can match select box approximately' do
98
98
  expect do
99
- @session.unselect("Boxerbriefs", from: "Under", exact: true)
99
+ @session.unselect('Boxerbriefs', from: 'Under', exact: true)
100
100
  end.to raise_error(Capybara::ElementNotFound)
101
101
  end
102
102
 
103
- it "can match option approximately" do
103
+ it 'can match option approximately' do
104
104
  expect do
105
- @session.unselect("Boxerbr", from: "Underwear", exact: true)
105
+ @session.unselect('Boxerbr', from: 'Underwear', exact: true)
106
106
  end.to raise_error(Capybara::ElementNotFound)
107
107
  end
108
108
 
109
- it "can match option approximately when :from not given" do
109
+ it 'can match option approximately when :from not given' do
110
110
  expect do
111
- @session.unselect("Boxerbr", exact: true)
111
+ @session.unselect('Boxerbr', exact: true)
112
112
  end.to raise_error(Capybara::ElementNotFound)
113
113
  end
114
114
  end
@@ -1,14 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  Capybara::SpecHelper.spec '#visit' do
4
- it "should fetch a response from the driver with a relative url" do
4
+ it 'should fetch a response from the driver with a relative url' do
5
5
  @session.visit('/')
6
6
  expect(@session).to have_content('Hello world!')
7
7
  @session.visit('/foo')
8
8
  expect(@session).to have_content('Another World')
9
9
  end
10
10
 
11
- it "should fetch a response from the driver with an absolute url with a port" do
11
+ it 'should fetch a response from the driver with an absolute url with a port' do
12
12
  # Preparation
13
13
  @session.visit('/')
14
14
  root_uri = URI.parse(@session.current_url)
@@ -28,27 +28,26 @@ Capybara::SpecHelper.spec '#visit' do
28
28
  expect(@session).to have_content('Hello world!')
29
29
  end
30
30
 
31
- it "should fetch a response when sequentially visiting same destination with a target" do
32
- skip "Chrome/chromedriver has an issue visiting URL with target after visiting same URL without target" if chrome_lt?(65.0, @session)
31
+ it 'should fetch a response when sequentially visiting same destination with a target' do
33
32
  @session.visit('/form')
34
33
  expect(@session).to have_css('#form_title')
35
34
  @session.visit('/form#form_title')
36
35
  expect(@session).to have_css('#form_title')
37
36
  end
38
37
 
39
- it "raises any errors caught inside the server", requires: [:server] do
40
- quietly { @session.visit("/error") }
38
+ it 'raises any errors caught inside the server', requires: [:server] do
39
+ quietly { @session.visit('/error') }
41
40
  expect do
42
- @session.visit("/")
41
+ @session.visit('/')
43
42
  end.to raise_error(TestApp::TestAppError)
44
43
  end
45
44
 
46
- it "should be able to open non-http url", requires: [:about_scheme] do
47
- @session.visit("about:blank")
48
- @session.assert_no_selector :xpath, "/html/body/*"
45
+ it 'should be able to open non-http url', requires: [:about_scheme] do
46
+ @session.visit('about:blank')
47
+ @session.assert_no_selector :xpath, '/html/body/*'
49
48
  end
50
49
 
51
- context "when Capybara.always_include_port is true" do
50
+ context 'when Capybara.always_include_port is true' do
52
51
  let(:root_uri) do
53
52
  @session.visit('/')
54
53
  URI.parse(@session.current_url)
@@ -62,7 +61,7 @@ Capybara::SpecHelper.spec '#visit' do
62
61
  Capybara.always_include_port = false
63
62
  end
64
63
 
65
- it "should fetch a response from the driver with an absolute url without a port" do
64
+ it 'should fetch a response from the driver with an absolute url without a port' do
66
65
  @session.visit("http://#{root_uri.host}/")
67
66
  expect(URI.parse(@session.current_url).port).to eq(root_uri.port)
68
67
  expect(@session).to have_content('Hello world!')
@@ -72,133 +71,133 @@ Capybara::SpecHelper.spec '#visit' do
72
71
  expect(@session).to have_content('Another World')
73
72
  end
74
73
 
75
- it "should add the server port to a visited url if no port specified", requires: [:server] do
74
+ it 'should add the server port to a visited url if no port specified', requires: [:server] do
76
75
  allow(@session.driver).to receive(:visit)
77
- @session.visit("http://www.example.com")
76
+ @session.visit('http://www.example.com')
78
77
  expect(@session.driver).to have_received(:visit).with("http://www.example.com:#{@session.server.port}")
79
78
  end
80
79
 
81
- it "should not override the visit specified port even if default for scheme", requires: [:server] do
80
+ it 'should not override the visit specified port even if default for scheme', requires: [:server] do
82
81
  allow(@session.driver).to receive(:visit)
83
82
  @session.visit('http://www.example.com:80')
84
- expect(@session.driver).to have_received(:visit).with("http://www.example.com:80")
83
+ expect(@session.driver).to have_received(:visit).with('http://www.example.com:80')
85
84
  end
86
85
 
87
- it "should give preference to app_host port if specified", requires: [:server] do
86
+ it 'should give preference to app_host port if specified', requires: [:server] do
88
87
  allow(@session.driver).to receive(:visit)
89
- Capybara.app_host = "http://www.example.com:6666"
88
+ Capybara.app_host = 'http://www.example.com:6666'
90
89
  @session.visit('/random')
91
- expect(@session.driver).to have_received(:visit).with("http://www.example.com:6666/random")
90
+ expect(@session.driver).to have_received(:visit).with('http://www.example.com:6666/random')
92
91
  end
93
92
 
94
93
  it "shouldn't override port if no server", requires: [:server] do
95
94
  session = Capybara::Session.new(@session.mode, nil)
96
95
  allow(session.driver).to receive(:visit)
97
- session.visit("http://www.google.com")
98
- expect(session.driver).to have_received(:visit).with("http://www.google.com")
96
+ session.visit('http://www.google.com')
97
+ expect(session.driver).to have_received(:visit).with('http://www.google.com')
99
98
  end
100
99
 
101
100
  it "shouldn't override port if no server but app_host is set", requires: [:server] do
102
101
  session = Capybara::Session.new(@session.mode, nil)
103
- Capybara.app_host = "http://www.example.com:6666"
102
+ Capybara.app_host = 'http://www.example.com:6666'
104
103
  allow(session.driver).to receive(:visit)
105
- session.visit("http://www.google.com")
106
- expect(session.driver).to have_received(:visit).with("http://www.google.com")
104
+ session.visit('http://www.google.com')
105
+ expect(session.driver).to have_received(:visit).with('http://www.google.com')
107
106
  end
108
107
  end
109
108
 
110
- context "when Capybara.always_include_port is false" do
109
+ context 'when Capybara.always_include_port is false' do
111
110
  before do
112
111
  Capybara.always_include_port = false
113
112
  end
114
113
 
115
114
  it "shouldn't overwrite port if app_host is set", requires: [:server] do
116
115
  session = Capybara::Session.new(@session.mode, nil)
117
- Capybara.app_host = "http://www.example.com:6666"
116
+ Capybara.app_host = 'http://www.example.com:6666'
118
117
  allow(session.driver).to receive(:visit)
119
- session.visit("http://www.google.com")
120
- expect(session.driver).to have_received(:visit).with("http://www.google.com")
118
+ session.visit('http://www.google.com')
119
+ expect(session.driver).to have_received(:visit).with('http://www.google.com')
121
120
  end
122
121
 
123
122
  it "shouldn't overwrite port if port specfified", requires: [:server] do
124
123
  session = Capybara::Session.new(@session.mode, nil)
125
- Capybara.app_host = "http://www.example.com:6666"
124
+ Capybara.app_host = 'http://www.example.com:6666'
126
125
  allow(session.driver).to receive(:visit)
127
- session.visit("http://www.google.com:99")
128
- expect(session.driver).to have_received(:visit).with("http://www.google.com:99")
126
+ session.visit('http://www.google.com:99')
127
+ expect(session.driver).to have_received(:visit).with('http://www.google.com:99')
129
128
  end
130
129
  end
131
130
 
132
- context "without a server", requires: [:server] do
133
- it "should respect `app_host`" do
131
+ context 'without a server', requires: [:server] do
132
+ it 'should respect `app_host`' do
134
133
  serverless_session = Capybara::Session.new(@session.mode, nil)
135
134
  Capybara.app_host = "http://#{@session.server.host}:#{@session.server.port}"
136
- serverless_session.visit("/foo")
137
- expect(serverless_session).to have_content("Another World")
135
+ serverless_session.visit('/foo')
136
+ expect(serverless_session).to have_content('Another World')
138
137
  end
139
138
 
140
- it "should visit a fully qualified URL" do
139
+ it 'should visit a fully qualified URL' do
141
140
  serverless_session = Capybara::Session.new(@session.mode, nil)
142
141
  serverless_session.visit("http://#{@session.server.host}:#{@session.server.port}/foo")
143
- expect(serverless_session).to have_content("Another World")
142
+ expect(serverless_session).to have_content('Another World')
144
143
  end
145
144
  end
146
145
 
147
- context "with Capybara.app_host set" do
148
- it "should override server", requires: [:server] do
146
+ context 'with Capybara.app_host set' do
147
+ it 'should override server', requires: [:server] do
149
148
  another_session = Capybara::Session.new(@session.mode, @session.app.dup)
150
149
  Capybara.app_host = "http://#{@session.server.host}:#{@session.server.port}"
151
150
  another_session.visit('/foo')
152
- expect(another_session).to have_content("Another World")
151
+ expect(another_session).to have_content('Another World')
153
152
  expect(another_session.current_url).to start_with(Capybara.app_host)
154
153
  expect(URI.parse(another_session.current_url).port).not_to eq another_session.server.port
155
154
  expect(URI.parse(another_session.current_url).port).to eq @session.server.port
156
155
  end
157
156
 
158
- it "should append relative path", requires: [:server] do
157
+ it 'should append relative path', requires: [:server] do
159
158
  Capybara.app_host = "http://#{@session.server.host}:#{@session.server.port}/redirect/0"
160
159
  @session.visit('/times')
161
160
  expect(@session).to have_content('redirection complete')
162
161
  end
163
162
 
164
- it "should work if `app_host` has a trailing /", requires: [:server] do
163
+ it 'should work if `app_host` has a trailing /', requires: [:server] do
165
164
  Capybara.app_host = "http://#{@session.server.host}:#{@session.server.port}/"
166
165
  @session.visit('/')
167
166
  expect(@session).to have_content('Hello world!')
168
167
  end
169
168
  end
170
169
 
171
- it "should send no referer when visiting a page" do
170
+ it 'should send no referer when visiting a page' do
172
171
  @session.visit '/get_referer'
173
172
  expect(@session).to have_content 'No referer'
174
173
  end
175
174
 
176
- it "should send no referer when visiting a second page" do
175
+ it 'should send no referer when visiting a second page' do
177
176
  @session.visit '/get_referer'
178
177
  @session.visit '/get_referer'
179
178
  expect(@session).to have_content 'No referer'
180
179
  end
181
180
 
182
- it "should send a referer when following a link" do
181
+ it 'should send a referer when following a link' do
183
182
  @session.visit '/referer_base'
184
183
  @session.find('//a[@href="/get_referer"]').click
185
184
  expect(@session).to have_content %r{http://.*/referer_base}
186
185
  end
187
186
 
188
- it "should preserve the original referer URL when following a redirect" do
187
+ it 'should preserve the original referer URL when following a redirect' do
189
188
  @session.visit('/referer_base')
190
189
  @session.find('//a[@href="/redirect_to_get_referer"]').click
191
190
  expect(@session).to have_content %r{http://.*/referer_base}
192
191
  end
193
192
 
194
- it "should send a referer when submitting a form" do
193
+ it 'should send a referer when submitting a form' do
195
194
  @session.visit '/referer_base'
196
195
  @session.find('//input').click
197
196
  expect(@session).to have_content %r{http://.*/referer_base}
198
197
  end
199
198
 
200
- it "can set cookie if a blank path is specified" do
201
- @session.visit("")
199
+ it 'can set cookie if a blank path is specified' do
200
+ @session.visit('')
202
201
  @session.visit('/get_cookie')
203
202
  expect(@session).to have_content('root cookie')
204
203
  end