capybara 3.8.1 → 3.33.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (242) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +1 -0
  3. data/History.md +465 -0
  4. data/License.txt +1 -1
  5. data/README.md +58 -57
  6. data/lib/capybara/config.rb +10 -4
  7. data/lib/capybara/cucumber.rb +1 -1
  8. data/lib/capybara/driver/base.rb +2 -2
  9. data/lib/capybara/driver/node.rb +26 -5
  10. data/lib/capybara/dsl.rb +12 -4
  11. data/lib/capybara/helpers.rb +8 -4
  12. data/lib/capybara/minitest/spec.rb +162 -85
  13. data/lib/capybara/minitest.rb +248 -148
  14. data/lib/capybara/node/actions.rb +149 -96
  15. data/lib/capybara/node/base.rb +27 -10
  16. data/lib/capybara/node/document.rb +12 -0
  17. data/lib/capybara/node/document_matchers.rb +9 -5
  18. data/lib/capybara/node/element.rb +254 -109
  19. data/lib/capybara/node/finders.rb +83 -76
  20. data/lib/capybara/node/matchers.rb +279 -141
  21. data/lib/capybara/node/simple.rb +25 -6
  22. data/lib/capybara/queries/ancestor_query.rb +5 -7
  23. data/lib/capybara/queries/base_query.rb +11 -5
  24. data/lib/capybara/queries/current_path_query.rb +3 -3
  25. data/lib/capybara/queries/match_query.rb +1 -0
  26. data/lib/capybara/queries/selector_query.rb +467 -103
  27. data/lib/capybara/queries/sibling_query.rb +5 -4
  28. data/lib/capybara/queries/style_query.rb +6 -2
  29. data/lib/capybara/queries/text_query.rb +17 -3
  30. data/lib/capybara/queries/title_query.rb +2 -2
  31. data/lib/capybara/rack_test/browser.rb +22 -15
  32. data/lib/capybara/rack_test/driver.rb +10 -1
  33. data/lib/capybara/rack_test/errors.rb +6 -0
  34. data/lib/capybara/rack_test/form.rb +33 -28
  35. data/lib/capybara/rack_test/node.rb +74 -6
  36. data/lib/capybara/registration_container.rb +44 -0
  37. data/lib/capybara/registrations/drivers.rb +36 -0
  38. data/lib/capybara/registrations/patches/puma_ssl.rb +27 -0
  39. data/lib/capybara/registrations/servers.rb +44 -0
  40. data/lib/capybara/result.rb +55 -23
  41. data/lib/capybara/rspec/features.rb +4 -4
  42. data/lib/capybara/rspec/matcher_proxies.rb +36 -15
  43. data/lib/capybara/rspec/matchers/base.rb +111 -0
  44. data/lib/capybara/rspec/matchers/become_closed.rb +33 -0
  45. data/lib/capybara/rspec/matchers/compound.rb +88 -0
  46. data/lib/capybara/rspec/matchers/count_sugar.rb +37 -0
  47. data/lib/capybara/rspec/matchers/have_ancestor.rb +28 -0
  48. data/lib/capybara/rspec/matchers/have_current_path.rb +29 -0
  49. data/lib/capybara/rspec/matchers/have_selector.rb +77 -0
  50. data/lib/capybara/rspec/matchers/have_sibling.rb +27 -0
  51. data/lib/capybara/rspec/matchers/have_text.rb +33 -0
  52. data/lib/capybara/rspec/matchers/have_title.rb +29 -0
  53. data/lib/capybara/rspec/matchers/match_selector.rb +27 -0
  54. data/lib/capybara/rspec/matchers/match_style.rb +38 -0
  55. data/lib/capybara/rspec/matchers/spatial_sugar.rb +39 -0
  56. data/lib/capybara/rspec/matchers.rb +117 -311
  57. data/lib/capybara/selector/builders/css_builder.rb +84 -0
  58. data/lib/capybara/selector/builders/xpath_builder.rb +69 -0
  59. data/lib/capybara/selector/css.rb +17 -15
  60. data/lib/capybara/selector/definition/button.rb +52 -0
  61. data/lib/capybara/selector/definition/checkbox.rb +26 -0
  62. data/lib/capybara/selector/definition/css.rb +10 -0
  63. data/lib/capybara/selector/definition/datalist_input.rb +35 -0
  64. data/lib/capybara/selector/definition/datalist_option.rb +25 -0
  65. data/lib/capybara/selector/definition/element.rb +27 -0
  66. data/lib/capybara/selector/definition/field.rb +40 -0
  67. data/lib/capybara/selector/definition/fieldset.rb +14 -0
  68. data/lib/capybara/selector/definition/file_field.rb +13 -0
  69. data/lib/capybara/selector/definition/fillable_field.rb +33 -0
  70. data/lib/capybara/selector/definition/frame.rb +17 -0
  71. data/lib/capybara/selector/definition/id.rb +6 -0
  72. data/lib/capybara/selector/definition/label.rb +62 -0
  73. data/lib/capybara/selector/definition/link.rb +54 -0
  74. data/lib/capybara/selector/definition/link_or_button.rb +16 -0
  75. data/lib/capybara/selector/definition/option.rb +27 -0
  76. data/lib/capybara/selector/definition/radio_button.rb +27 -0
  77. data/lib/capybara/selector/definition/select.rb +81 -0
  78. data/lib/capybara/selector/definition/table.rb +109 -0
  79. data/lib/capybara/selector/definition/table_row.rb +21 -0
  80. data/lib/capybara/selector/definition/xpath.rb +5 -0
  81. data/lib/capybara/selector/definition.rb +277 -0
  82. data/lib/capybara/selector/filter.rb +1 -0
  83. data/lib/capybara/selector/filter_set.rb +26 -19
  84. data/lib/capybara/selector/filters/base.rb +24 -5
  85. data/lib/capybara/selector/filters/expression_filter.rb +3 -3
  86. data/lib/capybara/selector/filters/locator_filter.rb +29 -0
  87. data/lib/capybara/selector/filters/node_filter.rb +16 -2
  88. data/lib/capybara/selector/regexp_disassembler.rb +214 -0
  89. data/lib/capybara/selector/selector.rb +73 -367
  90. data/lib/capybara/selector/xpath_extensions.rb +17 -0
  91. data/lib/capybara/selector.rb +221 -480
  92. data/lib/capybara/selenium/atoms/getAttribute.min.js +1 -0
  93. data/lib/capybara/selenium/atoms/isDisplayed.min.js +1 -0
  94. data/lib/capybara/selenium/atoms/src/getAttribute.js +161 -0
  95. data/lib/capybara/selenium/atoms/src/isDisplayed.js +454 -0
  96. data/lib/capybara/selenium/driver.rb +203 -86
  97. data/lib/capybara/selenium/driver_specializations/chrome_driver.rb +88 -14
  98. data/lib/capybara/selenium/driver_specializations/edge_driver.rb +124 -0
  99. data/lib/capybara/selenium/driver_specializations/firefox_driver.rb +89 -0
  100. data/lib/capybara/selenium/driver_specializations/internet_explorer_driver.rb +26 -0
  101. data/lib/capybara/selenium/driver_specializations/safari_driver.rb +24 -0
  102. data/lib/capybara/selenium/extensions/file_input_click_emulation.rb +34 -0
  103. data/lib/capybara/selenium/extensions/find.rb +110 -0
  104. data/lib/capybara/selenium/extensions/html5_drag.rb +191 -22
  105. data/lib/capybara/selenium/extensions/modifier_keys_stack.rb +28 -0
  106. data/lib/capybara/selenium/extensions/scroll.rb +78 -0
  107. data/lib/capybara/selenium/logger_suppressor.rb +34 -0
  108. data/lib/capybara/selenium/node.rb +298 -93
  109. data/lib/capybara/selenium/nodes/chrome_node.rb +100 -8
  110. data/lib/capybara/selenium/nodes/edge_node.rb +104 -0
  111. data/lib/capybara/selenium/nodes/firefox_node.rb +131 -0
  112. data/lib/capybara/selenium/nodes/ie_node.rb +22 -0
  113. data/lib/capybara/selenium/nodes/safari_node.rb +118 -0
  114. data/lib/capybara/selenium/patches/action_pauser.rb +26 -0
  115. data/lib/capybara/selenium/patches/atoms.rb +18 -0
  116. data/lib/capybara/selenium/patches/is_displayed.rb +16 -0
  117. data/lib/capybara/selenium/patches/logs.rb +45 -0
  118. data/lib/capybara/selenium/patches/pause_duration_fix.rb +1 -3
  119. data/lib/capybara/selenium/patches/persistent_client.rb +20 -0
  120. data/lib/capybara/server/animation_disabler.rb +4 -3
  121. data/lib/capybara/server/checker.rb +6 -2
  122. data/lib/capybara/server/middleware.rb +23 -13
  123. data/lib/capybara/server.rb +30 -7
  124. data/lib/capybara/session/config.rb +14 -10
  125. data/lib/capybara/session/matchers.rb +11 -7
  126. data/lib/capybara/session.rb +152 -111
  127. data/lib/capybara/spec/public/offset.js +6 -0
  128. data/lib/capybara/spec/public/test.js +101 -10
  129. data/lib/capybara/spec/session/all_spec.rb +96 -6
  130. data/lib/capybara/spec/session/ancestor_spec.rb +5 -0
  131. data/lib/capybara/spec/session/assert_all_of_selectors_spec.rb +29 -0
  132. data/lib/capybara/spec/session/assert_current_path_spec.rb +5 -2
  133. data/lib/capybara/spec/session/assert_selector_spec.rb +0 -10
  134. data/lib/capybara/spec/session/assert_style_spec.rb +4 -4
  135. data/lib/capybara/spec/session/assert_text_spec.rb +9 -5
  136. data/lib/capybara/spec/session/attach_file_spec.rb +63 -36
  137. data/lib/capybara/spec/session/check_spec.rb +10 -4
  138. data/lib/capybara/spec/session/choose_spec.rb +8 -2
  139. data/lib/capybara/spec/session/click_button_spec.rb +117 -61
  140. data/lib/capybara/spec/session/click_link_or_button_spec.rb +16 -0
  141. data/lib/capybara/spec/session/click_link_spec.rb +17 -6
  142. data/lib/capybara/spec/session/element/matches_selector_spec.rb +40 -39
  143. data/lib/capybara/spec/session/evaluate_script_spec.rb +13 -0
  144. data/lib/capybara/spec/session/execute_script_spec.rb +1 -0
  145. data/lib/capybara/spec/session/fill_in_spec.rb +47 -6
  146. data/lib/capybara/spec/session/find_field_spec.rb +1 -1
  147. data/lib/capybara/spec/session/find_spec.rb +74 -4
  148. data/lib/capybara/spec/session/first_spec.rb +1 -1
  149. data/lib/capybara/spec/session/frame/switch_to_frame_spec.rb +13 -1
  150. data/lib/capybara/spec/session/frame/within_frame_spec.rb +12 -1
  151. data/lib/capybara/spec/session/has_all_selectors_spec.rb +1 -1
  152. data/lib/capybara/spec/session/has_ancestor_spec.rb +46 -0
  153. data/lib/capybara/spec/session/has_any_selectors_spec.rb +25 -0
  154. data/lib/capybara/spec/session/has_button_spec.rb +16 -0
  155. data/lib/capybara/spec/session/has_css_spec.rb +122 -12
  156. data/lib/capybara/spec/session/has_current_path_spec.rb +6 -4
  157. data/lib/capybara/spec/session/has_field_spec.rb +55 -0
  158. data/lib/capybara/spec/session/has_select_spec.rb +34 -6
  159. data/lib/capybara/spec/session/has_selector_spec.rb +11 -4
  160. data/lib/capybara/spec/session/has_sibling_spec.rb +50 -0
  161. data/lib/capybara/spec/session/has_table_spec.rb +166 -0
  162. data/lib/capybara/spec/session/has_text_spec.rb +48 -1
  163. data/lib/capybara/spec/session/has_xpath_spec.rb +17 -0
  164. data/lib/capybara/spec/session/html_spec.rb +7 -0
  165. data/lib/capybara/spec/session/matches_style_spec.rb +35 -0
  166. data/lib/capybara/spec/session/node_spec.rb +643 -18
  167. data/lib/capybara/spec/session/node_wrapper_spec.rb +1 -1
  168. data/lib/capybara/spec/session/refresh_spec.rb +4 -0
  169. data/lib/capybara/spec/session/reset_session_spec.rb +23 -8
  170. data/lib/capybara/spec/session/save_and_open_screenshot_spec.rb +2 -2
  171. data/lib/capybara/spec/session/save_screenshot_spec.rb +4 -4
  172. data/lib/capybara/spec/session/scroll_spec.rb +117 -0
  173. data/lib/capybara/spec/session/select_spec.rb +10 -10
  174. data/lib/capybara/spec/session/selectors_spec.rb +36 -5
  175. data/lib/capybara/spec/session/uncheck_spec.rb +2 -2
  176. data/lib/capybara/spec/session/unselect_spec.rb +1 -1
  177. data/lib/capybara/spec/session/window/become_closed_spec.rb +20 -17
  178. data/lib/capybara/spec/session/window/switch_to_window_spec.rb +4 -0
  179. data/lib/capybara/spec/session/window/window_opened_by_spec.rb +4 -0
  180. data/lib/capybara/spec/session/window/window_spec.rb +59 -58
  181. data/lib/capybara/spec/session/window/windows_spec.rb +4 -0
  182. data/lib/capybara/spec/session/within_spec.rb +23 -0
  183. data/lib/capybara/spec/spec_helper.rb +16 -6
  184. data/lib/capybara/spec/test_app.rb +28 -23
  185. data/lib/capybara/spec/views/animated.erb +49 -0
  186. data/lib/capybara/spec/views/form.erb +48 -7
  187. data/lib/capybara/spec/views/frame_child.erb +3 -2
  188. data/lib/capybara/spec/views/frame_one.erb +1 -0
  189. data/lib/capybara/spec/views/obscured.erb +47 -0
  190. data/lib/capybara/spec/views/offset.erb +32 -0
  191. data/lib/capybara/spec/views/react.erb +45 -0
  192. data/lib/capybara/spec/views/scroll.erb +20 -0
  193. data/lib/capybara/spec/views/spatial.erb +31 -0
  194. data/lib/capybara/spec/views/tables.erb +67 -0
  195. data/lib/capybara/spec/views/with_animation.erb +29 -1
  196. data/lib/capybara/spec/views/with_dragula.erb +24 -0
  197. data/lib/capybara/spec/views/with_hover.erb +1 -0
  198. data/lib/capybara/spec/views/with_hover1.erb +10 -0
  199. data/lib/capybara/spec/views/with_html.erb +32 -6
  200. data/lib/capybara/spec/views/with_js.erb +3 -1
  201. data/lib/capybara/spec/views/with_jstree.erb +26 -0
  202. data/lib/capybara/spec/views/with_scope_other.erb +6 -0
  203. data/lib/capybara/spec/views/with_sortable_js.erb +21 -0
  204. data/lib/capybara/version.rb +1 -1
  205. data/lib/capybara/window.rb +11 -11
  206. data/lib/capybara.rb +118 -111
  207. data/spec/basic_node_spec.rb +14 -3
  208. data/spec/capybara_spec.rb +29 -29
  209. data/spec/css_builder_spec.rb +101 -0
  210. data/spec/dsl_spec.rb +46 -21
  211. data/spec/filter_set_spec.rb +5 -5
  212. data/spec/fixtures/selenium_driver_rspec_failure.rb +1 -1
  213. data/spec/fixtures/selenium_driver_rspec_success.rb +1 -1
  214. data/spec/minitest_spec.rb +18 -4
  215. data/spec/minitest_spec_spec.rb +59 -44
  216. data/spec/rack_test_spec.rb +117 -89
  217. data/spec/regexp_dissassembler_spec.rb +250 -0
  218. data/spec/result_spec.rb +51 -49
  219. data/spec/rspec/features_spec.rb +3 -0
  220. data/spec/rspec/shared_spec_matchers.rb +112 -97
  221. data/spec/rspec_spec.rb +35 -17
  222. data/spec/sauce_spec_chrome.rb +43 -0
  223. data/spec/selector_spec.rb +244 -28
  224. data/spec/selenium_spec_chrome.rb +125 -54
  225. data/spec/selenium_spec_chrome_remote.rb +26 -12
  226. data/spec/selenium_spec_edge.rb +23 -8
  227. data/spec/selenium_spec_firefox.rb +208 -0
  228. data/spec/selenium_spec_firefox_remote.rb +15 -18
  229. data/spec/selenium_spec_ie.rb +82 -13
  230. data/spec/selenium_spec_safari.rb +148 -0
  231. data/spec/server_spec.rb +118 -77
  232. data/spec/session_spec.rb +19 -3
  233. data/spec/shared_selenium_node.rb +83 -0
  234. data/spec/shared_selenium_session.rb +110 -65
  235. data/spec/spec_helper.rb +57 -9
  236. data/spec/xpath_builder_spec.rb +93 -0
  237. metadata +257 -17
  238. data/lib/capybara/rspec/compound.rb +0 -94
  239. data/lib/capybara/selenium/driver_specializations/marionette_driver.rb +0 -49
  240. data/lib/capybara/selenium/nodes/marionette_node.rb +0 -121
  241. data/lib/capybara/spec/session/has_style_spec.rb +0 -25
  242. data/spec/selenium_spec_marionette.rb +0 -172
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capybara
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.8.1
4
+ version: 3.33.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas Walpole
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain:
12
12
  - gem-public_cert.pem
13
- date: 2018-09-22 00:00:00.000000000 Z
13
+ date: 2020-06-21 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: addressable
@@ -82,20 +82,62 @@ dependencies:
82
82
  - - ">="
83
83
  - !ruby/object:Gem::Version
84
84
  version: 0.6.3
85
+ - !ruby/object:Gem::Dependency
86
+ name: regexp_parser
87
+ requirement: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - "~>"
90
+ - !ruby/object:Gem::Version
91
+ version: '1.5'
92
+ type: :runtime
93
+ prerelease: false
94
+ version_requirements: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - "~>"
97
+ - !ruby/object:Gem::Version
98
+ version: '1.5'
85
99
  - !ruby/object:Gem::Dependency
86
100
  name: xpath
87
101
  requirement: !ruby/object:Gem::Requirement
88
102
  requirements:
89
103
  - - "~>"
90
104
  - !ruby/object:Gem::Version
91
- version: '3.1'
105
+ version: '3.2'
92
106
  type: :runtime
93
107
  prerelease: false
94
108
  version_requirements: !ruby/object:Gem::Requirement
95
109
  requirements:
96
110
  - - "~>"
97
111
  - !ruby/object:Gem::Version
98
- version: '3.1'
112
+ version: '3.2'
113
+ - !ruby/object:Gem::Dependency
114
+ name: byebug
115
+ requirement: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - ">="
118
+ - !ruby/object:Gem::Version
119
+ version: '0'
120
+ type: :development
121
+ prerelease: false
122
+ version_requirements: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - ">="
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
127
+ - !ruby/object:Gem::Dependency
128
+ name: coveralls
129
+ requirement: !ruby/object:Gem::Requirement
130
+ requirements:
131
+ - - ">="
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
134
+ type: :development
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ requirements:
138
+ - - ">="
139
+ - !ruby/object:Gem::Version
140
+ version: '0'
99
141
  - !ruby/object:Gem::Dependency
100
142
  name: cucumber
101
143
  requirement: !ruby/object:Gem::Requirement
@@ -125,19 +167,19 @@ dependencies:
125
167
  - !ruby/object:Gem::Version
126
168
  version: '0'
127
169
  - !ruby/object:Gem::Dependency
128
- name: fuubar
170
+ name: irb
129
171
  requirement: !ruby/object:Gem::Requirement
130
172
  requirements:
131
173
  - - ">="
132
174
  - !ruby/object:Gem::Version
133
- version: 1.0.0
175
+ version: '0'
134
176
  type: :development
135
177
  prerelease: false
136
178
  version_requirements: !ruby/object:Gem::Requirement
137
179
  requirements:
138
180
  - - ">="
139
181
  - !ruby/object:Gem::Version
140
- version: 1.0.0
182
+ version: '0'
141
183
  - !ruby/object:Gem::Dependency
142
184
  name: launchy
143
185
  requirement: !ruby/object:Gem::Requirement
@@ -200,14 +242,84 @@ dependencies:
200
242
  requirements:
201
243
  - - ">="
202
244
  - !ruby/object:Gem::Version
203
- version: 3.4.0
245
+ version: 3.5.0
246
+ type: :development
247
+ prerelease: false
248
+ version_requirements: !ruby/object:Gem::Requirement
249
+ requirements:
250
+ - - ">="
251
+ - !ruby/object:Gem::Version
252
+ version: 3.5.0
253
+ - !ruby/object:Gem::Dependency
254
+ name: rspec-instafail
255
+ requirement: !ruby/object:Gem::Requirement
256
+ requirements:
257
+ - - ">="
258
+ - !ruby/object:Gem::Version
259
+ version: '0'
204
260
  type: :development
205
261
  prerelease: false
206
262
  version_requirements: !ruby/object:Gem::Requirement
207
263
  requirements:
208
264
  - - ">="
209
265
  - !ruby/object:Gem::Version
210
- version: 3.4.0
266
+ version: '0'
267
+ - !ruby/object:Gem::Dependency
268
+ name: rubocop
269
+ requirement: !ruby/object:Gem::Requirement
270
+ requirements:
271
+ - - "~>"
272
+ - !ruby/object:Gem::Version
273
+ version: '0.72'
274
+ type: :development
275
+ prerelease: false
276
+ version_requirements: !ruby/object:Gem::Requirement
277
+ requirements:
278
+ - - "~>"
279
+ - !ruby/object:Gem::Version
280
+ version: '0.72'
281
+ - !ruby/object:Gem::Dependency
282
+ name: rubocop-performance
283
+ requirement: !ruby/object:Gem::Requirement
284
+ requirements:
285
+ - - ">="
286
+ - !ruby/object:Gem::Version
287
+ version: '0'
288
+ type: :development
289
+ prerelease: false
290
+ version_requirements: !ruby/object:Gem::Requirement
291
+ requirements:
292
+ - - ">="
293
+ - !ruby/object:Gem::Version
294
+ version: '0'
295
+ - !ruby/object:Gem::Dependency
296
+ name: rubocop-rspec
297
+ requirement: !ruby/object:Gem::Requirement
298
+ requirements:
299
+ - - ">="
300
+ - !ruby/object:Gem::Version
301
+ version: '0'
302
+ type: :development
303
+ prerelease: false
304
+ version_requirements: !ruby/object:Gem::Requirement
305
+ requirements:
306
+ - - ">="
307
+ - !ruby/object:Gem::Version
308
+ version: '0'
309
+ - !ruby/object:Gem::Dependency
310
+ name: sauce_whisk
311
+ requirement: !ruby/object:Gem::Requirement
312
+ requirements:
313
+ - - ">="
314
+ - !ruby/object:Gem::Version
315
+ version: '0'
316
+ type: :development
317
+ prerelease: false
318
+ version_requirements: !ruby/object:Gem::Requirement
319
+ requirements:
320
+ - - ">="
321
+ - !ruby/object:Gem::Version
322
+ version: '0'
211
323
  - !ruby/object:Gem::Dependency
212
324
  name: selenium-webdriver
213
325
  requirement: !ruby/object:Gem::Requirement
@@ -222,6 +334,20 @@ dependencies:
222
334
  - - "~>"
223
335
  - !ruby/object:Gem::Version
224
336
  version: '3.5'
337
+ - !ruby/object:Gem::Dependency
338
+ name: selenium_statistics
339
+ requirement: !ruby/object:Gem::Requirement
340
+ requirements:
341
+ - - ">="
342
+ - !ruby/object:Gem::Version
343
+ version: '0'
344
+ type: :development
345
+ prerelease: false
346
+ version_requirements: !ruby/object:Gem::Requirement
347
+ requirements:
348
+ - - ">="
349
+ - !ruby/object:Gem::Version
350
+ version: '0'
225
351
  - !ruby/object:Gem::Dependency
226
352
  name: sinatra
227
353
  requirement: !ruby/object:Gem::Requirement
@@ -236,6 +362,34 @@ dependencies:
236
362
  - - ">="
237
363
  - !ruby/object:Gem::Version
238
364
  version: 1.4.0
365
+ - !ruby/object:Gem::Dependency
366
+ name: uglifier
367
+ requirement: !ruby/object:Gem::Requirement
368
+ requirements:
369
+ - - ">="
370
+ - !ruby/object:Gem::Version
371
+ version: '0'
372
+ type: :development
373
+ prerelease: false
374
+ version_requirements: !ruby/object:Gem::Requirement
375
+ requirements:
376
+ - - ">="
377
+ - !ruby/object:Gem::Version
378
+ version: '0'
379
+ - !ruby/object:Gem::Dependency
380
+ name: webdrivers
381
+ requirement: !ruby/object:Gem::Requirement
382
+ requirements:
383
+ - - ">="
384
+ - !ruby/object:Gem::Version
385
+ version: 3.6.0
386
+ type: :development
387
+ prerelease: false
388
+ version_requirements: !ruby/object:Gem::Requirement
389
+ requirements:
390
+ - - ">="
391
+ - !ruby/object:Gem::Version
392
+ version: 3.6.0
239
393
  - !ruby/object:Gem::Dependency
240
394
  name: yard
241
395
  requirement: !ruby/object:Gem::Requirement
@@ -259,6 +413,7 @@ executables: []
259
413
  extensions: []
260
414
  extra_rdoc_files: []
261
415
  files:
416
+ - ".yardopts"
262
417
  - History.md
263
418
  - License.txt
264
419
  - README.md
@@ -291,31 +446,95 @@ files:
291
446
  - lib/capybara/rack_test/browser.rb
292
447
  - lib/capybara/rack_test/css_handlers.rb
293
448
  - lib/capybara/rack_test/driver.rb
449
+ - lib/capybara/rack_test/errors.rb
294
450
  - lib/capybara/rack_test/form.rb
295
451
  - lib/capybara/rack_test/node.rb
296
452
  - lib/capybara/rails.rb
453
+ - lib/capybara/registration_container.rb
454
+ - lib/capybara/registrations/drivers.rb
455
+ - lib/capybara/registrations/patches/puma_ssl.rb
456
+ - lib/capybara/registrations/servers.rb
297
457
  - lib/capybara/result.rb
298
458
  - lib/capybara/rspec.rb
299
- - lib/capybara/rspec/compound.rb
300
459
  - lib/capybara/rspec/features.rb
301
460
  - lib/capybara/rspec/matcher_proxies.rb
302
461
  - lib/capybara/rspec/matchers.rb
462
+ - lib/capybara/rspec/matchers/base.rb
463
+ - lib/capybara/rspec/matchers/become_closed.rb
464
+ - lib/capybara/rspec/matchers/compound.rb
465
+ - lib/capybara/rspec/matchers/count_sugar.rb
466
+ - lib/capybara/rspec/matchers/have_ancestor.rb
467
+ - lib/capybara/rspec/matchers/have_current_path.rb
468
+ - lib/capybara/rspec/matchers/have_selector.rb
469
+ - lib/capybara/rspec/matchers/have_sibling.rb
470
+ - lib/capybara/rspec/matchers/have_text.rb
471
+ - lib/capybara/rspec/matchers/have_title.rb
472
+ - lib/capybara/rspec/matchers/match_selector.rb
473
+ - lib/capybara/rspec/matchers/match_style.rb
474
+ - lib/capybara/rspec/matchers/spatial_sugar.rb
303
475
  - lib/capybara/selector.rb
476
+ - lib/capybara/selector/builders/css_builder.rb
477
+ - lib/capybara/selector/builders/xpath_builder.rb
304
478
  - lib/capybara/selector/css.rb
479
+ - lib/capybara/selector/definition.rb
480
+ - lib/capybara/selector/definition/button.rb
481
+ - lib/capybara/selector/definition/checkbox.rb
482
+ - lib/capybara/selector/definition/css.rb
483
+ - lib/capybara/selector/definition/datalist_input.rb
484
+ - lib/capybara/selector/definition/datalist_option.rb
485
+ - lib/capybara/selector/definition/element.rb
486
+ - lib/capybara/selector/definition/field.rb
487
+ - lib/capybara/selector/definition/fieldset.rb
488
+ - lib/capybara/selector/definition/file_field.rb
489
+ - lib/capybara/selector/definition/fillable_field.rb
490
+ - lib/capybara/selector/definition/frame.rb
491
+ - lib/capybara/selector/definition/id.rb
492
+ - lib/capybara/selector/definition/label.rb
493
+ - lib/capybara/selector/definition/link.rb
494
+ - lib/capybara/selector/definition/link_or_button.rb
495
+ - lib/capybara/selector/definition/option.rb
496
+ - lib/capybara/selector/definition/radio_button.rb
497
+ - lib/capybara/selector/definition/select.rb
498
+ - lib/capybara/selector/definition/table.rb
499
+ - lib/capybara/selector/definition/table_row.rb
500
+ - lib/capybara/selector/definition/xpath.rb
305
501
  - lib/capybara/selector/filter.rb
306
502
  - lib/capybara/selector/filter_set.rb
307
503
  - lib/capybara/selector/filters/base.rb
308
504
  - lib/capybara/selector/filters/expression_filter.rb
505
+ - lib/capybara/selector/filters/locator_filter.rb
309
506
  - lib/capybara/selector/filters/node_filter.rb
507
+ - lib/capybara/selector/regexp_disassembler.rb
310
508
  - lib/capybara/selector/selector.rb
509
+ - lib/capybara/selector/xpath_extensions.rb
510
+ - lib/capybara/selenium/atoms/getAttribute.min.js
511
+ - lib/capybara/selenium/atoms/isDisplayed.min.js
512
+ - lib/capybara/selenium/atoms/src/getAttribute.js
513
+ - lib/capybara/selenium/atoms/src/isDisplayed.js
311
514
  - lib/capybara/selenium/driver.rb
312
515
  - lib/capybara/selenium/driver_specializations/chrome_driver.rb
313
- - lib/capybara/selenium/driver_specializations/marionette_driver.rb
516
+ - lib/capybara/selenium/driver_specializations/edge_driver.rb
517
+ - lib/capybara/selenium/driver_specializations/firefox_driver.rb
518
+ - lib/capybara/selenium/driver_specializations/internet_explorer_driver.rb
519
+ - lib/capybara/selenium/driver_specializations/safari_driver.rb
520
+ - lib/capybara/selenium/extensions/file_input_click_emulation.rb
521
+ - lib/capybara/selenium/extensions/find.rb
314
522
  - lib/capybara/selenium/extensions/html5_drag.rb
523
+ - lib/capybara/selenium/extensions/modifier_keys_stack.rb
524
+ - lib/capybara/selenium/extensions/scroll.rb
525
+ - lib/capybara/selenium/logger_suppressor.rb
315
526
  - lib/capybara/selenium/node.rb
316
527
  - lib/capybara/selenium/nodes/chrome_node.rb
317
- - lib/capybara/selenium/nodes/marionette_node.rb
528
+ - lib/capybara/selenium/nodes/edge_node.rb
529
+ - lib/capybara/selenium/nodes/firefox_node.rb
530
+ - lib/capybara/selenium/nodes/ie_node.rb
531
+ - lib/capybara/selenium/nodes/safari_node.rb
532
+ - lib/capybara/selenium/patches/action_pauser.rb
533
+ - lib/capybara/selenium/patches/atoms.rb
534
+ - lib/capybara/selenium/patches/is_displayed.rb
535
+ - lib/capybara/selenium/patches/logs.rb
318
536
  - lib/capybara/selenium/patches/pause_duration_fix.rb
537
+ - lib/capybara/selenium/patches/persistent_client.rb
319
538
  - lib/capybara/server.rb
320
539
  - lib/capybara/server/animation_disabler.rb
321
540
  - lib/capybara/server/checker.rb
@@ -329,6 +548,7 @@ files:
329
548
  - lib/capybara/spec/fixtures/test_file.txt
330
549
  - lib/capybara/spec/public/jquery-ui.js
331
550
  - lib/capybara/spec/public/jquery.js
551
+ - lib/capybara/spec/public/offset.js
332
552
  - lib/capybara/spec/public/test.js
333
553
  - lib/capybara/spec/session/accept_alert_spec.rb
334
554
  - lib/capybara/spec/session/accept_confirm_spec.rb
@@ -373,6 +593,8 @@ files:
373
593
  - lib/capybara/spec/session/go_back_spec.rb
374
594
  - lib/capybara/spec/session/go_forward_spec.rb
375
595
  - lib/capybara/spec/session/has_all_selectors_spec.rb
596
+ - lib/capybara/spec/session/has_ancestor_spec.rb
597
+ - lib/capybara/spec/session/has_any_selectors_spec.rb
376
598
  - lib/capybara/spec/session/has_button_spec.rb
377
599
  - lib/capybara/spec/session/has_css_spec.rb
378
600
  - lib/capybara/spec/session/has_current_path_spec.rb
@@ -381,13 +603,14 @@ files:
381
603
  - lib/capybara/spec/session/has_none_selectors_spec.rb
382
604
  - lib/capybara/spec/session/has_select_spec.rb
383
605
  - lib/capybara/spec/session/has_selector_spec.rb
384
- - lib/capybara/spec/session/has_style_spec.rb
606
+ - lib/capybara/spec/session/has_sibling_spec.rb
385
607
  - lib/capybara/spec/session/has_table_spec.rb
386
608
  - lib/capybara/spec/session/has_text_spec.rb
387
609
  - lib/capybara/spec/session/has_title_spec.rb
388
610
  - lib/capybara/spec/session/has_xpath_spec.rb
389
611
  - lib/capybara/spec/session/headers_spec.rb
390
612
  - lib/capybara/spec/session/html_spec.rb
613
+ - lib/capybara/spec/session/matches_style_spec.rb
391
614
  - lib/capybara/spec/session/node_spec.rb
392
615
  - lib/capybara/spec/session/node_wrapper_spec.rb
393
616
  - lib/capybara/spec/session/refresh_spec.rb
@@ -398,6 +621,7 @@ files:
398
621
  - lib/capybara/spec/session/save_page_spec.rb
399
622
  - lib/capybara/spec/session/save_screenshot_spec.rb
400
623
  - lib/capybara/spec/session/screenshot_spec.rb
624
+ - lib/capybara/spec/session/scroll_spec.rb
401
625
  - lib/capybara/spec/session/select_spec.rb
402
626
  - lib/capybara/spec/session/selectors_spec.rb
403
627
  - lib/capybara/spec/session/sibling_spec.rb
@@ -418,6 +642,7 @@ files:
418
642
  - lib/capybara/spec/session/within_spec.rb
419
643
  - lib/capybara/spec/spec_helper.rb
420
644
  - lib/capybara/spec/test_app.rb
645
+ - lib/capybara/spec/views/animated.erb
421
646
  - lib/capybara/spec/views/buttons.erb
422
647
  - lib/capybara/spec/views/fieldsets.erb
423
648
  - lib/capybara/spec/views/form.erb
@@ -428,24 +653,34 @@ files:
428
653
  - lib/capybara/spec/views/header_links.erb
429
654
  - lib/capybara/spec/views/host_links.erb
430
655
  - lib/capybara/spec/views/initial_alert.erb
656
+ - lib/capybara/spec/views/obscured.erb
657
+ - lib/capybara/spec/views/offset.erb
431
658
  - lib/capybara/spec/views/path.erb
432
659
  - lib/capybara/spec/views/popup_one.erb
433
660
  - lib/capybara/spec/views/popup_two.erb
434
661
  - lib/capybara/spec/views/postback.erb
662
+ - lib/capybara/spec/views/react.erb
663
+ - lib/capybara/spec/views/scroll.erb
664
+ - lib/capybara/spec/views/spatial.erb
435
665
  - lib/capybara/spec/views/tables.erb
436
666
  - lib/capybara/spec/views/with_animation.erb
437
667
  - lib/capybara/spec/views/with_base_tag.erb
438
668
  - lib/capybara/spec/views/with_count.erb
669
+ - lib/capybara/spec/views/with_dragula.erb
439
670
  - lib/capybara/spec/views/with_fixed_header_footer.erb
440
671
  - lib/capybara/spec/views/with_hover.erb
672
+ - lib/capybara/spec/views/with_hover1.erb
441
673
  - lib/capybara/spec/views/with_html.erb
442
674
  - lib/capybara/spec/views/with_html5_svg.erb
443
675
  - lib/capybara/spec/views/with_html_entities.erb
444
676
  - lib/capybara/spec/views/with_js.erb
677
+ - lib/capybara/spec/views/with_jstree.erb
445
678
  - lib/capybara/spec/views/with_namespace.erb
446
679
  - lib/capybara/spec/views/with_scope.erb
680
+ - lib/capybara/spec/views/with_scope_other.erb
447
681
  - lib/capybara/spec/views/with_simple_html.erb
448
682
  - lib/capybara/spec/views/with_slow_unload.erb
683
+ - lib/capybara/spec/views/with_sortable_js.erb
449
684
  - lib/capybara/spec/views/with_title.erb
450
685
  - lib/capybara/spec/views/with_unload_alert.erb
451
686
  - lib/capybara/spec/views/with_windows.erb
@@ -454,6 +689,7 @@ files:
454
689
  - lib/capybara/window.rb
455
690
  - spec/basic_node_spec.rb
456
691
  - spec/capybara_spec.rb
692
+ - spec/css_builder_spec.rb
457
693
  - spec/css_splitter_spec.rb
458
694
  - spec/dsl_spec.rb
459
695
  - spec/filter_set_spec.rb
@@ -466,6 +702,7 @@ files:
466
702
  - spec/minitest_spec_spec.rb
467
703
  - spec/per_session_config_spec.rb
468
704
  - spec/rack_test_spec.rb
705
+ - spec/regexp_dissassembler_spec.rb
469
706
  - spec/result_spec.rb
470
707
  - spec/rspec/features_spec.rb
471
708
  - spec/rspec/scenarios_spec.rb
@@ -473,17 +710,21 @@ files:
473
710
  - spec/rspec/views_spec.rb
474
711
  - spec/rspec_matchers_spec.rb
475
712
  - spec/rspec_spec.rb
713
+ - spec/sauce_spec_chrome.rb
476
714
  - spec/selector_spec.rb
477
715
  - spec/selenium_spec_chrome.rb
478
716
  - spec/selenium_spec_chrome_remote.rb
479
717
  - spec/selenium_spec_edge.rb
718
+ - spec/selenium_spec_firefox.rb
480
719
  - spec/selenium_spec_firefox_remote.rb
481
720
  - spec/selenium_spec_ie.rb
482
- - spec/selenium_spec_marionette.rb
721
+ - spec/selenium_spec_safari.rb
483
722
  - spec/server_spec.rb
484
723
  - spec/session_spec.rb
724
+ - spec/shared_selenium_node.rb
485
725
  - spec/shared_selenium_session.rb
486
726
  - spec/spec_helper.rb
727
+ - spec/xpath_builder_spec.rb
487
728
  homepage: https://github.com/teamcapybara/capybara
488
729
  licenses:
489
730
  - MIT
@@ -498,15 +739,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
498
739
  requirements:
499
740
  - - ">="
500
741
  - !ruby/object:Gem::Version
501
- version: 2.3.0
742
+ version: 2.5.0
502
743
  required_rubygems_version: !ruby/object:Gem::Requirement
503
744
  requirements:
504
745
  - - ">="
505
746
  - !ruby/object:Gem::Version
506
747
  version: '0'
507
748
  requirements: []
508
- rubyforge_project:
509
- rubygems_version: 2.7.7
749
+ rubygems_version: 3.1.2
510
750
  signing_key:
511
751
  specification_version: 4
512
752
  summary: Capybara aims to simplify the process of integration testing Rack applications,
@@ -1,94 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- if defined?(::RSpec::Expectations::Version)
4
- module Capybara
5
- module RSpecMatchers
6
- module Compound
7
- include ::RSpec::Matchers::Composable
8
-
9
- def and(matcher)
10
- And.new(self, matcher)
11
- end
12
-
13
- def and_then(matcher)
14
- ::RSpec::Matchers::BuiltIn::Compound::And.new(self, matcher)
15
- end
16
-
17
- def or(matcher)
18
- Or.new(self, matcher)
19
- end
20
-
21
- class CapybaraEvaluator
22
- def initialize(actual)
23
- @actual = actual
24
- @match_results = Hash.new { |hsh, matcher| hsh[matcher] = matcher.matches?(@actual) }
25
- end
26
-
27
- def matcher_matches?(matcher)
28
- @match_results[matcher]
29
- end
30
-
31
- def reset
32
- @match_results.clear
33
- end
34
- end
35
-
36
- class And < ::RSpec::Matchers::BuiltIn::Compound::And
37
- private
38
-
39
- def match(_expected, actual)
40
- @evaluator = CapybaraEvaluator.new(actual)
41
- syncer = sync_element(actual)
42
- begin
43
- syncer.synchronize do
44
- @evaluator.reset
45
- raise ::Capybara::ElementNotFound unless [matcher_1_matches?, matcher_2_matches?].all?
46
- true
47
- end
48
- rescue StandardError
49
- false
50
- end
51
- end
52
-
53
- def sync_element(el)
54
- if el.respond_to? :synchronize
55
- el
56
- elsif el.respond_to? :current_scope
57
- el.current_scope
58
- else
59
- Capybara.string(el)
60
- end
61
- end
62
- end
63
-
64
- class Or < ::RSpec::Matchers::BuiltIn::Compound::Or
65
- private
66
-
67
- def match(_expected, actual)
68
- @evaluator = CapybaraEvaluator.new(actual)
69
- syncer = sync_element(actual)
70
- begin
71
- syncer.synchronize do
72
- @evaluator.reset
73
- raise ::Capybara::ElementNotFound unless [matcher_1_matches?, matcher_2_matches?].any?
74
- true
75
- end
76
- rescue StandardError
77
- false
78
- end
79
- end
80
-
81
- def sync_element(el)
82
- if el.respond_to? :synchronize
83
- el
84
- elsif el.respond_to? :current_scope
85
- el.current_scope
86
- else
87
- Capybara.string(el)
88
- end
89
- end
90
- end
91
- end
92
- end
93
- end
94
- end
@@ -1,49 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'capybara/selenium/nodes/marionette_node'
4
-
5
- module Capybara::Selenium::Driver::MarionetteDriver
6
- def resize_window_to(handle, width, height)
7
- within_given_window(handle) do
8
- # Don't set the size if already set - See https://github.com/mozilla/geckodriver/issues/643
9
- if window_size(handle) == [width, height]
10
- {}
11
- else
12
- super
13
- end
14
- end
15
- end
16
-
17
- def reset!
18
- # Use instance variable directly so we avoid starting the browser just to reset the session
19
- return unless @browser
20
-
21
- switch_to_window(window_handles.first)
22
- window_handles.slice(1..-1).each { |win| close_window(win) }
23
- super
24
- end
25
-
26
- def refresh
27
- # Accept any "will repost content" confirmation that occurs
28
- accept_modal :confirm, wait: 0.1 do
29
- super
30
- end
31
- rescue Capybara::ModalNotFound # rubocop:disable Lint/HandleExceptions
32
- # No modal was opened - page has refreshed - ignore
33
- end
34
-
35
- def switch_to_frame(frame)
36
- return super unless frame == :parent
37
- # geckodriver/firefox has an issue if the current frame is removed from within it
38
- # so we have to move to the default_content and iterate back through the frames
39
- handles = @frame_handles[current_window_handle]
40
- browser.switch_to.default_content
41
- handles.tap(&:pop).each { |fh| browser.switch_to.frame(fh) }
42
- end
43
-
44
- private
45
-
46
- def build_node(native_node)
47
- ::Capybara::Selenium::MarionetteNode.new(self, native_node)
48
- end
49
- end