capybara 3.8.1 → 3.33.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 (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