capybara 3.0.0 → 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 (312) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +1 -1
  3. data/History.md +891 -12
  4. data/License.txt +1 -1
  5. data/README.md +257 -84
  6. data/lib/capybara/config.rb +29 -10
  7. data/lib/capybara/cucumber.rb +1 -1
  8. data/lib/capybara/driver/base.rb +22 -4
  9. data/lib/capybara/driver/node.rb +38 -9
  10. data/lib/capybara/dsl.rb +9 -7
  11. data/lib/capybara/helpers.rb +57 -8
  12. data/lib/capybara/minitest/spec.rb +185 -84
  13. data/lib/capybara/minitest.rb +264 -145
  14. data/lib/capybara/node/actions.rb +248 -124
  15. data/lib/capybara/node/base.rb +35 -20
  16. data/lib/capybara/node/document.rb +14 -2
  17. data/lib/capybara/node/document_matchers.rb +13 -15
  18. data/lib/capybara/node/element.rb +350 -113
  19. data/lib/capybara/node/finders.rb +104 -82
  20. data/lib/capybara/node/matchers.rb +363 -157
  21. data/lib/capybara/node/simple.rb +54 -15
  22. data/lib/capybara/node/whitespace_normalizer.rb +81 -0
  23. data/lib/capybara/queries/active_element_query.rb +18 -0
  24. data/lib/capybara/queries/ancestor_query.rb +9 -10
  25. data/lib/capybara/queries/base_query.rb +25 -18
  26. data/lib/capybara/queries/current_path_query.rb +16 -6
  27. data/lib/capybara/queries/match_query.rb +11 -0
  28. data/lib/capybara/queries/selector_query.rb +617 -104
  29. data/lib/capybara/queries/sibling_query.rb +9 -7
  30. data/lib/capybara/queries/style_query.rb +45 -0
  31. data/lib/capybara/queries/text_query.rb +40 -22
  32. data/lib/capybara/queries/title_query.rb +2 -2
  33. data/lib/capybara/rack_test/browser.rb +106 -31
  34. data/lib/capybara/rack_test/driver.rb +16 -7
  35. data/lib/capybara/rack_test/errors.rb +6 -0
  36. data/lib/capybara/rack_test/form.rb +74 -49
  37. data/lib/capybara/rack_test/node.rb +120 -47
  38. data/lib/capybara/rails.rb +1 -1
  39. data/lib/capybara/registration_container.rb +41 -0
  40. data/lib/capybara/registrations/drivers.rb +42 -0
  41. data/lib/capybara/registrations/patches/puma_ssl.rb +29 -0
  42. data/lib/capybara/registrations/servers.rb +66 -0
  43. data/lib/capybara/result.rb +87 -53
  44. data/lib/capybara/rspec/features.rb +8 -10
  45. data/lib/capybara/rspec/matcher_proxies.rb +39 -18
  46. data/lib/capybara/rspec/matchers/base.rb +113 -0
  47. data/lib/capybara/rspec/matchers/become_closed.rb +33 -0
  48. data/lib/capybara/rspec/matchers/compound.rb +88 -0
  49. data/lib/capybara/rspec/matchers/count_sugar.rb +37 -0
  50. data/lib/capybara/rspec/matchers/have_ancestor.rb +28 -0
  51. data/lib/capybara/rspec/matchers/have_current_path.rb +29 -0
  52. data/lib/capybara/rspec/matchers/have_selector.rb +69 -0
  53. data/lib/capybara/rspec/matchers/have_sibling.rb +27 -0
  54. data/lib/capybara/rspec/matchers/have_text.rb +33 -0
  55. data/lib/capybara/rspec/matchers/have_title.rb +29 -0
  56. data/lib/capybara/rspec/matchers/match_selector.rb +27 -0
  57. data/lib/capybara/rspec/matchers/match_style.rb +43 -0
  58. data/lib/capybara/rspec/matchers/spatial_sugar.rb +39 -0
  59. data/lib/capybara/rspec/matchers.rb +142 -315
  60. data/lib/capybara/rspec.rb +3 -2
  61. data/lib/capybara/selector/builders/css_builder.rb +84 -0
  62. data/lib/capybara/selector/builders/xpath_builder.rb +71 -0
  63. data/lib/capybara/selector/css.rb +85 -8
  64. data/lib/capybara/selector/definition/button.rb +68 -0
  65. data/lib/capybara/selector/definition/checkbox.rb +26 -0
  66. data/lib/capybara/selector/definition/css.rb +10 -0
  67. data/lib/capybara/selector/definition/datalist_input.rb +35 -0
  68. data/lib/capybara/selector/definition/datalist_option.rb +25 -0
  69. data/lib/capybara/selector/definition/element.rb +28 -0
  70. data/lib/capybara/selector/definition/field.rb +40 -0
  71. data/lib/capybara/selector/definition/fieldset.rb +14 -0
  72. data/lib/capybara/selector/definition/file_field.rb +13 -0
  73. data/lib/capybara/selector/definition/fillable_field.rb +33 -0
  74. data/lib/capybara/selector/definition/frame.rb +17 -0
  75. data/lib/capybara/selector/definition/id.rb +6 -0
  76. data/lib/capybara/selector/definition/label.rb +62 -0
  77. data/lib/capybara/selector/definition/link.rb +55 -0
  78. data/lib/capybara/selector/definition/link_or_button.rb +16 -0
  79. data/lib/capybara/selector/definition/option.rb +27 -0
  80. data/lib/capybara/selector/definition/radio_button.rb +27 -0
  81. data/lib/capybara/selector/definition/select.rb +81 -0
  82. data/lib/capybara/selector/definition/table.rb +109 -0
  83. data/lib/capybara/selector/definition/table_row.rb +21 -0
  84. data/lib/capybara/selector/definition/xpath.rb +5 -0
  85. data/lib/capybara/selector/definition.rb +280 -0
  86. data/lib/capybara/selector/filter.rb +1 -0
  87. data/lib/capybara/selector/filter_set.rb +72 -28
  88. data/lib/capybara/selector/filters/base.rb +45 -2
  89. data/lib/capybara/selector/filters/expression_filter.rb +5 -6
  90. data/lib/capybara/selector/filters/locator_filter.rb +29 -0
  91. data/lib/capybara/selector/filters/node_filter.rb +18 -4
  92. data/lib/capybara/selector/regexp_disassembler.rb +211 -0
  93. data/lib/capybara/selector/selector.rb +89 -200
  94. data/lib/capybara/selector/xpath_extensions.rb +17 -0
  95. data/lib/capybara/selector.rb +474 -534
  96. data/lib/capybara/selenium/atoms/getAttribute.min.js +1 -0
  97. data/lib/capybara/selenium/atoms/isDisplayed.min.js +1 -0
  98. data/lib/capybara/selenium/atoms/src/getAttribute.js +161 -0
  99. data/lib/capybara/selenium/atoms/src/isDisplayed.js +454 -0
  100. data/lib/capybara/selenium/driver.rb +270 -245
  101. data/lib/capybara/selenium/driver_specializations/chrome_driver.rb +117 -0
  102. data/lib/capybara/selenium/driver_specializations/edge_driver.rb +128 -0
  103. data/lib/capybara/selenium/driver_specializations/firefox_driver.rb +84 -0
  104. data/lib/capybara/selenium/driver_specializations/internet_explorer_driver.rb +26 -0
  105. data/lib/capybara/selenium/driver_specializations/safari_driver.rb +24 -0
  106. data/lib/capybara/selenium/extensions/file_input_click_emulation.rb +34 -0
  107. data/lib/capybara/selenium/extensions/find.rb +110 -0
  108. data/lib/capybara/selenium/extensions/html5_drag.rb +229 -0
  109. data/lib/capybara/selenium/extensions/modifier_keys_stack.rb +28 -0
  110. data/lib/capybara/selenium/extensions/scroll.rb +76 -0
  111. data/lib/capybara/selenium/node.rb +460 -170
  112. data/lib/capybara/selenium/nodes/chrome_node.rb +125 -0
  113. data/lib/capybara/selenium/nodes/edge_node.rb +110 -0
  114. data/lib/capybara/selenium/nodes/firefox_node.rb +136 -0
  115. data/lib/capybara/selenium/nodes/ie_node.rb +22 -0
  116. data/lib/capybara/selenium/nodes/safari_node.rb +118 -0
  117. data/lib/capybara/selenium/patches/atoms.rb +18 -0
  118. data/lib/capybara/selenium/patches/is_displayed.rb +16 -0
  119. data/lib/capybara/selenium/patches/logs.rb +45 -0
  120. data/lib/capybara/selenium/patches/pause_duration_fix.rb +9 -0
  121. data/lib/capybara/selenium/patches/persistent_client.rb +20 -0
  122. data/lib/capybara/server/animation_disabler.rb +80 -0
  123. data/lib/capybara/server/checker.rb +44 -0
  124. data/lib/capybara/server/middleware.rb +71 -0
  125. data/lib/capybara/server.rb +58 -67
  126. data/lib/capybara/session/config.rb +40 -6
  127. data/lib/capybara/session/matchers.rb +26 -19
  128. data/lib/capybara/session.rb +252 -194
  129. data/lib/capybara/spec/public/jquery.js +5 -5
  130. data/lib/capybara/spec/public/offset.js +6 -0
  131. data/lib/capybara/spec/public/test.js +126 -8
  132. data/lib/capybara/spec/session/accept_alert_spec.rb +11 -11
  133. data/lib/capybara/spec/session/accept_confirm_spec.rb +3 -3
  134. data/lib/capybara/spec/session/accept_prompt_spec.rb +9 -10
  135. data/lib/capybara/spec/session/active_element_spec.rb +31 -0
  136. data/lib/capybara/spec/session/all_spec.rb +135 -44
  137. data/lib/capybara/spec/session/ancestor_spec.rb +24 -19
  138. data/lib/capybara/spec/session/assert_all_of_selectors_spec.rb +67 -38
  139. data/lib/capybara/spec/session/{assert_current_path.rb → assert_current_path_spec.rb} +20 -18
  140. data/lib/capybara/spec/session/assert_selector_spec.rb +143 -0
  141. data/lib/capybara/spec/session/assert_style_spec.rb +26 -0
  142. data/lib/capybara/spec/session/{assert_text.rb → assert_text_spec.rb} +76 -52
  143. data/lib/capybara/spec/session/{assert_title.rb → assert_title_spec.rb} +12 -12
  144. data/lib/capybara/spec/session/attach_file_spec.rb +126 -72
  145. data/lib/capybara/spec/session/body_spec.rb +11 -13
  146. data/lib/capybara/spec/session/check_spec.rb +112 -51
  147. data/lib/capybara/spec/session/choose_spec.rb +62 -30
  148. data/lib/capybara/spec/session/click_button_spec.rb +227 -161
  149. data/lib/capybara/spec/session/click_link_or_button_spec.rb +49 -30
  150. data/lib/capybara/spec/session/click_link_spec.rb +89 -55
  151. data/lib/capybara/spec/session/current_scope_spec.rb +8 -8
  152. data/lib/capybara/spec/session/current_url_spec.rb +44 -37
  153. data/lib/capybara/spec/session/dismiss_confirm_spec.rb +3 -3
  154. data/lib/capybara/spec/session/dismiss_prompt_spec.rb +2 -2
  155. data/lib/capybara/spec/session/element/{assert_match_selector.rb → assert_match_selector_spec.rb} +11 -9
  156. data/lib/capybara/spec/session/element/match_css_spec.rb +18 -10
  157. data/lib/capybara/spec/session/element/match_xpath_spec.rb +8 -6
  158. data/lib/capybara/spec/session/element/matches_selector_spec.rb +70 -56
  159. data/lib/capybara/spec/session/evaluate_async_script_spec.rb +7 -7
  160. data/lib/capybara/spec/session/evaluate_script_spec.rb +28 -8
  161. data/lib/capybara/spec/session/execute_script_spec.rb +8 -7
  162. data/lib/capybara/spec/session/fill_in_spec.rb +110 -44
  163. data/lib/capybara/spec/session/find_button_spec.rb +23 -23
  164. data/lib/capybara/spec/session/find_by_id_spec.rb +8 -8
  165. data/lib/capybara/spec/session/find_field_spec.rb +33 -31
  166. data/lib/capybara/spec/session/find_link_spec.rb +42 -14
  167. data/lib/capybara/spec/session/find_spec.rb +251 -142
  168. data/lib/capybara/spec/session/first_spec.rb +45 -44
  169. data/lib/capybara/spec/session/frame/frame_title_spec.rb +6 -6
  170. data/lib/capybara/spec/session/frame/frame_url_spec.rb +6 -6
  171. data/lib/capybara/spec/session/frame/switch_to_frame_spec.rb +32 -20
  172. data/lib/capybara/spec/session/frame/within_frame_spec.rb +46 -19
  173. data/lib/capybara/spec/session/go_back_spec.rb +1 -1
  174. data/lib/capybara/spec/session/go_forward_spec.rb +1 -1
  175. data/lib/capybara/spec/session/has_all_selectors_spec.rb +23 -23
  176. data/lib/capybara/spec/session/has_ancestor_spec.rb +46 -0
  177. data/lib/capybara/spec/session/has_any_selectors_spec.rb +29 -0
  178. data/lib/capybara/spec/session/has_button_spec.rb +98 -12
  179. data/lib/capybara/spec/session/has_css_spec.rb +271 -137
  180. data/lib/capybara/spec/session/has_current_path_spec.rb +50 -35
  181. data/lib/capybara/spec/session/has_element_spec.rb +47 -0
  182. data/lib/capybara/spec/session/has_field_spec.rb +137 -58
  183. data/lib/capybara/spec/session/has_link_spec.rb +46 -6
  184. data/lib/capybara/spec/session/has_none_selectors_spec.rb +33 -31
  185. data/lib/capybara/spec/session/has_select_spec.rb +84 -50
  186. data/lib/capybara/spec/session/has_selector_spec.rb +117 -69
  187. data/lib/capybara/spec/session/has_sibling_spec.rb +50 -0
  188. data/lib/capybara/spec/session/has_table_spec.rb +181 -4
  189. data/lib/capybara/spec/session/has_text_spec.rb +101 -53
  190. data/lib/capybara/spec/session/has_title_spec.rb +19 -14
  191. data/lib/capybara/spec/session/has_xpath_spec.rb +56 -38
  192. data/lib/capybara/spec/session/{headers.rb → headers_spec.rb} +1 -1
  193. data/lib/capybara/spec/session/html_spec.rb +13 -6
  194. data/lib/capybara/spec/session/matches_style_spec.rb +37 -0
  195. data/lib/capybara/spec/session/node_spec.rb +958 -122
  196. data/lib/capybara/spec/session/node_wrapper_spec.rb +15 -12
  197. data/lib/capybara/spec/session/refresh_spec.rb +9 -7
  198. data/lib/capybara/spec/session/reset_session_spec.rb +65 -37
  199. data/lib/capybara/spec/session/{response_code.rb → response_code_spec.rb} +1 -1
  200. data/lib/capybara/spec/session/save_and_open_page_spec.rb +2 -2
  201. data/lib/capybara/spec/session/save_and_open_screenshot_spec.rb +5 -4
  202. data/lib/capybara/spec/session/save_page_spec.rb +41 -38
  203. data/lib/capybara/spec/session/save_screenshot_spec.rb +13 -11
  204. data/lib/capybara/spec/session/screenshot_spec.rb +2 -2
  205. data/lib/capybara/spec/session/scroll_spec.rb +119 -0
  206. data/lib/capybara/spec/session/select_spec.rb +102 -76
  207. data/lib/capybara/spec/session/selectors_spec.rb +51 -18
  208. data/lib/capybara/spec/session/sibling_spec.rb +9 -9
  209. data/lib/capybara/spec/session/text_spec.rb +26 -24
  210. data/lib/capybara/spec/session/title_spec.rb +8 -6
  211. data/lib/capybara/spec/session/uncheck_spec.rb +41 -22
  212. data/lib/capybara/spec/session/unselect_spec.rb +37 -37
  213. data/lib/capybara/spec/session/visit_spec.rb +79 -53
  214. data/lib/capybara/spec/session/window/become_closed_spec.rb +22 -19
  215. data/lib/capybara/spec/session/window/current_window_spec.rb +4 -3
  216. data/lib/capybara/spec/session/window/open_new_window_spec.rb +4 -3
  217. data/lib/capybara/spec/session/window/switch_to_window_spec.rb +25 -21
  218. data/lib/capybara/spec/session/window/window_opened_by_spec.rb +10 -5
  219. data/lib/capybara/spec/session/window/window_spec.rb +88 -54
  220. data/lib/capybara/spec/session/window/windows_spec.rb +11 -8
  221. data/lib/capybara/spec/session/window/within_window_spec.rb +17 -16
  222. data/lib/capybara/spec/session/within_spec.rb +82 -44
  223. data/lib/capybara/spec/spec_helper.rb +46 -52
  224. data/lib/capybara/spec/test_app.rb +148 -41
  225. data/lib/capybara/spec/views/animated.erb +49 -0
  226. data/lib/capybara/spec/views/form.erb +156 -42
  227. data/lib/capybara/spec/views/frame_child.erb +4 -3
  228. data/lib/capybara/spec/views/frame_one.erb +2 -1
  229. data/lib/capybara/spec/views/frame_parent.erb +1 -1
  230. data/lib/capybara/spec/views/frame_two.erb +1 -1
  231. data/lib/capybara/spec/views/initial_alert.erb +2 -1
  232. data/lib/capybara/spec/views/layout.erb +10 -0
  233. data/lib/capybara/spec/views/obscured.erb +47 -0
  234. data/lib/capybara/spec/views/offset.erb +33 -0
  235. data/lib/capybara/spec/views/path.erb +2 -2
  236. data/lib/capybara/spec/views/popup_one.erb +1 -1
  237. data/lib/capybara/spec/views/popup_two.erb +1 -1
  238. data/lib/capybara/spec/views/react.erb +45 -0
  239. data/lib/capybara/spec/views/scroll.erb +21 -0
  240. data/lib/capybara/spec/views/spatial.erb +31 -0
  241. data/lib/capybara/spec/views/tables.erb +68 -1
  242. data/lib/capybara/spec/views/with_animation.erb +81 -0
  243. data/lib/capybara/spec/views/with_base_tag.erb +2 -2
  244. data/lib/capybara/spec/views/with_dragula.erb +24 -0
  245. data/lib/capybara/spec/views/with_fixed_header_footer.erb +2 -1
  246. data/lib/capybara/spec/views/with_hover.erb +3 -2
  247. data/lib/capybara/spec/views/with_hover1.erb +10 -0
  248. data/lib/capybara/spec/views/with_html.erb +46 -11
  249. data/lib/capybara/spec/views/with_html5_svg.erb +20 -0
  250. data/lib/capybara/spec/views/with_jquery_animation.erb +24 -0
  251. data/lib/capybara/spec/views/with_js.erb +30 -5
  252. data/lib/capybara/spec/views/with_jstree.erb +26 -0
  253. data/lib/capybara/spec/views/with_namespace.erb +21 -0
  254. data/lib/capybara/spec/views/with_scope.erb +2 -2
  255. data/lib/capybara/spec/views/with_scope_other.erb +6 -0
  256. data/lib/capybara/spec/views/with_shadow.erb +31 -0
  257. data/lib/capybara/spec/views/with_slow_unload.erb +2 -1
  258. data/lib/capybara/spec/views/with_sortable_js.erb +21 -0
  259. data/lib/capybara/spec/views/with_unload_alert.erb +1 -0
  260. data/lib/capybara/spec/views/with_windows.erb +1 -1
  261. data/lib/capybara/spec/views/within_frames.erb +1 -1
  262. data/lib/capybara/version.rb +1 -1
  263. data/lib/capybara/window.rb +32 -26
  264. data/lib/capybara.rb +128 -104
  265. data/spec/basic_node_spec.rb +59 -34
  266. data/spec/capybara_spec.rb +65 -51
  267. data/spec/counter_spec.rb +35 -0
  268. data/spec/css_builder_spec.rb +101 -0
  269. data/spec/css_splitter_spec.rb +38 -0
  270. data/spec/dsl_spec.rb +84 -55
  271. data/spec/filter_set_spec.rb +24 -7
  272. data/spec/fixtures/certificate.pem +25 -0
  273. data/spec/fixtures/key.pem +27 -0
  274. data/spec/fixtures/selenium_driver_rspec_failure.rb +5 -5
  275. data/spec/fixtures/selenium_driver_rspec_success.rb +5 -5
  276. data/spec/minitest_spec.rb +49 -5
  277. data/spec/minitest_spec_spec.rb +92 -62
  278. data/spec/per_session_config_spec.rb +6 -6
  279. data/spec/rack_test_spec.rb +183 -115
  280. data/spec/regexp_dissassembler_spec.rb +250 -0
  281. data/spec/result_spec.rb +99 -39
  282. data/spec/rspec/features_spec.rb +28 -25
  283. data/spec/rspec/scenarios_spec.rb +10 -6
  284. data/spec/rspec/shared_spec_matchers.rb +418 -364
  285. data/spec/rspec/views_spec.rb +4 -3
  286. data/spec/rspec_matchers_spec.rb +35 -10
  287. data/spec/rspec_spec.rb +109 -85
  288. data/spec/sauce_spec_chrome.rb +43 -0
  289. data/spec/selector_spec.rb +392 -62
  290. data/spec/selenium_spec_chrome.rb +183 -41
  291. data/spec/selenium_spec_chrome_remote.rb +96 -0
  292. data/spec/selenium_spec_edge.rb +41 -8
  293. data/spec/selenium_spec_firefox.rb +228 -0
  294. data/spec/selenium_spec_firefox_remote.rb +94 -0
  295. data/spec/selenium_spec_ie.rb +129 -11
  296. data/spec/selenium_spec_safari.rb +162 -0
  297. data/spec/server_spec.rb +192 -81
  298. data/spec/session_spec.rb +52 -16
  299. data/spec/shared_selenium_node.rb +79 -0
  300. data/spec/shared_selenium_session.rb +460 -123
  301. data/spec/spec_helper.rb +124 -2
  302. data/spec/whitespace_normalizer_spec.rb +54 -0
  303. data/spec/xpath_builder_spec.rb +93 -0
  304. metadata +344 -45
  305. data/.yard/templates_custom/default/class/html/selectors.erb +0 -38
  306. data/.yard/templates_custom/default/class/html/setup.rb +0 -17
  307. data/.yard/yard_extensions.rb +0 -78
  308. data/lib/capybara/rspec/compound.rb +0 -90
  309. data/lib/capybara/spec/session/assert_selector.rb +0 -149
  310. data/lib/capybara/spec/session/source_spec.rb +0 -0
  311. data/lib/capybara/spec/views/with_title.erb +0 -5
  312. data/spec/selenium_spec_marionette.rb +0 -143
@@ -6,48 +6,54 @@ require 'capybara/dsl'
6
6
  module Capybara
7
7
  module Minitest
8
8
  module Assertions
9
- ## Assert text exists
9
+ ##
10
+ # Assert text exists
10
11
  #
12
+ # @!method assert_content
11
13
  # @!method assert_text
12
- # see {Capybara::Node::Matchers#assert_text}
14
+ # See {Capybara::Node::Matchers#assert_text}
13
15
 
14
- ## Assert text does not exist
16
+ ##
17
+ # Assert text does not exist
15
18
  #
19
+ # @!method refute_content
20
+ # @!method assert_no_content
21
+ # @!method refute_text
16
22
  # @!method assert_no_text
17
- # see {Capybara::Node::Matchers#assert_no_text}
23
+ # See {Capybara::Node::Matchers#assert_no_text}
18
24
 
19
25
  ##
20
26
  # Assertion that page title does match
21
27
  #
22
28
  # @!method assert_title
23
- # see {Capybara::Node::DocumentMatchers#assert_title}
29
+ # See {Capybara::Node::DocumentMatchers#assert_title}
24
30
 
25
31
  ##
26
32
  # Assertion that page title does not match
27
33
  #
28
34
  # @!method refute_title
29
35
  # @!method assert_no_title
30
- # see {Capybara::Node::DocumentMatchers#assert_no_title}
36
+ # See {Capybara::Node::DocumentMatchers#assert_no_title}
31
37
 
32
38
  ##
33
39
  # Assertion that current path matches
34
40
  #
35
41
  # @!method assert_current_path
36
- # see {Capybara::SessionMatchers#assert_current_path}
42
+ # See {Capybara::SessionMatchers#assert_current_path}
37
43
 
38
44
  ##
39
45
  # Assertion that current page does not match
40
46
  #
41
47
  # @!method refute_current_path
42
48
  # @!method assert_no_current_path
43
- # see {Capybara::SessionMatchers#assert_no_current_path}
49
+ # See {Capybara::SessionMatchers#assert_no_current_path}
44
50
 
45
- %w[assert_text assert_no_text assert_title assert_no_title assert_current_path assert_no_current_path].each do |assertion_name|
51
+ %w[text no_text title no_title current_path no_current_path].each do |assertion_name|
46
52
  class_eval <<-ASSERTION, __FILE__, __LINE__ + 1
47
- def #{assertion_name} *args
53
+ def assert_#{assertion_name}(*args, **kwargs, &optional_filter_block)
48
54
  self.assertions +=1
49
55
  subject, args = determine_subject(args)
50
- subject.#{assertion_name}(*args)
56
+ subject.assert_#{assertion_name}(*args, **kwargs, &optional_filter_block)
51
57
  rescue Capybara::ExpectationNotMet => e
52
58
  raise ::Minitest::Assertion, e.message
53
59
  end
@@ -61,55 +67,247 @@ module Capybara
61
67
  alias_method :assert_content, :assert_text
62
68
  alias_method :assert_no_content, :refute_text
63
69
 
64
- ## Assert selector exists on page
70
+ ##
71
+ # Assert selector exists on page
65
72
  #
66
73
  # @!method assert_selector
67
- # see {Capybara::Node::Matchers#assert_selector}
74
+ # See {Capybara::Node::Matchers#assert_selector}
68
75
 
69
- ## Assert selector does not exist on page
76
+ ##
77
+ # Assert selector does not exist on page
70
78
  #
79
+ # @!method refute_selector
71
80
  # @!method assert_no_selector
72
- # see {Capybara::Node::Matchers#assert_no_selector}
81
+ # See {Capybara::Node::Matchers#assert_no_selector}
73
82
 
74
- ## Assert element matches selector
83
+ ##
84
+ # Assert element matches selector
75
85
  #
76
86
  # @!method assert_matches_selector
77
- # see {Capybara::Node::Matchers#assert_matches_selector}
87
+ # See {Capybara::Node::Matchers#assert_matches_selector}
78
88
 
79
- ## Assert element does not match selector
89
+ ##
90
+ # Assert element does not match selector
80
91
  #
81
- # @!method assert_xpath
82
- # see {Capybara::Node::Matchers#assert_not_matches_selector}
92
+ # @!method refute_matches_selector
93
+ # @!method assert_not_matches_selector
94
+ # See {Capybara::Node::Matchers#assert_not_matches_selector}
95
+
96
+ ##
97
+ # Assert all of the provided selectors exist on page
98
+ #
99
+ # @!method assert_all_of_selectors
100
+ # See {Capybara::Node::Matchers#assert_all_of_selectors}
101
+
102
+ ##
103
+ # Assert none of the provided selectors exist on page
104
+ #
105
+ # @!method assert_none_of_selectors
106
+ # See {Capybara::Node::Matchers#assert_none_of_selectors}
107
+
108
+ ##
109
+ # Assert any of the provided selectors exist on page
110
+ #
111
+ # @!method assert_any_of_selectors
112
+ # See {Capybara::Node::Matchers#assert_any_of_selectors}
113
+
114
+ ##
115
+ # Assert element has the provided CSS styles
116
+ #
117
+ # @!method assert_matches_style
118
+ # See {Capybara::Node::Matchers#assert_matches_style}
119
+
120
+ ##
121
+ # Assert element has a matching sibling
122
+ #
123
+ # @!method assert_sibling
124
+ # See {Capybara::Node::Matchers#assert_sibling}
125
+
126
+ ##
127
+ # Assert element does not have a matching sibling
128
+ #
129
+ # @!method refute_sibling
130
+ # @!method assert_no_sibling
131
+ # See {Capybara::Node::Matchers#assert_no_sibling}
132
+
133
+ ##
134
+ # Assert element has a matching ancestor
135
+ #
136
+ # @!method assert_ancestor
137
+ # See {Capybara::Node::Matchers#assert_ancestor}
83
138
 
84
- %w[assert_selector assert_no_selector
85
- assert_all_of_selectors assert_none_of_selectors
86
- assert_matches_selector assert_not_matches_selector].each do |assertion_name|
139
+ ##
140
+ # Assert element does not have a matching ancestor
141
+ #
142
+ # @!method refute_ancestor
143
+ # @!method assert_no_ancestor
144
+ # See {Capybara::Node::Matchers#assert_no_ancestor}
145
+
146
+ %w[selector no_selector matches_style
147
+ all_of_selectors none_of_selectors any_of_selectors
148
+ matches_selector not_matches_selector
149
+ sibling no_sibling ancestor no_ancestor].each do |assertion_name|
87
150
  class_eval <<-ASSERTION, __FILE__, __LINE__ + 1
88
- def #{assertion_name} *args, &optional_filter_block
151
+ def assert_#{assertion_name} *args, &optional_filter_block
89
152
  self.assertions +=1
90
153
  subject, args = determine_subject(args)
91
- subject.#{assertion_name}(*args, &optional_filter_block)
154
+ subject.assert_#{assertion_name}(*args, &optional_filter_block)
92
155
  rescue Capybara::ExpectationNotMet => e
93
156
  raise ::Minitest::Assertion, e.message
94
157
  end
95
158
  ASSERTION
159
+ ruby2_keywords "assert_#{assertion_name}" if respond_to?(:ruby2_keywords)
96
160
  end
97
161
 
98
162
  alias_method :refute_selector, :assert_no_selector
99
163
  alias_method :refute_matches_selector, :assert_not_matches_selector
164
+ alias_method :refute_ancestor, :assert_no_ancestor
165
+ alias_method :refute_sibling, :assert_no_sibling
166
+
167
+ ##
168
+ # Assert that provided xpath exists
169
+ #
170
+ # @!method assert_xpath
171
+ # See {Capybara::Node::Matchers#has_xpath?}
172
+
173
+ ##
174
+ # Assert that provide xpath does not exist
175
+ #
176
+ # @!method refute_xpath
177
+ # @!method assert_no_xpath
178
+ # See {Capybara::Node::Matchers#has_no_xpath?}
179
+
180
+ ##
181
+ # Assert that provided css exists
182
+ #
183
+ # @!method assert_css
184
+ # See {Capybara::Node::Matchers#has_css?}
185
+
186
+ ##
187
+ # Assert that provided css does not exist
188
+ #
189
+ # @!method refute_css
190
+ # @!method assert_no_css
191
+ # See {Capybara::Node::Matchers#has_no_css?}
192
+
193
+ ##
194
+ # Assert that provided element exists
195
+ #
196
+ # @!method assert_element
197
+ # See {Capybara::Node::Matchers#has_element?}
198
+
199
+ ##
200
+ # Assert that provided element does not exist
201
+ #
202
+ # @!method assert_no_element
203
+ # @!method refute_element
204
+ # See {Capybara::Node::Matchers#has_no_element?}
205
+
206
+ ##
207
+ # Assert that provided link exists
208
+ #
209
+ # @!method assert_link
210
+ # See {Capybara::Node::Matchers#has_link?}
100
211
 
101
- %w[xpath css link button field select table].each do |selector_type|
212
+ ##
213
+ # Assert that provided link does not exist
214
+ #
215
+ # @!method assert_no_link
216
+ # @!method refute_link
217
+ # See {Capybara::Node::Matchers#has_no_link?}
218
+
219
+ ##
220
+ # Assert that provided button exists
221
+ #
222
+ # @!method assert_button
223
+ # See {Capybara::Node::Matchers#has_button?}
224
+
225
+ ##
226
+ # Assert that provided button does not exist
227
+ #
228
+ # @!method refute_button
229
+ # @!method assert_no_button
230
+ # See {Capybara::Node::Matchers#has_no_button?}
231
+
232
+ ##
233
+ # Assert that provided field exists
234
+ #
235
+ # @!method assert_field
236
+ # See {Capybara::Node::Matchers#has_field?}
237
+
238
+ ##
239
+ # Assert that provided field does not exist
240
+ #
241
+ # @!method refute_field
242
+ # @!method assert_no_field
243
+ # See {Capybara::Node::Matchers#has_no_field?}
244
+
245
+ ##
246
+ # Assert that provided checked field exists
247
+ #
248
+ # @!method assert_checked_field
249
+ # See {Capybara::Node::Matchers#has_checked_field?}
250
+
251
+ ##
252
+ # Assert that provided checked_field does not exist
253
+ #
254
+ # @!method assert_no_checked_field
255
+ # @!method refute_checked_field
256
+ # See {Capybara::Node::Matchers#has_no_checked_field?}
257
+
258
+ ##
259
+ # Assert that provided unchecked field exists
260
+ #
261
+ # @!method assert_unchecked_field
262
+ # See {Capybara::Node::Matchers#has_unchecked_field?}
263
+
264
+ ##
265
+ # Assert that provided unchecked field does not exist
266
+ #
267
+ # @!method assert_no_unchecked_field
268
+ # @!method refute_unchecked_field
269
+ # See {Capybara::Node::Matchers#has_no_unchecked_field?}
270
+
271
+ ##
272
+ # Assert that provided select exists
273
+ #
274
+ # @!method assert_select
275
+ # See {Capybara::Node::Matchers#has_select?}
276
+
277
+ ##
278
+ # Assert that provided select does not exist
279
+ #
280
+ # @!method refute_select
281
+ # @!method assert_no_select
282
+ # See {Capybara::Node::Matchers#has_no_select?}
283
+
284
+ ##
285
+ # Assert that provided table exists
286
+ #
287
+ # @!method assert_table
288
+ # See {Capybara::Node::Matchers#has_table?}
289
+
290
+ ##
291
+ # Assert that provided table does not exist
292
+ #
293
+ # @!method refute_table
294
+ # @!method assert_no_table
295
+ # See {Capybara::Node::Matchers#has_no_table?}
296
+
297
+ %w[xpath css element link button field select table].each do |selector_type|
102
298
  define_method "assert_#{selector_type}" do |*args, &optional_filter_block|
103
299
  subject, args = determine_subject(args)
104
300
  locator, options = extract_locator(args)
105
- assert_selector(subject, selector_type.to_sym, locator, options, &optional_filter_block)
301
+ assert_selector(subject, selector_type.to_sym, locator, **options, &optional_filter_block)
106
302
  end
303
+ ruby2_keywords "assert_#{selector_type}" if respond_to?(:ruby2_keywords)
107
304
 
108
305
  define_method "assert_no_#{selector_type}" do |*args, &optional_filter_block|
109
306
  subject, args = determine_subject(args)
110
307
  locator, options = extract_locator(args)
111
- assert_no_selector(subject, selector_type.to_sym, locator, options, &optional_filter_block)
308
+ assert_no_selector(subject, selector_type.to_sym, locator, **options, &optional_filter_block)
112
309
  end
310
+ ruby2_keywords "assert_no_#{selector_type}" if respond_to?(:ruby2_keywords)
113
311
  alias_method "refute_#{selector_type}", "assert_no_#{selector_type}"
114
312
  end
115
313
 
@@ -117,145 +315,66 @@ module Capybara
117
315
  define_method "assert_#{field_type}_field" do |*args, &optional_filter_block|
118
316
  subject, args = determine_subject(args)
119
317
  locator, options = extract_locator(args)
120
- assert_selector(subject, :field, locator, options.merge(field_type.to_sym => true), &optional_filter_block)
318
+ assert_selector(subject, :field, locator, **options.merge(field_type.to_sym => true), &optional_filter_block)
121
319
  end
320
+ ruby2_keywords "assert_#{field_type}_field" if respond_to?(:ruby2_keywords)
122
321
 
123
322
  define_method "assert_no_#{field_type}_field" do |*args, &optional_filter_block|
124
323
  subject, args = determine_subject(args)
125
324
  locator, options = extract_locator(args)
126
- assert_no_selector(subject, :field, locator, options.merge(field_type.to_sym => true), &optional_filter_block)
325
+ assert_no_selector(
326
+ subject,
327
+ :field,
328
+ locator,
329
+ **options.merge(field_type.to_sym => true),
330
+ &optional_filter_block
331
+ )
127
332
  end
333
+ ruby2_keywords "assert_no_#{field_type}_field" if respond_to?(:ruby2_keywords)
128
334
  alias_method "refute_#{field_type}_field", "assert_no_#{field_type}_field"
129
335
  end
130
336
 
337
+ ##
338
+ # Assert that element matches xpath
339
+ #
340
+ # @!method assert_matches_xpath
341
+ # See {Capybara::Node::Matchers#matches_xpath?}
342
+
343
+ ##
344
+ # Assert that element does not match xpath
345
+ #
346
+ # @!method refute_matches_xpath
347
+ # @!method assert_not_matches_xpath
348
+ # See {Capybara::Node::Matchers#not_matches_xpath?}
349
+
350
+ ##
351
+ # Assert that element matches css
352
+ #
353
+ # @!method assert_matches_css
354
+ # See {Capybara::Node::Matchers#matches_css?}
355
+
356
+ ##
357
+ # Assert that element matches css
358
+ #
359
+ # @!method refute_matches_css
360
+ # @!method assert_not_matches_css
361
+ # See {Capybara::Node::Matchers#not_matches_css?}
362
+
131
363
  %w[xpath css].each do |selector_type|
132
364
  define_method "assert_matches_#{selector_type}" do |*args, &optional_filter_block|
133
365
  subject, args = determine_subject(args)
134
366
  assert_matches_selector(subject, selector_type.to_sym, *args, &optional_filter_block)
135
367
  end
368
+ ruby2_keywords "assert_matches_#{selector_type}" if respond_to?(:ruby2_keywords)
136
369
 
137
370
  define_method "assert_not_matches_#{selector_type}" do |*args, &optional_filter_block|
138
371
  subject, args = determine_subject(args)
139
372
  assert_not_matches_selector(subject, selector_type.to_sym, *args, &optional_filter_block)
140
373
  end
374
+ ruby2_keywords "assert_not_matches_#{selector_type}" if respond_to?(:ruby2_keywords)
141
375
  alias_method "refute_matches_#{selector_type}", "assert_not_matches_#{selector_type}"
142
376
  end
143
377
 
144
- ##
145
- # Assertion that there is xpath
146
- #
147
- # @!method assert_xpath
148
- # see Capybara::Node::Matchers#has_xpath?
149
-
150
- ##
151
- # Assertion that there is no xpath
152
- #
153
- # @!method refute_xpath
154
- # @!method assert_no_xpath
155
- # see Capybara::Node::Matchers#has_no_xpath?
156
-
157
- ##
158
- # Assertion that there is css
159
- #
160
- # @!method assert_css
161
- # see Capybara::Node::Matchers#has_css?
162
-
163
- ##
164
- # Assertion that there is no css
165
- #
166
- # @!method refute_css
167
- # @!method assert_no_css
168
- # see Capybara::Node::Matchers#has_no_css?
169
-
170
- ##
171
- # Assertion that there is link
172
- #
173
- # @!method assert_link
174
- # see {Capybara::Node::Matchers#has_link?}
175
-
176
- ##
177
- # Assertion that there is no link
178
- #
179
- # @!method assert_no_link
180
- # @!method refute_link
181
- # see {Capybara::Node::Matchers#has_no_link?}
182
-
183
- ##
184
- # Assertion that there is button
185
- #
186
- # @!method assert_button
187
- # see {Capybara::Node::Matchers#has_button?}
188
-
189
- ##
190
- # Assertion that there is no button
191
- #
192
- # @!method refute_button
193
- # @!method assert_no_button
194
- # see {Capybara::Node::Matchers#has_no_button?}
195
-
196
- ##
197
- # Assertion that there is field
198
- #
199
- # @!method assert_field
200
- # see {Capybara::Node::Matchers#has_field?}
201
-
202
- ##
203
- # Assertion that there is no field
204
- #
205
- # @!method refute_field
206
- # @!method assert_no_field
207
- # see {Capybara::Node::Matchers#has_no_field?}
208
-
209
- ##
210
- # Assertion that there is checked_field
211
- #
212
- # @!method assert_checked_field
213
- # see {Capybara::Node::Matchers#has_checked_field?}
214
-
215
- ##
216
- # Assertion that there is no checked_field
217
- #
218
- # @!method assert_no_checked_field
219
- # @!method refute_checked_field
220
-
221
- ##
222
- # Assertion that there is unchecked_field
223
- #
224
- # @!method assert_unchecked_field
225
- # see {Capybara::Node::Matchers#has_unchecked_field?}
226
-
227
- ##
228
- # Assertion that there is no unchecked_field
229
- #
230
- # @!method assert_no_unchecked_field
231
- # @!method refute_unchecked_field
232
-
233
- ##
234
- # Assertion that there is select
235
- #
236
- # @!method assert_select
237
- # see {Capybara::Node::Matchers#has_select?}
238
-
239
- ##
240
- # Assertion that there is no select
241
- #
242
- # @!method refute_select
243
- # @!method assert_no_select
244
- # see {Capybara::Node::Matchers#has_no_select?}
245
-
246
- ##
247
- # Assertion that there is table
248
- #
249
- # @!method assert_table
250
- # see {Capybara::Node::Matchers#has_table?}
251
-
252
- ##
253
- # Assertion that there is no table
254
- #
255
- # @!method refute_table
256
- # @!method assert_no_table
257
- # see {Capybara::Node::Matchers#has_no_table?}
258
-
259
378
  private
260
379
 
261
380
  def determine_subject(args)