capybara 3.13.2 → 3.40.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 (260) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +1 -0
  3. data/History.md +587 -16
  4. data/README.md +240 -90
  5. data/lib/capybara/config.rb +24 -11
  6. data/lib/capybara/cucumber.rb +1 -1
  7. data/lib/capybara/driver/base.rb +8 -0
  8. data/lib/capybara/driver/node.rb +20 -4
  9. data/lib/capybara/dsl.rb +5 -3
  10. data/lib/capybara/helpers.rb +25 -4
  11. data/lib/capybara/minitest/spec.rb +174 -90
  12. data/lib/capybara/minitest.rb +256 -142
  13. data/lib/capybara/node/actions.rb +123 -77
  14. data/lib/capybara/node/base.rb +20 -12
  15. data/lib/capybara/node/document.rb +2 -2
  16. data/lib/capybara/node/document_matchers.rb +3 -3
  17. data/lib/capybara/node/element.rb +223 -117
  18. data/lib/capybara/node/finders.rb +81 -71
  19. data/lib/capybara/node/matchers.rb +271 -134
  20. data/lib/capybara/node/simple.rb +18 -5
  21. data/lib/capybara/node/whitespace_normalizer.rb +81 -0
  22. data/lib/capybara/queries/active_element_query.rb +18 -0
  23. data/lib/capybara/queries/ancestor_query.rb +8 -9
  24. data/lib/capybara/queries/base_query.rb +3 -2
  25. data/lib/capybara/queries/current_path_query.rb +15 -5
  26. data/lib/capybara/queries/selector_query.rb +364 -54
  27. data/lib/capybara/queries/sibling_query.rb +8 -6
  28. data/lib/capybara/queries/style_query.rb +2 -2
  29. data/lib/capybara/queries/text_query.rb +13 -1
  30. data/lib/capybara/queries/title_query.rb +1 -1
  31. data/lib/capybara/rack_test/browser.rb +76 -11
  32. data/lib/capybara/rack_test/driver.rb +10 -5
  33. data/lib/capybara/rack_test/errors.rb +6 -0
  34. data/lib/capybara/rack_test/form.rb +31 -9
  35. data/lib/capybara/rack_test/node.rb +74 -23
  36. data/lib/capybara/registration_container.rb +41 -0
  37. data/lib/capybara/registrations/drivers.rb +42 -0
  38. data/lib/capybara/registrations/patches/puma_ssl.rb +29 -0
  39. data/lib/capybara/registrations/servers.rb +66 -0
  40. data/lib/capybara/result.rb +44 -20
  41. data/lib/capybara/rspec/matcher_proxies.rb +13 -11
  42. data/lib/capybara/rspec/matchers/base.rb +31 -16
  43. data/lib/capybara/rspec/matchers/compound.rb +1 -1
  44. data/lib/capybara/rspec/matchers/count_sugar.rb +37 -0
  45. data/lib/capybara/rspec/matchers/have_ancestor.rb +28 -0
  46. data/lib/capybara/rspec/matchers/have_current_path.rb +2 -2
  47. data/lib/capybara/rspec/matchers/have_selector.rb +21 -21
  48. data/lib/capybara/rspec/matchers/have_sibling.rb +27 -0
  49. data/lib/capybara/rspec/matchers/have_text.rb +4 -4
  50. data/lib/capybara/rspec/matchers/have_title.rb +2 -2
  51. data/lib/capybara/rspec/matchers/match_selector.rb +3 -3
  52. data/lib/capybara/rspec/matchers/match_style.rb +7 -2
  53. data/lib/capybara/rspec/matchers/spatial_sugar.rb +39 -0
  54. data/lib/capybara/rspec/matchers.rb +111 -68
  55. data/lib/capybara/rspec.rb +2 -0
  56. data/lib/capybara/selector/builders/css_builder.rb +11 -7
  57. data/lib/capybara/selector/builders/xpath_builder.rb +5 -3
  58. data/lib/capybara/selector/css.rb +11 -9
  59. data/lib/capybara/selector/definition/button.rb +68 -0
  60. data/lib/capybara/selector/definition/checkbox.rb +26 -0
  61. data/lib/capybara/selector/definition/css.rb +10 -0
  62. data/lib/capybara/selector/definition/datalist_input.rb +35 -0
  63. data/lib/capybara/selector/definition/datalist_option.rb +25 -0
  64. data/lib/capybara/selector/definition/element.rb +28 -0
  65. data/lib/capybara/selector/definition/field.rb +40 -0
  66. data/lib/capybara/selector/definition/fieldset.rb +14 -0
  67. data/lib/capybara/selector/definition/file_field.rb +13 -0
  68. data/lib/capybara/selector/definition/fillable_field.rb +33 -0
  69. data/lib/capybara/selector/definition/frame.rb +17 -0
  70. data/lib/capybara/selector/definition/id.rb +6 -0
  71. data/lib/capybara/selector/definition/label.rb +62 -0
  72. data/lib/capybara/selector/definition/link.rb +55 -0
  73. data/lib/capybara/selector/definition/link_or_button.rb +16 -0
  74. data/lib/capybara/selector/definition/option.rb +27 -0
  75. data/lib/capybara/selector/definition/radio_button.rb +27 -0
  76. data/lib/capybara/selector/definition/select.rb +81 -0
  77. data/lib/capybara/selector/definition/table.rb +109 -0
  78. data/lib/capybara/selector/definition/table_row.rb +21 -0
  79. data/lib/capybara/selector/definition/xpath.rb +5 -0
  80. data/lib/capybara/selector/definition.rb +280 -0
  81. data/lib/capybara/selector/filter_set.rb +19 -18
  82. data/lib/capybara/selector/filters/base.rb +11 -2
  83. data/lib/capybara/selector/filters/locator_filter.rb +13 -3
  84. data/lib/capybara/selector/regexp_disassembler.rb +11 -7
  85. data/lib/capybara/selector/selector.rb +50 -440
  86. data/lib/capybara/selector/xpath_extensions.rb +17 -0
  87. data/lib/capybara/selector.rb +473 -482
  88. data/lib/capybara/selenium/atoms/getAttribute.min.js +1 -0
  89. data/lib/capybara/selenium/atoms/isDisplayed.min.js +1 -0
  90. data/lib/capybara/selenium/atoms/src/getAttribute.js +161 -0
  91. data/lib/capybara/selenium/atoms/src/isDisplayed.js +454 -0
  92. data/lib/capybara/selenium/driver.rb +174 -62
  93. data/lib/capybara/selenium/driver_specializations/chrome_driver.rb +74 -18
  94. data/lib/capybara/selenium/driver_specializations/edge_driver.rb +128 -0
  95. data/lib/capybara/selenium/driver_specializations/firefox_driver.rb +37 -3
  96. data/lib/capybara/selenium/driver_specializations/internet_explorer_driver.rb +14 -1
  97. data/lib/capybara/selenium/driver_specializations/safari_driver.rb +24 -0
  98. data/lib/capybara/selenium/extensions/file_input_click_emulation.rb +34 -0
  99. data/lib/capybara/selenium/extensions/find.rb +68 -45
  100. data/lib/capybara/selenium/extensions/html5_drag.rb +192 -22
  101. data/lib/capybara/selenium/extensions/modifier_keys_stack.rb +28 -0
  102. data/lib/capybara/selenium/extensions/scroll.rb +8 -10
  103. data/lib/capybara/selenium/node.rb +268 -72
  104. data/lib/capybara/selenium/nodes/chrome_node.rb +105 -9
  105. data/lib/capybara/selenium/nodes/edge_node.rb +110 -0
  106. data/lib/capybara/selenium/nodes/firefox_node.rb +51 -61
  107. data/lib/capybara/selenium/nodes/ie_node.rb +22 -0
  108. data/lib/capybara/selenium/nodes/safari_node.rb +118 -0
  109. data/lib/capybara/selenium/patches/atoms.rb +18 -0
  110. data/lib/capybara/selenium/patches/is_displayed.rb +16 -0
  111. data/lib/capybara/selenium/patches/logs.rb +45 -0
  112. data/lib/capybara/selenium/patches/pause_duration_fix.rb +1 -1
  113. data/lib/capybara/selenium/patches/persistent_client.rb +20 -0
  114. data/lib/capybara/server/animation_disabler.rb +43 -21
  115. data/lib/capybara/server/checker.rb +6 -2
  116. data/lib/capybara/server/middleware.rb +25 -13
  117. data/lib/capybara/server.rb +20 -4
  118. data/lib/capybara/session/config.rb +15 -11
  119. data/lib/capybara/session/matchers.rb +11 -11
  120. data/lib/capybara/session.rb +162 -131
  121. data/lib/capybara/spec/public/offset.js +6 -0
  122. data/lib/capybara/spec/public/test.js +105 -6
  123. data/lib/capybara/spec/session/accept_alert_spec.rb +1 -1
  124. data/lib/capybara/spec/session/active_element_spec.rb +31 -0
  125. data/lib/capybara/spec/session/all_spec.rb +89 -15
  126. data/lib/capybara/spec/session/ancestor_spec.rb +5 -0
  127. data/lib/capybara/spec/session/assert_current_path_spec.rb +5 -2
  128. data/lib/capybara/spec/session/assert_text_spec.rb +26 -22
  129. data/lib/capybara/spec/session/attach_file_spec.rb +64 -31
  130. data/lib/capybara/spec/session/check_spec.rb +26 -4
  131. data/lib/capybara/spec/session/choose_spec.rb +14 -2
  132. data/lib/capybara/spec/session/click_button_spec.rb +109 -61
  133. data/lib/capybara/spec/session/click_link_or_button_spec.rb +9 -0
  134. data/lib/capybara/spec/session/click_link_spec.rb +23 -1
  135. data/lib/capybara/spec/session/current_scope_spec.rb +1 -1
  136. data/lib/capybara/spec/session/current_url_spec.rb +11 -1
  137. data/lib/capybara/spec/session/element/matches_selector_spec.rb +40 -39
  138. data/lib/capybara/spec/session/evaluate_script_spec.rb +12 -0
  139. data/lib/capybara/spec/session/fill_in_spec.rb +46 -5
  140. data/lib/capybara/spec/session/find_link_spec.rb +10 -0
  141. data/lib/capybara/spec/session/find_spec.rb +80 -7
  142. data/lib/capybara/spec/session/first_spec.rb +2 -2
  143. data/lib/capybara/spec/session/frame/switch_to_frame_spec.rb +14 -1
  144. data/lib/capybara/spec/session/frame/within_frame_spec.rb +14 -1
  145. data/lib/capybara/spec/session/has_all_selectors_spec.rb +5 -5
  146. data/lib/capybara/spec/session/has_ancestor_spec.rb +46 -0
  147. data/lib/capybara/spec/session/has_any_selectors_spec.rb +6 -2
  148. data/lib/capybara/spec/session/has_button_spec.rb +81 -0
  149. data/lib/capybara/spec/session/has_css_spec.rb +45 -8
  150. data/lib/capybara/spec/session/has_current_path_spec.rb +22 -7
  151. data/lib/capybara/spec/session/has_element_spec.rb +47 -0
  152. data/lib/capybara/spec/session/has_field_spec.rb +59 -1
  153. data/lib/capybara/spec/session/has_link_spec.rb +40 -0
  154. data/lib/capybara/spec/session/has_none_selectors_spec.rb +7 -7
  155. data/lib/capybara/spec/session/has_select_spec.rb +42 -8
  156. data/lib/capybara/spec/session/has_selector_spec.rb +19 -4
  157. data/lib/capybara/spec/session/has_sibling_spec.rb +50 -0
  158. data/lib/capybara/spec/session/has_table_spec.rb +177 -0
  159. data/lib/capybara/spec/session/has_text_spec.rb +31 -3
  160. data/lib/capybara/spec/session/html_spec.rb +1 -1
  161. data/lib/capybara/spec/session/matches_style_spec.rb +6 -4
  162. data/lib/capybara/spec/session/node_spec.rb +697 -23
  163. data/lib/capybara/spec/session/node_wrapper_spec.rb +1 -1
  164. data/lib/capybara/spec/session/refresh_spec.rb +2 -1
  165. data/lib/capybara/spec/session/reset_session_spec.rb +21 -7
  166. data/lib/capybara/spec/session/save_and_open_screenshot_spec.rb +2 -2
  167. data/lib/capybara/spec/session/save_page_spec.rb +4 -4
  168. data/lib/capybara/spec/session/save_screenshot_spec.rb +4 -4
  169. data/lib/capybara/spec/session/scroll_spec.rb +9 -7
  170. data/lib/capybara/spec/session/select_spec.rb +5 -10
  171. data/lib/capybara/spec/session/selectors_spec.rb +24 -3
  172. data/lib/capybara/spec/session/uncheck_spec.rb +3 -3
  173. data/lib/capybara/spec/session/unselect_spec.rb +1 -1
  174. data/lib/capybara/spec/session/visit_spec.rb +20 -0
  175. data/lib/capybara/spec/session/window/become_closed_spec.rb +20 -17
  176. data/lib/capybara/spec/session/window/switch_to_window_spec.rb +1 -1
  177. data/lib/capybara/spec/session/window/window_opened_by_spec.rb +1 -1
  178. data/lib/capybara/spec/session/window/window_spec.rb +54 -57
  179. data/lib/capybara/spec/session/window/windows_spec.rb +2 -2
  180. data/lib/capybara/spec/session/within_spec.rb +36 -0
  181. data/lib/capybara/spec/spec_helper.rb +30 -19
  182. data/lib/capybara/spec/test_app.rb +122 -34
  183. data/lib/capybara/spec/views/animated.erb +49 -0
  184. data/lib/capybara/spec/views/form.erb +86 -8
  185. data/lib/capybara/spec/views/frame_child.erb +3 -2
  186. data/lib/capybara/spec/views/frame_one.erb +2 -1
  187. data/lib/capybara/spec/views/frame_parent.erb +1 -1
  188. data/lib/capybara/spec/views/frame_two.erb +1 -1
  189. data/lib/capybara/spec/views/initial_alert.erb +2 -1
  190. data/lib/capybara/spec/views/layout.erb +10 -0
  191. data/lib/capybara/spec/views/obscured.erb +10 -10
  192. data/lib/capybara/spec/views/offset.erb +33 -0
  193. data/lib/capybara/spec/views/path.erb +2 -2
  194. data/lib/capybara/spec/views/popup_one.erb +1 -1
  195. data/lib/capybara/spec/views/popup_two.erb +1 -1
  196. data/lib/capybara/spec/views/react.erb +45 -0
  197. data/lib/capybara/spec/views/scroll.erb +2 -1
  198. data/lib/capybara/spec/views/spatial.erb +31 -0
  199. data/lib/capybara/spec/views/tables.erb +67 -0
  200. data/lib/capybara/spec/views/with_animation.erb +39 -4
  201. data/lib/capybara/spec/views/with_base_tag.erb +2 -2
  202. data/lib/capybara/spec/views/with_dragula.erb +24 -0
  203. data/lib/capybara/spec/views/with_fixed_header_footer.erb +2 -1
  204. data/lib/capybara/spec/views/with_hover.erb +3 -2
  205. data/lib/capybara/spec/views/with_hover1.erb +10 -0
  206. data/lib/capybara/spec/views/with_html.erb +34 -6
  207. data/lib/capybara/spec/views/with_jquery_animation.erb +24 -0
  208. data/lib/capybara/spec/views/with_js.erb +7 -4
  209. data/lib/capybara/spec/views/with_jstree.erb +26 -0
  210. data/lib/capybara/spec/views/with_namespace.erb +1 -0
  211. data/lib/capybara/spec/views/with_scope.erb +2 -2
  212. data/lib/capybara/spec/views/with_scope_other.erb +6 -0
  213. data/lib/capybara/spec/views/with_shadow.erb +31 -0
  214. data/lib/capybara/spec/views/with_slow_unload.erb +2 -1
  215. data/lib/capybara/spec/views/with_sortable_js.erb +21 -0
  216. data/lib/capybara/spec/views/with_unload_alert.erb +1 -0
  217. data/lib/capybara/spec/views/with_windows.erb +1 -1
  218. data/lib/capybara/spec/views/within_frames.erb +1 -1
  219. data/lib/capybara/version.rb +1 -1
  220. data/lib/capybara/window.rb +14 -18
  221. data/lib/capybara.rb +91 -126
  222. data/spec/basic_node_spec.rb +30 -16
  223. data/spec/capybara_spec.rb +40 -28
  224. data/spec/counter_spec.rb +35 -0
  225. data/spec/css_builder_spec.rb +3 -1
  226. data/spec/css_splitter_spec.rb +1 -1
  227. data/spec/dsl_spec.rb +33 -22
  228. data/spec/filter_set_spec.rb +5 -5
  229. data/spec/fixtures/selenium_driver_rspec_failure.rb +3 -3
  230. data/spec/fixtures/selenium_driver_rspec_success.rb +3 -3
  231. data/spec/minitest_spec.rb +24 -2
  232. data/spec/minitest_spec_spec.rb +60 -45
  233. data/spec/per_session_config_spec.rb +1 -1
  234. data/spec/rack_test_spec.rb +131 -98
  235. data/spec/regexp_dissassembler_spec.rb +53 -39
  236. data/spec/result_spec.rb +68 -66
  237. data/spec/rspec/features_spec.rb +9 -4
  238. data/spec/rspec/scenarios_spec.rb +6 -2
  239. data/spec/rspec/shared_spec_matchers.rb +137 -98
  240. data/spec/rspec_matchers_spec.rb +25 -0
  241. data/spec/rspec_spec.rb +23 -21
  242. data/spec/sauce_spec_chrome.rb +43 -0
  243. data/spec/selector_spec.rb +77 -21
  244. data/spec/selenium_spec_chrome.rb +141 -39
  245. data/spec/selenium_spec_chrome_remote.rb +32 -17
  246. data/spec/selenium_spec_edge.rb +36 -8
  247. data/spec/selenium_spec_firefox.rb +110 -68
  248. data/spec/selenium_spec_firefox_remote.rb +22 -15
  249. data/spec/selenium_spec_ie.rb +29 -22
  250. data/spec/selenium_spec_safari.rb +162 -0
  251. data/spec/server_spec.rb +153 -81
  252. data/spec/session_spec.rb +11 -4
  253. data/spec/shared_selenium_node.rb +79 -0
  254. data/spec/shared_selenium_session.rb +179 -74
  255. data/spec/spec_helper.rb +80 -5
  256. data/spec/whitespace_normalizer_spec.rb +54 -0
  257. data/spec/xpath_builder_spec.rb +3 -1
  258. metadata +218 -30
  259. data/lib/capybara/spec/session/source_spec.rb +0 -0
  260. data/lib/capybara/spec/views/with_title.erb +0 -5
data/History.md CHANGED
@@ -1,3 +1,575 @@
1
+ #Version 3.40.0
2
+ Release date: 2024-01-26
3
+
4
+ ### Changned
5
+
6
+ * Dropped support for Ruby 2.7, 3.0+ is now required
7
+ * Dropped support for Selenium < 4.8
8
+ * Use the new headless option on chromedriver with registered selenium driver [Neil Carvalho]
9
+
10
+ ### Added
11
+
12
+ * `Capybara::Result#to_ary` to support multiple assignment [Sean Doyle]
13
+ * `has_element?` and related matchers [Sean Doyle]
14
+ * Rack 3 support
15
+
16
+ ### Fixed
17
+
18
+ * Forward save_screenshot options to selenium - Issue 2738
19
+ * Rack test - don't auto submit forms with multiple inputs [Mitchell Henke]
20
+ * Table row selector matches cell values in order - Issue 2686 [Jeff Parr]
21
+ * Table row selector fixes for first column - Issue 2685 [Jeff Par]
22
+
23
+ # Version 3.39.2
24
+ Release date: 2023-06-10
25
+
26
+ ### Fixed
27
+
28
+ * Fix Selenium version comparison [aki77]
29
+
30
+ # Version 3.39.1
31
+ Release date: 2023-05-12
32
+
33
+ ### Fixed
34
+
35
+ * Fix usage of Selenium logger
36
+
37
+ # Version 3.39.0
38
+ Release date: 2023-04-02
39
+
40
+ ### Added
41
+
42
+ * Support `:target` filter option on `:link` selector [Yudai Takada]
43
+ * Experimental Rack 3 support
44
+ * Text normalization performance improvements [Brandon Weaver]
45
+
46
+ ### Fixed
47
+
48
+ * MS Edge button click [Brian J. Bayer]
49
+ * Options/Capabilities choosing based on Selenium versions
50
+ * Support for base versions [Matijs van Zuijlen]
51
+ * ExpectedError not defined in Selenium 4+
52
+ * Filter block forwarding to a number of matchers [Christophe Bliard]
53
+ ### Changed
54
+
55
+ * Dropped support for rack 1.x
56
+
57
+ # Version 3.38.0
58
+ Release date: 2022-11-03
59
+
60
+ ### Changed
61
+
62
+ * Capybara.w3c_click_offset now defaults to true. If you need click offsets to be from the elements top left corner set it to false in your config
63
+
64
+ ### Added
65
+
66
+ * Support Selenium 4.3 changes to click offset calculations
67
+ * `click`, `double_click`, `right_click` can now be called on the session to click the currently scoped element (or document)
68
+ * `Session#within` now passes the scoped element to the block
69
+ * Support rack-test 2+
70
+ * Retry interval is now configurable [Masahiro NOMOTO]
71
+ * Support Puma 6 - Issue #2590
72
+ * Selenium: DetachedShadowRootError is treated as an invalid element error [Perryn Fowler]
73
+ * Selenium: When inspected shadow roots will have a tag name of "ShadowRoot"
74
+ * `evaluate_async_script` added to Session::DSL_METHODS [Henry Blyth]
75
+
76
+ ### Fixed
77
+
78
+ * Use higher precision clock in Capybara::Helpers::Timer if available
79
+ * rack-test driver behavior with \r\n - Issue #2547 [Stefan Hoffmann]
80
+ * Updated for deprecation of positional parameters in Selenium::WebDriver::ActionBuilder#pause
81
+ * Explicitly set cause on server raised errors
82
+ * Options no longer duplicated in have_xxx invalid option error message [Yudai Takada]
83
+ * Animation disabler is now threadsafe [Daniel Sheppard]
84
+ * Server connection count tracking [Oleksandr K.]
85
+ * Ensure scopes are reset when session is [Henry Blyth]
86
+
87
+ # Version 3.37.1
88
+ Release date: 2022-05-09
89
+
90
+ ### Fixed
91
+
92
+ * Regression in rack-test visit - Issue #2548
93
+
94
+ # Version 3.37.0
95
+ Release date: 2022-05-07
96
+
97
+ ### Changed
98
+
99
+ * Ruby 2.7.0+ is now required
100
+
101
+ ### Added
102
+
103
+ * [Beta] CSP nonces inserted into animation disabler additions - Issue #2542
104
+ * Support `<base>` element in rack-test driver - ISsue #2544
105
+ * [Beta] `Element#shadow_root` support. Requires selenium-webdriver 4.1+. Only currently supported with Chrome when using the selenium driver. Note: only CSS can be used to find elements from the shadow root. Therefore you won't be able to use most Capybara helper methods (`fill_in`, `click_link`, `find_field`, etc) directly from the shadow root since those locators are built using XPath. If you first locate a descendant from the shadow root using CSS then you should be able to use all the Capybara methods from there.
106
+ * Regexp now supported for `exact_text` finder option
107
+
108
+ ### Fixed
109
+
110
+ * Fragments in referer headers in rack-test driver - Issue #2525
111
+ * Selenium v4.1 deprecation notice
112
+
113
+ # Version 3.36.0
114
+ Release date: 2021-10-24
115
+
116
+ ### Changed
117
+
118
+ * Ruby 2.6.0+ is now required
119
+ * Minimum selenium-webdriver supported is now 3.142.7
120
+
121
+ ### Added
122
+
123
+ * Support for selenium-webdriver 4.x
124
+ * `allow_label_click` accepts click options to be used when clicking an associated label
125
+ * Deprecated `allow_gumbo=` in favor of `use_html5_parsing=` to enable use of Nokogiri::HTML5 when available
126
+ * `Session#active_element` returns the element with focus - Not supported by the `RackTest` driver [Sean Doyle]
127
+ * Support `focused:` filter for finding interactive elements - Not supported by the `RackTest` driver [Sean Doyle]
128
+
129
+ ### Fixed
130
+
131
+ * Sibling and ancestor queries now work with Simple::Node - Issue #2452
132
+ * rack_test correctly ignores readonly attribute on specific input element types
133
+ * `Node#all_text` always returns a string - Issue #2477
134
+ * `have_any_of_selectors` negated match - Issue #2473
135
+ * `Document#scroll_to` fixed for standards behavior - pass quirks: true if you need the older behavior [Eric Anderson]
136
+ * Use capture on attach file event listener for better React compatibility [Jeff Way]
137
+ * Animation disabler produces valid HTML [Javi Martin]
138
+
139
+ ### Removed
140
+
141
+ * 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
142
+
143
+ # Version 3.35.3
144
+ Release date: 2021-01-29
145
+
146
+ ### Fixed
147
+
148
+ * Just a release to have the correct dates in the History.md in released gem
149
+
150
+ # Version 3.35.2
151
+ Release date: 2021-01-29
152
+
153
+ ### Fixed
154
+
155
+ * Selenium deprecation suppressor with Selenium 3.x
156
+
157
+ # Version 3.35.1
158
+ Release date: 2021-01-26
159
+
160
+ ### Fixed
161
+
162
+ * Default chrome driver registrations use chrome - Issue #2442 [Yuriy Alekseyev]
163
+ * 'Capybara.test_id' usage with the :button selector - Issue #2443
164
+
165
+ # Version 3.35.0
166
+ Release date: 2021-01-25
167
+
168
+ ### Added
169
+
170
+ * Support Regexp matching for individual class names in :class filter passed an Array
171
+ * Animation disabler now supports JQuery animation disabling when JQuery loaded from body [Chien-Wei Huang]
172
+
173
+ ### Fixed
174
+
175
+ * :button selector type use with `enable_aria_role` [Sean Doyle]
176
+ * <label> elements don't associate with aria-role buttons
177
+ * Ignore Selenium::WebDriver::Error::InvalidSessionIdError when quitting driver [Robin Daugherty]
178
+ * Firefox: Don't click input when sending keys if already focused
179
+ * Miscellaneous issues with selenium-webdriver 4.0.0.alphas
180
+ * Nil return error in node details optimizations
181
+ * Animation disabler now inserts XHTML compliant content [Dale Morgan]
182
+
183
+ # Version 3.34.0
184
+ Release date: 2020-11-26
185
+
186
+ ### Added
187
+
188
+ * Ability to fill in with emoji when using Chrome with selenium driver (Firefox already worked)
189
+ * Current path assertions/expectations accept optional filter block
190
+ * Animation disabler now specifies `scroll-behavior: auto;` [Nathan Broadbent]
191
+ * :button selector can now find elements by label text [Sean Doyle]
192
+ * `Session#send_keys` to send keys to the current element with focus in drivers that support the
193
+ concept of a current element [Sean Doyle]
194
+
195
+ ### Changed
196
+
197
+ * Text query validates the type parameter to prevent undefined behavior
198
+
199
+ ### Fixed
200
+
201
+ * racktest driver better handles fragments and redirection to urls that include fragments
202
+ * Don't error when attempting to get XPath location of a shadow element
203
+ * Missing `readonly?` added to Node::Simple
204
+ * Selenium version detection when loaded via alternate method [Joel Hawksley]
205
+ * Connection count issue if REQUEST_URI value changed by app [Blake Williams]
206
+ * Maintain URI fragment when redirecting in rack-test driver
207
+ * Text query error message [Wojciech Wnętrzak]
208
+ * Checking a checkbox/radio button with `allow_label_click` now works if there are multiple labels (Issue #2421)
209
+ * `drop` with `Pathname` (Issue #2424)[Máximo Mussini]
210
+
211
+ # Version 3.33.0
212
+ Release date: 2020-06-21
213
+
214
+ ### Added
215
+
216
+ * Block passed to `within_session` now receives the new and old session
217
+ * Support for aria-role button when enabled [Seiei Miyagi]
218
+ * Support for aria-role link when enabled
219
+ * Support for `validation_message` filter with :field and :fillable_field selectors
220
+ * Deprecation warnings show source location [Koichi ITO]
221
+
222
+ ### Changed
223
+
224
+ * Ruby 2.5.0+ is now required
225
+ * Deprecated direct manipulation of the driver and server registries
226
+
227
+ ### Fixed
228
+
229
+ * Ruby 2.7 warning in minitest `assert_text` [Eileen M. Uchitelle]
230
+
231
+
232
+ # Version 3.32.2
233
+ Release date: 2020-05-16
234
+
235
+ ### Fixed
236
+
237
+ * Don't use lazy enumerator with JRuby due to leaking threads
238
+ * Ruby 2.7 deprecation warning when registering Webrick [Jon Zeppieri]
239
+ * `have_text` description [Juan Pablo Rinaldi]
240
+
241
+ # Version 3.32.1
242
+ Release date: 2020-04-05
243
+
244
+ ### Fixed
245
+
246
+ * Rapid set now respects field maxlength (Issue #2332)
247
+ * Only patch pause into legacy actions in Selenium < 4 (Issue #2334)
248
+
249
+ # Version 3.32.0
250
+ Release date: 2020-03-29
251
+
252
+ ### Added
253
+
254
+ * Support `delay` setting on click with Selenium
255
+ * Implement rapid set for values longer than 30 characters in text fields with Selenium
256
+
257
+ ### Fixed
258
+
259
+ * Result#[] and negative max on ranges (Issue #2302/2303) [Jeremy Evans]
260
+ * RackTest form submission rewrites query string when using GET method
261
+ * Ruby 2.7 deprecation warnings in RSpec matcher proxies
262
+
263
+ # Version 3.31.0
264
+ Release date: 2020-01-26
265
+
266
+ ### Added
267
+
268
+ * Support setting range inputs with the selenium driver [Andrew White]
269
+ * Support setting range inputs with the rack driver
270
+ * Support drop modifier keys in drag & drop [Elliot Crosby-McCullough]
271
+ * `enabled_options` and `disabled options` filters for select selector
272
+ * Support beginless ranges
273
+ * Optionally allow `all` results to be reloaded when stable - Beta feature - may be removed in
274
+ future version if problems occur
275
+
276
+ ### Fixed
277
+
278
+ * Fix Ruby 2.7 deprecation notices around keyword arguments. I have tried to do this without
279
+ any breaking changes, but due to the nature of the 2.7 changes and some selector types accepting
280
+ Hashes as locators there are a lot of edge cases. If you find any broken cases please report
281
+ them and I'll see if they're fixable.
282
+ * Clicking on details/summary element behavior in rack_test driver_
283
+
284
+ # Version 3.30.0
285
+ Release date: 2019-12-24
286
+
287
+ ### Added
288
+
289
+ * Display pending requests when they don't complete in time [Juan Carlos Medina]
290
+ * :order option in selector queries - set to :reverse to for reverse document order results
291
+ * Support regexp for :name and :placeholder options in selectors that import filters from
292
+ _field filter set
293
+
294
+ ### Fixed
295
+
296
+ * Issue around automatic port assignment - Issue #2245
297
+ * Label selector when label has no id - Issue #2260
298
+ * Preserve clientX/clientY in Selenium HTML5 drag emulation [Nicolò G.]
299
+ * table selector using :with_cols option if last specified column matched but others didn't - Issue #2287
300
+ * Some tests updated for Ruby 2.7 behavior change around keyword args
301
+
302
+ # Version 3.29.0
303
+ Release date: 2019-09-02
304
+
305
+ ### Added
306
+
307
+ * Allow clicking on file input when using the block version of `attach_file` with Chrome and Firefox
308
+ * Spatial filters (`left_of`, `right_of`, `above`, `below`, `near`)
309
+ * rack_test driver now supports clicking on details elements to open/close them
310
+
311
+ ### Fixed
312
+
313
+ * rack_test driver correctly determines visibility for open details elements descendants
314
+
315
+ ### Changed
316
+
317
+ * Results will now be lazily evaluated when using JRuby >= 9.2.8.0
318
+
319
+
320
+ # Version 3.28.0
321
+ Release date: 2019-08-03
322
+
323
+ ### Added
324
+
325
+ * Allow forcing HTML5 or legacy dragging via the `:html5` option to `drag_to` when using Selenium with Chrome or Firefox
326
+ * Autodetection of drag type interprets not seeing the mousedown event as legacy.
327
+ * HTML5 form validation `:valid` node filter added to `:field` and `:fillable_field` selectors
328
+ * When using Capybara registered :puma server - patches Puma 4.0.x to fix SSL connection behavior. Removes
329
+ default `queue_requests` setting - Issue #2227
330
+
331
+ # Version 3.27.0
332
+ Release date: 2019-07-28
333
+
334
+ ### Added
335
+
336
+ * Allow to use chromedriver/geckodriver native `is_element_displayed` endpoint via Selenium
337
+ driver `native_displayed` option for performance reasons. Disabled by default due to endpoints
338
+ currently not handling &lt;details> element descendants visibility correctly.
339
+
340
+ ### Fixed
341
+
342
+ * Ignore negative lookahead/lookbehind regex when performing initial XPath text matching
343
+ * Reloading of elements found via `ancestor` and `sibling`
344
+ * Only default puma settings to `queue_requests: false` when using SSL
345
+ * Visibility of descendants of &lt;details> elements is correctly determined when using rack_test
346
+ and the selenium driver with Capybara optimized atoms
347
+ * local/session storage clearance in Chrome when clearing only one of them - Issue #2233
348
+
349
+ # Version 3.26.0
350
+ Release date: 2019-07-15
351
+
352
+ ### Added
353
+
354
+ * `w3c_click_offset` configuration option applies to `right_click` and `double_click` as well as `click`
355
+ * Warning when passing `nil` to the text/content assertions/expectations
356
+ * `Session#server_url` returns the base url the AUT is being run at (when controlled by Capybara)
357
+ * `option` selector type accepts an integer as locator
358
+
359
+ ### Fixed
360
+
361
+ * Default puma server registration now specifies `queue_requests: false` - Issue #2227
362
+ * Workaround issue with FF 68 and hanging during reset if a system modal is visible
363
+ * Don't expand file path if it's already absolute - Issue #2228
364
+
365
+ # Version 3.25.0
366
+ Release date: 2019-06-27
367
+
368
+ ### Added
369
+
370
+ * Animation disabler also disables before and after pseudoelements - Issue #2221 [Daniel Heath]
371
+ * `w3c_click_offset` configuration option to determine whether click offsets are calculated from element
372
+ center or top left corner
373
+
374
+ ### Fixed
375
+
376
+ * Work around issue with chromedriver 76/77 in W3C mode losing mouse state during legacy drag. Only fixed if
377
+ both source and target are simultaneously inside the viewport - Issue #2223
378
+ * Negative ancestor expectations/predicates were incorrectly checking siblings rather than ancestors
379
+
380
+ # Version 3.24.0
381
+ Release date: 2019-06-13
382
+
383
+ ### Added
384
+
385
+ * Log access when using the Selenium driver with Chrome 75 in W3C mode has been reenabled.
386
+
387
+ ### Changed
388
+
389
+ * Selenium driver now selects all current content and then sends keys rather than clearing field by JS
390
+ and then sending keys when setting values to text inputs in order to more closely simulate user behavior
391
+
392
+ ### Fixed
393
+
394
+ * Relative paths passed to `attach_file` will be assumed to be relative to the current working directory when using the
395
+ Selenium driver
396
+
397
+ # Version 3.23.0
398
+ Release date: 2019-06-10
399
+
400
+ ### Added
401
+
402
+ * Improved error message when using Chrome in W3C mode and attempting to access logs
403
+ * Support driver specific options for Element#drag_to
404
+ * Support setting `<input type="color">` elements with the selenium driver
405
+
406
+ ### Fixed
407
+
408
+ * Tightened conditions when in expression text option matching will be used
409
+ * Improved Selenium drivers HTML5 drag and drop emulation compatibility with SortableJS library (and others)
410
+
411
+ # Version 3.22.0
412
+ Release date: 2019-05-29
413
+
414
+ ### Added
415
+
416
+ * `ancestor`/`sibling` assertions and matchers added
417
+ * Documentation Updates and Fixes - Many thanks again to Masafumi Koba! [Masafumi Koba]
418
+ * Added `:with` alias for `:option` filter on `:checkbox` and `:radio_button` selectors
419
+
420
+ ### Changed
421
+
422
+ * Selenium driver with Chrome >= 73 now resets cookies and local/session storage after navigating
423
+ to 'about:blank' when possible to minimize potential race condition
424
+
425
+ # Version 3.21.0
426
+ Release date: 2019-05-24
427
+
428
+ ### Added
429
+
430
+ * Element#drop - Chrome and Firefox, via the selenium driver, support dropping files/data on elements
431
+ * Default CSS used for `attach_file` `make_visible: true` now includes auto for
432
+ height and width to handle more ways of hiding the file input element
433
+ * Documentation Updates and Fixes - Many thanks to Masafumi Koba! [Masafumi Koba]
434
+
435
+ ### Changed
436
+
437
+ * Deprecate support for CSS locator being a Symbol
438
+
439
+ # Version 3.20.2
440
+ Release date: 2019-05-19
441
+
442
+ ### Fixed
443
+
444
+ * Move `uglifier` from runtime to development dependency [miyucy]
445
+
446
+ # Version 3.20.1
447
+ Release date: 2019-05-17
448
+
449
+ ### Fixed
450
+
451
+ * RackTest driver considers &lt;template> elements to be non-visible and ignores the contents
452
+
453
+ # Version 3.20.0
454
+ Release date: 2019-05-14
455
+
456
+ ### Added
457
+
458
+ * `Node#obscured?` to check viewport presence and element overlap
459
+ * `:obscured` system filter to check whether elements are obscured in finders, assertions, and expectations
460
+ * :label selector :for option can be a regexp
461
+ * Significantly smaller `isDisplayed`/`getAttribute` atoms for selenium driver. If these produce issues you can disable their use
462
+ by setting an environment variable named 'DISABLE_CAPYBARA_SELENIUM_OPTIMIZATIONS' (Please also report any issues).
463
+ * `href: false` option with `find_link`/`click_link`/:link selector ignores `href` presence/absence
464
+
465
+ ### Fixed
466
+
467
+ * Workaround Safari issue with send_keys not correctly using top level modifiers
468
+ * Workaround Safari not retrying click due to incorrect error type
469
+ * Fix Safari attach_file block mode when clicking elements associated to the file input
470
+ * Workaround Safari issue with repeated hover
471
+
472
+ # Version 3.19.1
473
+ Release date: 2019-05-11
474
+
475
+ ### Fixed
476
+
477
+ * Fix access to specializations when Selenium::Driver is subclassed [James Mead]
478
+
479
+ # Version 3.19.0
480
+ Release date: 2019-05-09
481
+
482
+ ### Added
483
+
484
+
485
+ * Syntactic sugar `#once`, `#twice`, `#thrice`, `#exactly`, `#at_least`, `#at_most`, and `#times`
486
+ added to `have_selector`, `have_css`, `have_xpath`, and `have_text` RSpec matchers
487
+ * Support for multiple expression types in Selector definitions
488
+ * Reduced wirecalls for common actions in Selenium driver
489
+
490
+ ### Fixed
491
+
492
+ * Workaround Chrome 75 appending files to multiple file inputs
493
+ * Suppressed retry when detecting http vs https server connection
494
+
495
+ # Version 3.18.0
496
+ Release date: 2019-04-22
497
+
498
+ ### Added
499
+
500
+ * XPath Selector query optimized to make use of Regexp :text option in initial element find
501
+
502
+ ### Fixed
503
+
504
+ * Workaround issue where Chrome/chromedriver 74 can return the wrong error type when a click is intercepted
505
+
506
+ # Version 3.17.0
507
+ Release date: 2019-04-18
508
+
509
+ ### Added
510
+
511
+ * Initial support for selenium-webdriver 4.0.0.alpha1
512
+ * :button selector will now also match on `name` attribute
513
+
514
+ ### Fixed
515
+
516
+ * Suppress warnings generated by using selenium-webdriver 3.141.5926
517
+ * Mask Appium issue with finder visibility optimizations (non-optimal)
518
+
519
+ # Version 3.16.2
520
+ Release date: 2019-04-10
521
+
522
+ ### Fixed
523
+
524
+ * Fix Session#quit resetting of memoized document
525
+
526
+ # Version 3.16.1
527
+ Release date: 2019-03-30
528
+
529
+ ### Fixed
530
+
531
+ * Fix potential 'uninitialized constant' error when using the :selenium_chrome driver [jeffclemens-ab]
532
+
533
+ # Version 3.16
534
+ Release date: 2019-03-28
535
+
536
+ ### Changed
537
+
538
+ * Ruby 2.4.0+ is now required
539
+ * Selenium driver now defaults to using a persistent http client connection
540
+
541
+ ### Added
542
+
543
+ * :wait option in predicates now accepts `true` to selectively override when `Capybara.predicates_wait == false`
544
+
545
+ # Version 3.15
546
+ Release date: 2019-03-19
547
+
548
+ ### Added
549
+
550
+ * `attach_file` now supports a block mode on JS capable drivers to more accurately test user behavior when file inputs are hidden (beta)
551
+ * :table selector now supports `with_rows`, 'rows', `with_cols`, and 'cols' filters
552
+
553
+ ### Fixed
554
+
555
+ * Fix link selector when `Capybara.test_id` is set - Issue #2166 [bingjyang]
556
+
557
+
558
+ # Version 3.14
559
+ Release date: 2019-02-25
560
+
561
+ ### Added
562
+
563
+ * rack_test driver now supports reloading elements when the document changes - Issue #2157
564
+ * Selenium driver HTML5 drag-drop emulation now emits multiple move events so drag direction
565
+ is determinable [Erkki Eilonen, Thomas Walpole]
566
+ * Capybara.server_errors now defaults to [Exception] - Issue #2160 [Edgars Beigarts]
567
+ ### Fixed
568
+
569
+ * Workaround hover issue with FF 65 - Issue #2156
570
+ * Workaround chromedriver issue when setting blank strings to react controlled text fields
571
+ * 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
572
+
1
573
  # Version 3.13.2
2
574
  Release date: 2019-01-24
3
575
 
@@ -22,7 +594,7 @@ Release date: 2019-01-23
22
594
  * Speed optimizations around multiple element location and path generation when using the Selenium driver
23
595
  * Support for locator type checking in custom selectors
24
596
  * Allow configuration of gumbo use - defaults to off
25
- * `assert_style`/`has_style`/`have_style` depreacted in favor of `assert_matches_style`/`matches_styles?`/`match_style`
597
+ * `assert_style`/`has_style`/`have_style` deprecated in favor of `assert_matches_style`/`matches_styles?`/`match_style`
26
598
  * :style filter added to selectors
27
599
 
28
600
  # Version 3.12.0
@@ -81,7 +653,7 @@ Release date: 2018-10-23
81
653
 
82
654
  ### Fixed
83
655
 
84
- * Selector `css` expression definiton declared filters now work again
656
+ * Selector `css` expression definition declared filters now work again
85
657
  * Cleaned up warnings [Yuji Yaginuma]
86
658
  * 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
87
659
 
@@ -198,7 +770,7 @@ Release date: 2018-07-19
198
770
 
199
771
  ### Fixed
200
772
 
201
- * Make selenium driver :backspace clear stategy work even if caret location is in middle of field content [Champier Cyril]
773
+ * Make selenium driver :backspace clear strategy work even if caret location is in middle of field content [Champier Cyril]
202
774
  * Selenium issue with fieldset nested in disabled fieldset not being considered disabled
203
775
  * `Session#evaluate_script` and `Element#evaluate_script` now strip leading/trailing whitespace from scripts [Ian Lesperance]
204
776
 
@@ -297,7 +869,7 @@ Release date: 2018-04-13
297
869
  ### Fixes
298
870
 
299
871
  * Fix expression filter descriptions in some selector failure messages
300
- * Fix compounding of negated matechers - Issue #2010
872
+ * Fix compounding of negated matchers - Issue #2010
301
873
 
302
874
  # Version 3.0.1
303
875
  Release date: 2018-04-06
@@ -324,7 +896,7 @@ Release date: 2018-03-23
324
896
 
325
897
  ### Changed
326
898
 
327
- * Visibile text whitespace is no longer fully normalized in favor of being more in line with the WebDriver spec for visible text
899
+ * Visible text whitespace is no longer fully normalized in favor of being more in line with the WebDriver spec for visible text
328
900
  * Drivers are expected to close extra windows when resetting the session
329
901
  * Selenium driver supports Date/Time when filling in date/time/datetime-local inputs
330
902
  * `current_url` returns the url for the top level browsing context
@@ -571,7 +1143,7 @@ Release date: 2016-12-05
571
1143
  * Options for clearing session/local storage on reset added to the Selenium driver
572
1144
  * Window size changes wait for the size to stabilize
573
1145
  * Defined return value for most actions
574
- * Ignore specific error when qutting selenium driver instance - Issue #1773 [Dylan Reichstadt, Thomas Walpole]
1146
+ * Ignore specific error when quitting selenium driver instance - Issue #1773 [Dylan Reichstadt, Thomas Walpole]
575
1147
  * Warn on selenium unknown errors rather than raising when quitting driver [Adam Pohorecki, Thomas Walpole]
576
1148
  * Capybara::Result#each now returns an `Enumerator` when called without a block - Issue #1777 [Thomas Walpole]
577
1149
 
@@ -633,7 +1205,7 @@ Release date: 2016-09-19
633
1205
 
634
1206
  ### Fixed
635
1207
 
636
- * Issue with rack-test driver and obselete mime-types when using `#attach_file` - Issue #1756 [Thomas Walpole]
1208
+ * Issue with rack-test driver and obsolete mime-types when using `#attach_file` - Issue #1756 [Thomas Walpole]
637
1209
 
638
1210
  ### Added
639
1211
 
@@ -700,7 +1272,7 @@ Release date: 2016-04-07
700
1272
 
701
1273
  ### Added
702
1274
 
703
- * Capybara now waits for requests to Capybaras server to complete while restting the session [John Hawthorn, Thomas Walpole]
1275
+ * Capybara now waits for requests to Capybaras server to complete while resetting the session [John Hawthorn, Thomas Walpole]
704
1276
  * Capybara.reuse_server option to allow disabling of sharing server instance between sessions [Thomas Walpole]
705
1277
  * :multiple filter added to relevant selectors [Thomas Walpole]
706
1278
  * Provided server registrations for :webrick and :puma. Capybara.server = :puma for testing with Rails 5 [Thomas Walpole]
@@ -714,7 +1286,7 @@ Release date: 2016-04-07
714
1286
 
715
1287
  # Version 2.6.2
716
1288
 
717
- Relase date: 2016-01-27
1289
+ Release date: 2016-01-27
718
1290
 
719
1291
  ### Fixed
720
1292
 
@@ -730,7 +1302,7 @@ Release date: 2016-01-27
730
1302
 
731
1303
  # Version 2.6.0
732
1304
 
733
- Relase date: 2016-01-17
1305
+ Release date: 2016-01-17
734
1306
 
735
1307
  ### Fixed
736
1308
 
@@ -794,7 +1366,7 @@ Release date: 2014-10-13
794
1366
 
795
1367
  # Version 2.4.3
796
1368
 
797
- Relase date: 2014-09-21
1369
+ Release date: 2014-09-21
798
1370
 
799
1371
  ### Fixed
800
1372
 
@@ -1260,8 +1832,8 @@ Release date: 2011-06-14
1260
1832
  * Rack::Test driver honours maxlength on input fields [Guilherme Carvalho]
1261
1833
  * Rack::Test now works as expected with domains and subdomains [Jonas Nicklas]
1262
1834
  * Session is reset more thoroughly between tests. [Jonas Nicklas]
1263
- * Raise error when uploading non-existant file [Jonas Nicklas]
1264
- * Rack reponse body should respond to #each [Piotr Sarnacki]
1835
+ * Raise error when uploading non-existent file [Jonas Nicklas]
1836
+ * Rack response body should respond to #each [Piotr Sarnacki]
1265
1837
  * Deprecation warnings with selenium webdriver 0.2.0 [Aaron Gibraltar]
1266
1838
  * Selenium Chrome no longer YELLS tagname [Carl Jackson & David W. Frank]
1267
1839
  * Capybara no longer strips encoding before sending to Rack [Jonas Nicklas]
@@ -1403,7 +1975,7 @@ Release date: 2010-05-12
1403
1975
 
1404
1976
  Release date: 2010-04-09
1405
1977
 
1406
- This is a drop in compatible maintainance release. It's mostly
1978
+ This is a drop in compatible maintenance release. It's mostly
1407
1979
  important for driver authors.
1408
1980
 
1409
1981
  ### Added
@@ -1422,7 +1994,7 @@ important for driver authors.
1422
1994
 
1423
1995
  Release date: 2010-03-22
1424
1996
 
1425
- This is a maintainance release with minor bug fixes, should be
1997
+ This is a maintenance release with minor bug fixes, should be
1426
1998
  drop in compatible.
1427
1999
 
1428
2000
  ### Added
@@ -1469,4 +2041,3 @@ too many users, please read the release notes carefully!
1469
2041
  * clicking links where the image's alt attribute contains the text is now possible
1470
2042
  * within_fieldset and within_table work when the default selector is CSS
1471
2043
  * boolean attributes work the same across drivers (return true/false)
1472
-