capybara 2.7.0 → 3.35.3

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 (318) hide show
  1. checksums.yaml +5 -5
  2. data/.yardopts +1 -0
  3. data/History.md +1147 -11
  4. data/License.txt +1 -1
  5. data/README.md +252 -131
  6. data/lib/capybara/config.rb +92 -0
  7. data/lib/capybara/cucumber.rb +3 -3
  8. data/lib/capybara/driver/base.rb +52 -21
  9. data/lib/capybara/driver/node.rb +48 -14
  10. data/lib/capybara/dsl.rb +16 -9
  11. data/lib/capybara/helpers.rb +72 -81
  12. data/lib/capybara/minitest/spec.rb +267 -0
  13. data/lib/capybara/minitest.rb +385 -0
  14. data/lib/capybara/node/actions.rb +337 -89
  15. data/lib/capybara/node/base.rb +50 -32
  16. data/lib/capybara/node/document.rb +19 -3
  17. data/lib/capybara/node/document_matchers.rb +22 -24
  18. data/lib/capybara/node/element.rb +388 -125
  19. data/lib/capybara/node/finders.rb +231 -121
  20. data/lib/capybara/node/matchers.rb +503 -217
  21. data/lib/capybara/node/simple.rb +64 -27
  22. data/lib/capybara/queries/ancestor_query.rb +27 -0
  23. data/lib/capybara/queries/base_query.rb +87 -11
  24. data/lib/capybara/queries/current_path_query.rb +24 -24
  25. data/lib/capybara/queries/match_query.rb +15 -10
  26. data/lib/capybara/queries/selector_query.rb +675 -81
  27. data/lib/capybara/queries/sibling_query.rb +26 -0
  28. data/lib/capybara/queries/style_query.rb +45 -0
  29. data/lib/capybara/queries/text_query.rb +88 -20
  30. data/lib/capybara/queries/title_query.rb +9 -11
  31. data/lib/capybara/rack_test/browser.rb +63 -39
  32. data/lib/capybara/rack_test/css_handlers.rb +6 -4
  33. data/lib/capybara/rack_test/driver.rb +26 -16
  34. data/lib/capybara/rack_test/errors.rb +6 -0
  35. data/lib/capybara/rack_test/form.rb +73 -58
  36. data/lib/capybara/rack_test/node.rb +187 -67
  37. data/lib/capybara/rails.rb +4 -8
  38. data/lib/capybara/registration_container.rb +44 -0
  39. data/lib/capybara/registrations/drivers.rb +42 -0
  40. data/lib/capybara/registrations/patches/puma_ssl.rb +29 -0
  41. data/lib/capybara/registrations/servers.rb +45 -0
  42. data/lib/capybara/result.rb +142 -14
  43. data/lib/capybara/rspec/features.rb +17 -42
  44. data/lib/capybara/rspec/matcher_proxies.rb +82 -0
  45. data/lib/capybara/rspec/matchers/base.rb +111 -0
  46. data/lib/capybara/rspec/matchers/become_closed.rb +33 -0
  47. data/lib/capybara/rspec/matchers/compound.rb +88 -0
  48. data/lib/capybara/rspec/matchers/count_sugar.rb +37 -0
  49. data/lib/capybara/rspec/matchers/have_ancestor.rb +28 -0
  50. data/lib/capybara/rspec/matchers/have_current_path.rb +29 -0
  51. data/lib/capybara/rspec/matchers/have_selector.rb +77 -0
  52. data/lib/capybara/rspec/matchers/have_sibling.rb +27 -0
  53. data/lib/capybara/rspec/matchers/have_text.rb +33 -0
  54. data/lib/capybara/rspec/matchers/have_title.rb +29 -0
  55. data/lib/capybara/rspec/matchers/match_selector.rb +27 -0
  56. data/lib/capybara/rspec/matchers/match_style.rb +43 -0
  57. data/lib/capybara/rspec/matchers/spatial_sugar.rb +39 -0
  58. data/lib/capybara/rspec/matchers.rb +143 -244
  59. data/lib/capybara/rspec.rb +10 -12
  60. data/lib/capybara/selector/builders/css_builder.rb +84 -0
  61. data/lib/capybara/selector/builders/xpath_builder.rb +71 -0
  62. data/lib/capybara/selector/css.rb +102 -0
  63. data/lib/capybara/selector/definition/button.rb +63 -0
  64. data/lib/capybara/selector/definition/checkbox.rb +26 -0
  65. data/lib/capybara/selector/definition/css.rb +10 -0
  66. data/lib/capybara/selector/definition/datalist_input.rb +35 -0
  67. data/lib/capybara/selector/definition/datalist_option.rb +25 -0
  68. data/lib/capybara/selector/definition/element.rb +28 -0
  69. data/lib/capybara/selector/definition/field.rb +40 -0
  70. data/lib/capybara/selector/definition/fieldset.rb +14 -0
  71. data/lib/capybara/selector/definition/file_field.rb +13 -0
  72. data/lib/capybara/selector/definition/fillable_field.rb +33 -0
  73. data/lib/capybara/selector/definition/frame.rb +17 -0
  74. data/lib/capybara/selector/definition/id.rb +6 -0
  75. data/lib/capybara/selector/definition/label.rb +62 -0
  76. data/lib/capybara/selector/definition/link.rb +54 -0
  77. data/lib/capybara/selector/definition/link_or_button.rb +16 -0
  78. data/lib/capybara/selector/definition/option.rb +27 -0
  79. data/lib/capybara/selector/definition/radio_button.rb +27 -0
  80. data/lib/capybara/selector/definition/select.rb +81 -0
  81. data/lib/capybara/selector/definition/table.rb +109 -0
  82. data/lib/capybara/selector/definition/table_row.rb +21 -0
  83. data/lib/capybara/selector/definition/xpath.rb +5 -0
  84. data/lib/capybara/selector/definition.rb +278 -0
  85. data/lib/capybara/selector/filter.rb +3 -46
  86. data/lib/capybara/selector/filter_set.rb +124 -0
  87. data/lib/capybara/selector/filters/base.rb +77 -0
  88. data/lib/capybara/selector/filters/expression_filter.rb +22 -0
  89. data/lib/capybara/selector/filters/locator_filter.rb +29 -0
  90. data/lib/capybara/selector/filters/node_filter.rb +31 -0
  91. data/lib/capybara/selector/regexp_disassembler.rb +214 -0
  92. data/lib/capybara/selector/selector.rb +155 -0
  93. data/lib/capybara/selector/xpath_extensions.rb +17 -0
  94. data/lib/capybara/selector.rb +232 -369
  95. data/lib/capybara/selenium/atoms/getAttribute.min.js +1 -0
  96. data/lib/capybara/selenium/atoms/isDisplayed.min.js +1 -0
  97. data/lib/capybara/selenium/atoms/src/getAttribute.js +161 -0
  98. data/lib/capybara/selenium/atoms/src/isDisplayed.js +454 -0
  99. data/lib/capybara/selenium/driver.rb +380 -142
  100. data/lib/capybara/selenium/driver_specializations/chrome_driver.rb +117 -0
  101. data/lib/capybara/selenium/driver_specializations/edge_driver.rb +124 -0
  102. data/lib/capybara/selenium/driver_specializations/firefox_driver.rb +89 -0
  103. data/lib/capybara/selenium/driver_specializations/internet_explorer_driver.rb +26 -0
  104. data/lib/capybara/selenium/driver_specializations/safari_driver.rb +24 -0
  105. data/lib/capybara/selenium/extensions/file_input_click_emulation.rb +34 -0
  106. data/lib/capybara/selenium/extensions/find.rb +110 -0
  107. data/lib/capybara/selenium/extensions/html5_drag.rb +228 -0
  108. data/lib/capybara/selenium/extensions/modifier_keys_stack.rb +28 -0
  109. data/lib/capybara/selenium/extensions/scroll.rb +76 -0
  110. data/lib/capybara/selenium/logger_suppressor.rb +40 -0
  111. data/lib/capybara/selenium/node.rb +528 -97
  112. data/lib/capybara/selenium/nodes/chrome_node.rb +137 -0
  113. data/lib/capybara/selenium/nodes/edge_node.rb +104 -0
  114. data/lib/capybara/selenium/nodes/firefox_node.rb +136 -0
  115. data/lib/capybara/selenium/nodes/ie_node.rb +22 -0
  116. data/lib/capybara/selenium/nodes/safari_node.rb +118 -0
  117. data/lib/capybara/selenium/patches/action_pauser.rb +26 -0
  118. data/lib/capybara/selenium/patches/atoms.rb +18 -0
  119. data/lib/capybara/selenium/patches/is_displayed.rb +16 -0
  120. data/lib/capybara/selenium/patches/logs.rb +45 -0
  121. data/lib/capybara/selenium/patches/pause_duration_fix.rb +9 -0
  122. data/lib/capybara/selenium/patches/persistent_client.rb +20 -0
  123. data/lib/capybara/server/animation_disabler.rb +63 -0
  124. data/lib/capybara/server/checker.rb +44 -0
  125. data/lib/capybara/server/middleware.rb +71 -0
  126. data/lib/capybara/server.rb +74 -71
  127. data/lib/capybara/session/config.rb +126 -0
  128. data/lib/capybara/session/matchers.rb +44 -27
  129. data/lib/capybara/session.rb +500 -297
  130. data/lib/capybara/spec/fixtures/no_extension +1 -0
  131. data/lib/capybara/spec/public/jquery.js +5 -5
  132. data/lib/capybara/spec/public/offset.js +6 -0
  133. data/lib/capybara/spec/public/test.js +168 -14
  134. data/lib/capybara/spec/session/accept_alert_spec.rb +37 -14
  135. data/lib/capybara/spec/session/accept_confirm_spec.rb +7 -6
  136. data/lib/capybara/spec/session/accept_prompt_spec.rb +38 -10
  137. data/lib/capybara/spec/session/all_spec.rb +179 -59
  138. data/lib/capybara/spec/session/ancestor_spec.rb +88 -0
  139. data/lib/capybara/spec/session/assert_all_of_selectors_spec.rb +140 -0
  140. data/lib/capybara/spec/session/assert_current_path_spec.rb +75 -0
  141. data/lib/capybara/spec/session/assert_selector_spec.rb +143 -0
  142. data/lib/capybara/spec/session/assert_style_spec.rb +26 -0
  143. data/lib/capybara/spec/session/assert_text_spec.rb +258 -0
  144. data/lib/capybara/spec/session/assert_title_spec.rb +93 -0
  145. data/lib/capybara/spec/session/attach_file_spec.rb +154 -48
  146. data/lib/capybara/spec/session/body_spec.rb +12 -13
  147. data/lib/capybara/spec/session/check_spec.rb +168 -41
  148. data/lib/capybara/spec/session/choose_spec.rb +75 -23
  149. data/lib/capybara/spec/session/click_button_spec.rb +243 -175
  150. data/lib/capybara/spec/session/click_link_or_button_spec.rb +57 -32
  151. data/lib/capybara/spec/session/click_link_spec.rb +100 -53
  152. data/lib/capybara/spec/session/current_scope_spec.rb +11 -10
  153. data/lib/capybara/spec/session/current_url_spec.rb +61 -35
  154. data/lib/capybara/spec/session/dismiss_confirm_spec.rb +7 -7
  155. data/lib/capybara/spec/session/dismiss_prompt_spec.rb +5 -4
  156. data/lib/capybara/spec/session/element/{assert_match_selector.rb → assert_match_selector_spec.rb} +13 -6
  157. data/lib/capybara/spec/session/element/match_css_spec.rb +21 -7
  158. data/lib/capybara/spec/session/element/match_xpath_spec.rb +9 -7
  159. data/lib/capybara/spec/session/element/matches_selector_spec.rb +91 -34
  160. data/lib/capybara/spec/session/evaluate_async_script_spec.rb +23 -0
  161. data/lib/capybara/spec/session/evaluate_script_spec.rb +45 -3
  162. data/lib/capybara/spec/session/execute_script_spec.rb +24 -4
  163. data/lib/capybara/spec/session/fill_in_spec.rb +166 -64
  164. data/lib/capybara/spec/session/find_button_spec.rb +37 -18
  165. data/lib/capybara/spec/session/find_by_id_spec.rb +10 -9
  166. data/lib/capybara/spec/session/find_field_spec.rb +57 -34
  167. data/lib/capybara/spec/session/find_link_spec.rb +47 -10
  168. data/lib/capybara/spec/session/find_spec.rb +290 -144
  169. data/lib/capybara/spec/session/first_spec.rb +91 -48
  170. data/lib/capybara/spec/session/frame/frame_title_spec.rb +23 -0
  171. data/lib/capybara/spec/session/frame/frame_url_spec.rb +23 -0
  172. data/lib/capybara/spec/session/frame/switch_to_frame_spec.rb +116 -0
  173. data/lib/capybara/spec/session/frame/within_frame_spec.rb +112 -0
  174. data/lib/capybara/spec/session/go_back_spec.rb +3 -2
  175. data/lib/capybara/spec/session/go_forward_spec.rb +3 -2
  176. data/lib/capybara/spec/session/has_all_selectors_spec.rb +69 -0
  177. data/lib/capybara/spec/session/has_ancestor_spec.rb +46 -0
  178. data/lib/capybara/spec/session/has_any_selectors_spec.rb +25 -0
  179. data/lib/capybara/spec/session/has_button_spec.rb +76 -19
  180. data/lib/capybara/spec/session/has_css_spec.rb +277 -131
  181. data/lib/capybara/spec/session/has_current_path_spec.rb +98 -26
  182. data/lib/capybara/spec/session/has_field_spec.rb +177 -107
  183. data/lib/capybara/spec/session/has_link_spec.rb +13 -12
  184. data/lib/capybara/spec/session/has_none_selectors_spec.rb +78 -0
  185. data/lib/capybara/spec/session/has_select_spec.rb +191 -95
  186. data/lib/capybara/spec/session/has_selector_spec.rb +128 -64
  187. data/lib/capybara/spec/session/has_sibling_spec.rb +50 -0
  188. data/lib/capybara/spec/session/has_table_spec.rb +172 -5
  189. data/lib/capybara/spec/session/has_text_spec.rb +126 -60
  190. data/lib/capybara/spec/session/has_title_spec.rb +35 -12
  191. data/lib/capybara/spec/session/has_xpath_spec.rb +74 -53
  192. data/lib/capybara/spec/session/{headers.rb → headers_spec.rb} +3 -2
  193. data/lib/capybara/spec/session/html_spec.rb +14 -6
  194. data/lib/capybara/spec/session/matches_style_spec.rb +35 -0
  195. data/lib/capybara/spec/session/node_spec.rb +1028 -131
  196. data/lib/capybara/spec/session/node_wrapper_spec.rb +39 -0
  197. data/lib/capybara/spec/session/refresh_spec.rb +34 -0
  198. data/lib/capybara/spec/session/reset_session_spec.rb +75 -34
  199. data/lib/capybara/spec/session/{response_code.rb → response_code_spec.rb} +2 -1
  200. data/lib/capybara/spec/session/save_and_open_page_spec.rb +3 -2
  201. data/lib/capybara/spec/session/save_and_open_screenshot_spec.rb +11 -15
  202. data/lib/capybara/spec/session/save_page_spec.rb +42 -55
  203. data/lib/capybara/spec/session/save_screenshot_spec.rb +16 -14
  204. data/lib/capybara/spec/session/screenshot_spec.rb +2 -2
  205. data/lib/capybara/spec/session/scroll_spec.rb +117 -0
  206. data/lib/capybara/spec/session/select_spec.rb +112 -85
  207. data/lib/capybara/spec/session/selectors_spec.rb +71 -8
  208. data/lib/capybara/spec/session/sibling_spec.rb +52 -0
  209. data/lib/capybara/spec/session/text_spec.rb +38 -23
  210. data/lib/capybara/spec/session/title_spec.rb +17 -5
  211. data/lib/capybara/spec/session/uncheck_spec.rb +71 -12
  212. data/lib/capybara/spec/session/unselect_spec.rb +44 -43
  213. data/lib/capybara/spec/session/visit_spec.rb +99 -32
  214. data/lib/capybara/spec/session/window/become_closed_spec.rb +33 -29
  215. data/lib/capybara/spec/session/window/current_window_spec.rb +5 -3
  216. data/lib/capybara/spec/session/window/open_new_window_spec.rb +5 -3
  217. data/lib/capybara/spec/session/window/switch_to_window_spec.rb +39 -30
  218. data/lib/capybara/spec/session/window/window_opened_by_spec.rb +17 -10
  219. data/lib/capybara/spec/session/window/window_spec.rb +121 -73
  220. data/lib/capybara/spec/session/window/windows_spec.rb +12 -10
  221. data/lib/capybara/spec/session/window/within_window_spec.rb +52 -82
  222. data/lib/capybara/spec/session/within_spec.rb +76 -43
  223. data/lib/capybara/spec/spec_helper.rb +67 -33
  224. data/lib/capybara/spec/test_app.rb +85 -36
  225. data/lib/capybara/spec/views/animated.erb +49 -0
  226. data/lib/capybara/spec/views/buttons.erb +1 -1
  227. data/lib/capybara/spec/views/fieldsets.erb +1 -1
  228. data/lib/capybara/spec/views/form.erb +227 -20
  229. data/lib/capybara/spec/views/frame_child.erb +10 -2
  230. data/lib/capybara/spec/views/frame_one.erb +2 -1
  231. data/lib/capybara/spec/views/frame_parent.erb +2 -2
  232. data/lib/capybara/spec/views/frame_two.erb +1 -1
  233. data/lib/capybara/spec/views/header_links.erb +1 -1
  234. data/lib/capybara/spec/views/host_links.erb +1 -1
  235. data/lib/capybara/spec/views/initial_alert.erb +10 -0
  236. data/lib/capybara/spec/views/obscured.erb +47 -0
  237. data/lib/capybara/spec/views/offset.erb +32 -0
  238. data/lib/capybara/spec/views/path.erb +1 -1
  239. data/lib/capybara/spec/views/popup_one.erb +1 -1
  240. data/lib/capybara/spec/views/popup_two.erb +1 -1
  241. data/lib/capybara/spec/views/postback.erb +1 -1
  242. data/lib/capybara/spec/views/react.erb +45 -0
  243. data/lib/capybara/spec/views/scroll.erb +20 -0
  244. data/lib/capybara/spec/views/spatial.erb +31 -0
  245. data/lib/capybara/spec/views/tables.erb +69 -2
  246. data/lib/capybara/spec/views/with_animation.erb +82 -0
  247. data/lib/capybara/spec/views/with_base_tag.erb +1 -1
  248. data/lib/capybara/spec/views/with_count.erb +1 -1
  249. data/lib/capybara/spec/views/with_dragula.erb +24 -0
  250. data/lib/capybara/spec/views/with_fixed_header_footer.erb +17 -0
  251. data/lib/capybara/spec/views/with_hover.erb +7 -1
  252. data/lib/capybara/spec/views/with_hover1.erb +10 -0
  253. data/lib/capybara/spec/views/with_html.erb +100 -10
  254. data/lib/capybara/spec/views/with_html5_svg.erb +20 -0
  255. data/lib/capybara/spec/views/with_html_entities.erb +1 -1
  256. data/lib/capybara/spec/views/with_jquery_animation.erb +24 -0
  257. data/lib/capybara/spec/views/with_js.erb +49 -3
  258. data/lib/capybara/spec/views/with_jstree.erb +26 -0
  259. data/lib/capybara/spec/views/with_namespace.erb +20 -0
  260. data/lib/capybara/spec/views/with_scope.erb +1 -1
  261. data/lib/capybara/spec/views/with_scope_other.erb +6 -0
  262. data/lib/capybara/spec/views/with_simple_html.erb +1 -1
  263. data/lib/capybara/spec/views/with_sortable_js.erb +21 -0
  264. data/lib/capybara/spec/views/with_title.erb +1 -1
  265. data/lib/capybara/spec/views/with_unload_alert.erb +3 -1
  266. data/lib/capybara/spec/views/with_windows.erb +7 -1
  267. data/lib/capybara/spec/views/within_frames.erb +6 -3
  268. data/lib/capybara/version.rb +2 -1
  269. data/lib/capybara/window.rb +39 -21
  270. data/lib/capybara.rb +208 -186
  271. data/spec/basic_node_spec.rb +52 -39
  272. data/spec/capybara_spec.rb +72 -50
  273. data/spec/css_builder_spec.rb +101 -0
  274. data/spec/css_splitter_spec.rb +38 -0
  275. data/spec/dsl_spec.rb +81 -61
  276. data/spec/filter_set_spec.rb +46 -0
  277. data/spec/fixtures/capybara.csv +1 -0
  278. data/spec/fixtures/certificate.pem +25 -0
  279. data/spec/fixtures/key.pem +27 -0
  280. data/spec/fixtures/selenium_driver_rspec_failure.rb +7 -3
  281. data/spec/fixtures/selenium_driver_rspec_success.rb +7 -3
  282. data/spec/minitest_spec.rb +164 -0
  283. data/spec/minitest_spec_spec.rb +162 -0
  284. data/spec/per_session_config_spec.rb +68 -0
  285. data/spec/rack_test_spec.rb +189 -96
  286. data/spec/regexp_dissassembler_spec.rb +250 -0
  287. data/spec/result_spec.rb +143 -13
  288. data/spec/rspec/features_spec.rb +38 -32
  289. data/spec/rspec/scenarios_spec.rb +9 -7
  290. data/spec/rspec/shared_spec_matchers.rb +959 -0
  291. data/spec/rspec/views_spec.rb +9 -3
  292. data/spec/rspec_matchers_spec.rb +62 -0
  293. data/spec/rspec_spec.rb +127 -30
  294. data/spec/sauce_spec_chrome.rb +43 -0
  295. data/spec/selector_spec.rb +458 -37
  296. data/spec/selenium_spec_chrome.rb +196 -9
  297. data/spec/selenium_spec_chrome_remote.rb +100 -0
  298. data/spec/selenium_spec_edge.rb +47 -0
  299. data/spec/selenium_spec_firefox.rb +210 -0
  300. data/spec/selenium_spec_firefox_remote.rb +80 -0
  301. data/spec/selenium_spec_ie.rb +150 -0
  302. data/spec/selenium_spec_safari.rb +148 -0
  303. data/spec/server_spec.rb +200 -101
  304. data/spec/session_spec.rb +91 -0
  305. data/spec/shared_selenium_node.rb +83 -0
  306. data/spec/shared_selenium_session.rb +558 -0
  307. data/spec/spec_helper.rb +94 -2
  308. data/spec/xpath_builder_spec.rb +93 -0
  309. metadata +420 -60
  310. data/lib/capybara/query.rb +0 -7
  311. data/lib/capybara/spec/session/assert_current_path.rb +0 -60
  312. data/lib/capybara/spec/session/assert_selector.rb +0 -148
  313. data/lib/capybara/spec/session/assert_text.rb +0 -196
  314. data/lib/capybara/spec/session/assert_title.rb +0 -70
  315. data/lib/capybara/spec/session/source_spec.rb +0 -0
  316. data/lib/capybara/spec/session/within_frame_spec.rb +0 -53
  317. data/spec/rspec/matchers_spec.rb +0 -827
  318. data/spec/selenium_spec.rb +0 -151
data/spec/spec_helper.rb CHANGED
@@ -1,8 +1,100 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'rspec/expectations'
3
- require "capybara/spec/spec_helper"
4
- require "pry"
4
+ require 'webdrivers' if ENV['CI'] || ENV['WEBDRIVERS']
5
+ require 'selenium_statistics'
6
+ if ENV['TRAVIS']
7
+ require 'coveralls'
8
+ Coveralls.wear! do
9
+ add_filter '/lib/capybara/driver/'
10
+ add_filter '/lib/capybara/registrations/'
11
+ end
12
+ end
13
+ require 'capybara/spec/spec_helper'
14
+
15
+ module Capybara
16
+ module SpecHelper
17
+ def firefox?(session)
18
+ browser_name(session) == :firefox &&
19
+ ((defined?(::Selenium::WebDriver::VERSION) && (::Selenium::WebDriver::VERSION.to_f >= 4)) ||
20
+ session.driver.browser.capabilities.is_a?(::Selenium::WebDriver::Remote::W3C::Capabilities))
21
+ end
22
+
23
+ def firefox_lt?(version, session)
24
+ firefox?(session) && (session.driver.browser.capabilities[:browser_version].to_f < version)
25
+ end
26
+
27
+ def firefox_gte?(version, session)
28
+ firefox?(session) && (session.driver.browser.capabilities[:browser_version].to_f >= version)
29
+ end
30
+
31
+ def chrome?(session)
32
+ browser_name(session) == :chrome
33
+ end
34
+
35
+ def chrome_version(session)
36
+ (session.driver.browser.capabilities[:browser_version] ||
37
+ session.driver.browser.capabilities[:version]).to_f
38
+ end
39
+
40
+ def chrome_lt?(version, session)
41
+ chrome?(session) && (chrome_version(session) < version)
42
+ end
43
+
44
+ def chrome_gte?(version, session)
45
+ chrome?(session) && (chrome_version(session) >= version)
46
+ end
47
+
48
+ def edge?(session)
49
+ browser_name(session).to_s.start_with?('edge')
50
+ end
51
+
52
+ def legacy_edge?(session)
53
+ browser_name(session) == :edge
54
+ end
55
+
56
+ def edge_lt?(version, session)
57
+ edge?(session) && (chrome_version(session) < version)
58
+ end
59
+
60
+ def edge_gte?(version, session)
61
+ edge?(session) && (chrome_version(session) >= version)
62
+ end
63
+
64
+ def ie?(session)
65
+ %i[internet_explorer ie].include?(browser_name(session))
66
+ end
67
+
68
+ def safari?(session)
69
+ %i[safari Safari Safari_Technology_Preview].include?(browser_name(session))
70
+ end
71
+
72
+ def browser_name(session)
73
+ session.driver.browser.browser if session.respond_to?(:driver)
74
+ end
75
+
76
+ def remote?(session)
77
+ session.driver.browser.is_a? ::Selenium::WebDriver::Remote::Driver
78
+ end
79
+
80
+ def self.log_selenium_driver_version(mod)
81
+ mod = mod::Service if ::Selenium::WebDriver::Service.respond_to? :driver_path
82
+ path = mod.driver_path
83
+ path = path.call if path.respond_to? :call
84
+ $stdout.puts `#{path.gsub(' ', '\ ')} --version`
85
+ end
86
+ end
87
+ end
5
88
 
6
89
  RSpec.configure do |config|
7
90
  Capybara::SpecHelper.configure(config)
91
+ config.expect_with :rspec do |expectations|
92
+ expectations.syntax = :expect
93
+ end
94
+ config.mock_with :rspec do |mocks|
95
+ mocks.verify_partial_doubles = true
96
+ end
97
+ config.filter_run_including focus_: true unless ENV['CI']
98
+ config.run_all_when_everything_filtered = true
99
+ config.after(:suite) { SeleniumStatistics.print_results }
8
100
  end
@@ -0,0 +1,93 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ # rubocop:disable RSpec/InstanceVariable
6
+ RSpec.describe Capybara::Selector::XPathBuilder do
7
+ let :builder do
8
+ ::Capybara::Selector::XPathBuilder.new(@xpath)
9
+ end
10
+
11
+ context 'add_attribute_conditions' do
12
+ it 'adds a single string condition to a single selector' do
13
+ @xpath = './/div'
14
+ selector = builder.add_attribute_conditions(random: 'abc')
15
+ expect(selector).to eq %((.//div)[(./@random = 'abc')])
16
+ end
17
+
18
+ it 'adds multiple string conditions to a single selector' do
19
+ @xpath = './/div'
20
+ selector = builder.add_attribute_conditions(random: 'abc', other: 'def')
21
+ expect(selector).to eq %(((.//div)[(./@random = 'abc')])[(./@other = 'def')])
22
+ end
23
+
24
+ it 'adds a single string condition to a multiple selector' do
25
+ @xpath = XPath.descendant(:div, :ul)
26
+ selector = builder.add_attribute_conditions(random: 'abc')
27
+ expect(selector.to_s).to eq @xpath[XPath.attr(:random) == 'abc'].to_s
28
+ end
29
+
30
+ it 'adds multiple string conditions to a multiple selector' do
31
+ @xpath = XPath.descendant(:div, :ul)
32
+ selector = builder.add_attribute_conditions(random: 'abc', other: 'def')
33
+ expect(selector.to_s).to eq %(.//*[self::div | self::ul][(./@random = 'abc')][(./@other = 'def')])
34
+ end
35
+
36
+ it 'adds simple regexp conditions to a single selector' do
37
+ @xpath = XPath.descendant(:div)
38
+ selector = builder.add_attribute_conditions(random: /abc/, other: /def/)
39
+ expect(selector.to_s).to eq %(.//div[./@random[contains(., 'abc')]][./@other[contains(., 'def')]])
40
+ end
41
+
42
+ it 'adds wildcard regexp conditions to a single selector' do
43
+ @xpath = './/div'
44
+ selector = builder.add_attribute_conditions(random: /abc.*def/, other: /def.*ghi/)
45
+ expect(selector).to eq %(((.//div)[./@random[(contains(., 'abc') and contains(., 'def'))]])[./@other[(contains(., 'def') and contains(., 'ghi'))]])
46
+ end
47
+
48
+ it 'adds alternated regexp conditions to a single selector' do
49
+ @xpath = XPath.descendant(:div)
50
+ selector = builder.add_attribute_conditions(random: /abc|def/, other: /def|ghi/)
51
+ expect(selector.to_s).to eq %(.//div[./@random[(contains(., 'abc') or contains(., 'def'))]][./@other[(contains(., 'def') or contains(., 'ghi'))]])
52
+ end
53
+
54
+ it 'adds alternated regexp conditions to a multiple selector' do
55
+ @xpath = XPath.descendant(:div, :ul)
56
+ selector = builder.add_attribute_conditions(other: /def.*ghi|jkl/)
57
+ expect(selector.to_s).to eq %(.//*[self::div | self::ul][./@other[((contains(., 'def') and contains(., 'ghi')) or contains(., 'jkl'))]])
58
+ end
59
+
60
+ it "returns original selector when regexp can't be substringed" do
61
+ @xpath = './/div'
62
+ selector = builder.add_attribute_conditions(other: /.+/)
63
+ expect(selector).to eq '(.//div)[./@other]'
64
+ end
65
+
66
+ context ':class' do
67
+ it 'handles string' do
68
+ @xpath = './/a'
69
+ selector = builder.add_attribute_conditions(class: 'my_class')
70
+ expect(selector).to eq %((.//a)[contains(concat(' ', normalize-space(./@class), ' '), ' my_class ')])
71
+ end
72
+
73
+ it 'handles negated strings' do
74
+ @xpath = XPath.descendant(:a)
75
+ selector = builder.add_attribute_conditions(class: '!my_class')
76
+ expect(selector.to_s).to eq @xpath[!XPath.attr(:class).contains_word('my_class')].to_s
77
+ end
78
+
79
+ it 'handles array of strings' do
80
+ @xpath = './/a'
81
+ selector = builder.add_attribute_conditions(class: %w[my_class my_other_class])
82
+ expect(selector).to eq %((.//a)[(contains(concat(' ', normalize-space(./@class), ' '), ' my_class ') and contains(concat(' ', normalize-space(./@class), ' '), ' my_other_class '))])
83
+ end
84
+
85
+ it 'handles array of string when negated included' do
86
+ @xpath = XPath.descendant(:a)
87
+ selector = builder.add_attribute_conditions(class: %w[my_class !my_other_class])
88
+ expect(selector.to_s).to eq @xpath[XPath.attr(:class).contains_word('my_class') & !XPath.attr(:class).contains_word('my_other_class')].to_s
89
+ end
90
+ end
91
+ end
92
+ end
93
+ # rubocop:enable RSpec/InstanceVariable
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: 2.7.0
4
+ version: 3.35.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas Walpole
@@ -10,86 +10,120 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain:
12
12
  - gem-public_cert.pem
13
- date: 2016-04-07 00:00:00.000000000 Z
13
+ date: 2021-01-30 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
- name: nokogiri
16
+ name: addressable
17
17
  requirement: !ruby/object:Gem::Requirement
18
18
  requirements:
19
19
  - - ">="
20
20
  - !ruby/object:Gem::Version
21
- version: 1.3.3
21
+ version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
26
  - - ">="
27
27
  - !ruby/object:Gem::Version
28
- version: 1.3.3
28
+ version: '0'
29
29
  - !ruby/object:Gem::Dependency
30
- name: mime-types
30
+ name: mini_mime
31
31
  requirement: !ruby/object:Gem::Requirement
32
32
  requirements:
33
33
  - - ">="
34
34
  - !ruby/object:Gem::Version
35
- version: '1.16'
35
+ version: 0.1.3
36
36
  type: :runtime
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
40
  - - ">="
41
41
  - !ruby/object:Gem::Version
42
- version: '1.16'
42
+ version: 0.1.3
43
+ - !ruby/object:Gem::Dependency
44
+ name: nokogiri
45
+ requirement: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '1.8'
50
+ type: :runtime
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - "~>"
55
+ - !ruby/object:Gem::Version
56
+ version: '1.8'
43
57
  - !ruby/object:Gem::Dependency
44
58
  name: rack
45
59
  requirement: !ruby/object:Gem::Requirement
46
60
  requirements:
47
61
  - - ">="
48
62
  - !ruby/object:Gem::Version
49
- version: 1.0.0
63
+ version: 1.6.0
50
64
  type: :runtime
51
65
  prerelease: false
52
66
  version_requirements: !ruby/object:Gem::Requirement
53
67
  requirements:
54
68
  - - ">="
55
69
  - !ruby/object:Gem::Version
56
- version: 1.0.0
70
+ version: 1.6.0
57
71
  - !ruby/object:Gem::Dependency
58
72
  name: rack-test
59
73
  requirement: !ruby/object:Gem::Requirement
60
74
  requirements:
61
75
  - - ">="
62
76
  - !ruby/object:Gem::Version
63
- version: 0.5.4
77
+ version: 0.6.3
64
78
  type: :runtime
65
79
  prerelease: false
66
80
  version_requirements: !ruby/object:Gem::Requirement
67
81
  requirements:
68
82
  - - ">="
69
83
  - !ruby/object:Gem::Version
70
- version: 0.5.4
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
+ - - "<"
93
+ - !ruby/object:Gem::Version
94
+ version: '3.0'
95
+ type: :runtime
96
+ prerelease: false
97
+ version_requirements: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - ">="
100
+ - !ruby/object:Gem::Version
101
+ version: '1.5'
102
+ - - "<"
103
+ - !ruby/object:Gem::Version
104
+ version: '3.0'
71
105
  - !ruby/object:Gem::Dependency
72
106
  name: xpath
73
107
  requirement: !ruby/object:Gem::Requirement
74
108
  requirements:
75
109
  - - "~>"
76
110
  - !ruby/object:Gem::Version
77
- version: '2.0'
111
+ version: '3.2'
78
112
  type: :runtime
79
113
  prerelease: false
80
114
  version_requirements: !ruby/object:Gem::Requirement
81
115
  requirements:
82
116
  - - "~>"
83
117
  - !ruby/object:Gem::Version
84
- version: '2.0'
118
+ version: '3.2'
85
119
  - !ruby/object:Gem::Dependency
86
- name: addressable
120
+ name: byebug
87
121
  requirement: !ruby/object:Gem::Requirement
88
122
  requirements:
89
123
  - - ">="
90
124
  - !ruby/object:Gem::Version
91
125
  version: '0'
92
- type: :runtime
126
+ type: :development
93
127
  prerelease: false
94
128
  version_requirements: !ruby/object:Gem::Requirement
95
129
  requirements:
@@ -97,47 +131,61 @@ dependencies:
97
131
  - !ruby/object:Gem::Version
98
132
  version: '0'
99
133
  - !ruby/object:Gem::Dependency
100
- name: selenium-webdriver
134
+ name: coveralls
101
135
  requirement: !ruby/object:Gem::Requirement
102
136
  requirements:
103
- - - "~>"
137
+ - - ">="
104
138
  - !ruby/object:Gem::Version
105
- version: '2.0'
139
+ version: '0'
106
140
  type: :development
107
141
  prerelease: false
108
142
  version_requirements: !ruby/object:Gem::Requirement
109
143
  requirements:
110
- - - "~>"
144
+ - - ">="
111
145
  - !ruby/object:Gem::Version
112
- version: '2.0'
146
+ version: '0'
113
147
  - !ruby/object:Gem::Dependency
114
- name: sinatra
148
+ name: cucumber
115
149
  requirement: !ruby/object:Gem::Requirement
116
150
  requirements:
117
151
  - - ">="
118
152
  - !ruby/object:Gem::Version
119
- version: 0.9.4
153
+ version: 2.3.0
120
154
  type: :development
121
155
  prerelease: false
122
156
  version_requirements: !ruby/object:Gem::Requirement
123
157
  requirements:
124
158
  - - ">="
125
159
  - !ruby/object:Gem::Version
126
- version: 0.9.4
160
+ version: 2.3.0
127
161
  - !ruby/object:Gem::Dependency
128
- name: rspec
162
+ name: erubi
163
+ requirement: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - ">="
166
+ - !ruby/object:Gem::Version
167
+ version: '0'
168
+ type: :development
169
+ prerelease: false
170
+ version_requirements: !ruby/object:Gem::Requirement
171
+ requirements:
172
+ - - ">="
173
+ - !ruby/object:Gem::Version
174
+ version: '0'
175
+ - !ruby/object:Gem::Dependency
176
+ name: irb
129
177
  requirement: !ruby/object:Gem::Requirement
130
178
  requirements:
131
179
  - - ">="
132
180
  - !ruby/object:Gem::Version
133
- version: 2.2.0
181
+ version: '0'
134
182
  type: :development
135
183
  prerelease: false
136
184
  version_requirements: !ruby/object:Gem::Requirement
137
185
  requirements:
138
186
  - - ">="
139
187
  - !ruby/object:Gem::Version
140
- version: 2.2.0
188
+ version: '0'
141
189
  - !ruby/object:Gem::Dependency
142
190
  name: launchy
143
191
  requirement: !ruby/object:Gem::Requirement
@@ -153,63 +201,63 @@ dependencies:
153
201
  - !ruby/object:Gem::Version
154
202
  version: 2.0.4
155
203
  - !ruby/object:Gem::Dependency
156
- name: yard
204
+ name: minitest
157
205
  requirement: !ruby/object:Gem::Requirement
158
206
  requirements:
159
207
  - - ">="
160
208
  - !ruby/object:Gem::Version
161
- version: 0.5.8
209
+ version: '0'
162
210
  type: :development
163
211
  prerelease: false
164
212
  version_requirements: !ruby/object:Gem::Requirement
165
213
  requirements:
166
214
  - - ">="
167
215
  - !ruby/object:Gem::Version
168
- version: 0.5.8
216
+ version: '0'
169
217
  - !ruby/object:Gem::Dependency
170
- name: fuubar
218
+ name: puma
171
219
  requirement: !ruby/object:Gem::Requirement
172
220
  requirements:
173
221
  - - ">="
174
222
  - !ruby/object:Gem::Version
175
- version: 0.0.1
223
+ version: '0'
176
224
  type: :development
177
225
  prerelease: false
178
226
  version_requirements: !ruby/object:Gem::Requirement
179
227
  requirements:
180
228
  - - ">="
181
229
  - !ruby/object:Gem::Version
182
- version: 0.0.1
230
+ version: '0'
183
231
  - !ruby/object:Gem::Dependency
184
- name: cucumber
232
+ name: rake
185
233
  requirement: !ruby/object:Gem::Requirement
186
234
  requirements:
187
235
  - - ">="
188
236
  - !ruby/object:Gem::Version
189
- version: 0.10.5
237
+ version: '0'
190
238
  type: :development
191
239
  prerelease: false
192
240
  version_requirements: !ruby/object:Gem::Requirement
193
241
  requirements:
194
242
  - - ">="
195
243
  - !ruby/object:Gem::Version
196
- version: 0.10.5
244
+ version: '0'
197
245
  - !ruby/object:Gem::Dependency
198
- name: rake
246
+ name: rspec
199
247
  requirement: !ruby/object:Gem::Requirement
200
248
  requirements:
201
- - - "<"
249
+ - - ">="
202
250
  - !ruby/object:Gem::Version
203
- version: '11.0'
251
+ version: 3.5.0
204
252
  type: :development
205
253
  prerelease: false
206
254
  version_requirements: !ruby/object:Gem::Requirement
207
255
  requirements:
208
- - - "<"
256
+ - - ">="
209
257
  - !ruby/object:Gem::Version
210
- version: '11.0'
258
+ version: 3.5.0
211
259
  - !ruby/object:Gem::Dependency
212
- name: pry
260
+ name: rspec-instafail
213
261
  requirement: !ruby/object:Gem::Requirement
214
262
  requirements:
215
263
  - - ">="
@@ -222,6 +270,174 @@ dependencies:
222
270
  - - ">="
223
271
  - !ruby/object:Gem::Version
224
272
  version: '0'
273
+ - !ruby/object:Gem::Dependency
274
+ name: rubocop
275
+ requirement: !ruby/object:Gem::Requirement
276
+ requirements:
277
+ - - "~>"
278
+ - !ruby/object:Gem::Version
279
+ version: '1.1'
280
+ type: :development
281
+ prerelease: false
282
+ version_requirements: !ruby/object:Gem::Requirement
283
+ requirements:
284
+ - - "~>"
285
+ - !ruby/object:Gem::Version
286
+ version: '1.1'
287
+ - !ruby/object:Gem::Dependency
288
+ name: rubocop-minitest
289
+ requirement: !ruby/object:Gem::Requirement
290
+ requirements:
291
+ - - ">="
292
+ - !ruby/object:Gem::Version
293
+ version: '0'
294
+ type: :development
295
+ prerelease: false
296
+ version_requirements: !ruby/object:Gem::Requirement
297
+ requirements:
298
+ - - ">="
299
+ - !ruby/object:Gem::Version
300
+ version: '0'
301
+ - !ruby/object:Gem::Dependency
302
+ name: rubocop-performance
303
+ requirement: !ruby/object:Gem::Requirement
304
+ requirements:
305
+ - - ">="
306
+ - !ruby/object:Gem::Version
307
+ version: '0'
308
+ type: :development
309
+ prerelease: false
310
+ version_requirements: !ruby/object:Gem::Requirement
311
+ requirements:
312
+ - - ">="
313
+ - !ruby/object:Gem::Version
314
+ version: '0'
315
+ - !ruby/object:Gem::Dependency
316
+ name: rubocop-rake
317
+ requirement: !ruby/object:Gem::Requirement
318
+ requirements:
319
+ - - ">="
320
+ - !ruby/object:Gem::Version
321
+ version: '0'
322
+ type: :development
323
+ prerelease: false
324
+ version_requirements: !ruby/object:Gem::Requirement
325
+ requirements:
326
+ - - ">="
327
+ - !ruby/object:Gem::Version
328
+ version: '0'
329
+ - !ruby/object:Gem::Dependency
330
+ name: rubocop-rspec
331
+ requirement: !ruby/object:Gem::Requirement
332
+ requirements:
333
+ - - "~>"
334
+ - !ruby/object:Gem::Version
335
+ version: '2.0'
336
+ type: :development
337
+ prerelease: false
338
+ version_requirements: !ruby/object:Gem::Requirement
339
+ requirements:
340
+ - - "~>"
341
+ - !ruby/object:Gem::Version
342
+ version: '2.0'
343
+ - !ruby/object:Gem::Dependency
344
+ name: sauce_whisk
345
+ requirement: !ruby/object:Gem::Requirement
346
+ requirements:
347
+ - - ">="
348
+ - !ruby/object:Gem::Version
349
+ version: '0'
350
+ type: :development
351
+ prerelease: false
352
+ version_requirements: !ruby/object:Gem::Requirement
353
+ requirements:
354
+ - - ">="
355
+ - !ruby/object:Gem::Version
356
+ version: '0'
357
+ - !ruby/object:Gem::Dependency
358
+ name: selenium_statistics
359
+ requirement: !ruby/object:Gem::Requirement
360
+ requirements:
361
+ - - ">="
362
+ - !ruby/object:Gem::Version
363
+ version: '0'
364
+ type: :development
365
+ prerelease: false
366
+ version_requirements: !ruby/object:Gem::Requirement
367
+ requirements:
368
+ - - ">="
369
+ - !ruby/object:Gem::Version
370
+ version: '0'
371
+ - !ruby/object:Gem::Dependency
372
+ name: selenium-webdriver
373
+ requirement: !ruby/object:Gem::Requirement
374
+ requirements:
375
+ - - "~>"
376
+ - !ruby/object:Gem::Version
377
+ version: '3.5'
378
+ type: :development
379
+ prerelease: false
380
+ version_requirements: !ruby/object:Gem::Requirement
381
+ requirements:
382
+ - - "~>"
383
+ - !ruby/object:Gem::Version
384
+ version: '3.5'
385
+ - !ruby/object:Gem::Dependency
386
+ name: sinatra
387
+ requirement: !ruby/object:Gem::Requirement
388
+ requirements:
389
+ - - ">="
390
+ - !ruby/object:Gem::Version
391
+ version: 1.4.0
392
+ type: :development
393
+ prerelease: false
394
+ version_requirements: !ruby/object:Gem::Requirement
395
+ requirements:
396
+ - - ">="
397
+ - !ruby/object:Gem::Version
398
+ version: 1.4.0
399
+ - !ruby/object:Gem::Dependency
400
+ name: uglifier
401
+ requirement: !ruby/object:Gem::Requirement
402
+ requirements:
403
+ - - ">="
404
+ - !ruby/object:Gem::Version
405
+ version: '0'
406
+ type: :development
407
+ prerelease: false
408
+ version_requirements: !ruby/object:Gem::Requirement
409
+ requirements:
410
+ - - ">="
411
+ - !ruby/object:Gem::Version
412
+ version: '0'
413
+ - !ruby/object:Gem::Dependency
414
+ name: webdrivers
415
+ requirement: !ruby/object:Gem::Requirement
416
+ requirements:
417
+ - - ">="
418
+ - !ruby/object:Gem::Version
419
+ version: 3.6.0
420
+ type: :development
421
+ prerelease: false
422
+ version_requirements: !ruby/object:Gem::Requirement
423
+ requirements:
424
+ - - ">="
425
+ - !ruby/object:Gem::Version
426
+ version: 3.6.0
427
+ - !ruby/object:Gem::Dependency
428
+ name: yard
429
+ requirement: !ruby/object:Gem::Requirement
430
+ requirements:
431
+ - - ">="
432
+ - !ruby/object:Gem::Version
433
+ version: 0.9.0
434
+ type: :development
435
+ prerelease: false
436
+ version_requirements: !ruby/object:Gem::Requirement
437
+ requirements:
438
+ - - ">="
439
+ - !ruby/object:Gem::Version
440
+ version: 0.9.0
225
441
  description: Capybara is an integration testing tool for rack based web applications.
226
442
  It simulates how a user would interact with a website
227
443
  email:
@@ -231,15 +447,19 @@ executables: []
231
447
  extensions: []
232
448
  extra_rdoc_files: []
233
449
  files:
450
+ - ".yardopts"
234
451
  - History.md
235
452
  - License.txt
236
453
  - README.md
237
454
  - lib/capybara.rb
455
+ - lib/capybara/config.rb
238
456
  - lib/capybara/cucumber.rb
239
457
  - lib/capybara/driver/base.rb
240
458
  - lib/capybara/driver/node.rb
241
459
  - lib/capybara/dsl.rb
242
460
  - lib/capybara/helpers.rb
461
+ - lib/capybara/minitest.rb
462
+ - lib/capybara/minitest/spec.rb
243
463
  - lib/capybara/node/actions.rb
244
464
  - lib/capybara/node/base.rb
245
465
  - lib/capybara/node/document.rb
@@ -248,44 +468,133 @@ files:
248
468
  - lib/capybara/node/finders.rb
249
469
  - lib/capybara/node/matchers.rb
250
470
  - lib/capybara/node/simple.rb
471
+ - lib/capybara/queries/ancestor_query.rb
251
472
  - lib/capybara/queries/base_query.rb
252
473
  - lib/capybara/queries/current_path_query.rb
253
474
  - lib/capybara/queries/match_query.rb
254
475
  - lib/capybara/queries/selector_query.rb
476
+ - lib/capybara/queries/sibling_query.rb
477
+ - lib/capybara/queries/style_query.rb
255
478
  - lib/capybara/queries/text_query.rb
256
479
  - lib/capybara/queries/title_query.rb
257
- - lib/capybara/query.rb
258
480
  - lib/capybara/rack_test/browser.rb
259
481
  - lib/capybara/rack_test/css_handlers.rb
260
482
  - lib/capybara/rack_test/driver.rb
483
+ - lib/capybara/rack_test/errors.rb
261
484
  - lib/capybara/rack_test/form.rb
262
485
  - lib/capybara/rack_test/node.rb
263
486
  - lib/capybara/rails.rb
487
+ - lib/capybara/registration_container.rb
488
+ - lib/capybara/registrations/drivers.rb
489
+ - lib/capybara/registrations/patches/puma_ssl.rb
490
+ - lib/capybara/registrations/servers.rb
264
491
  - lib/capybara/result.rb
265
492
  - lib/capybara/rspec.rb
266
493
  - lib/capybara/rspec/features.rb
494
+ - lib/capybara/rspec/matcher_proxies.rb
267
495
  - lib/capybara/rspec/matchers.rb
496
+ - lib/capybara/rspec/matchers/base.rb
497
+ - lib/capybara/rspec/matchers/become_closed.rb
498
+ - lib/capybara/rspec/matchers/compound.rb
499
+ - lib/capybara/rspec/matchers/count_sugar.rb
500
+ - lib/capybara/rspec/matchers/have_ancestor.rb
501
+ - lib/capybara/rspec/matchers/have_current_path.rb
502
+ - lib/capybara/rspec/matchers/have_selector.rb
503
+ - lib/capybara/rspec/matchers/have_sibling.rb
504
+ - lib/capybara/rspec/matchers/have_text.rb
505
+ - lib/capybara/rspec/matchers/have_title.rb
506
+ - lib/capybara/rspec/matchers/match_selector.rb
507
+ - lib/capybara/rspec/matchers/match_style.rb
508
+ - lib/capybara/rspec/matchers/spatial_sugar.rb
268
509
  - lib/capybara/selector.rb
510
+ - lib/capybara/selector/builders/css_builder.rb
511
+ - lib/capybara/selector/builders/xpath_builder.rb
512
+ - lib/capybara/selector/css.rb
513
+ - lib/capybara/selector/definition.rb
514
+ - lib/capybara/selector/definition/button.rb
515
+ - lib/capybara/selector/definition/checkbox.rb
516
+ - lib/capybara/selector/definition/css.rb
517
+ - lib/capybara/selector/definition/datalist_input.rb
518
+ - lib/capybara/selector/definition/datalist_option.rb
519
+ - lib/capybara/selector/definition/element.rb
520
+ - lib/capybara/selector/definition/field.rb
521
+ - lib/capybara/selector/definition/fieldset.rb
522
+ - lib/capybara/selector/definition/file_field.rb
523
+ - lib/capybara/selector/definition/fillable_field.rb
524
+ - lib/capybara/selector/definition/frame.rb
525
+ - lib/capybara/selector/definition/id.rb
526
+ - lib/capybara/selector/definition/label.rb
527
+ - lib/capybara/selector/definition/link.rb
528
+ - lib/capybara/selector/definition/link_or_button.rb
529
+ - lib/capybara/selector/definition/option.rb
530
+ - lib/capybara/selector/definition/radio_button.rb
531
+ - lib/capybara/selector/definition/select.rb
532
+ - lib/capybara/selector/definition/table.rb
533
+ - lib/capybara/selector/definition/table_row.rb
534
+ - lib/capybara/selector/definition/xpath.rb
269
535
  - lib/capybara/selector/filter.rb
536
+ - lib/capybara/selector/filter_set.rb
537
+ - lib/capybara/selector/filters/base.rb
538
+ - lib/capybara/selector/filters/expression_filter.rb
539
+ - lib/capybara/selector/filters/locator_filter.rb
540
+ - lib/capybara/selector/filters/node_filter.rb
541
+ - lib/capybara/selector/regexp_disassembler.rb
542
+ - lib/capybara/selector/selector.rb
543
+ - lib/capybara/selector/xpath_extensions.rb
544
+ - lib/capybara/selenium/atoms/getAttribute.min.js
545
+ - lib/capybara/selenium/atoms/isDisplayed.min.js
546
+ - lib/capybara/selenium/atoms/src/getAttribute.js
547
+ - lib/capybara/selenium/atoms/src/isDisplayed.js
270
548
  - lib/capybara/selenium/driver.rb
549
+ - lib/capybara/selenium/driver_specializations/chrome_driver.rb
550
+ - lib/capybara/selenium/driver_specializations/edge_driver.rb
551
+ - lib/capybara/selenium/driver_specializations/firefox_driver.rb
552
+ - lib/capybara/selenium/driver_specializations/internet_explorer_driver.rb
553
+ - lib/capybara/selenium/driver_specializations/safari_driver.rb
554
+ - lib/capybara/selenium/extensions/file_input_click_emulation.rb
555
+ - lib/capybara/selenium/extensions/find.rb
556
+ - lib/capybara/selenium/extensions/html5_drag.rb
557
+ - lib/capybara/selenium/extensions/modifier_keys_stack.rb
558
+ - lib/capybara/selenium/extensions/scroll.rb
559
+ - lib/capybara/selenium/logger_suppressor.rb
271
560
  - lib/capybara/selenium/node.rb
561
+ - lib/capybara/selenium/nodes/chrome_node.rb
562
+ - lib/capybara/selenium/nodes/edge_node.rb
563
+ - lib/capybara/selenium/nodes/firefox_node.rb
564
+ - lib/capybara/selenium/nodes/ie_node.rb
565
+ - lib/capybara/selenium/nodes/safari_node.rb
566
+ - lib/capybara/selenium/patches/action_pauser.rb
567
+ - lib/capybara/selenium/patches/atoms.rb
568
+ - lib/capybara/selenium/patches/is_displayed.rb
569
+ - lib/capybara/selenium/patches/logs.rb
570
+ - lib/capybara/selenium/patches/pause_duration_fix.rb
571
+ - lib/capybara/selenium/patches/persistent_client.rb
272
572
  - lib/capybara/server.rb
573
+ - lib/capybara/server/animation_disabler.rb
574
+ - lib/capybara/server/checker.rb
575
+ - lib/capybara/server/middleware.rb
273
576
  - lib/capybara/session.rb
577
+ - lib/capybara/session/config.rb
274
578
  - lib/capybara/session/matchers.rb
275
579
  - lib/capybara/spec/fixtures/another_test_file.txt
276
580
  - lib/capybara/spec/fixtures/capybara.jpg
581
+ - lib/capybara/spec/fixtures/no_extension
277
582
  - lib/capybara/spec/fixtures/test_file.txt
278
583
  - lib/capybara/spec/public/jquery-ui.js
279
584
  - lib/capybara/spec/public/jquery.js
585
+ - lib/capybara/spec/public/offset.js
280
586
  - lib/capybara/spec/public/test.js
281
587
  - lib/capybara/spec/session/accept_alert_spec.rb
282
588
  - lib/capybara/spec/session/accept_confirm_spec.rb
283
589
  - lib/capybara/spec/session/accept_prompt_spec.rb
284
590
  - lib/capybara/spec/session/all_spec.rb
285
- - lib/capybara/spec/session/assert_current_path.rb
286
- - lib/capybara/spec/session/assert_selector.rb
287
- - lib/capybara/spec/session/assert_text.rb
288
- - lib/capybara/spec/session/assert_title.rb
591
+ - lib/capybara/spec/session/ancestor_spec.rb
592
+ - lib/capybara/spec/session/assert_all_of_selectors_spec.rb
593
+ - lib/capybara/spec/session/assert_current_path_spec.rb
594
+ - lib/capybara/spec/session/assert_selector_spec.rb
595
+ - lib/capybara/spec/session/assert_style_spec.rb
596
+ - lib/capybara/spec/session/assert_text_spec.rb
597
+ - lib/capybara/spec/session/assert_title_spec.rb
289
598
  - lib/capybara/spec/session/attach_file_spec.rb
290
599
  - lib/capybara/spec/session/body_spec.rb
291
600
  - lib/capybara/spec/session/check_spec.rb
@@ -297,10 +606,11 @@ files:
297
606
  - lib/capybara/spec/session/current_url_spec.rb
298
607
  - lib/capybara/spec/session/dismiss_confirm_spec.rb
299
608
  - lib/capybara/spec/session/dismiss_prompt_spec.rb
300
- - lib/capybara/spec/session/element/assert_match_selector.rb
609
+ - lib/capybara/spec/session/element/assert_match_selector_spec.rb
301
610
  - lib/capybara/spec/session/element/match_css_spec.rb
302
611
  - lib/capybara/spec/session/element/match_xpath_spec.rb
303
612
  - lib/capybara/spec/session/element/matches_selector_spec.rb
613
+ - lib/capybara/spec/session/evaluate_async_script_spec.rb
304
614
  - lib/capybara/spec/session/evaluate_script_spec.rb
305
615
  - lib/capybara/spec/session/execute_script_spec.rb
306
616
  - lib/capybara/spec/session/fill_in_spec.rb
@@ -310,32 +620,45 @@ files:
310
620
  - lib/capybara/spec/session/find_link_spec.rb
311
621
  - lib/capybara/spec/session/find_spec.rb
312
622
  - lib/capybara/spec/session/first_spec.rb
623
+ - lib/capybara/spec/session/frame/frame_title_spec.rb
624
+ - lib/capybara/spec/session/frame/frame_url_spec.rb
625
+ - lib/capybara/spec/session/frame/switch_to_frame_spec.rb
626
+ - lib/capybara/spec/session/frame/within_frame_spec.rb
313
627
  - lib/capybara/spec/session/go_back_spec.rb
314
628
  - lib/capybara/spec/session/go_forward_spec.rb
629
+ - lib/capybara/spec/session/has_all_selectors_spec.rb
630
+ - lib/capybara/spec/session/has_ancestor_spec.rb
631
+ - lib/capybara/spec/session/has_any_selectors_spec.rb
315
632
  - lib/capybara/spec/session/has_button_spec.rb
316
633
  - lib/capybara/spec/session/has_css_spec.rb
317
634
  - lib/capybara/spec/session/has_current_path_spec.rb
318
635
  - lib/capybara/spec/session/has_field_spec.rb
319
636
  - lib/capybara/spec/session/has_link_spec.rb
637
+ - lib/capybara/spec/session/has_none_selectors_spec.rb
320
638
  - lib/capybara/spec/session/has_select_spec.rb
321
639
  - lib/capybara/spec/session/has_selector_spec.rb
640
+ - lib/capybara/spec/session/has_sibling_spec.rb
322
641
  - lib/capybara/spec/session/has_table_spec.rb
323
642
  - lib/capybara/spec/session/has_text_spec.rb
324
643
  - lib/capybara/spec/session/has_title_spec.rb
325
644
  - lib/capybara/spec/session/has_xpath_spec.rb
326
- - lib/capybara/spec/session/headers.rb
645
+ - lib/capybara/spec/session/headers_spec.rb
327
646
  - lib/capybara/spec/session/html_spec.rb
647
+ - lib/capybara/spec/session/matches_style_spec.rb
328
648
  - lib/capybara/spec/session/node_spec.rb
649
+ - lib/capybara/spec/session/node_wrapper_spec.rb
650
+ - lib/capybara/spec/session/refresh_spec.rb
329
651
  - lib/capybara/spec/session/reset_session_spec.rb
330
- - lib/capybara/spec/session/response_code.rb
652
+ - lib/capybara/spec/session/response_code_spec.rb
331
653
  - lib/capybara/spec/session/save_and_open_page_spec.rb
332
654
  - lib/capybara/spec/session/save_and_open_screenshot_spec.rb
333
655
  - lib/capybara/spec/session/save_page_spec.rb
334
656
  - lib/capybara/spec/session/save_screenshot_spec.rb
335
657
  - lib/capybara/spec/session/screenshot_spec.rb
658
+ - lib/capybara/spec/session/scroll_spec.rb
336
659
  - lib/capybara/spec/session/select_spec.rb
337
660
  - lib/capybara/spec/session/selectors_spec.rb
338
- - lib/capybara/spec/session/source_spec.rb
661
+ - lib/capybara/spec/session/sibling_spec.rb
339
662
  - lib/capybara/spec/session/text_spec.rb
340
663
  - lib/capybara/spec/session/title_spec.rb
341
664
  - lib/capybara/spec/session/uncheck_spec.rb
@@ -349,10 +672,10 @@ files:
349
672
  - lib/capybara/spec/session/window/window_spec.rb
350
673
  - lib/capybara/spec/session/window/windows_spec.rb
351
674
  - lib/capybara/spec/session/window/within_window_spec.rb
352
- - lib/capybara/spec/session/within_frame_spec.rb
353
675
  - lib/capybara/spec/session/within_spec.rb
354
676
  - lib/capybara/spec/spec_helper.rb
355
677
  - lib/capybara/spec/test_app.rb
678
+ - lib/capybara/spec/views/animated.erb
356
679
  - lib/capybara/spec/views/buttons.erb
357
680
  - lib/capybara/spec/views/fieldsets.erb
358
681
  - lib/capybara/spec/views/form.erb
@@ -362,20 +685,36 @@ files:
362
685
  - lib/capybara/spec/views/frame_two.erb
363
686
  - lib/capybara/spec/views/header_links.erb
364
687
  - lib/capybara/spec/views/host_links.erb
688
+ - lib/capybara/spec/views/initial_alert.erb
689
+ - lib/capybara/spec/views/obscured.erb
690
+ - lib/capybara/spec/views/offset.erb
365
691
  - lib/capybara/spec/views/path.erb
366
692
  - lib/capybara/spec/views/popup_one.erb
367
693
  - lib/capybara/spec/views/popup_two.erb
368
694
  - lib/capybara/spec/views/postback.erb
695
+ - lib/capybara/spec/views/react.erb
696
+ - lib/capybara/spec/views/scroll.erb
697
+ - lib/capybara/spec/views/spatial.erb
369
698
  - lib/capybara/spec/views/tables.erb
699
+ - lib/capybara/spec/views/with_animation.erb
370
700
  - lib/capybara/spec/views/with_base_tag.erb
371
701
  - lib/capybara/spec/views/with_count.erb
702
+ - lib/capybara/spec/views/with_dragula.erb
703
+ - lib/capybara/spec/views/with_fixed_header_footer.erb
372
704
  - lib/capybara/spec/views/with_hover.erb
705
+ - lib/capybara/spec/views/with_hover1.erb
373
706
  - lib/capybara/spec/views/with_html.erb
707
+ - lib/capybara/spec/views/with_html5_svg.erb
374
708
  - lib/capybara/spec/views/with_html_entities.erb
709
+ - lib/capybara/spec/views/with_jquery_animation.erb
375
710
  - lib/capybara/spec/views/with_js.erb
711
+ - lib/capybara/spec/views/with_jstree.erb
712
+ - lib/capybara/spec/views/with_namespace.erb
376
713
  - lib/capybara/spec/views/with_scope.erb
714
+ - lib/capybara/spec/views/with_scope_other.erb
377
715
  - lib/capybara/spec/views/with_simple_html.erb
378
716
  - lib/capybara/spec/views/with_slow_unload.erb
717
+ - lib/capybara/spec/views/with_sortable_js.erb
379
718
  - lib/capybara/spec/views/with_title.erb
380
719
  - lib/capybara/spec/views/with_unload_alert.erb
381
720
  - lib/capybara/spec/views/with_windows.erb
@@ -384,25 +723,48 @@ files:
384
723
  - lib/capybara/window.rb
385
724
  - spec/basic_node_spec.rb
386
725
  - spec/capybara_spec.rb
726
+ - spec/css_builder_spec.rb
727
+ - spec/css_splitter_spec.rb
387
728
  - spec/dsl_spec.rb
729
+ - spec/filter_set_spec.rb
730
+ - spec/fixtures/capybara.csv
731
+ - spec/fixtures/certificate.pem
732
+ - spec/fixtures/key.pem
388
733
  - spec/fixtures/selenium_driver_rspec_failure.rb
389
734
  - spec/fixtures/selenium_driver_rspec_success.rb
735
+ - spec/minitest_spec.rb
736
+ - spec/minitest_spec_spec.rb
737
+ - spec/per_session_config_spec.rb
390
738
  - spec/rack_test_spec.rb
739
+ - spec/regexp_dissassembler_spec.rb
391
740
  - spec/result_spec.rb
392
741
  - spec/rspec/features_spec.rb
393
- - spec/rspec/matchers_spec.rb
394
742
  - spec/rspec/scenarios_spec.rb
743
+ - spec/rspec/shared_spec_matchers.rb
395
744
  - spec/rspec/views_spec.rb
745
+ - spec/rspec_matchers_spec.rb
396
746
  - spec/rspec_spec.rb
747
+ - spec/sauce_spec_chrome.rb
397
748
  - spec/selector_spec.rb
398
- - spec/selenium_spec.rb
399
749
  - spec/selenium_spec_chrome.rb
750
+ - spec/selenium_spec_chrome_remote.rb
751
+ - spec/selenium_spec_edge.rb
752
+ - spec/selenium_spec_firefox.rb
753
+ - spec/selenium_spec_firefox_remote.rb
754
+ - spec/selenium_spec_ie.rb
755
+ - spec/selenium_spec_safari.rb
400
756
  - spec/server_spec.rb
757
+ - spec/session_spec.rb
758
+ - spec/shared_selenium_node.rb
759
+ - spec/shared_selenium_session.rb
401
760
  - spec/spec_helper.rb
402
- homepage: https://github.com/jnicklas/capybara
761
+ - spec/xpath_builder_spec.rb
762
+ homepage: https://github.com/teamcapybara/capybara
403
763
  licenses:
404
764
  - MIT
405
- metadata: {}
765
+ metadata:
766
+ changelog_uri: https://github.com/teamcapybara/capybara/blob/master/History.md
767
+ source_code_uri: https://github.com/teamcapybara/capybara
406
768
  post_install_message:
407
769
  rdoc_options: []
408
770
  require_paths:
@@ -411,18 +773,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
411
773
  requirements:
412
774
  - - ">="
413
775
  - !ruby/object:Gem::Version
414
- version: 1.9.3
776
+ version: 2.5.0
415
777
  required_rubygems_version: !ruby/object:Gem::Requirement
416
778
  requirements:
417
779
  - - ">="
418
780
  - !ruby/object:Gem::Version
419
781
  version: '0'
420
782
  requirements: []
421
- rubyforge_project:
422
- rubygems_version: 2.5.1
783
+ rubygems_version: 3.1.2
423
784
  signing_key:
424
785
  specification_version: 4
425
786
  summary: Capybara aims to simplify the process of integration testing Rack applications,
426
787
  such as Rails, Sinatra or Merb
427
788
  test_files: []
428
- has_rdoc: