capybara 3.0.0 → 3.36.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (308) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +1 -1
  3. data/History.md +777 -10
  4. data/License.txt +1 -1
  5. data/README.md +75 -58
  6. data/lib/capybara/config.rb +29 -10
  7. data/lib/capybara/cucumber.rb +1 -1
  8. data/lib/capybara/driver/base.rb +22 -4
  9. data/lib/capybara/driver/node.rb +34 -9
  10. data/lib/capybara/dsl.rb +14 -6
  11. data/lib/capybara/helpers.rb +52 -7
  12. data/lib/capybara/minitest/spec.rb +173 -84
  13. data/lib/capybara/minitest.rb +250 -144
  14. data/lib/capybara/node/actions.rb +248 -124
  15. data/lib/capybara/node/base.rb +34 -20
  16. data/lib/capybara/node/document.rb +14 -2
  17. data/lib/capybara/node/document_matchers.rb +13 -15
  18. data/lib/capybara/node/element.rb +339 -113
  19. data/lib/capybara/node/finders.rb +95 -82
  20. data/lib/capybara/node/matchers.rb +338 -157
  21. data/lib/capybara/node/simple.rb +54 -15
  22. data/lib/capybara/queries/active_element_query.rb +18 -0
  23. data/lib/capybara/queries/ancestor_query.rb +9 -10
  24. data/lib/capybara/queries/base_query.rb +25 -18
  25. data/lib/capybara/queries/current_path_query.rb +16 -6
  26. data/lib/capybara/queries/match_query.rb +11 -0
  27. data/lib/capybara/queries/selector_query.rb +600 -103
  28. data/lib/capybara/queries/sibling_query.rb +9 -7
  29. data/lib/capybara/queries/style_query.rb +45 -0
  30. data/lib/capybara/queries/text_query.rb +40 -22
  31. data/lib/capybara/queries/title_query.rb +2 -2
  32. data/lib/capybara/rack_test/browser.rb +47 -28
  33. data/lib/capybara/rack_test/driver.rb +12 -3
  34. data/lib/capybara/rack_test/errors.rb +6 -0
  35. data/lib/capybara/rack_test/form.rb +53 -50
  36. data/lib/capybara/rack_test/node.rb +114 -37
  37. data/lib/capybara/rails.rb +1 -1
  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 +86 -52
  43. data/lib/capybara/rspec/features.rb +8 -10
  44. data/lib/capybara/rspec/matcher_proxies.rb +39 -18
  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 +138 -316
  59. data/lib/capybara/rspec.rb +3 -2
  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 +89 -12
  63. data/lib/capybara/selector/definition/button.rb +68 -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 +279 -0
  85. data/lib/capybara/selector/filter.rb +1 -0
  86. data/lib/capybara/selector/filter_set.rb +72 -27
  87. data/lib/capybara/selector/filters/base.rb +45 -2
  88. data/lib/capybara/selector/filters/expression_filter.rb +5 -6
  89. data/lib/capybara/selector/filters/locator_filter.rb +29 -0
  90. data/lib/capybara/selector/filters/node_filter.rb +18 -4
  91. data/lib/capybara/selector/regexp_disassembler.rb +214 -0
  92. data/lib/capybara/selector/selector.rb +85 -200
  93. data/lib/capybara/selector/xpath_extensions.rb +17 -0
  94. data/lib/capybara/selector.rb +226 -537
  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 +296 -238
  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 +436 -166
  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 +69 -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 +58 -67
  127. data/lib/capybara/session/config.rb +38 -6
  128. data/lib/capybara/session/matchers.rb +26 -19
  129. data/lib/capybara/session.rb +258 -190
  130. data/lib/capybara/spec/public/jquery.js +5 -5
  131. data/lib/capybara/spec/public/offset.js +6 -0
  132. data/lib/capybara/spec/public/test.js +122 -8
  133. data/lib/capybara/spec/session/accept_alert_spec.rb +11 -11
  134. data/lib/capybara/spec/session/accept_confirm_spec.rb +3 -3
  135. data/lib/capybara/spec/session/accept_prompt_spec.rb +9 -10
  136. data/lib/capybara/spec/session/active_element_spec.rb +31 -0
  137. data/lib/capybara/spec/session/all_spec.rb +135 -42
  138. data/lib/capybara/spec/session/ancestor_spec.rb +24 -19
  139. data/lib/capybara/spec/session/assert_all_of_selectors_spec.rb +67 -38
  140. data/lib/capybara/spec/session/{assert_current_path.rb → assert_current_path_spec.rb} +20 -18
  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.rb → assert_text_spec.rb} +62 -38
  144. data/lib/capybara/spec/session/{assert_title.rb → assert_title_spec.rb} +12 -12
  145. data/lib/capybara/spec/session/attach_file_spec.rb +120 -72
  146. data/lib/capybara/spec/session/body_spec.rb +11 -13
  147. data/lib/capybara/spec/session/check_spec.rb +111 -51
  148. data/lib/capybara/spec/session/choose_spec.rb +62 -30
  149. data/lib/capybara/spec/session/click_button_spec.rb +227 -161
  150. data/lib/capybara/spec/session/click_link_or_button_spec.rb +49 -30
  151. data/lib/capybara/spec/session/click_link_spec.rb +78 -55
  152. data/lib/capybara/spec/session/current_scope_spec.rb +7 -7
  153. data/lib/capybara/spec/session/current_url_spec.rb +44 -37
  154. data/lib/capybara/spec/session/dismiss_confirm_spec.rb +3 -3
  155. data/lib/capybara/spec/session/dismiss_prompt_spec.rb +2 -2
  156. data/lib/capybara/spec/session/element/{assert_match_selector.rb → assert_match_selector_spec.rb} +11 -9
  157. data/lib/capybara/spec/session/element/match_css_spec.rb +18 -10
  158. data/lib/capybara/spec/session/element/match_xpath_spec.rb +8 -6
  159. data/lib/capybara/spec/session/element/matches_selector_spec.rb +70 -56
  160. data/lib/capybara/spec/session/evaluate_async_script_spec.rb +7 -7
  161. data/lib/capybara/spec/session/evaluate_script_spec.rb +28 -8
  162. data/lib/capybara/spec/session/execute_script_spec.rb +8 -7
  163. data/lib/capybara/spec/session/fill_in_spec.rb +104 -44
  164. data/lib/capybara/spec/session/find_button_spec.rb +23 -23
  165. data/lib/capybara/spec/session/find_by_id_spec.rb +8 -8
  166. data/lib/capybara/spec/session/find_field_spec.rb +33 -31
  167. data/lib/capybara/spec/session/find_link_spec.rb +32 -14
  168. data/lib/capybara/spec/session/find_spec.rb +236 -141
  169. data/lib/capybara/spec/session/first_spec.rb +44 -43
  170. data/lib/capybara/spec/session/frame/frame_title_spec.rb +6 -6
  171. data/lib/capybara/spec/session/frame/frame_url_spec.rb +6 -6
  172. data/lib/capybara/spec/session/frame/switch_to_frame_spec.rb +32 -20
  173. data/lib/capybara/spec/session/frame/within_frame_spec.rb +44 -19
  174. data/lib/capybara/spec/session/go_back_spec.rb +1 -1
  175. data/lib/capybara/spec/session/go_forward_spec.rb +1 -1
  176. data/lib/capybara/spec/session/has_all_selectors_spec.rb +18 -18
  177. data/lib/capybara/spec/session/has_ancestor_spec.rb +46 -0
  178. data/lib/capybara/spec/session/has_any_selectors_spec.rb +29 -0
  179. data/lib/capybara/spec/session/has_button_spec.rb +92 -12
  180. data/lib/capybara/spec/session/has_css_spec.rb +271 -137
  181. data/lib/capybara/spec/session/has_current_path_spec.rb +48 -33
  182. data/lib/capybara/spec/session/has_field_spec.rb +137 -58
  183. data/lib/capybara/spec/session/has_link_spec.rb +30 -6
  184. data/lib/capybara/spec/session/has_none_selectors_spec.rb +26 -24
  185. data/lib/capybara/spec/session/has_select_spec.rb +75 -47
  186. data/lib/capybara/spec/session/has_selector_spec.rb +102 -69
  187. data/lib/capybara/spec/session/has_sibling_spec.rb +50 -0
  188. data/lib/capybara/spec/session/has_table_spec.rb +170 -4
  189. data/lib/capybara/spec/session/has_text_spec.rb +108 -52
  190. data/lib/capybara/spec/session/has_title_spec.rb +19 -14
  191. data/lib/capybara/spec/session/has_xpath_spec.rb +56 -38
  192. data/lib/capybara/spec/session/{headers.rb → headers_spec.rb} +1 -1
  193. data/lib/capybara/spec/session/html_spec.rb +13 -6
  194. data/lib/capybara/spec/session/matches_style_spec.rb +35 -0
  195. data/lib/capybara/spec/session/node_spec.rb +871 -122
  196. data/lib/capybara/spec/session/node_wrapper_spec.rb +15 -12
  197. data/lib/capybara/spec/session/refresh_spec.rb +9 -7
  198. data/lib/capybara/spec/session/reset_session_spec.rb +52 -37
  199. data/lib/capybara/spec/session/{response_code.rb → response_code_spec.rb} +1 -1
  200. data/lib/capybara/spec/session/save_and_open_page_spec.rb +2 -2
  201. data/lib/capybara/spec/session/save_and_open_screenshot_spec.rb +5 -4
  202. data/lib/capybara/spec/session/save_page_spec.rb +41 -38
  203. data/lib/capybara/spec/session/save_screenshot_spec.rb +13 -11
  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 +102 -76
  207. data/lib/capybara/spec/session/selectors_spec.rb +51 -18
  208. data/lib/capybara/spec/session/sibling_spec.rb +9 -9
  209. data/lib/capybara/spec/session/text_spec.rb +26 -24
  210. data/lib/capybara/spec/session/title_spec.rb +8 -6
  211. data/lib/capybara/spec/session/uncheck_spec.rb +40 -21
  212. data/lib/capybara/spec/session/unselect_spec.rb +37 -37
  213. data/lib/capybara/spec/session/visit_spec.rb +59 -53
  214. data/lib/capybara/spec/session/window/become_closed_spec.rb +22 -19
  215. data/lib/capybara/spec/session/window/current_window_spec.rb +4 -3
  216. data/lib/capybara/spec/session/window/open_new_window_spec.rb +4 -3
  217. data/lib/capybara/spec/session/window/switch_to_window_spec.rb +25 -21
  218. data/lib/capybara/spec/session/window/window_opened_by_spec.rb +10 -5
  219. data/lib/capybara/spec/session/window/window_spec.rb +88 -54
  220. data/lib/capybara/spec/session/window/windows_spec.rb +10 -7
  221. data/lib/capybara/spec/session/window/within_window_spec.rb +17 -16
  222. data/lib/capybara/spec/session/within_spec.rb +69 -44
  223. data/lib/capybara/spec/spec_helper.rb +41 -53
  224. data/lib/capybara/spec/test_app.rb +79 -40
  225. data/lib/capybara/spec/views/animated.erb +49 -0
  226. data/lib/capybara/spec/views/form.erb +134 -42
  227. data/lib/capybara/spec/views/frame_child.erb +4 -3
  228. data/lib/capybara/spec/views/frame_one.erb +2 -1
  229. data/lib/capybara/spec/views/frame_parent.erb +1 -1
  230. data/lib/capybara/spec/views/frame_two.erb +1 -1
  231. data/lib/capybara/spec/views/initial_alert.erb +2 -1
  232. data/lib/capybara/spec/views/layout.erb +10 -0
  233. data/lib/capybara/spec/views/obscured.erb +47 -0
  234. data/lib/capybara/spec/views/offset.erb +33 -0
  235. data/lib/capybara/spec/views/path.erb +2 -2
  236. data/lib/capybara/spec/views/popup_one.erb +1 -1
  237. data/lib/capybara/spec/views/popup_two.erb +1 -1
  238. data/lib/capybara/spec/views/react.erb +45 -0
  239. data/lib/capybara/spec/views/scroll.erb +21 -0
  240. data/lib/capybara/spec/views/spatial.erb +31 -0
  241. data/lib/capybara/spec/views/tables.erb +68 -1
  242. data/lib/capybara/spec/views/with_animation.erb +81 -0
  243. data/lib/capybara/spec/views/with_base_tag.erb +2 -2
  244. data/lib/capybara/spec/views/with_dragula.erb +24 -0
  245. data/lib/capybara/spec/views/with_fixed_header_footer.erb +2 -1
  246. data/lib/capybara/spec/views/with_hover.erb +3 -2
  247. data/lib/capybara/spec/views/with_hover1.erb +10 -0
  248. data/lib/capybara/spec/views/with_html.erb +43 -10
  249. data/lib/capybara/spec/views/with_html5_svg.erb +20 -0
  250. data/lib/capybara/spec/views/with_jquery_animation.erb +24 -0
  251. data/lib/capybara/spec/views/with_js.erb +30 -5
  252. data/lib/capybara/spec/views/with_jstree.erb +26 -0
  253. data/lib/capybara/spec/views/with_namespace.erb +21 -0
  254. data/lib/capybara/spec/views/with_scope_other.erb +6 -0
  255. data/lib/capybara/spec/views/with_slow_unload.erb +2 -1
  256. data/lib/capybara/spec/views/with_sortable_js.erb +21 -0
  257. data/lib/capybara/spec/views/with_unload_alert.erb +1 -0
  258. data/lib/capybara/spec/views/with_windows.erb +1 -1
  259. data/lib/capybara/spec/views/within_frames.erb +1 -1
  260. data/lib/capybara/version.rb +1 -1
  261. data/lib/capybara/window.rb +31 -25
  262. data/lib/capybara.rb +120 -100
  263. data/spec/basic_node_spec.rb +59 -34
  264. data/spec/capybara_spec.rb +54 -52
  265. data/spec/css_builder_spec.rb +101 -0
  266. data/spec/css_splitter_spec.rb +38 -0
  267. data/spec/dsl_spec.rb +80 -53
  268. data/spec/filter_set_spec.rb +24 -7
  269. data/spec/fixtures/certificate.pem +25 -0
  270. data/spec/fixtures/key.pem +27 -0
  271. data/spec/fixtures/selenium_driver_rspec_failure.rb +4 -4
  272. data/spec/fixtures/selenium_driver_rspec_success.rb +4 -4
  273. data/spec/minitest_spec.rb +38 -5
  274. data/spec/minitest_spec_spec.rb +88 -62
  275. data/spec/per_session_config_spec.rb +5 -5
  276. data/spec/rack_test_spec.rb +169 -115
  277. data/spec/regexp_dissassembler_spec.rb +250 -0
  278. data/spec/result_spec.rb +86 -33
  279. data/spec/rspec/features_spec.rb +26 -23
  280. data/spec/rspec/scenarios_spec.rb +8 -4
  281. data/spec/rspec/shared_spec_matchers.rb +393 -363
  282. data/spec/rspec/views_spec.rb +4 -3
  283. data/spec/rspec_matchers_spec.rb +10 -10
  284. data/spec/rspec_spec.rb +109 -85
  285. data/spec/sauce_spec_chrome.rb +43 -0
  286. data/spec/selector_spec.rb +391 -61
  287. data/spec/selenium_spec_chrome.rb +180 -41
  288. data/spec/selenium_spec_chrome_remote.rb +101 -0
  289. data/spec/selenium_spec_edge.rb +28 -8
  290. data/spec/selenium_spec_firefox.rb +211 -0
  291. data/spec/selenium_spec_firefox_remote.rb +80 -0
  292. data/spec/selenium_spec_ie.rb +127 -11
  293. data/spec/selenium_spec_safari.rb +156 -0
  294. data/spec/server_spec.rb +177 -78
  295. data/spec/session_spec.rb +52 -16
  296. data/spec/shared_selenium_node.rb +79 -0
  297. data/spec/shared_selenium_session.rb +455 -123
  298. data/spec/spec_helper.rb +91 -2
  299. data/spec/xpath_builder_spec.rb +93 -0
  300. metadata +343 -42
  301. data/.yard/templates_custom/default/class/html/selectors.erb +0 -38
  302. data/.yard/templates_custom/default/class/html/setup.rb +0 -17
  303. data/.yard/yard_extensions.rb +0 -78
  304. data/lib/capybara/rspec/compound.rb +0 -90
  305. data/lib/capybara/spec/session/assert_selector.rb +0 -149
  306. data/lib/capybara/spec/session/source_spec.rb +0 -0
  307. data/lib/capybara/spec/views/with_title.erb +0 -5
  308. data/spec/selenium_spec_marionette.rb +0 -143
data/History.md CHANGED
@@ -1,3 +1,771 @@
1
+ # Version 3.36.0
2
+ Release date: 2021-10-24
3
+
4
+ ### Changed
5
+
6
+ * Ruby 2.6.0+ is now required
7
+ * Minimum selenium-webdriver supported is now 3.142.7
8
+
9
+ ### Added
10
+
11
+ * Support for selenium-webdriver 4.x
12
+ * `allow_label_click` accepts click options to be used when clicking an associated label
13
+ * Deprecated `allow_gumbo=` in favor of `use_html5_parsing=` to enable use of Nokogiri::HTL5 when available
14
+ * `Session#active_element` returns the element with focus - Not supported by the `RackTest` driver [Sean Doyle]
15
+ * Support `focused:` filter for finding interactive elements - Not supported by the `RackTest` driver [Sean Doyle]
16
+
17
+ ### Fixed
18
+
19
+ * Sibling and ancestor queries now work with Simple::Node - Issue #2452
20
+ * rack_test correctly ignores readonly attribute on specific input element types
21
+ * `Node#all_text` always returns a string - Issue #2477
22
+ * `have_any_of_selectors` negated match - Issue #2473
23
+ * `Document#scroll_to` fixed for standards behavior - pass quirks: true if you need the older behavior [Eric Anderson]
24
+ * Use capture on attach file event listener for better React compatibility [Jeff Way]
25
+ * Animation disabler produces valid HTML [Javi Martin]
26
+
27
+ ### Removed
28
+
29
+ * References to non-w3c mode in drivers/tests. Non-w3c mode is obsolete and no one should be using it anymore. Capybara hasn't been testing/supporting it in a while
30
+
31
+ # Version 3.35.3
32
+ Release date: 2021-01-29
33
+
34
+ ### Fixed
35
+
36
+ * Just a release to have the correct dates in the History.md in released gem
37
+
38
+ # Version 3.35.2
39
+ Release date: 2021-01-29
40
+
41
+ ### Fixed
42
+
43
+ * Selenium deprecation suppressor with Selenium 3.x
44
+
45
+ # Version 3.35.1
46
+ Release date: 2021-01-26
47
+
48
+ ### Fixed
49
+
50
+ * Default chrome driver registrations use chrome - Issue #2442 [Yuriy Alekseyev]
51
+ * 'Capybara.test_id' usage with the :button selector - Issue #2443
52
+
53
+ # Version 3.35.0
54
+ Release date: 2021-01-25
55
+
56
+ ### Added
57
+
58
+ * Support Regexp matching for individual class names in :class filter passed an Array
59
+ * Animation disabler now supports JQuery animation disabling when JQuery loaded from body [Chien-Wei Huang]
60
+
61
+ ### Fixed
62
+
63
+ * :button selector type use with `enable_aria_role` [Sean Doyle]
64
+ * <label> elements don't associate with aria-role buttons
65
+ * Ignore Selenium::WebDriver::Error::InvalidSessionIdError when quitting driver [Robin Daugherty]
66
+ * Firefox: Don't click input when sending keys if already focused
67
+ * Miscellaneous issues with selenium-webdriver 4.0.0.alphas
68
+ * Nil return error in node details optimizations
69
+ * Animation disabler now inserts XHTML compliant content [Dale Morgan]
70
+
71
+ # Version 3.34.0
72
+ Release date: 2020-11-26
73
+
74
+ ### Added
75
+
76
+ * Ability to fill in with emoji when using Chrome with selenium driver (Firefox already worked)
77
+ * Current path assertions/expectations accept optional filter block
78
+ * Animation disabler now specifies `scroll-behavior: auto;` [Nathan Broadbent]
79
+ * :button selector can now find elements by label text [Sean Doyle]
80
+ * `Session#send_keys` to send keys to the current element with focus in drivers that support the
81
+ concept of a current element [Sean Doyle]
82
+
83
+ ### Changed
84
+
85
+ * Text query validates the type parameter to prevent undefined behavior
86
+
87
+ ### Fixed
88
+
89
+ * racktest driver better handles fragments and redirection to urls that include fragments
90
+ * Don't error when attempting to get XPath location of a shadow element
91
+ * Missing `readonly?` added to Node::Simple
92
+ * Selenium version detection when loaded via alternate method [Joel Hawksley]
93
+ * Connection count issue if REQUEST_URI value changed by app [Blake Williams]
94
+ * Maintain URI fragment when redirecting in rack-test driver
95
+ * Text query error message [Wojciech Wnętrzak]
96
+ * Checking a checkbox/radio button with `allow_label_click` now works if there are multiple labels (Issue #2421)
97
+ * `drop` with `Pathname` (Issue #2424)[Máximo Mussini]
98
+
99
+ # Version 3.33.0
100
+ Release date: 2020-06-21
101
+
102
+ ### Added
103
+
104
+ * Block passed to `within_session` now receives the new and old session
105
+ * Support for aria-role button when enabled [Seiei Miyagi]
106
+ * Support for aria-role link when enabled
107
+ * Support for `validation_message` filter with :field and :fillable_field selectors
108
+ * Deprecation warnings show source location [Koichi ITO]
109
+
110
+ ### Changed
111
+
112
+ * Ruby 2.5.0+ is now required
113
+ * Deprecated direct manipulation of the driver and server registries
114
+
115
+ ### Fixed
116
+
117
+ * Ruby 2.7 warning in minitest `assert_text` [Eileen M. Uchitelle]
118
+
119
+
120
+ # Version 3.32.2
121
+ Release date: 2020-05-16
122
+
123
+ ### Fixed
124
+
125
+ * Don't use lazy enumerator with JRuby due to leaking threads
126
+ * Ruby 2.7 deprecation warning when registering Webrick [Jon Zeppieri]
127
+ * `have_text` description [Juan Pablo Rinaldi]
128
+
129
+ # Version 3.32.1
130
+ Release date: 2020-04-05
131
+
132
+ ### Fixed
133
+
134
+ * Rapid set now respects field maxlength (Issue #2332)
135
+ * Only patch pause into legacy actions in Selenium < 4 (Issue #2334)
136
+
137
+ # Version 3.32.0
138
+ Release date: 2020-03-29
139
+
140
+ ### Added
141
+
142
+ * Support `delay` setting on click with Selenium
143
+ * Implement rapid set for values longer than 30 characters in text fields with Selenium
144
+
145
+ ### Fixed
146
+
147
+ * Result#[] and negative max on ranges (Issue #2302/2303) [Jeremy Evans]
148
+ * RackTest form submission rewrites query string when using GET method
149
+ * Ruby 2.7 deprecation warnings in RSpec matcher proxies
150
+
151
+ # Version 3.31.0
152
+ Release date: 2020-01-26
153
+
154
+ ### Added
155
+
156
+ * Support setting range inputs with the selenium driver [Andrew White]
157
+ * Support setting range inputs with the rack driver
158
+ * Support drop modifier keys in drag & drop [Elliot Crosby-McCullough]
159
+ * `enabled_options` and `disabled options` filters for select selector
160
+ * Support beginless ranges
161
+ * Optionally allow `all` results to be reloaded when stable - Beta feature - may be removed in
162
+ future version if problems occur
163
+
164
+ ### Fixed
165
+
166
+ * Fix Ruby 2.7 deprecation notices around keyword arguments. I have tried to do this without
167
+ any breaking changes, but due to the nature of the 2.7 changes and some selector types accepting
168
+ Hashes as locators there are a lot of edge cases. If you find any broken cases please report
169
+ them and I'll see if they're fixable.
170
+ * Clicking on details/summary element behavior in rack_test driver_
171
+
172
+ # Version 3.30.0
173
+ Release date: 2019-12-24
174
+
175
+ ### Added
176
+
177
+ * Display pending requests when they don't complete in time [Juan Carlos Medina]
178
+ * :order option in selector queries - set to :reverse to for reverse document order results
179
+ * Support regexp for :name and :placeholder options in selectors that import filters from
180
+ _field filter set
181
+
182
+ ### Fixed
183
+
184
+ * Issue around automatic port assignment - Issue #2245
185
+ * Label selector when label has no id - Issue #2260
186
+ * Preserve clientX/clientY in Selenium HTML5 drag emulation [Nicolò G.]
187
+ * table selector using :with_cols option if last specified column matched but others didn't - Issue #2287
188
+ * Some tests updated for Ruby 2.7 behavior change around keyword args
189
+
190
+ # Version 3.29.0
191
+ Release date: 2019-09-02
192
+
193
+ ### Added
194
+
195
+ * Allow clicking on file input when using the block version of `attach_file` with Chrome and Firefox
196
+ * Spatial filters (`left_of`, `right_of`, `above`, `below`, `near`)
197
+ * rack_test driver now supports clicking on details elements to open/close them
198
+
199
+ ### Fixed
200
+
201
+ * rack_test driver correctly determines visibility for open details elements descendants
202
+
203
+ ### Changed
204
+
205
+ * Results will now be lazily evaluated when using JRuby >= 9.2.8.0
206
+
207
+
208
+ # Version 3.28.0
209
+ Release date: 2019-08-03
210
+
211
+ ### Added
212
+
213
+ * Allow forcing HTML5 or legacy dragging via the `:html5` option to `drag_to` when using Selenium with Chrome or Firefox
214
+ * Autodetection of drag type interprets not seeing the mousedown event as legacy.
215
+ * HTML5 form validation `:valid` node filter added to `:field` and `:fillable_field` selectors
216
+ * When using Capybara registered :puma server - patches Puma 4.0.x to fix SSL connection behavior. Removes
217
+ default `queue_requests` setting - Issue #2227
218
+
219
+ # Version 3.27.0
220
+ Release date: 2019-07-28
221
+
222
+ ### Added
223
+
224
+ * Allow to use chromedriver/geckodriver native `is_element_displayed` endpoint via Selenium
225
+ driver `native_displayed` option for performance reasons. Disabled by default due to endpoints
226
+ currently not handling &lt;details> element descendants visibility correctly.
227
+
228
+ ### Fixed
229
+
230
+ * Ignore negative lookahead/lookbehind regex when performing initial XPath text matching
231
+ * Reloading of elements found via `ancestor` and `sibling`
232
+ * Only default puma settings to `queue_requests: false` when using SSL
233
+ * Visibility of descendants of &lt;details> elements is correctly determined when using rack_test
234
+ and the selenium driver with Capybara optimized atoms
235
+ * local/session storage clearance in Chrome when clearing only one of them - Issue #2233
236
+
237
+ # Version 3.26.0
238
+ Release date: 2019-07-15
239
+
240
+ ### Added
241
+
242
+ * `w3c_click_offset` configuration option applies to `right_click` and `double_click` as well as `click`
243
+ * Warning when passing `nil` to the text/content assertions/expectations
244
+ * `Session#server_url` returns the base url the AUT is being run at (when controlled by Capybara)
245
+ * `option` selector type accepts an integer as locator
246
+
247
+ ### Fixed
248
+
249
+ * Default puma server registration now specifies `queue_requests: false` - Issue #2227
250
+ * Workaround issue with FF 68 and hanging during reset if a system modal is visible
251
+ * Don't expand file path if it's already absolute - Issue #2228
252
+
253
+ # Version 3.25.0
254
+ Release date: 2019-06-27
255
+
256
+ ### Added
257
+
258
+ * Animation disabler also disables before and after pseudoelements - Issue #2221 [Daniel Heath]
259
+ * `w3c_click_offset` configuration option to determine whether click offsets are calculated from element
260
+ center or top left corner
261
+
262
+ ### Fixed
263
+
264
+ * Work around issue with chromedriver 76/77 in W3C mode losing mouse state during legacy drag. Only fixed if
265
+ both source and target are simultaneously inside the viewport - Issue #2223
266
+ * Negative ancestor expectations/predicates were incorrectly checking siblings rather than ancestors
267
+
268
+ # Version 3.24.0
269
+ Release date: 2019-06-13
270
+
271
+ ### Added
272
+
273
+ * Log access when using the Selenium driver with Chrome 75 in W3C mode has been reenabled.
274
+
275
+ ### Changed
276
+
277
+ * Selenium driver now selects all current content and then sends keys rather than clearing field by JS
278
+ and then sending keys when setting values to text inputs in order to more closely simulate user behavior
279
+
280
+ ### Fixed
281
+
282
+ * Relative paths passed to `attach_file` will be assumed to be relative to the current working directory when using the
283
+ Selenium driver
284
+
285
+ # Version 3.23.0
286
+ Release date: 2019-06-10
287
+
288
+ ### Added
289
+
290
+ * Improved error message when using Chrome in W3C mode and attempting to access logs
291
+ * Support driver specific options for Element#drag_to
292
+ * Support setting `<input type="color">` elements with the selenium driver
293
+
294
+ ### Fixed
295
+
296
+ * Tightened conditions when in expression text option matching will be used
297
+ * Improved Selenium drivers HTML5 drag and drop emulation compatibility with SortableJS library (and others)
298
+
299
+ # Version 3.22.0
300
+ Release date: 2019-05-29
301
+
302
+ ### Added
303
+
304
+ * `ancestor`/`sibling` assertions and matchers added
305
+ * Documentation Updates and Fixes - Many thanks again to Masafumi Koba! [Masafumi Koba]
306
+ * Added `:with` alias for `:option` filter on `:checkbox` and `:radio_button` selectors
307
+
308
+ ### Changed
309
+
310
+ * Selenium driver with Chrome >= 73 now resets cookies and local/session storage after navigating
311
+ to 'about:blank' when possible to minimize potential race condition
312
+
313
+ # Version 3.21.0
314
+ Release date: 2019-05-24
315
+
316
+ ### Added
317
+
318
+ * Element#drop - Chrome and Firefox, via the selenium driver, support dropping files/data on elements
319
+ * Default CSS used for `attach_file` `make_visible: true` now includes auto for
320
+ height and width to handle more ways of hiding the file input element
321
+ * Documentation Updates and Fixes - Many thanks to Masafumi Koba! [Masafumi Koba]
322
+
323
+ ### Changed
324
+
325
+ * Deprecate support for CSS locator being a Symbol
326
+
327
+ # Version 3.20.2
328
+ Release date: 2019-05-19
329
+
330
+ ### Fixed
331
+
332
+ * Move `uglifier` from runtime to development dependency [miyucy]
333
+
334
+ # Version 3.20.1
335
+ Release date: 2019-05-17
336
+
337
+ ### Fixed
338
+
339
+ * RackTest driver considers &lt;template> elements to be non-visible and ignores the contents
340
+
341
+ # Version 3.20.0
342
+ Release date: 2019-05-14
343
+
344
+ ### Added
345
+
346
+ * `Node#obscured?` to check viewport presence and element overlap
347
+ * `:obscured` system filter to check whether elements are obscured in finders, assertions, and expectations
348
+ * :label selector :for option can be a regexp
349
+ * Significantly smaller `isDisplayed`/`getAttribute` atoms for selenium driver. If these produce issues you can disable their use
350
+ by setting an environment variable named 'DISABLE_CAPYBARA_SELENIUM_OPTIMIZATIONS' (Please also report any issues).
351
+ * `href: false` option with `find_link`/`click_link`/:link selector ignores `href` presence/absence
352
+
353
+ ### Fixed
354
+
355
+ * Workaround Safari issue with send_keys not correctly using top level modifiers
356
+ * Workaround Safari not retrying click due to incorrect error type
357
+ * Fix Safari attach_file block mode when clicking elements associated to the file input
358
+ * Workaround Safari issue with repeated hover
359
+
360
+ # Version 3.19.1
361
+ Release date: 2019-05-11
362
+
363
+ ### Fixed
364
+
365
+ * Fix access to specializations when Selenium::Driver is subclassed [James Mead]
366
+
367
+ # Version 3.19.0
368
+ Release date: 2019-05-09
369
+
370
+ ### Added
371
+
372
+
373
+ * Syntactic sugar `#once`, `#twice`, `#thrice`, `#exactly`, `#at_least`, `#at_most`, and `#times`
374
+ added to `have_selector`, `have_css`, `have_xpath`, and `have_text` RSpec matchers
375
+ * Support for multiple expression types in Selector definitions
376
+ * Reduced wirecalls for common actions in Selenium driver
377
+
378
+ ### Fixed
379
+
380
+ * Workaround Chrome 75 appending files to multiple file inputs
381
+ * Suppressed retry when detecting http vs https server connection
382
+
383
+ # Version 3.18.0
384
+ Release date: 2019-04-22
385
+
386
+ ### Added
387
+
388
+ * XPath Selector query optimized to make use of Regexp :text option in initial element find
389
+
390
+ ### Fixed
391
+
392
+ * Workaround issue where Chrome/chromedriver 74 can return the wrong error type when a click is intercepted
393
+
394
+ # Version 3.17.0
395
+ Release date: 2019-04-18
396
+
397
+ ### Added
398
+
399
+ * Initial support for selenium-webdriver 4.0.0.alpha1
400
+ * :button selector will now also match on `name` attribute
401
+
402
+ ### Fixed
403
+
404
+ * Suppress warnings generated by using selenium-webdriver 3.141.5926
405
+ * Mask Appium issue with finder visibility optimizations (non-optimal)
406
+
407
+ # Version 3.16.2
408
+ Release date: 2019-04-10
409
+
410
+ ### Fixed
411
+
412
+ * Fix Session#quit resetting of memoized document
413
+
414
+ # Version 3.16.1
415
+ Release date: 2019-03-30
416
+
417
+ ### Fixed
418
+
419
+ * Fix potential 'uninitialized constant' error when using the :selenium_chrome driver [jeffclemens-ab]
420
+
421
+ # Version 3.16
422
+ Release date: 2019-03-28
423
+
424
+ ### Changed
425
+
426
+ * Ruby 2.4.0+ is now required
427
+ * Selenium driver now defaults to using a persistent http client connection
428
+
429
+ ### Added
430
+
431
+ * :wait option in predicates now accepts `true` to selectively override when `Capybara.predicates_wait == false`
432
+
433
+ # Version 3.15
434
+ Release date: 2019-03-19
435
+
436
+ ### Added
437
+
438
+ * `attach_file` now supports a block mode on JS capable drivers to more accurately test user behavior when file inputs are hidden (beta)
439
+ * :table selector now supports `with_rows`, 'rows', `with_cols`, and 'cols' filters
440
+
441
+ ### Fixed
442
+
443
+ * Fix link selector when `Capybara.test_id` is set - Issue #2166 [bingjyang]
444
+
445
+
446
+ # Version 3.14
447
+ Release date: 2019-02-25
448
+
449
+ ### Added
450
+
451
+ * rack_test driver now supports reloading elements when the document changes - Issue #2157
452
+ * Selenium driver HTML5 drag-drop emulation now emits multiple move events so drag direction
453
+ is determinable [Erkki Eilonen, Thomas Walpole]
454
+ * Capybara.server_errors now defaults to [Exception] - Issue #2160 [Edgars Beigarts]
455
+ ### Fixed
456
+
457
+ * Workaround hover issue with FF 65 - Issue #2156
458
+ * Workaround chromedriver issue when setting blank strings to react controlled text fields
459
+ * Workaround chromedriver issue with popup windows not loading content - https://bugs.chromium.org/p/chromedriver/issues/detail?id=2650&q=load&sort=-id&colspec=ID%20Status%20Pri%20Owner%20Summary
460
+
461
+ # Version 3.13.2
462
+ Release date: 2019-01-24
463
+
464
+ ### Fixed
465
+
466
+ * Remove extraneous output
467
+
468
+ # Version 3.13.1
469
+ Release date: 2019-01-24
470
+
471
+ ### Fixed
472
+
473
+ * Only use Selenium visibility optimization when JS atom is available - Issue #2151
474
+
475
+ # Version 3.13.0
476
+ Release date: 2019-01-23
477
+
478
+ ### Added
479
+
480
+ * Session#quit added
481
+ * #scroll_to added to allow scrolling page/elements to specified locations
482
+ * Speed optimizations around multiple element location and path generation when using the Selenium driver
483
+ * Support for locator type checking in custom selectors
484
+ * Allow configuration of gumbo use - defaults to off
485
+ * `assert_style`/`has_style`/`have_style` deprecated in favor of `assert_matches_style`/`matches_styles?`/`match_style`
486
+ * :style filter added to selectors
487
+
488
+ # Version 3.12.0
489
+ Release date: 2018-11-28
490
+
491
+ ### Added
492
+
493
+ * Support Ruby 2.6 endless range in Result#[] and query `:between` option
494
+ * Pre-registered headless firefox driver :selenium_headless [Andrew Havens]
495
+ * Selenium driver now defaults to clearing `sessionStorage` and `localStorage`. To disable pass `clear_local_storage: false` and/or `clear_session_storage: false` when creating Capybara::Selenium::Driver instance in your driver registration
496
+
497
+ ### Fixed
498
+
499
+ * Raise error if only :x or :y are passed as an offset to click methods
500
+
501
+ ### Removed
502
+
503
+ * Support for RSpec < 3.5
504
+
505
+ # Version 3.11.1
506
+ Release date: 2018-11-16
507
+
508
+ ### Fixed
509
+
510
+ * Fixed :link_or_button XPath generation when it has had an expression filter added
511
+
512
+ # Version 3.11.0
513
+ Release date: 2018-11-14
514
+
515
+ ### Added
516
+
517
+ * Ability for node filters to set detailed error messages
518
+ * `Capybara::HTML` Will use `nokogumbo` for HTML parsing if installed
519
+ * `Selector#locator_filter` added to allow for dynamic locator in selectors
520
+
521
+ ### Fixed
522
+
523
+ * Node filters are evaluated in the context of the Selector they are used in to ensure the correct options are used
524
+
525
+ # Version 3.10.1
526
+ Release date: 2018-11-03
527
+
528
+ ### Fixed
529
+
530
+ * Fix `aria-label` and `test_id` matching for `link_or_button` selector type - Issue #2125
531
+ * Fixed crash in element path creation for matcher failure messages - Issue #2120
532
+
533
+ # Version 3.10.0
534
+ Release date: 2018-10-23
535
+
536
+ ### Added
537
+
538
+ * :class filter can now check for class names starting with !
539
+ * Selector `xpath`/`css` expression definitions will get filter names from block parameters if not explicitly provided
540
+ * `any_of_selectors` assertions and matchers to complement `all_of_selectors` and `none_of_selectors`
541
+
542
+ ### Fixed
543
+
544
+ * Selector `css` expression definition declared filters now work again
545
+ * Cleaned up warnings [Yuji Yaginuma]
546
+ * Workaround installation of rspec matcher proxies under jruby by reverting to the old solution not using prepend, so jruby bugs are not hit - Issue #2115
547
+
548
+ # Version 3.9.0
549
+ Release date: 2018-10-03
550
+
551
+ ### Added
552
+
553
+ * Selenium with Chrome removes all cookies at session reset instead of just cookies from current domain if possible
554
+ * Support for Regexp for system :id and :class filters where possible
555
+ * `using_session` now accepts a session object as well as the name of the session for users who manually manage sessions
556
+ * The `:field` selector will now find `type = "hidden"` fields if the `type: "hidden"` filter option is provided
557
+
558
+ # Version 3.8.2
559
+ Release date: 2018-09-26
560
+
561
+ ### Fixed
562
+
563
+ * Fixed negated class selector option - Issue #2103
564
+
565
+ # Version 3.8.1
566
+ Release date: 2018-09-22
567
+
568
+ ### Fixed
569
+
570
+ * Filling in of date fields with a string when using selenium chrome regression [Micah Geisel]
571
+
572
+ # Version 3.8.0
573
+ Release date: 2018-09-20
574
+
575
+ ### Added
576
+
577
+ * Workaround geckodriver 0.22 issue with undefined pause durations
578
+ * :element selector ignores XML namespaces
579
+
580
+ ### Fixed
581
+
582
+ * Added Errno::ECONNRESET to the errors which will allows https server detection
583
+
584
+ # Version 3.7.2
585
+ Release date: 2018-09-12
586
+
587
+ ### Fixed
588
+
589
+ * Fix MatchQuery based matchers when used on a root element found using any type of parent/ancestor query - Issue #2097
590
+
591
+ * Fix Chrome/FF HTML5 drag simulation for elements (a, img) which default to draggable - Issue #2098
592
+
593
+ # Version 3.7.1
594
+ Release date: 2018-09-05
595
+
596
+ ### Fixed
597
+
598
+ * Restored ability to pass symbol as the CSS selector when calling `has_css?`/`have_css`/etc - Issue #2093
599
+
600
+ # Version 3.7.0
601
+ Release date: 2018-09-02
602
+
603
+ ### Added
604
+
605
+ * `Capybara.disable_animation` can be set to a CSS selector to identify which elements will have animation disabled [Michael Glass]
606
+ * `Capybara.default_normalize_ws` option which sets whether or not text predicates and matchers (`has_text?`, `has_content?`, `assert_text`, etc) use `normalize_ws` option by default. Defaults to false. [Stegalin Ivan]
607
+ * Selector based predicates, matchers, and finders now support the `:normalize_ws` option for the `:text`/`:exact_text` filters. Defaults to the `Capybara.default_normalize_ws`setting above.
608
+ * Element `choose`/`check`/`uncheck`/`attach_file`/`fill_in` can now operate on the element they're called on or a descendant if no locator is passed.
609
+
610
+ ### Fixed
611
+
612
+ * All CSS styles applied by the `Element#attach_file` `:make_visible` option will now have `!important` priority set to ensure they override any other specified style.
613
+ * Firefox file inputs are only manually cleared when necessary.
614
+
615
+ # Version 3.6.0
616
+ Release date: 2018-08-14
617
+
618
+ ### Added
619
+
620
+ * Workaround geckodriver/firefox send_keys issues as much as possible using the Selenium actions API
621
+ * Workaround lack of HTML5 native drag and drop events when using Selenium driver with Chrome and FF >= 62
622
+ * `Capybara.predicates_wait` option which sets whether or not Capybaras matcher predicate methods (`has_css?`, `has_selector?`, `has_text?`, etc.) default to using waiting/retrying behavior (defaults to true)
623
+
624
+ # Version 3.5.1
625
+ Release date: 2018-08-03
626
+
627
+ ### Fixed
628
+
629
+ * Fixed misspelled method name `refute_matches_elector` => `refute_matches_selector`
630
+
631
+ # Version 3.5.0
632
+ Release date: 2018-08-01
633
+
634
+ ### Added
635
+
636
+ * text predicates and matchers (`has_text?`, `has_content?`, `assert_text`, etc) now support a `normalize_ws` option
637
+
638
+ ### Fixed
639
+
640
+ * `attach_file` with Selenium and local Firefox 62+ now correctly generates only one change event when attaching multiple files
641
+
642
+ # Version 3.4.2
643
+ Release date: 2018-07-24
644
+
645
+ ### Fixed
646
+
647
+ * `match_xxx` selectors and `matches_xxx?` predicates work correctly with elements found using a sibling selector - Issue #2073
648
+
649
+ # Version 3.4.1
650
+ Release date: 2018-07-20
651
+
652
+ ### Fixed
653
+
654
+ * `Session#evaluate_script` now strips the script in `Session` rather than only in the Selenium driver
655
+
656
+ # Version 3.4.0
657
+ Release date: 2018-07-19
658
+
659
+ ### Fixed
660
+
661
+ * Make selenium driver :backspace clear strategy work even if caret location is in middle of field content [Champier Cyril]
662
+ * Selenium issue with fieldset nested in disabled fieldset not being considered disabled
663
+ * `Session#evaluate_script` and `Element#evaluate_script` now strip leading/trailing whitespace from scripts [Ian Lesperance]
664
+
665
+ ### Added
666
+
667
+ * Work around Selenium lack of support for `file_detector` with remote geckodriver
668
+ * `#within_frame` locator is optional when only one frame exists
669
+ * `Capybara.test_id` option that allows for matching the Capybara provided selector types on an arbitrary attribute
670
+ (defaults to nil), set to your test id attribute ('data-test-id, etc) if using test id attributes in your project
671
+
672
+ # Version 3.3.1
673
+ Release date: 2018-06-27
674
+
675
+ ### Fixed
676
+
677
+ * `selenium-webdriver` version check [ahorek]
678
+ * Selenium driver correctly responds to `disabled?` for fieldset elements - Issue #2059 [Thomas Walpole]
679
+
680
+ # Version 3.3.0
681
+ Release date: 2018-06-25
682
+
683
+ ### Added
684
+
685
+ * RackTest driver now handles 307/308 redirects
686
+ * `execute_async_script` can now be called on elements to run the JS in the context of the element
687
+ * `:download` filter option on `:link' selector
688
+ * `Window#fullscreen`
689
+ * `Element#style` and associated matchers
690
+
691
+ ### Changed
692
+
693
+ * Minimum "supported" `selenium-webdriver` is raised to 3.5.0 (but you really should be using newer than that)
694
+
695
+ ### Fixes
696
+
697
+ * Selenium driver with Firefox workaround for clicking on table row - https://github.com/mozilla/geckodriver/issues/1228
698
+ * :class and :id filters applied to CSS based selectors now correctly handle the CSS comma
699
+ * Selenium driver handles namespaces when generating an elements `#path` - Issue #2048
700
+
701
+ # Version 3.2.1
702
+ Release date: 2018-06-04
703
+
704
+ ### Fixes
705
+
706
+ * Only split CSS selectors when :class or :id options are given. Restores 3.1.1 functionality for now but the underlying issue
707
+ will require a larger fix, hopefully coming soon. - Issue #2044 [Thomas Walpole]
708
+
709
+ # Version 3.2.0
710
+ Release date: 2018-06-01
711
+
712
+ ### Changed
713
+
714
+ * Ruby 2.3.0+ is now required
715
+ * `ElementNotFound` errors raised in selector filters are interpreted as non-matches
716
+
717
+ ### Added
718
+
719
+ * New global configuration `default_set_options` used in `Capybara::Node::Element#set` as default `options` hash [Champier Cyril]
720
+ * `execute_script` and `evaluate_script` can now be called on elements to run the JS in the context of the element [Thomas Walpole]
721
+ * Filters in custom selectors now support a `matcher` Regexp to handle multiple filter options [Thomas Walpole]
722
+ * `:element` selector type which will match on any attribute (other than the reserved names) passed as a filter option [Thomas Walpole]
723
+ * `:class` filter option now supports preceding class names with `!` to indicate not having that class [Thomas Walpole]
724
+ * `:class` and `:id` filter options now accept `XPath::Expression` objects to allow for more flexibility in matching [Thomas Walpole]
725
+ * `Capybara.disable_animation` setting which triggers loading of a middleware that attempts to disable animations in pages.
726
+ This is very much a beta feature and may change/disappear in the future. [Thomas Walpole]
727
+
728
+ # Version 3.1.1
729
+ Release date: 2018-05-25
730
+
731
+ ### Fixes
732
+
733
+ * Ensure keystrokes are sent when setting time/date fields to a string with the Selenium driver [Thomas Walpole]
734
+
735
+ # Version 3.1.0
736
+ Release date: 2018-05-10
737
+
738
+ ### Added
739
+
740
+ * Support for using `select` with text inputs associated with a datalist element
741
+ * `type` filter on `:button` selector
742
+ * Support for server operating in https mode
743
+ * Selenium driver now uses JS to fill_in/set date and time fields when passed date or time objects [Aleksei Gusev, Thomas Walpole]
744
+
745
+ # Version 3.0.3
746
+ Release date: 2018-04-30
747
+
748
+ ### Fixes
749
+
750
+ * Issue in `check` where the locator string could not be omitted
751
+ * Selenium browser type detection when using remote [Ian Ker-Seymer]
752
+ * Potential hang when waiting for requests to complete [Chris Zetter]
753
+
754
+ # Version 3.0.2
755
+ Release date: 2018-04-13
756
+
757
+ ### Fixes
758
+
759
+ * Fix expression filter descriptions in some selector failure messages
760
+ * Fix compounding of negated matchers - Issue #2010
761
+
762
+ # Version 3.0.1
763
+ Release date: 2018-04-06
764
+
765
+ ### Changed
766
+
767
+ * Restored ability for `Capybara.server=` to accept a proc which was accidentally removed in 3.0.0
768
+
1
769
  # Version 3.0.0
2
770
  Release date: 2018-04-05
3
771
 
@@ -16,7 +784,7 @@ Release date: 2018-03-23
16
784
 
17
785
  ### Changed
18
786
 
19
- * Drivers are now expected to return visible text more in line with the WebDriver spec for visible text
787
+ * Visibile text whitespace is no longer fully normalized in favor of being more in line with the WebDriver spec for visible text
20
788
  * Drivers are expected to close extra windows when resetting the session
21
789
  * Selenium driver supports Date/Time when filling in date/time/datetime-local inputs
22
790
  * `current_url` returns the url for the top level browsing context
@@ -263,7 +1031,7 @@ Release date: 2016-12-05
263
1031
  * Options for clearing session/local storage on reset added to the Selenium driver
264
1032
  * Window size changes wait for the size to stabilize
265
1033
  * Defined return value for most actions
266
- * Ignore specific error when qutting selenium driver instance - Issue #1773 [Dylan Reichstadt, Thomas Walpole]
1034
+ * Ignore specific error when quitting selenium driver instance - Issue #1773 [Dylan Reichstadt, Thomas Walpole]
267
1035
  * Warn on selenium unknown errors rather than raising when quitting driver [Adam Pohorecki, Thomas Walpole]
268
1036
  * Capybara::Result#each now returns an `Enumerator` when called without a block - Issue #1777 [Thomas Walpole]
269
1037
 
@@ -325,7 +1093,7 @@ Release date: 2016-09-19
325
1093
 
326
1094
  ### Fixed
327
1095
 
328
- * Issue with rack-test driver and obselete mime-types when using `#attach_file` - Issue #1756 [Thomas Walpole]
1096
+ * Issue with rack-test driver and obsolete mime-types when using `#attach_file` - Issue #1756 [Thomas Walpole]
329
1097
 
330
1098
  ### Added
331
1099
 
@@ -392,7 +1160,7 @@ Release date: 2016-04-07
392
1160
 
393
1161
  ### Added
394
1162
 
395
- * Capybara now waits for requests to Capybaras server to complete while restting the session [John Hawthorn, Thomas Walpole]
1163
+ * Capybara now waits for requests to Capybaras server to complete while resetting the session [John Hawthorn, Thomas Walpole]
396
1164
  * Capybara.reuse_server option to allow disabling of sharing server instance between sessions [Thomas Walpole]
397
1165
  * :multiple filter added to relevant selectors [Thomas Walpole]
398
1166
  * Provided server registrations for :webrick and :puma. Capybara.server = :puma for testing with Rails 5 [Thomas Walpole]
@@ -406,7 +1174,7 @@ Release date: 2016-04-07
406
1174
 
407
1175
  # Version 2.6.2
408
1176
 
409
- Relase date: 2016-01-27
1177
+ Release date: 2016-01-27
410
1178
 
411
1179
  ### Fixed
412
1180
 
@@ -952,8 +1720,8 @@ Release date: 2011-06-14
952
1720
  * Rack::Test driver honours maxlength on input fields [Guilherme Carvalho]
953
1721
  * Rack::Test now works as expected with domains and subdomains [Jonas Nicklas]
954
1722
  * Session is reset more thoroughly between tests. [Jonas Nicklas]
955
- * Raise error when uploading non-existant file [Jonas Nicklas]
956
- * Rack reponse body should respond to #each [Piotr Sarnacki]
1723
+ * Raise error when uploading non-existent file [Jonas Nicklas]
1724
+ * Rack response body should respond to #each [Piotr Sarnacki]
957
1725
  * Deprecation warnings with selenium webdriver 0.2.0 [Aaron Gibraltar]
958
1726
  * Selenium Chrome no longer YELLS tagname [Carl Jackson & David W. Frank]
959
1727
  * Capybara no longer strips encoding before sending to Rack [Jonas Nicklas]
@@ -1095,7 +1863,7 @@ Release date: 2010-05-12
1095
1863
 
1096
1864
  Release date: 2010-04-09
1097
1865
 
1098
- This is a drop in compatible maintainance release. It's mostly
1866
+ This is a drop in compatible maintenance release. It's mostly
1099
1867
  important for driver authors.
1100
1868
 
1101
1869
  ### Added
@@ -1114,7 +1882,7 @@ important for driver authors.
1114
1882
 
1115
1883
  Release date: 2010-03-22
1116
1884
 
1117
- This is a maintainance release with minor bug fixes, should be
1885
+ This is a maintenance release with minor bug fixes, should be
1118
1886
  drop in compatible.
1119
1887
 
1120
1888
  ### Added
@@ -1161,4 +1929,3 @@ too many users, please read the release notes carefully!
1161
1929
  * clicking links where the image's alt attribute contains the text is now possible
1162
1930
  * within_fieldset and within_table work when the default selector is CSS
1163
1931
  * boolean attributes work the same across drivers (return true/false)
1164
-