capybara 3.3.1 → 3.4.0

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -5,19 +5,19 @@ Capybara::SpecHelper.spec '#has_style?', requires: [:css] do
5
5
  @session.visit('/with_html')
6
6
  end
7
7
 
8
- it "should be true if the element has the given style" do
8
+ it 'should be true if the element has the given style' do
9
9
  expect(@session.find(:css, '#first')).to have_style(display: 'block')
10
10
  expect(@session.find(:css, '#first').has_style?(display: 'block')).to be true
11
11
  expect(@session.find(:css, '#second')).to have_style('display' => 'inline')
12
12
  expect(@session.find(:css, '#second').has_style?('display' => 'inline')).to be true
13
13
  end
14
14
 
15
- it "should be false if the element does not have the given style" do
15
+ it 'should be false if the element does not have the given style' do
16
16
  expect(@session.find(:css, '#first').has_style?('display' => 'inline')).to be false
17
17
  expect(@session.find(:css, '#second').has_style?(display: 'block')).to be false
18
18
  end
19
19
 
20
- it "allows Regexp for value matching" do
20
+ it 'allows Regexp for value matching' do
21
21
  expect(@session.find(:css, '#first')).to have_style(display: /^bl/)
22
22
  expect(@session.find(:css, '#first').has_style?('display' => /^bl/)).to be true
23
23
  expect(@session.find(:css, '#first').has_style?(display: /^in/)).to be false
@@ -5,13 +5,13 @@ Capybara::SpecHelper.spec '#has_table?' do
5
5
  @session.visit('/tables')
6
6
  end
7
7
 
8
- it "should be true if the table is on the page" do
8
+ it 'should be true if the table is on the page' do
9
9
  expect(@session).to have_table('Villain')
10
10
  expect(@session).to have_table('villain_table')
11
11
  expect(@session).to have_table(:villain_table)
12
12
  end
13
13
 
14
- it "should be false if the table is not on the page" do
14
+ it 'should be false if the table is not on the page' do
15
15
  expect(@session).not_to have_table('Monkey')
16
16
  end
17
17
  end
@@ -21,12 +21,12 @@ Capybara::SpecHelper.spec '#has_no_table?' do
21
21
  @session.visit('/tables')
22
22
  end
23
23
 
24
- it "should be false if the table is on the page" do
24
+ it 'should be false if the table is on the page' do
25
25
  expect(@session).not_to have_no_table('Villain')
26
26
  expect(@session).not_to have_no_table('villain_table')
27
27
  end
28
28
 
29
- it "should be true if the table is not on the page" do
29
+ it 'should be true if the table is not on the page' do
30
30
  expect(@session).to have_no_table('Monkey')
31
31
  end
32
32
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  Capybara::SpecHelper.spec '#has_text?' do
4
- it "should be true if the given text is on the page at least once" do
4
+ it 'should be true if the given text is on the page at least once' do
5
5
  @session.visit('/with_html')
6
6
  expect(@session).to have_text('est')
7
7
  expect(@session).to have_text('Lorem')
@@ -9,32 +9,32 @@ Capybara::SpecHelper.spec '#has_text?' do
9
9
  expect(@session).to have_text(:Redirect)
10
10
  end
11
11
 
12
- it "should be true if scoped to an element which has the text" do
12
+ it 'should be true if scoped to an element which has the text' do
13
13
  @session.visit('/with_html')
14
14
  @session.within("//a[@title='awesome title']") do
15
15
  expect(@session).to have_text('labore')
16
16
  end
17
17
  end
18
18
 
19
- it "should be false if scoped to an element which does not have the text" do
19
+ it 'should be false if scoped to an element which does not have the text' do
20
20
  @session.visit('/with_html')
21
21
  @session.within("//a[@title='awesome title']") do
22
22
  expect(@session).not_to have_text('monkey')
23
23
  end
24
24
  end
25
25
 
26
- it "should ignore tags" do
26
+ it 'should ignore tags' do
27
27
  @session.visit('/with_html')
28
28
  expect(@session).not_to have_text('exercitation <a href="/foo" id="foo">ullamco</a> laboris')
29
29
  expect(@session).to have_text('exercitation ullamco laboris')
30
30
  end
31
31
 
32
- it "should search correctly normalized text" do
32
+ it 'should search correctly normalized text' do
33
33
  @session.visit('/with_html')
34
34
  expect(@session).to have_text('text with whitespace')
35
35
  end
36
36
 
37
- it "should be false if the given text is not on the page" do
37
+ it 'should be false if the given text is not on the page' do
38
38
  @session.visit('/with_html')
39
39
  expect(@session).not_to have_text('xxxxyzzz')
40
40
  expect(@session).not_to have_text('monkey')
@@ -66,23 +66,23 @@ Capybara::SpecHelper.spec '#has_text?' do
66
66
  expect(@session).not_to have_text('aVar')
67
67
  end
68
68
 
69
- it "should be false if the given text is on the page but not visible" do
69
+ it 'should be false if the given text is on the page but not visible' do
70
70
  @session.visit('/with_html')
71
71
  expect(@session).not_to have_text('Inside element with hidden ancestor')
72
72
  end
73
73
 
74
- it "should be true if :all given and text is invisible." do
74
+ it 'should be true if :all given and text is invisible.' do
75
75
  @session.visit('/with_html')
76
76
  expect(@session).to have_text(:all, 'Some of this text is hidden!')
77
77
  end
78
78
 
79
- it "should be true if `Capybara.ignore_hidden_elements = false` and text is invisible." do
79
+ it 'should be true if `Capybara.ignore_hidden_elements = false` and text is invisible.' do
80
80
  Capybara.ignore_hidden_elements = false
81
81
  @session.visit('/with_html')
82
82
  expect(@session).to have_text('Some of this text is hidden!')
83
83
  end
84
84
 
85
- it "should be true if the text in the page matches given regexp" do
85
+ it 'should be true if the text in the page matches given regexp' do
86
86
  @session.visit('/with_html')
87
87
  expect(@session).to have_text(/Lorem/)
88
88
  end
@@ -92,50 +92,50 @@ Capybara::SpecHelper.spec '#has_text?' do
92
92
  expect(@session).not_to have_text(/xxxxyzzz/)
93
93
  end
94
94
 
95
- context "with exact: true option" do
96
- it "should be true if text matches exactly" do
95
+ context 'with exact: true option' do
96
+ it 'should be true if text matches exactly' do
97
97
  @session.visit('/with_html')
98
- expect(@session.find(:id, "h2one")).to have_text("Header Class Test One", exact: true)
98
+ expect(@session.find(:id, 'h2one')).to have_text('Header Class Test One', exact: true)
99
99
  end
100
100
 
101
101
  it "should be false if text doesn't match exactly" do
102
102
  @session.visit('/with_html')
103
- expect(@session.find(:id, "h2one")).not_to have_text("Header Class Test On", exact: true)
103
+ expect(@session.find(:id, 'h2one')).not_to have_text('Header Class Test On', exact: true)
104
104
  end
105
105
  end
106
106
 
107
- it "should escape any characters that would have special meaning in a regexp" do
107
+ it 'should escape any characters that would have special meaning in a regexp' do
108
108
  @session.visit('/with_html')
109
109
  expect(@session).not_to have_text('.orem')
110
110
  end
111
111
 
112
- it "should accept non-string parameters" do
112
+ it 'should accept non-string parameters' do
113
113
  @session.visit('/with_html')
114
114
  expect(@session).to have_text(42)
115
115
  end
116
116
 
117
- it "should be true when passed nil" do
117
+ it 'should be true when passed nil' do
118
118
  # nil is converted to '' when to_s is invoked
119
119
  @session.visit('/with_html')
120
120
  expect(@session).to have_text(nil)
121
121
  end
122
122
 
123
- it "should wait for text to appear", requires: [:js] do
123
+ it 'should wait for text to appear', requires: [:js] do
124
124
  Capybara.using_wait_time(3) do
125
125
  @session.visit('/with_js')
126
126
  @session.click_link('Click me')
127
- expect(@session).to have_text("Has been clicked")
127
+ expect(@session).to have_text('Has been clicked')
128
128
  end
129
129
  end
130
130
 
131
- context "with between" do
132
- it "should be true if the text occurs within the range given" do
131
+ context 'with between' do
132
+ it 'should be true if the text occurs within the range given' do
133
133
  @session.visit('/with_count')
134
134
  expect(@session).to have_text('count', between: 1..3)
135
135
  expect(@session).to have_text(/count/, between: 2..2)
136
136
  end
137
137
 
138
- it "should be false if the text occurs more or fewer times than range" do
138
+ it 'should be false if the text occurs more or fewer times than range' do
139
139
  @session.visit('/with_count')
140
140
  expect(@session).not_to have_text('count', between: 0..1)
141
141
  expect(@session).not_to have_text('count', between: 3..10)
@@ -143,76 +143,76 @@ Capybara::SpecHelper.spec '#has_text?' do
143
143
  end
144
144
  end
145
145
 
146
- context "with count" do
147
- it "should be true if the text occurs the given number of times" do
146
+ context 'with count' do
147
+ it 'should be true if the text occurs the given number of times' do
148
148
  @session.visit('/with_count')
149
149
  expect(@session).to have_text('count', count: 2)
150
150
  end
151
151
 
152
- it "should be false if the text occurs a different number of times than the given" do
152
+ it 'should be false if the text occurs a different number of times than the given' do
153
153
  @session.visit('/with_count')
154
154
  expect(@session).not_to have_text('count', count: 0)
155
155
  expect(@session).not_to have_text('count', count: 1)
156
156
  expect(@session).not_to have_text(/count/, count: 3)
157
157
  end
158
158
 
159
- it "should coerce count to an integer" do
159
+ it 'should coerce count to an integer' do
160
160
  @session.visit('/with_count')
161
161
  expect(@session).to have_text('count', count: '2')
162
162
  expect(@session).not_to have_text('count', count: '3')
163
163
  end
164
164
  end
165
165
 
166
- context "with maximum" do
167
- it "should be true when text occurs same or fewer times than given" do
166
+ context 'with maximum' do
167
+ it 'should be true when text occurs same or fewer times than given' do
168
168
  @session.visit('/with_count')
169
169
  expect(@session).to have_text('count', maximum: 2)
170
170
  expect(@session).to have_text(/count/, maximum: 3)
171
171
  end
172
172
 
173
- it "should be false when text occurs more times than given" do
173
+ it 'should be false when text occurs more times than given' do
174
174
  @session.visit('/with_count')
175
175
  expect(@session).not_to have_text('count', maximum: 1)
176
176
  expect(@session).not_to have_text('count', maximum: 0)
177
177
  end
178
178
 
179
- it "should coerce maximum to an integer" do
179
+ it 'should coerce maximum to an integer' do
180
180
  @session.visit('/with_count')
181
181
  expect(@session).to have_text('count', maximum: '2')
182
182
  expect(@session).not_to have_text('count', maximum: '1')
183
183
  end
184
184
  end
185
185
 
186
- context "with minimum" do
187
- it "should be true when text occurs same or more times than given" do
186
+ context 'with minimum' do
187
+ it 'should be true when text occurs same or more times than given' do
188
188
  @session.visit('/with_count')
189
189
  expect(@session).to have_text('count', minimum: 2)
190
190
  expect(@session).to have_text(/count/, minimum: 0)
191
191
  end
192
192
 
193
- it "should be false when text occurs fewer times than given" do
193
+ it 'should be false when text occurs fewer times than given' do
194
194
  @session.visit('/with_count')
195
195
  expect(@session).not_to have_text('count', minimum: 3)
196
196
  end
197
197
 
198
- it "should coerce minimum to an integer" do
198
+ it 'should coerce minimum to an integer' do
199
199
  @session.visit('/with_count')
200
200
  expect(@session).to have_text('count', minimum: '2')
201
201
  expect(@session).not_to have_text('count', minimum: '3')
202
202
  end
203
203
  end
204
204
 
205
- context "with wait", requires: [:js] do
206
- it "should find element if it appears before given wait duration" do
205
+ context 'with wait', requires: [:js] do
206
+ it 'should find element if it appears before given wait duration' do
207
207
  Capybara.using_wait_time(0.1) do
208
208
  @session.visit('/with_js')
209
209
  @session.click_link('Click me')
210
- expect(@session).to have_text('Has been clicked', wait: 0.9)
210
+ expect(@session).to have_text('Has been clicked', wait: 2)
211
211
  end
212
212
  end
213
213
  end
214
214
 
215
- it "should raise an error if an invalid option is passed" do
215
+ it 'should raise an error if an invalid option is passed' do
216
216
  @session.visit('/with_html')
217
217
  expect do
218
218
  expect(@session).to have_text('Lorem', invalid: true)
@@ -221,34 +221,34 @@ Capybara::SpecHelper.spec '#has_text?' do
221
221
  end
222
222
 
223
223
  Capybara::SpecHelper.spec '#has_no_text?' do
224
- it "should be false if the given text is on the page at least once" do
224
+ it 'should be false if the given text is on the page at least once' do
225
225
  @session.visit('/with_html')
226
226
  expect(@session).not_to have_no_text('est')
227
227
  expect(@session).not_to have_no_text('Lorem')
228
228
  expect(@session).not_to have_no_text('Redirect')
229
229
  end
230
230
 
231
- it "should be false if scoped to an element which has the text" do
231
+ it 'should be false if scoped to an element which has the text' do
232
232
  @session.visit('/with_html')
233
233
  @session.within("//a[@title='awesome title']") do
234
234
  expect(@session).not_to have_no_text('labore')
235
235
  end
236
236
  end
237
237
 
238
- it "should be true if scoped to an element which does not have the text" do
238
+ it 'should be true if scoped to an element which does not have the text' do
239
239
  @session.visit('/with_html')
240
240
  @session.within("//a[@title='awesome title']") do
241
241
  expect(@session).to have_no_text('monkey')
242
242
  end
243
243
  end
244
244
 
245
- it "should ignore tags" do
245
+ it 'should ignore tags' do
246
246
  @session.visit('/with_html')
247
247
  expect(@session).to have_no_text('exercitation <a href="/foo" id="foo">ullamco</a> laboris')
248
248
  expect(@session).not_to have_no_text('exercitation ullamco laboris')
249
249
  end
250
250
 
251
- it "should be true if the given text is not on the page" do
251
+ it 'should be true if the given text is not on the page' do
252
252
  @session.visit('/with_html')
253
253
  expect(@session).to have_no_text('xxxxyzzz')
254
254
  expect(@session).to have_no_text('monkey')
@@ -280,17 +280,17 @@ Capybara::SpecHelper.spec '#has_no_text?' do
280
280
  expect(@session).to have_no_text('aVar')
281
281
  end
282
282
 
283
- it "should be true if the given text is on the page but not visible" do
283
+ it 'should be true if the given text is on the page but not visible' do
284
284
  @session.visit('/with_html')
285
285
  expect(@session).to have_no_text('Inside element with hidden ancestor')
286
286
  end
287
287
 
288
- it "should be false if :all given and text is invisible." do
288
+ it 'should be false if :all given and text is invisible.' do
289
289
  @session.visit('/with_html')
290
290
  expect(@session).not_to have_no_text(:all, 'Some of this text is hidden!')
291
291
  end
292
292
 
293
- it "should be false if `Capybara.ignore_hidden_elements = false` and text is invisible." do
293
+ it 'should be false if `Capybara.ignore_hidden_elements = false` and text is invisible.' do
294
294
  Capybara.ignore_hidden_elements = false
295
295
  @session.visit('/with_html')
296
296
  expect(@session).not_to have_no_text('Some of this text is hidden!')
@@ -301,24 +301,25 @@ Capybara::SpecHelper.spec '#has_no_text?' do
301
301
  expect(@session).to have_no_text(/xxxxyzzz/)
302
302
  end
303
303
 
304
- it "should be false if the text in the page matches given regexp" do
304
+ it 'should be false if the text in the page matches given regexp' do
305
305
  @session.visit('/with_html')
306
306
  expect(@session).not_to have_no_text(/Lorem/)
307
307
  end
308
308
 
309
- it "should escape any characters that would have special meaning in a regexp" do
309
+ it 'should escape any characters that would have special meaning in a regexp' do
310
310
  @session.visit('/with_html')
311
311
  expect(@session).to have_no_text('.orem')
312
312
  end
313
313
 
314
- it "should wait for text to disappear", requires: [:js] do
314
+ it 'should wait for text to disappear', requires: [:js] do
315
+ Capybara.default_max_wait_time = 2
315
316
  @session.visit('/with_js')
316
317
  @session.click_link('Click me')
317
- expect(@session).to have_no_text("I changed it")
318
+ expect(@session).to have_no_text('I changed it')
318
319
  end
319
320
 
320
- context "with wait", requires: [:js] do
321
- it "should not find element if it appears after given wait duration" do
321
+ context 'with wait', requires: [:js] do
322
+ it 'should not find element if it appears after given wait duration' do
322
323
  @session.visit('/with_js')
323
324
  @session.click_link('Click me')
324
325
  expect(@session).to have_no_text('Has been clicked', wait: 0.05)
@@ -5,35 +5,35 @@ Capybara::SpecHelper.spec '#has_title?' do
5
5
  @session.visit('/with_js')
6
6
  end
7
7
 
8
- it "should be true if the page has the given title" do
8
+ it 'should be true if the page has the given title' do
9
9
  expect(@session).to have_title('with_js')
10
10
  end
11
11
 
12
- it "should allow regexp matches" do
12
+ it 'should allow regexp matches' do
13
13
  expect(@session).to have_title(/w[a-z]{3}_js/)
14
14
  expect(@session).not_to have_title(/monkey/)
15
15
  end
16
16
 
17
- it "should wait for title", requires: [:js] do
18
- @session.click_link("Change title")
19
- expect(@session).to have_title("changed title")
17
+ it 'should wait for title', requires: [:js] do
18
+ @session.click_link('Change title')
19
+ expect(@session).to have_title('changed title')
20
20
  end
21
21
 
22
- it "should be false if the page has not the given title" do
22
+ it 'should be false if the page has not the given title' do
23
23
  expect(@session).not_to have_title('monkey')
24
24
  end
25
25
 
26
- it "should default to exact: false matching" do
26
+ it 'should default to exact: false matching' do
27
27
  expect(@session).to have_title('with_js', exact: false)
28
28
  expect(@session).to have_title('with_', exact: false)
29
29
  end
30
30
 
31
- it "should match exactly if exact: true option passed" do
31
+ it 'should match exactly if exact: true option passed' do
32
32
  expect(@session).to have_title('with_js', exact: true)
33
33
  expect(@session).not_to have_title('with_', exact: true)
34
34
  end
35
35
 
36
- it "should match partial if exact: false option passed" do
36
+ it 'should match partial if exact: false option passed' do
37
37
  expect(@session).to have_title('with_js', exact: false)
38
38
  expect(@session).to have_title('with_', exact: false)
39
39
  end
@@ -44,23 +44,23 @@ Capybara::SpecHelper.spec '#has_no_title?' do
44
44
  @session.visit('/with_js')
45
45
  end
46
46
 
47
- it "should be false if the page has the given title" do
47
+ it 'should be false if the page has the given title' do
48
48
  expect(@session).not_to have_no_title('with_js')
49
49
  end
50
50
 
51
- it "should allow regexp matches" do
51
+ it 'should allow regexp matches' do
52
52
  expect(@session).not_to have_no_title(/w[a-z]{3}_js/)
53
53
  expect(@session).to have_no_title(/monkey/)
54
54
  end
55
55
 
56
- it "should wait for title to disappear", requires: [:js] do
56
+ it 'should wait for title to disappear', requires: [:js] do
57
57
  Capybara.using_wait_time(5) do
58
- @session.click_link("Change title") # triggers title change after 400ms
58
+ @session.click_link('Change title') # triggers title change after 400ms
59
59
  expect(@session).to have_no_title('with_js')
60
60
  end
61
61
  end
62
62
 
63
- it "should be true if the page has not the given title" do
63
+ it 'should be true if the page has not the given title' do
64
64
  expect(@session).to have_no_title('monkey')
65
65
  end
66
66
  end
@@ -5,31 +5,31 @@ Capybara::SpecHelper.spec '#has_xpath?' do
5
5
  @session.visit('/with_html')
6
6
  end
7
7
 
8
- it "should be true if the given selector is on the page" do
9
- expect(@session).to have_xpath("//p")
8
+ it 'should be true if the given selector is on the page' do
9
+ expect(@session).to have_xpath('//p')
10
10
  expect(@session).to have_xpath("//p//a[@id='foo']")
11
11
  expect(@session).to have_xpath("//p[contains(.,'est')]")
12
12
  end
13
13
 
14
- it "should be false if the given selector is not on the page" do
15
- expect(@session).not_to have_xpath("//abbr")
14
+ it 'should be false if the given selector is not on the page' do
15
+ expect(@session).not_to have_xpath('//abbr')
16
16
  expect(@session).not_to have_xpath("//p//a[@id='doesnotexist']")
17
17
  expect(@session).not_to have_xpath("//p[contains(.,'thisstringisnotonpage')]")
18
18
  end
19
19
 
20
- it "should use xpath even if default selector is CSS" do
20
+ it 'should use xpath even if default selector is CSS' do
21
21
  Capybara.default_selector = :css
22
22
  expect(@session).not_to have_xpath("//p//a[@id='doesnotexist']")
23
23
  end
24
24
 
25
- it "should respect scopes" do
25
+ it 'should respect scopes' do
26
26
  @session.within "//p[@id='first']" do
27
27
  expect(@session).to have_xpath(".//a[@id='foo']")
28
28
  expect(@session).not_to have_xpath(".//a[@id='red']")
29
29
  end
30
30
  end
31
31
 
32
- it "should wait for content to appear", requires: [:js] do
32
+ it 'should wait for content to appear', requires: [:js] do
33
33
  Capybara.using_wait_time(3) do
34
34
  @session.visit('/with_js')
35
35
  @session.click_link('Click me') # updates page after 500ms
@@ -37,31 +37,31 @@ Capybara::SpecHelper.spec '#has_xpath?' do
37
37
  end
38
38
  end
39
39
 
40
- context "with count" do
41
- it "should be true if the content occurs the given number of times" do
42
- expect(@session).to have_xpath("//p", count: 3)
40
+ context 'with count' do
41
+ it 'should be true if the content occurs the given number of times' do
42
+ expect(@session).to have_xpath('//p', count: 3)
43
43
  expect(@session).to have_xpath("//p//a[@id='foo']", count: 1)
44
44
  expect(@session).to have_xpath("//p[contains(.,'est')]", count: 1)
45
45
  expect(@session).to have_xpath("//p//a[@id='doesnotexist']", count: 0)
46
46
  end
47
47
 
48
- it "should be false if the content occurs a different number of times than the given" do
49
- expect(@session).not_to have_xpath("//p", count: 6)
48
+ it 'should be false if the content occurs a different number of times than the given' do
49
+ expect(@session).not_to have_xpath('//p', count: 6)
50
50
  expect(@session).not_to have_xpath("//p//a[@id='foo']", count: 2)
51
51
  expect(@session).not_to have_xpath("//p[contains(.,'est')]", count: 5)
52
52
  expect(@session).not_to have_xpath("//p//a[@id='doesnotexist']", count: 1)
53
53
  end
54
54
  end
55
55
 
56
- context "with text" do
57
- it "should discard all matches where the given string is not contained" do
58
- expect(@session).to have_xpath("//p//a", text: "Redirect", count: 1)
59
- expect(@session).not_to have_xpath("//p", text: "Doesnotexist")
56
+ context 'with text' do
57
+ it 'should discard all matches where the given string is not contained' do
58
+ expect(@session).to have_xpath('//p//a', text: 'Redirect', count: 1)
59
+ expect(@session).not_to have_xpath('//p', text: 'Doesnotexist')
60
60
  end
61
61
 
62
- it "should discard all matches where the given regexp is not matched" do
63
- expect(@session).to have_xpath("//p//a", text: /re[dab]i/i, count: 1)
64
- expect(@session).not_to have_xpath("//p//a", text: /Red$/)
62
+ it 'should discard all matches where the given regexp is not matched' do
63
+ expect(@session).to have_xpath('//p//a', text: /re[dab]i/i, count: 1)
64
+ expect(@session).not_to have_xpath('//p//a', text: /Red$/)
65
65
  end
66
66
  end
67
67
  end
@@ -71,61 +71,62 @@ Capybara::SpecHelper.spec '#has_no_xpath?' do
71
71
  @session.visit('/with_html')
72
72
  end
73
73
 
74
- it "should be false if the given selector is on the page" do
75
- expect(@session).not_to have_no_xpath("//p")
74
+ it 'should be false if the given selector is on the page' do
75
+ expect(@session).not_to have_no_xpath('//p')
76
76
  expect(@session).not_to have_no_xpath("//p//a[@id='foo']")
77
77
  expect(@session).not_to have_no_xpath("//p[contains(.,'est')]")
78
78
  end
79
79
 
80
- it "should be true if the given selector is not on the page" do
81
- expect(@session).to have_no_xpath("//abbr")
80
+ it 'should be true if the given selector is not on the page' do
81
+ expect(@session).to have_no_xpath('//abbr')
82
82
  expect(@session).to have_no_xpath("//p//a[@id='doesnotexist']")
83
83
  expect(@session).to have_no_xpath("//p[contains(.,'thisstringisnotonpage')]")
84
84
  end
85
85
 
86
- it "should use xpath even if default selector is CSS" do
86
+ it 'should use xpath even if default selector is CSS' do
87
87
  Capybara.default_selector = :css
88
88
  expect(@session).to have_no_xpath("//p//a[@id='doesnotexist']")
89
89
  end
90
90
 
91
- it "should respect scopes" do
91
+ it 'should respect scopes' do
92
92
  @session.within "//p[@id='first']" do
93
93
  expect(@session).not_to have_no_xpath(".//a[@id='foo']")
94
94
  expect(@session).to have_no_xpath(".//a[@id='red']")
95
95
  end
96
96
  end
97
97
 
98
- it "should wait for content to disappear", requires: [:js] do
98
+ it 'should wait for content to disappear', requires: [:js] do
99
+ Capybara.default_max_wait_time = 2
99
100
  @session.visit('/with_js')
100
101
  @session.click_link('Click me')
101
102
  expect(@session).to have_no_xpath("//p[@id='change']")
102
103
  end
103
104
 
104
- context "with count" do
105
- it "should be false if the content occurs the given number of times" do
106
- expect(@session).not_to have_no_xpath("//p", count: 3)
105
+ context 'with count' do
106
+ it 'should be false if the content occurs the given number of times' do
107
+ expect(@session).not_to have_no_xpath('//p', count: 3)
107
108
  expect(@session).not_to have_no_xpath("//p//a[@id='foo']", count: 1)
108
109
  expect(@session).not_to have_no_xpath("//p[contains(.,'est')]", count: 1)
109
110
  expect(@session).not_to have_no_xpath("//p//a[@id='doesnotexist']", count: 0)
110
111
  end
111
112
 
112
- it "should be true if the content occurs a different number of times than the given" do
113
- expect(@session).to have_no_xpath("//p", count: 6)
113
+ it 'should be true if the content occurs a different number of times than the given' do
114
+ expect(@session).to have_no_xpath('//p', count: 6)
114
115
  expect(@session).to have_no_xpath("//p//a[@id='foo']", count: 2)
115
116
  expect(@session).to have_no_xpath("//p[contains(.,'est')]", count: 5)
116
117
  expect(@session).to have_no_xpath("//p//a[@id='doesnotexist']", count: 1)
117
118
  end
118
119
  end
119
120
 
120
- context "with text" do
121
- it "should discard all matches where the given string is contained" do
122
- expect(@session).not_to have_no_xpath("//p//a", text: "Redirect", count: 1)
123
- expect(@session).to have_no_xpath("//p", text: "Doesnotexist")
121
+ context 'with text' do
122
+ it 'should discard all matches where the given string is contained' do
123
+ expect(@session).not_to have_no_xpath('//p//a', text: 'Redirect', count: 1)
124
+ expect(@session).to have_no_xpath('//p', text: 'Doesnotexist')
124
125
  end
125
126
 
126
- it "should discard all matches where the given regexp is matched" do
127
- expect(@session).not_to have_no_xpath("//p//a", text: /re[dab]i/i, count: 1)
128
- expect(@session).to have_no_xpath("//p//a", text: /Red$/)
127
+ it 'should discard all matches where the given regexp is matched' do
128
+ expect(@session).not_to have_no_xpath('//p//a', text: /re[dab]i/i, count: 1)
129
+ expect(@session).to have_no_xpath('//p//a', text: /Red$/)
129
130
  end
130
131
  end
131
132
  end