capybara 3.8.1 → 3.33.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (242) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +1 -0
  3. data/History.md +465 -0
  4. data/License.txt +1 -1
  5. data/README.md +58 -57
  6. data/lib/capybara/config.rb +10 -4
  7. data/lib/capybara/cucumber.rb +1 -1
  8. data/lib/capybara/driver/base.rb +2 -2
  9. data/lib/capybara/driver/node.rb +26 -5
  10. data/lib/capybara/dsl.rb +12 -4
  11. data/lib/capybara/helpers.rb +8 -4
  12. data/lib/capybara/minitest/spec.rb +162 -85
  13. data/lib/capybara/minitest.rb +248 -148
  14. data/lib/capybara/node/actions.rb +149 -96
  15. data/lib/capybara/node/base.rb +27 -10
  16. data/lib/capybara/node/document.rb +12 -0
  17. data/lib/capybara/node/document_matchers.rb +9 -5
  18. data/lib/capybara/node/element.rb +254 -109
  19. data/lib/capybara/node/finders.rb +83 -76
  20. data/lib/capybara/node/matchers.rb +279 -141
  21. data/lib/capybara/node/simple.rb +25 -6
  22. data/lib/capybara/queries/ancestor_query.rb +5 -7
  23. data/lib/capybara/queries/base_query.rb +11 -5
  24. data/lib/capybara/queries/current_path_query.rb +3 -3
  25. data/lib/capybara/queries/match_query.rb +1 -0
  26. data/lib/capybara/queries/selector_query.rb +467 -103
  27. data/lib/capybara/queries/sibling_query.rb +5 -4
  28. data/lib/capybara/queries/style_query.rb +6 -2
  29. data/lib/capybara/queries/text_query.rb +17 -3
  30. data/lib/capybara/queries/title_query.rb +2 -2
  31. data/lib/capybara/rack_test/browser.rb +22 -15
  32. data/lib/capybara/rack_test/driver.rb +10 -1
  33. data/lib/capybara/rack_test/errors.rb +6 -0
  34. data/lib/capybara/rack_test/form.rb +33 -28
  35. data/lib/capybara/rack_test/node.rb +74 -6
  36. data/lib/capybara/registration_container.rb +44 -0
  37. data/lib/capybara/registrations/drivers.rb +36 -0
  38. data/lib/capybara/registrations/patches/puma_ssl.rb +27 -0
  39. data/lib/capybara/registrations/servers.rb +44 -0
  40. data/lib/capybara/result.rb +55 -23
  41. data/lib/capybara/rspec/features.rb +4 -4
  42. data/lib/capybara/rspec/matcher_proxies.rb +36 -15
  43. data/lib/capybara/rspec/matchers/base.rb +111 -0
  44. data/lib/capybara/rspec/matchers/become_closed.rb +33 -0
  45. data/lib/capybara/rspec/matchers/compound.rb +88 -0
  46. data/lib/capybara/rspec/matchers/count_sugar.rb +37 -0
  47. data/lib/capybara/rspec/matchers/have_ancestor.rb +28 -0
  48. data/lib/capybara/rspec/matchers/have_current_path.rb +29 -0
  49. data/lib/capybara/rspec/matchers/have_selector.rb +77 -0
  50. data/lib/capybara/rspec/matchers/have_sibling.rb +27 -0
  51. data/lib/capybara/rspec/matchers/have_text.rb +33 -0
  52. data/lib/capybara/rspec/matchers/have_title.rb +29 -0
  53. data/lib/capybara/rspec/matchers/match_selector.rb +27 -0
  54. data/lib/capybara/rspec/matchers/match_style.rb +38 -0
  55. data/lib/capybara/rspec/matchers/spatial_sugar.rb +39 -0
  56. data/lib/capybara/rspec/matchers.rb +117 -311
  57. data/lib/capybara/selector/builders/css_builder.rb +84 -0
  58. data/lib/capybara/selector/builders/xpath_builder.rb +69 -0
  59. data/lib/capybara/selector/css.rb +17 -15
  60. data/lib/capybara/selector/definition/button.rb +52 -0
  61. data/lib/capybara/selector/definition/checkbox.rb +26 -0
  62. data/lib/capybara/selector/definition/css.rb +10 -0
  63. data/lib/capybara/selector/definition/datalist_input.rb +35 -0
  64. data/lib/capybara/selector/definition/datalist_option.rb +25 -0
  65. data/lib/capybara/selector/definition/element.rb +27 -0
  66. data/lib/capybara/selector/definition/field.rb +40 -0
  67. data/lib/capybara/selector/definition/fieldset.rb +14 -0
  68. data/lib/capybara/selector/definition/file_field.rb +13 -0
  69. data/lib/capybara/selector/definition/fillable_field.rb +33 -0
  70. data/lib/capybara/selector/definition/frame.rb +17 -0
  71. data/lib/capybara/selector/definition/id.rb +6 -0
  72. data/lib/capybara/selector/definition/label.rb +62 -0
  73. data/lib/capybara/selector/definition/link.rb +54 -0
  74. data/lib/capybara/selector/definition/link_or_button.rb +16 -0
  75. data/lib/capybara/selector/definition/option.rb +27 -0
  76. data/lib/capybara/selector/definition/radio_button.rb +27 -0
  77. data/lib/capybara/selector/definition/select.rb +81 -0
  78. data/lib/capybara/selector/definition/table.rb +109 -0
  79. data/lib/capybara/selector/definition/table_row.rb +21 -0
  80. data/lib/capybara/selector/definition/xpath.rb +5 -0
  81. data/lib/capybara/selector/definition.rb +277 -0
  82. data/lib/capybara/selector/filter.rb +1 -0
  83. data/lib/capybara/selector/filter_set.rb +26 -19
  84. data/lib/capybara/selector/filters/base.rb +24 -5
  85. data/lib/capybara/selector/filters/expression_filter.rb +3 -3
  86. data/lib/capybara/selector/filters/locator_filter.rb +29 -0
  87. data/lib/capybara/selector/filters/node_filter.rb +16 -2
  88. data/lib/capybara/selector/regexp_disassembler.rb +214 -0
  89. data/lib/capybara/selector/selector.rb +73 -367
  90. data/lib/capybara/selector/xpath_extensions.rb +17 -0
  91. data/lib/capybara/selector.rb +221 -480
  92. data/lib/capybara/selenium/atoms/getAttribute.min.js +1 -0
  93. data/lib/capybara/selenium/atoms/isDisplayed.min.js +1 -0
  94. data/lib/capybara/selenium/atoms/src/getAttribute.js +161 -0
  95. data/lib/capybara/selenium/atoms/src/isDisplayed.js +454 -0
  96. data/lib/capybara/selenium/driver.rb +203 -86
  97. data/lib/capybara/selenium/driver_specializations/chrome_driver.rb +88 -14
  98. data/lib/capybara/selenium/driver_specializations/edge_driver.rb +124 -0
  99. data/lib/capybara/selenium/driver_specializations/firefox_driver.rb +89 -0
  100. data/lib/capybara/selenium/driver_specializations/internet_explorer_driver.rb +26 -0
  101. data/lib/capybara/selenium/driver_specializations/safari_driver.rb +24 -0
  102. data/lib/capybara/selenium/extensions/file_input_click_emulation.rb +34 -0
  103. data/lib/capybara/selenium/extensions/find.rb +110 -0
  104. data/lib/capybara/selenium/extensions/html5_drag.rb +191 -22
  105. data/lib/capybara/selenium/extensions/modifier_keys_stack.rb +28 -0
  106. data/lib/capybara/selenium/extensions/scroll.rb +78 -0
  107. data/lib/capybara/selenium/logger_suppressor.rb +34 -0
  108. data/lib/capybara/selenium/node.rb +298 -93
  109. data/lib/capybara/selenium/nodes/chrome_node.rb +100 -8
  110. data/lib/capybara/selenium/nodes/edge_node.rb +104 -0
  111. data/lib/capybara/selenium/nodes/firefox_node.rb +131 -0
  112. data/lib/capybara/selenium/nodes/ie_node.rb +22 -0
  113. data/lib/capybara/selenium/nodes/safari_node.rb +118 -0
  114. data/lib/capybara/selenium/patches/action_pauser.rb +26 -0
  115. data/lib/capybara/selenium/patches/atoms.rb +18 -0
  116. data/lib/capybara/selenium/patches/is_displayed.rb +16 -0
  117. data/lib/capybara/selenium/patches/logs.rb +45 -0
  118. data/lib/capybara/selenium/patches/pause_duration_fix.rb +1 -3
  119. data/lib/capybara/selenium/patches/persistent_client.rb +20 -0
  120. data/lib/capybara/server/animation_disabler.rb +4 -3
  121. data/lib/capybara/server/checker.rb +6 -2
  122. data/lib/capybara/server/middleware.rb +23 -13
  123. data/lib/capybara/server.rb +30 -7
  124. data/lib/capybara/session/config.rb +14 -10
  125. data/lib/capybara/session/matchers.rb +11 -7
  126. data/lib/capybara/session.rb +152 -111
  127. data/lib/capybara/spec/public/offset.js +6 -0
  128. data/lib/capybara/spec/public/test.js +101 -10
  129. data/lib/capybara/spec/session/all_spec.rb +96 -6
  130. data/lib/capybara/spec/session/ancestor_spec.rb +5 -0
  131. data/lib/capybara/spec/session/assert_all_of_selectors_spec.rb +29 -0
  132. data/lib/capybara/spec/session/assert_current_path_spec.rb +5 -2
  133. data/lib/capybara/spec/session/assert_selector_spec.rb +0 -10
  134. data/lib/capybara/spec/session/assert_style_spec.rb +4 -4
  135. data/lib/capybara/spec/session/assert_text_spec.rb +9 -5
  136. data/lib/capybara/spec/session/attach_file_spec.rb +63 -36
  137. data/lib/capybara/spec/session/check_spec.rb +10 -4
  138. data/lib/capybara/spec/session/choose_spec.rb +8 -2
  139. data/lib/capybara/spec/session/click_button_spec.rb +117 -61
  140. data/lib/capybara/spec/session/click_link_or_button_spec.rb +16 -0
  141. data/lib/capybara/spec/session/click_link_spec.rb +17 -6
  142. data/lib/capybara/spec/session/element/matches_selector_spec.rb +40 -39
  143. data/lib/capybara/spec/session/evaluate_script_spec.rb +13 -0
  144. data/lib/capybara/spec/session/execute_script_spec.rb +1 -0
  145. data/lib/capybara/spec/session/fill_in_spec.rb +47 -6
  146. data/lib/capybara/spec/session/find_field_spec.rb +1 -1
  147. data/lib/capybara/spec/session/find_spec.rb +74 -4
  148. data/lib/capybara/spec/session/first_spec.rb +1 -1
  149. data/lib/capybara/spec/session/frame/switch_to_frame_spec.rb +13 -1
  150. data/lib/capybara/spec/session/frame/within_frame_spec.rb +12 -1
  151. data/lib/capybara/spec/session/has_all_selectors_spec.rb +1 -1
  152. data/lib/capybara/spec/session/has_ancestor_spec.rb +46 -0
  153. data/lib/capybara/spec/session/has_any_selectors_spec.rb +25 -0
  154. data/lib/capybara/spec/session/has_button_spec.rb +16 -0
  155. data/lib/capybara/spec/session/has_css_spec.rb +122 -12
  156. data/lib/capybara/spec/session/has_current_path_spec.rb +6 -4
  157. data/lib/capybara/spec/session/has_field_spec.rb +55 -0
  158. data/lib/capybara/spec/session/has_select_spec.rb +34 -6
  159. data/lib/capybara/spec/session/has_selector_spec.rb +11 -4
  160. data/lib/capybara/spec/session/has_sibling_spec.rb +50 -0
  161. data/lib/capybara/spec/session/has_table_spec.rb +166 -0
  162. data/lib/capybara/spec/session/has_text_spec.rb +48 -1
  163. data/lib/capybara/spec/session/has_xpath_spec.rb +17 -0
  164. data/lib/capybara/spec/session/html_spec.rb +7 -0
  165. data/lib/capybara/spec/session/matches_style_spec.rb +35 -0
  166. data/lib/capybara/spec/session/node_spec.rb +643 -18
  167. data/lib/capybara/spec/session/node_wrapper_spec.rb +1 -1
  168. data/lib/capybara/spec/session/refresh_spec.rb +4 -0
  169. data/lib/capybara/spec/session/reset_session_spec.rb +23 -8
  170. data/lib/capybara/spec/session/save_and_open_screenshot_spec.rb +2 -2
  171. data/lib/capybara/spec/session/save_screenshot_spec.rb +4 -4
  172. data/lib/capybara/spec/session/scroll_spec.rb +117 -0
  173. data/lib/capybara/spec/session/select_spec.rb +10 -10
  174. data/lib/capybara/spec/session/selectors_spec.rb +36 -5
  175. data/lib/capybara/spec/session/uncheck_spec.rb +2 -2
  176. data/lib/capybara/spec/session/unselect_spec.rb +1 -1
  177. data/lib/capybara/spec/session/window/become_closed_spec.rb +20 -17
  178. data/lib/capybara/spec/session/window/switch_to_window_spec.rb +4 -0
  179. data/lib/capybara/spec/session/window/window_opened_by_spec.rb +4 -0
  180. data/lib/capybara/spec/session/window/window_spec.rb +59 -58
  181. data/lib/capybara/spec/session/window/windows_spec.rb +4 -0
  182. data/lib/capybara/spec/session/within_spec.rb +23 -0
  183. data/lib/capybara/spec/spec_helper.rb +16 -6
  184. data/lib/capybara/spec/test_app.rb +28 -23
  185. data/lib/capybara/spec/views/animated.erb +49 -0
  186. data/lib/capybara/spec/views/form.erb +48 -7
  187. data/lib/capybara/spec/views/frame_child.erb +3 -2
  188. data/lib/capybara/spec/views/frame_one.erb +1 -0
  189. data/lib/capybara/spec/views/obscured.erb +47 -0
  190. data/lib/capybara/spec/views/offset.erb +32 -0
  191. data/lib/capybara/spec/views/react.erb +45 -0
  192. data/lib/capybara/spec/views/scroll.erb +20 -0
  193. data/lib/capybara/spec/views/spatial.erb +31 -0
  194. data/lib/capybara/spec/views/tables.erb +67 -0
  195. data/lib/capybara/spec/views/with_animation.erb +29 -1
  196. data/lib/capybara/spec/views/with_dragula.erb +24 -0
  197. data/lib/capybara/spec/views/with_hover.erb +1 -0
  198. data/lib/capybara/spec/views/with_hover1.erb +10 -0
  199. data/lib/capybara/spec/views/with_html.erb +32 -6
  200. data/lib/capybara/spec/views/with_js.erb +3 -1
  201. data/lib/capybara/spec/views/with_jstree.erb +26 -0
  202. data/lib/capybara/spec/views/with_scope_other.erb +6 -0
  203. data/lib/capybara/spec/views/with_sortable_js.erb +21 -0
  204. data/lib/capybara/version.rb +1 -1
  205. data/lib/capybara/window.rb +11 -11
  206. data/lib/capybara.rb +118 -111
  207. data/spec/basic_node_spec.rb +14 -3
  208. data/spec/capybara_spec.rb +29 -29
  209. data/spec/css_builder_spec.rb +101 -0
  210. data/spec/dsl_spec.rb +46 -21
  211. data/spec/filter_set_spec.rb +5 -5
  212. data/spec/fixtures/selenium_driver_rspec_failure.rb +1 -1
  213. data/spec/fixtures/selenium_driver_rspec_success.rb +1 -1
  214. data/spec/minitest_spec.rb +18 -4
  215. data/spec/minitest_spec_spec.rb +59 -44
  216. data/spec/rack_test_spec.rb +117 -89
  217. data/spec/regexp_dissassembler_spec.rb +250 -0
  218. data/spec/result_spec.rb +51 -49
  219. data/spec/rspec/features_spec.rb +3 -0
  220. data/spec/rspec/shared_spec_matchers.rb +112 -97
  221. data/spec/rspec_spec.rb +35 -17
  222. data/spec/sauce_spec_chrome.rb +43 -0
  223. data/spec/selector_spec.rb +244 -28
  224. data/spec/selenium_spec_chrome.rb +125 -54
  225. data/spec/selenium_spec_chrome_remote.rb +26 -12
  226. data/spec/selenium_spec_edge.rb +23 -8
  227. data/spec/selenium_spec_firefox.rb +208 -0
  228. data/spec/selenium_spec_firefox_remote.rb +15 -18
  229. data/spec/selenium_spec_ie.rb +82 -13
  230. data/spec/selenium_spec_safari.rb +148 -0
  231. data/spec/server_spec.rb +118 -77
  232. data/spec/session_spec.rb +19 -3
  233. data/spec/shared_selenium_node.rb +83 -0
  234. data/spec/shared_selenium_session.rb +110 -65
  235. data/spec/spec_helper.rb +57 -9
  236. data/spec/xpath_builder_spec.rb +93 -0
  237. metadata +257 -17
  238. data/lib/capybara/rspec/compound.rb +0 -94
  239. data/lib/capybara/selenium/driver_specializations/marionette_driver.rb +0 -49
  240. data/lib/capybara/selenium/nodes/marionette_node.rb +0 -121
  241. data/lib/capybara/spec/session/has_style_spec.rb +0 -25
  242. data/spec/selenium_spec_marionette.rb +0 -172
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cc35446857b540db49c4c67f5f70ad80dcb49d8642a39c178886f0429e14e44f
4
- data.tar.gz: 75cdc8e0b3014fdebe9d58cc454045874144b4d9aa647b2b7636cce9dc92f61a
3
+ metadata.gz: ab64d9d47c6374c4f203945be70b868fb9e4c48d3fdca087ba4e66498e40b91c
4
+ data.tar.gz: 451c97390c148b5b0fad1b06107a4f0de87f17f7b8cef7156fb76ad2ee503f76
5
5
  SHA512:
6
- metadata.gz: d63a63b21444a97e292346593a221dd5339ec32ec9c243f37b3761f526dc810bbc0488da7caa38252dca25601aea1a70f9a1863a7756c3e766ce82a1f9f2a7e5
7
- data.tar.gz: f3c2a58ecec72d56d8cad3df1868012a5f000173dd9d43b976df316eec1186279c8c557fab294f8e2e7e48ac1c0de088af34757986aa9ac0ecc147bc320497d8
6
+ metadata.gz: b0ca3fd8a4535e1df696ddc7f547e066b873d3f4be2b54655fdbb0b6588c5086a87b93500e241e0da031b586c0b6a30cdd8522f209309cf6729c683226bfcf7f
7
+ data.tar.gz: d295dcd733856816a1c89810f4d54304a52c251d585afcc62b986a66d63e080e03ddc81bdc46cf51a044e29d2849ccce9bb3cb307a0757746e662394f648a717
data/.yardopts ADDED
@@ -0,0 +1 @@
1
+ --markup markdown
data/History.md CHANGED
@@ -1,3 +1,468 @@
1
+ # Version 3.33.0
2
+ Release date: 2020-06-21
3
+
4
+ ### Added
5
+
6
+ * Block passed to `within_session` now receives the new and old session
7
+ * Support for aria-role button when enabled [Seiei Miyagi]
8
+ * Support for aria-role link when enabled
9
+ * Support for `validation_message` filter with :field and :fillable_field selectors
10
+
11
+ ### Changed
12
+
13
+ * Ruby 2.5.0+ is now required
14
+ * Deprecated direct manupulation of the driver and server registries
15
+
16
+ ### Fixed
17
+
18
+ * Ruby 2.7 warning in minitest `assert_text` [Eileen M. Uchitelle]
19
+
20
+
21
+ # Version 3.32.2
22
+ Release date: 2020-05-16
23
+
24
+ ### Fixed
25
+
26
+ * Don't use lazy enumerator with JRuby due to leaking threads
27
+ * Ruby 2.7 deprecation warning when registering Webrick [Jon Zeppieri]
28
+ * `have_text` description [Juan Pablo Rinaldi]
29
+
30
+ # Version 3.32.1
31
+ Release date: 2020-04-05
32
+
33
+ ### Fixed
34
+
35
+ * Rapid set now respects field maxlength (Issue #2332)
36
+ * Only patch pause into legacy actions in Selenium < 4 (Issue #2334)
37
+
38
+ # Version 3.32.0
39
+ Release date: 2020-03-29
40
+
41
+ ### Added
42
+
43
+ * Support `delay` setting on click with Selenium
44
+ * Implement rapid set for values longer thn 30 characters in text fields with Selenium
45
+
46
+ ### Fixed
47
+
48
+ * Result#[] and negative max on ranges (Issue #2302/2303) [Jeremy Evans]
49
+ * RackTest form submission rewrites query string when using GET method
50
+ * Ruby 2.7 deprecation warnings in RSpec matcher proxies
51
+
52
+ # Version 3.31.0
53
+ Release date: 2020-01-26
54
+
55
+ ### Added
56
+
57
+ * Support setting range inputs with the selenium driver [Andrew White]
58
+ * Support setting range inputs with the rack driver
59
+ * Support drop modifier keys in drag & drop [Elliot Crosby-McCullough]
60
+ * `enabled_options` and `disabled options` filters for select selector
61
+ * Support beginless ranges
62
+ * Optionally allow `all` results to be reloaded when stable - Beta feature - may be removed in
63
+ future version if problems occur
64
+
65
+ ### Fixed
66
+
67
+ * Fix Ruby 2.7 deprecation notices around keyword arguments. I have tried to do this without
68
+ any breaking changes, but due to the nature of the 2.7 changes and some selector types accepting
69
+ Hashes as locators there are a lot of edge cases. If you find any broken cases please report
70
+ them and I'll see if they're fixable.
71
+ * Clicking on details/summary element behavior in rack_test driver_
72
+
73
+ # Version 3.30.0
74
+ Release date: 2019-12-24
75
+
76
+ ### Added
77
+
78
+ * Display pending requests when they don't complete in time [Juan Carlos Medina]
79
+ * :order option in selector queries - set to :reverse to for reverse document order results
80
+ * Support regexp for :name and :placeholder options in selectors that import filters from
81
+ _field filter set
82
+
83
+ ### Fixed
84
+
85
+ * Issue around automatic port assignment - Issue #2245
86
+ * Label selector when label has no id - Issue #2260
87
+ * Preserve clientX/clientY in Selenium HTML5 drag emulation [Nicolò G.]
88
+ * table selector using :with_cols option if last specified column matched but others didn't - Issue #2287
89
+ * Some tests updated for Ruby 2.7 behavior change around keyword args
90
+
91
+ # Version 3.29.0
92
+ Release date: 2019-09-02
93
+
94
+ ### Added
95
+
96
+ * Allow clicking on file input when using the block version of `attach_file` with Chrome and Firefox
97
+ * Spatial filters (`left_of`, `right_of`, `above`, `below`, `near`)
98
+ * rack_test driver now supports clicking on details elements to open/close them
99
+
100
+ ### Fixed
101
+
102
+ * rack_test driver correctly determines visibility for open details elements descendants
103
+
104
+ ### Changed
105
+
106
+ * Results will now be lazily evaluated when using JRuby >= 9.2.8.0
107
+
108
+
109
+ # Version 3.28.0
110
+ Release date: 2019-08-03
111
+
112
+ ### Added
113
+
114
+ * Allow forcing HTML5 or legacy dragging via the `:html5` option to `drag_to` when using Selenium with Chrome or Firefox
115
+ * Autodetection of drag type interprets not seeing the mousedown event as legacy.
116
+ * HTML5 form validation `:valid` node filter added to `:field` and `:fillable_field` selectors
117
+ * When using Capybara registered :puma server - patches Puma 4.0.x to fix SSL connection behavior. Removes
118
+ default `queue_requests` setting - Issue #2227
119
+
120
+ # Version 3.27.0
121
+ Release date: 2019-07-28
122
+
123
+ ### Added
124
+
125
+ * Allow to use chromedriver/geckodriver native `is_element_displayed` endpoint via Selenium
126
+ driver `native_displayed` option for performance reasons. Disabled by default due to endpoints
127
+ currently not handling &lt;details> element descendants visibility correctly.
128
+
129
+ ### Fixed
130
+
131
+ * Ignore negative lookahead/lookbehind regex when performing initial XPath text matching
132
+ * Reloading of elements found via `ancestor` and `sibling`
133
+ * Only default puma settings to `queue_requests: false` when using SSL
134
+ * Visibility of descendants of &lt;details> elements is correctly determined when using rack_test
135
+ and the selenium driver with Capybara optimized atoms
136
+ * local/session storage clearance in Chrome when clearing only one of them - Issue #2233
137
+
138
+ # Version 3.26.0
139
+ Release date: 2019-07-15
140
+
141
+ ### Added
142
+
143
+ * `w3c_click_offset` configuration option applies to `right_click` and `double_click` as well as `click`
144
+ * Warning when passing `nil` to the text/content assertions/expectations
145
+ * `Session#server_url` returns the base url the AUT is being run at (when controlled by Capybara)
146
+ * `option` selector type accepts an integer as locator
147
+
148
+ ### Fixed
149
+
150
+ * Default puma server registration now specifies `queue_requests: false` - Issue #2227
151
+ * Workaround issue with FF 68 and hanging during reset if a system modal is visible
152
+ * Don't expand file path if it's already absolute - Issue #2228
153
+
154
+ # Version 3.25.0
155
+ Release date: 2019-06-27
156
+
157
+ ### Added
158
+
159
+ * Animation disabler also disables before and after pseudoelements - Issue #2221 [Daniel Heath]
160
+ * `w3c_click_offset` configuration option to determine whether click offsets are calculated from element
161
+ center or top left corner
162
+
163
+ ### Fixed
164
+
165
+ * Woraround issue with chromedriver 76/77 in W3C mode losing mouse state during legacy drag. Only fixed if
166
+ both source and target are simultaenously inside the viewport - Issue #2223
167
+ * Negative ancestor expectations/predicates were incorrectly checking siblings rather than ancestors
168
+
169
+ # Version 3.24.0
170
+ Release date: 2019-06-13
171
+
172
+ ### Added
173
+
174
+ * Log access when using the Selenium driver with Chrome 75 in W3C mode has been reenabled.
175
+
176
+ ### Changed
177
+
178
+ * Selenium driver now selects all current content and then sends keys rather than clearing field by JS
179
+ and then sending keys when setting values to text inputs in order to more closely simulate user behavior
180
+
181
+ ### Fixed
182
+
183
+ * Relative paths passed to `attach_file` will be assumed to be relative to the current working directory when using the
184
+ Selenium driver
185
+
186
+ # Version 3.23.0
187
+ Release date: 2019-06-10
188
+
189
+ ### Added
190
+
191
+ * Improved error message when using Chrome in W3C mode and attempting to access logs
192
+ * Support driver specific options for Element#drag_to
193
+ * Support setting `<input type="color">` elements with the selenium driver
194
+
195
+ ### Fixed
196
+
197
+ * Tightened conditions when in expression text option matching will be used
198
+ * Improved Selenium drivers HTML5 drag and drop emulation compatibility with SortableJS library (and others)
199
+
200
+ # Version 3.22.0
201
+ Release date: 2019-05-29
202
+
203
+ ### Added
204
+
205
+ * `ancestor`/`sibling` assertions and matchers added
206
+ * Documentation Updates and Fixes - Many thanks again to Masafumi Koba! [Masafumi Koba]
207
+ * Added `:with` alias for `:option` filter on `:checkbox` and `:radio_button` selectors
208
+
209
+ ### Changed
210
+
211
+ * Selenium driver with Chrome >= 73 now resets cookies and local/session storage after navigating
212
+ to 'about:blank' when possible to minimize potential race condition
213
+
214
+ # Version 3.21.0
215
+ Release date: 2019-05-24
216
+
217
+ ### Added
218
+
219
+ * Element#drop - Chrome and Firefox, via the selenium driver, support dropping files/data on elements
220
+ * Default CSS used for `attach_file` `make_visible: true` now includes auto for
221
+ height and width to handle more ways of hiding the file input element
222
+ * Documentation Updates and Fixes - Many thanks to Masafumi Koba! [Masafumi Koba]
223
+
224
+ ### Changed
225
+
226
+ * Deprecate support for CSS locator being a Symbol
227
+
228
+ # Version 3.20.2
229
+ Release date: 2019-05-19
230
+
231
+ ### Fixed
232
+
233
+ * Move `uglifier` from runtime to development dependency [miyucy]
234
+
235
+ # Version 3.20.1
236
+ Release date: 2019-05-17
237
+
238
+ ### Fixed
239
+
240
+ * RackTest driver considers &lt;template> elements to be non-visible and ignores the contents
241
+
242
+ # Version 3.20.0
243
+ Release date: 2019-05-14
244
+
245
+ ### Added
246
+
247
+ * `Node#obscured?` to check viewport presence and element overlap
248
+ * `:obscured` system filter to check whether elements are obscured in finders, assertions, and expectations
249
+ * :label selector :for option can be a regexp
250
+ * Significantly smaller `isDisplayed`/`getAttribute` atoms for selenium driver. If these produce issues you can disable their use
251
+ by setting an environment variable named 'DISABLE_CAPYBARA_SELENIUM_OPTIMIZATIONS' (Please also report any issues).
252
+ * `href: false` option with `find_link`/`click_link`/:link selector ignores `href` presence/absence
253
+
254
+ ### Fixed
255
+
256
+ * Workaround Safari issue with send_keys not correctly using top level modifiers
257
+ * Workaround Safari not retrying click due to incorrect error type
258
+ * Fix Safari attach_file block mode when clicking elements associated to the file input
259
+ * Workaround Safari issue with repeated hover
260
+
261
+ # Version 3.19.1
262
+ Release date: 2019-05-11
263
+
264
+ ### Fixed
265
+
266
+ * Fix access to specializations when Selenium::Driver is subclassed [James Mead]
267
+
268
+ # Version 3.19.0
269
+ Release date: 2019-05-09
270
+
271
+ ### Added
272
+
273
+
274
+ * Syntactic sugar `#once`, `#twice`, `#thrice`, `#exactly`, `#at_least`, `#at_most`, and `#times`
275
+ added to `have_selector`, `have_css`, `have_xpath`, and `have_text` RSpec matchers
276
+ * Support for multiple expression types in Selector definitions
277
+ * Reduced wirecalls for common actions in Selenium driver
278
+
279
+ ### Fixed
280
+
281
+ * Workaround Chrome 75 appending files to multiple file inputs
282
+ * Suppressed retry when detecting http vs https server connection
283
+
284
+ # Version 3.18.0
285
+ Release date: 2019-04-22
286
+
287
+ ### Added
288
+
289
+ * XPath Selector query optimized to make use of Regexp :text option in initial element find
290
+
291
+ ### Fixed
292
+
293
+ * Workaround issue where Chrome/chromedriver 74 can return the wrong error type when a click is intercepted
294
+
295
+ # Version 3.17.0
296
+ Release date: 2019-04-18
297
+
298
+ ### Added
299
+
300
+ * Initial support for selenium-webdriver 4.0.0.alpha1
301
+ * :button selector will now also match on `name` attribute
302
+
303
+ ### Fixed
304
+
305
+ * Suppress warnings generated by using selenium-webdriver 3.141.5926
306
+ * Mask Appium issue with finder visibility optimizations (non-optimal)
307
+
308
+ # Version 3.16.2
309
+ Release date: 2019-04-10
310
+
311
+ ### Fixed
312
+
313
+ * Fix Session#quit resetting of memoized document
314
+
315
+ # Version 3.16.1
316
+ Release date: 2019-03-30
317
+
318
+ ### Fixed
319
+
320
+ * Fix potential 'uninitialized constant' error when using the :selenium_chrome driver [jeffclemens-ab]
321
+
322
+ # Version 3.16
323
+ Release date: 2019-03-28
324
+
325
+ ### Changed
326
+
327
+ * Ruby 2.4.0+ is now required
328
+ * Selenium driver now defaults to using a persistent http client connection
329
+
330
+ ### Added
331
+
332
+ * :wait option in predicates now accepts `true` to selectively override when `Capybara.predicates_wait == false`
333
+
334
+ # Version 3.15
335
+ Release date: 2019-03-19
336
+
337
+ ### Added
338
+
339
+ * `attach_file` now supports a block mode on JS capable drivers to more accurately test user behavior when file inputs are hidden (beta)
340
+ * :table selector now supports `with_rows`, 'rows', `with_cols`, and 'cols' filters
341
+
342
+ ### Fixed
343
+
344
+ * Fix link selector when `Capybara.test_id` is set - Issue #2166 [bingjyang]
345
+
346
+
347
+ # Version 3.14
348
+ Release date: 2019-02-25
349
+
350
+ ### Added
351
+
352
+ * rack_test driver now supports reloading elements when the document changes - Issue #2157
353
+ * Selenium driver HTML5 drag-drop emulation now emits multiple move events so drag direction
354
+ is determinable [Erkki Eilonen, Thomas Walpole]
355
+ * Capybara.server_errors now defaults to [Exception] - Issue #2160 [Edgars Beigarts]
356
+ ### Fixed
357
+
358
+ * Workaround hover issue with FF 65 - Issue #2156
359
+ * Workaround chromedriver issue when setting blank strings to react controlled text fields
360
+ * 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
361
+
362
+ # Version 3.13.2
363
+ Release date: 2019-01-24
364
+
365
+ ### Fixed
366
+
367
+ * Remove extraneous output
368
+
369
+ # Version 3.13.1
370
+ Release date: 2019-01-24
371
+
372
+ ### Fixed
373
+
374
+ * Only use Selenium visibility optimization when JS atom is available - Issue #2151
375
+
376
+ # Version 3.13.0
377
+ Release date: 2019-01-23
378
+
379
+ ### Added
380
+
381
+ * Session#quit added
382
+ * #scroll_to added to allow scrolling page/elements to specified locations
383
+ * Speed optimizations around multiple element location and path generation when using the Selenium driver
384
+ * Support for locator type checking in custom selectors
385
+ * Allow configuration of gumbo use - defaults to off
386
+ * `assert_style`/`has_style`/`have_style` deprecated in favor of `assert_matches_style`/`matches_styles?`/`match_style`
387
+ * :style filter added to selectors
388
+
389
+ # Version 3.12.0
390
+ Release date: 2018-11-28
391
+
392
+ ### Added
393
+
394
+ * Support Ruby 2.6 endless range in Result#[] and query `:between` option
395
+ * Pre-registered headless firefox driver :selenium_headless [Andrew Havens]
396
+ * 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
397
+
398
+ ### Fixed
399
+
400
+ * Raise error if only :x or :y are passed as an offset to click methods
401
+
402
+ ### Removed
403
+
404
+ * Support for RSpec < 3.5
405
+
406
+ # Version 3.11.1
407
+ Release date: 2018-11-16
408
+
409
+ ### Fixed
410
+
411
+ * Fixed :link_or_button XPath generation when it has had an expression filter added
412
+
413
+ # Version 3.11.0
414
+ Release date: 2018-11-14
415
+
416
+ ### Added
417
+
418
+ * Ability for node filters to set detailed error messages
419
+ * `Capybara::HTML` Will use `nokogumbo` for HTML parsing if installed
420
+ * `Selector#locator_filter` added to allow for dynamic locator in selectors
421
+
422
+ ### Fixed
423
+
424
+ * Node filters are evaluated in the context of the Selector they are used in to ensure the correct options are used
425
+
426
+ # Version 3.10.1
427
+ Release date: 2018-11-03
428
+
429
+ ### Fixed
430
+
431
+ * Fix `aria-label` and `test_id` matching for `link_or_button` selector type - Issue #2125
432
+ * Fixed crash in element path creation for matcher failure messages - Issue #2120
433
+
434
+ # Version 3.10.0
435
+ Release date: 2018-10-23
436
+
437
+ ### Added
438
+
439
+ * :class filter can now check for class names starting with !
440
+ * Selector `xpath`/`css` expression definitions will get filter names from block parameters if not explicitly provided
441
+ * `any_of_selectors` assertions and matchers to complement `all_of_selectors` and `none_of_selectors`
442
+
443
+ ### Fixed
444
+
445
+ * Selector `css` expression definiton declared filters now work again
446
+ * Cleaned up warnings [Yuji Yaginuma]
447
+ * 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
448
+
449
+ # Version 3.9.0
450
+ Release date: 2018-10-03
451
+
452
+ ### Added
453
+
454
+ * Selenium with Chrome removes all cookies at session reset instead of just cookies from current domain if possible
455
+ * Support for Regexp for system :id and :class filters where possible
456
+ * `using_session` now accepts a session object as well as the name of the session for users who manually manage sessions
457
+ * The `:field` selector will now find `type = "hidden"` fields if the `type: "hidden"` filter option is provided
458
+
459
+ # Version 3.8.2
460
+ Release date: 2018-09-26
461
+
462
+ ### Fixed
463
+
464
+ * Fixed negated class selector option - Issue #2103
465
+
1
466
  # Version 3.8.1
2
467
  Release date: 2018-09-22
3
468
 
data/License.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  (The MIT License)
2
2
 
3
- Copyright (c) 2009-2016 Jonas Nicklas
3
+ Copyright (c) 2009-2018 Thomas Walpole, Jonas Nicklas
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining
6
6
  a copy of this software and associated documentation files (the