mega-max-rb 0.0.1

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 (319) hide show
  1. checksums.yaml +7 -0
  2. data/capybara-3.40.0/History.md +2043 -0
  3. data/capybara-3.40.0/License.txt +22 -0
  4. data/capybara-3.40.0/README.md +1264 -0
  5. data/capybara-3.40.0/lib/capybara/config.rb +104 -0
  6. data/capybara-3.40.0/lib/capybara/cucumber.rb +27 -0
  7. data/capybara-3.40.0/lib/capybara/driver/base.rb +178 -0
  8. data/capybara-3.40.0/lib/capybara/driver/node.rb +143 -0
  9. data/capybara-3.40.0/lib/capybara/dsl.rb +59 -0
  10. data/capybara-3.40.0/lib/capybara/helpers.rb +127 -0
  11. data/capybara-3.40.0/lib/capybara/minitest/spec.rb +279 -0
  12. data/capybara-3.40.0/lib/capybara/minitest.rb +398 -0
  13. data/capybara-3.40.0/lib/capybara/node/actions.rb +420 -0
  14. data/capybara-3.40.0/lib/capybara/node/base.rb +144 -0
  15. data/capybara-3.40.0/lib/capybara/node/document.rb +48 -0
  16. data/capybara-3.40.0/lib/capybara/node/document_matchers.rb +67 -0
  17. data/capybara-3.40.0/lib/capybara/node/element.rb +613 -0
  18. data/capybara-3.40.0/lib/capybara/node/finders.rb +335 -0
  19. data/capybara-3.40.0/lib/capybara/node/matchers.rb +908 -0
  20. data/capybara-3.40.0/lib/capybara/node/simple.rb +216 -0
  21. data/capybara-3.40.0/lib/capybara/node/whitespace_normalizer.rb +81 -0
  22. data/capybara-3.40.0/lib/capybara/queries/active_element_query.rb +18 -0
  23. data/capybara-3.40.0/lib/capybara/queries/ancestor_query.rb +28 -0
  24. data/capybara-3.40.0/lib/capybara/queries/base_query.rb +106 -0
  25. data/capybara-3.40.0/lib/capybara/queries/current_path_query.rb +61 -0
  26. data/capybara-3.40.0/lib/capybara/queries/match_query.rb +26 -0
  27. data/capybara-3.40.0/lib/capybara/queries/selector_query.rb +761 -0
  28. data/capybara-3.40.0/lib/capybara/queries/sibling_query.rb +27 -0
  29. data/capybara-3.40.0/lib/capybara/queries/style_query.rb +45 -0
  30. data/capybara-3.40.0/lib/capybara/queries/text_query.rb +116 -0
  31. data/capybara-3.40.0/lib/capybara/queries/title_query.rb +39 -0
  32. data/capybara-3.40.0/lib/capybara/rack_test/browser.rb +200 -0
  33. data/capybara-3.40.0/lib/capybara/rack_test/css_handlers.rb +13 -0
  34. data/capybara-3.40.0/lib/capybara/rack_test/driver.rb +110 -0
  35. data/capybara-3.40.0/lib/capybara/rack_test/errors.rb +6 -0
  36. data/capybara-3.40.0/lib/capybara/rack_test/form.rb +149 -0
  37. data/capybara-3.40.0/lib/capybara/rack_test/node.rb +324 -0
  38. data/capybara-3.40.0/lib/capybara/rails.rb +16 -0
  39. data/capybara-3.40.0/lib/capybara/registration_container.rb +41 -0
  40. data/capybara-3.40.0/lib/capybara/registrations/drivers.rb +42 -0
  41. data/capybara-3.40.0/lib/capybara/registrations/patches/puma_ssl.rb +29 -0
  42. data/capybara-3.40.0/lib/capybara/registrations/servers.rb +66 -0
  43. data/capybara-3.40.0/lib/capybara/result.rb +186 -0
  44. data/capybara-3.40.0/lib/capybara/rspec/features.rb +23 -0
  45. data/capybara-3.40.0/lib/capybara/rspec/matcher_proxies.rb +82 -0
  46. data/capybara-3.40.0/lib/capybara/rspec/matchers/base.rb +113 -0
  47. data/capybara-3.40.0/lib/capybara/rspec/matchers/become_closed.rb +33 -0
  48. data/capybara-3.40.0/lib/capybara/rspec/matchers/compound.rb +88 -0
  49. data/capybara-3.40.0/lib/capybara/rspec/matchers/count_sugar.rb +37 -0
  50. data/capybara-3.40.0/lib/capybara/rspec/matchers/have_ancestor.rb +28 -0
  51. data/capybara-3.40.0/lib/capybara/rspec/matchers/have_current_path.rb +29 -0
  52. data/capybara-3.40.0/lib/capybara/rspec/matchers/have_selector.rb +69 -0
  53. data/capybara-3.40.0/lib/capybara/rspec/matchers/have_sibling.rb +27 -0
  54. data/capybara-3.40.0/lib/capybara/rspec/matchers/have_text.rb +33 -0
  55. data/capybara-3.40.0/lib/capybara/rspec/matchers/have_title.rb +29 -0
  56. data/capybara-3.40.0/lib/capybara/rspec/matchers/match_selector.rb +27 -0
  57. data/capybara-3.40.0/lib/capybara/rspec/matchers/match_style.rb +43 -0
  58. data/capybara-3.40.0/lib/capybara/rspec/matchers/spatial_sugar.rb +39 -0
  59. data/capybara-3.40.0/lib/capybara/rspec/matchers.rb +207 -0
  60. data/capybara-3.40.0/lib/capybara/rspec.rb +31 -0
  61. data/capybara-3.40.0/lib/capybara/selector/builders/css_builder.rb +84 -0
  62. data/capybara-3.40.0/lib/capybara/selector/builders/xpath_builder.rb +71 -0
  63. data/capybara-3.40.0/lib/capybara/selector/css.rb +102 -0
  64. data/capybara-3.40.0/lib/capybara/selector/definition/button.rb +68 -0
  65. data/capybara-3.40.0/lib/capybara/selector/definition/checkbox.rb +26 -0
  66. data/capybara-3.40.0/lib/capybara/selector/definition/css.rb +10 -0
  67. data/capybara-3.40.0/lib/capybara/selector/definition/datalist_input.rb +35 -0
  68. data/capybara-3.40.0/lib/capybara/selector/definition/datalist_option.rb +25 -0
  69. data/capybara-3.40.0/lib/capybara/selector/definition/element.rb +28 -0
  70. data/capybara-3.40.0/lib/capybara/selector/definition/field.rb +40 -0
  71. data/capybara-3.40.0/lib/capybara/selector/definition/fieldset.rb +14 -0
  72. data/capybara-3.40.0/lib/capybara/selector/definition/file_field.rb +13 -0
  73. data/capybara-3.40.0/lib/capybara/selector/definition/fillable_field.rb +33 -0
  74. data/capybara-3.40.0/lib/capybara/selector/definition/frame.rb +17 -0
  75. data/capybara-3.40.0/lib/capybara/selector/definition/id.rb +6 -0
  76. data/capybara-3.40.0/lib/capybara/selector/definition/label.rb +62 -0
  77. data/capybara-3.40.0/lib/capybara/selector/definition/link.rb +55 -0
  78. data/capybara-3.40.0/lib/capybara/selector/definition/link_or_button.rb +16 -0
  79. data/capybara-3.40.0/lib/capybara/selector/definition/option.rb +27 -0
  80. data/capybara-3.40.0/lib/capybara/selector/definition/radio_button.rb +27 -0
  81. data/capybara-3.40.0/lib/capybara/selector/definition/select.rb +81 -0
  82. data/capybara-3.40.0/lib/capybara/selector/definition/table.rb +109 -0
  83. data/capybara-3.40.0/lib/capybara/selector/definition/table_row.rb +21 -0
  84. data/capybara-3.40.0/lib/capybara/selector/definition/xpath.rb +5 -0
  85. data/capybara-3.40.0/lib/capybara/selector/definition.rb +280 -0
  86. data/capybara-3.40.0/lib/capybara/selector/filter.rb +5 -0
  87. data/capybara-3.40.0/lib/capybara/selector/filter_set.rb +121 -0
  88. data/capybara-3.40.0/lib/capybara/selector/filters/base.rb +77 -0
  89. data/capybara-3.40.0/lib/capybara/selector/filters/expression_filter.rb +22 -0
  90. data/capybara-3.40.0/lib/capybara/selector/filters/locator_filter.rb +29 -0
  91. data/capybara-3.40.0/lib/capybara/selector/filters/node_filter.rb +31 -0
  92. data/capybara-3.40.0/lib/capybara/selector/regexp_disassembler.rb +211 -0
  93. data/capybara-3.40.0/lib/capybara/selector/selector.rb +159 -0
  94. data/capybara-3.40.0/lib/capybara/selector/xpath_extensions.rb +17 -0
  95. data/capybara-3.40.0/lib/capybara/selector.rb +494 -0
  96. data/capybara-3.40.0/lib/capybara/selenium/atoms/getAttribute.min.js +1 -0
  97. data/capybara-3.40.0/lib/capybara/selenium/atoms/isDisplayed.min.js +1 -0
  98. data/capybara-3.40.0/lib/capybara/selenium/atoms/src/getAttribute.js +161 -0
  99. data/capybara-3.40.0/lib/capybara/selenium/atoms/src/isDisplayed.js +454 -0
  100. data/capybara-3.40.0/lib/capybara/selenium/driver.rb +517 -0
  101. data/capybara-3.40.0/lib/capybara/selenium/driver_specializations/chrome_driver.rb +117 -0
  102. data/capybara-3.40.0/lib/capybara/selenium/driver_specializations/edge_driver.rb +128 -0
  103. data/capybara-3.40.0/lib/capybara/selenium/driver_specializations/firefox_driver.rb +84 -0
  104. data/capybara-3.40.0/lib/capybara/selenium/driver_specializations/internet_explorer_driver.rb +26 -0
  105. data/capybara-3.40.0/lib/capybara/selenium/driver_specializations/safari_driver.rb +24 -0
  106. data/capybara-3.40.0/lib/capybara/selenium/extensions/file_input_click_emulation.rb +34 -0
  107. data/capybara-3.40.0/lib/capybara/selenium/extensions/find.rb +110 -0
  108. data/capybara-3.40.0/lib/capybara/selenium/extensions/html5_drag.rb +229 -0
  109. data/capybara-3.40.0/lib/capybara/selenium/extensions/modifier_keys_stack.rb +28 -0
  110. data/capybara-3.40.0/lib/capybara/selenium/extensions/scroll.rb +76 -0
  111. data/capybara-3.40.0/lib/capybara/selenium/node.rb +636 -0
  112. data/capybara-3.40.0/lib/capybara/selenium/nodes/chrome_node.rb +125 -0
  113. data/capybara-3.40.0/lib/capybara/selenium/nodes/edge_node.rb +110 -0
  114. data/capybara-3.40.0/lib/capybara/selenium/nodes/firefox_node.rb +136 -0
  115. data/capybara-3.40.0/lib/capybara/selenium/nodes/ie_node.rb +22 -0
  116. data/capybara-3.40.0/lib/capybara/selenium/nodes/safari_node.rb +118 -0
  117. data/capybara-3.40.0/lib/capybara/selenium/patches/atoms.rb +18 -0
  118. data/capybara-3.40.0/lib/capybara/selenium/patches/is_displayed.rb +16 -0
  119. data/capybara-3.40.0/lib/capybara/selenium/patches/logs.rb +45 -0
  120. data/capybara-3.40.0/lib/capybara/selenium/patches/pause_duration_fix.rb +9 -0
  121. data/capybara-3.40.0/lib/capybara/selenium/patches/persistent_client.rb +20 -0
  122. data/capybara-3.40.0/lib/capybara/server/animation_disabler.rb +80 -0
  123. data/capybara-3.40.0/lib/capybara/server/checker.rb +44 -0
  124. data/capybara-3.40.0/lib/capybara/server/middleware.rb +71 -0
  125. data/capybara-3.40.0/lib/capybara/server.rb +126 -0
  126. data/capybara-3.40.0/lib/capybara/session/config.rb +128 -0
  127. data/capybara-3.40.0/lib/capybara/session/matchers.rb +87 -0
  128. data/capybara-3.40.0/lib/capybara/session.rb +951 -0
  129. data/capybara-3.40.0/lib/capybara/spec/fixtures/another_test_file.txt +1 -0
  130. data/capybara-3.40.0/lib/capybara/spec/fixtures/capybara.jpg +3 -0
  131. data/capybara-3.40.0/lib/capybara/spec/fixtures/no_extension +1 -0
  132. data/capybara-3.40.0/lib/capybara/spec/fixtures/test_file.txt +1 -0
  133. data/capybara-3.40.0/lib/capybara/spec/public/jquery-ui.js +13 -0
  134. data/capybara-3.40.0/lib/capybara/spec/public/jquery.js +5 -0
  135. data/capybara-3.40.0/lib/capybara/spec/public/offset.js +6 -0
  136. data/capybara-3.40.0/lib/capybara/spec/public/test.js +284 -0
  137. data/capybara-3.40.0/lib/capybara/spec/session/accept_alert_spec.rb +81 -0
  138. data/capybara-3.40.0/lib/capybara/spec/session/accept_confirm_spec.rb +32 -0
  139. data/capybara-3.40.0/lib/capybara/spec/session/accept_prompt_spec.rb +78 -0
  140. data/capybara-3.40.0/lib/capybara/spec/session/active_element_spec.rb +31 -0
  141. data/capybara-3.40.0/lib/capybara/spec/session/all_spec.rb +274 -0
  142. data/capybara-3.40.0/lib/capybara/spec/session/ancestor_spec.rb +88 -0
  143. data/capybara-3.40.0/lib/capybara/spec/session/assert_all_of_selectors_spec.rb +140 -0
  144. data/capybara-3.40.0/lib/capybara/spec/session/assert_current_path_spec.rb +75 -0
  145. data/capybara-3.40.0/lib/capybara/spec/session/assert_selector_spec.rb +143 -0
  146. data/capybara-3.40.0/lib/capybara/spec/session/assert_style_spec.rb +26 -0
  147. data/capybara-3.40.0/lib/capybara/spec/session/assert_text_spec.rb +258 -0
  148. data/capybara-3.40.0/lib/capybara/spec/session/assert_title_spec.rb +93 -0
  149. data/capybara-3.40.0/lib/capybara/spec/session/attach_file_spec.rb +222 -0
  150. data/capybara-3.40.0/lib/capybara/spec/session/body_spec.rb +23 -0
  151. data/capybara-3.40.0/lib/capybara/spec/session/check_spec.rb +251 -0
  152. data/capybara-3.40.0/lib/capybara/spec/session/choose_spec.rb +127 -0
  153. data/capybara-3.40.0/lib/capybara/spec/session/click_button_spec.rb +517 -0
  154. data/capybara-3.40.0/lib/capybara/spec/session/click_link_or_button_spec.rb +138 -0
  155. data/capybara-3.40.0/lib/capybara/spec/session/click_link_spec.rb +240 -0
  156. data/capybara-3.40.0/lib/capybara/spec/session/current_scope_spec.rb +31 -0
  157. data/capybara-3.40.0/lib/capybara/spec/session/current_url_spec.rb +125 -0
  158. data/capybara-3.40.0/lib/capybara/spec/session/dismiss_confirm_spec.rb +36 -0
  159. data/capybara-3.40.0/lib/capybara/spec/session/dismiss_prompt_spec.rb +21 -0
  160. data/capybara-3.40.0/lib/capybara/spec/session/element/assert_match_selector_spec.rb +38 -0
  161. data/capybara-3.40.0/lib/capybara/spec/session/element/match_css_spec.rb +31 -0
  162. data/capybara-3.40.0/lib/capybara/spec/session/element/match_xpath_spec.rb +25 -0
  163. data/capybara-3.40.0/lib/capybara/spec/session/element/matches_selector_spec.rb +120 -0
  164. data/capybara-3.40.0/lib/capybara/spec/session/evaluate_async_script_spec.rb +23 -0
  165. data/capybara-3.40.0/lib/capybara/spec/session/evaluate_script_spec.rb +49 -0
  166. data/capybara-3.40.0/lib/capybara/spec/session/execute_script_spec.rb +28 -0
  167. data/capybara-3.40.0/lib/capybara/spec/session/fill_in_spec.rb +292 -0
  168. data/capybara-3.40.0/lib/capybara/spec/session/find_button_spec.rb +74 -0
  169. data/capybara-3.40.0/lib/capybara/spec/session/find_by_id_spec.rb +33 -0
  170. data/capybara-3.40.0/lib/capybara/spec/session/find_field_spec.rb +113 -0
  171. data/capybara-3.40.0/lib/capybara/spec/session/find_link_spec.rb +80 -0
  172. data/capybara-3.40.0/lib/capybara/spec/session/find_spec.rb +545 -0
  173. data/capybara-3.40.0/lib/capybara/spec/session/first_spec.rb +156 -0
  174. data/capybara-3.40.0/lib/capybara/spec/session/frame/frame_title_spec.rb +23 -0
  175. data/capybara-3.40.0/lib/capybara/spec/session/frame/frame_url_spec.rb +23 -0
  176. data/capybara-3.40.0/lib/capybara/spec/session/frame/switch_to_frame_spec.rb +116 -0
  177. data/capybara-3.40.0/lib/capybara/spec/session/frame/within_frame_spec.rb +114 -0
  178. data/capybara-3.40.0/lib/capybara/spec/session/go_back_spec.rb +12 -0
  179. data/capybara-3.40.0/lib/capybara/spec/session/go_forward_spec.rb +14 -0
  180. data/capybara-3.40.0/lib/capybara/spec/session/has_all_selectors_spec.rb +69 -0
  181. data/capybara-3.40.0/lib/capybara/spec/session/has_ancestor_spec.rb +46 -0
  182. data/capybara-3.40.0/lib/capybara/spec/session/has_any_selectors_spec.rb +29 -0
  183. data/capybara-3.40.0/lib/capybara/spec/session/has_button_spec.rb +150 -0
  184. data/capybara-3.40.0/lib/capybara/spec/session/has_css_spec.rb +375 -0
  185. data/capybara-3.40.0/lib/capybara/spec/session/has_current_path_spec.rb +151 -0
  186. data/capybara-3.40.0/lib/capybara/spec/session/has_element_spec.rb +47 -0
  187. data/capybara-3.40.0/lib/capybara/spec/session/has_field_spec.rb +389 -0
  188. data/capybara-3.40.0/lib/capybara/spec/session/has_link_spec.rb +79 -0
  189. data/capybara-3.40.0/lib/capybara/spec/session/has_none_selectors_spec.rb +78 -0
  190. data/capybara-3.40.0/lib/capybara/spec/session/has_select_spec.rb +316 -0
  191. data/capybara-3.40.0/lib/capybara/spec/session/has_selector_spec.rb +217 -0
  192. data/capybara-3.40.0/lib/capybara/spec/session/has_sibling_spec.rb +50 -0
  193. data/capybara-3.40.0/lib/capybara/spec/session/has_table_spec.rb +209 -0
  194. data/capybara-3.40.0/lib/capybara/spec/session/has_text_spec.rb +375 -0
  195. data/capybara-3.40.0/lib/capybara/spec/session/has_title_spec.rb +71 -0
  196. data/capybara-3.40.0/lib/capybara/spec/session/has_xpath_spec.rb +149 -0
  197. data/capybara-3.40.0/lib/capybara/spec/session/headers_spec.rb +8 -0
  198. data/capybara-3.40.0/lib/capybara/spec/session/html_spec.rb +47 -0
  199. data/capybara-3.40.0/lib/capybara/spec/session/matches_style_spec.rb +37 -0
  200. data/capybara-3.40.0/lib/capybara/spec/session/node_spec.rb +1399 -0
  201. data/capybara-3.40.0/lib/capybara/spec/session/node_wrapper_spec.rb +39 -0
  202. data/capybara-3.40.0/lib/capybara/spec/session/refresh_spec.rb +34 -0
  203. data/capybara-3.40.0/lib/capybara/spec/session/reset_session_spec.rb +161 -0
  204. data/capybara-3.40.0/lib/capybara/spec/session/response_code_spec.rb +8 -0
  205. data/capybara-3.40.0/lib/capybara/spec/session/save_and_open_page_spec.rb +21 -0
  206. data/capybara-3.40.0/lib/capybara/spec/session/save_and_open_screenshot_spec.rb +43 -0
  207. data/capybara-3.40.0/lib/capybara/spec/session/save_page_spec.rb +110 -0
  208. data/capybara-3.40.0/lib/capybara/spec/session/save_screenshot_spec.rb +55 -0
  209. data/capybara-3.40.0/lib/capybara/spec/session/screenshot_spec.rb +18 -0
  210. data/capybara-3.40.0/lib/capybara/spec/session/scroll_spec.rb +119 -0
  211. data/capybara-3.40.0/lib/capybara/spec/session/select_spec.rb +229 -0
  212. data/capybara-3.40.0/lib/capybara/spec/session/selectors_spec.rb +98 -0
  213. data/capybara-3.40.0/lib/capybara/spec/session/sibling_spec.rb +52 -0
  214. data/capybara-3.40.0/lib/capybara/spec/session/text_spec.rb +74 -0
  215. data/capybara-3.40.0/lib/capybara/spec/session/title_spec.rb +29 -0
  216. data/capybara-3.40.0/lib/capybara/spec/session/uncheck_spec.rb +100 -0
  217. data/capybara-3.40.0/lib/capybara/spec/session/unselect_spec.rb +116 -0
  218. data/capybara-3.40.0/lib/capybara/spec/session/visit_spec.rb +224 -0
  219. data/capybara-3.40.0/lib/capybara/spec/session/window/become_closed_spec.rb +89 -0
  220. data/capybara-3.40.0/lib/capybara/spec/session/window/current_window_spec.rb +28 -0
  221. data/capybara-3.40.0/lib/capybara/spec/session/window/open_new_window_spec.rb +31 -0
  222. data/capybara-3.40.0/lib/capybara/spec/session/window/switch_to_window_spec.rb +132 -0
  223. data/capybara-3.40.0/lib/capybara/spec/session/window/window_opened_by_spec.rb +99 -0
  224. data/capybara-3.40.0/lib/capybara/spec/session/window/window_spec.rb +203 -0
  225. data/capybara-3.40.0/lib/capybara/spec/session/window/windows_spec.rb +34 -0
  226. data/capybara-3.40.0/lib/capybara/spec/session/window/within_window_spec.rb +157 -0
  227. data/capybara-3.40.0/lib/capybara/spec/session/within_spec.rb +212 -0
  228. data/capybara-3.40.0/lib/capybara/spec/spec_helper.rb +141 -0
  229. data/capybara-3.40.0/lib/capybara/spec/test_app.rb +305 -0
  230. data/capybara-3.40.0/lib/capybara/spec/views/animated.erb +49 -0
  231. data/capybara-3.40.0/lib/capybara/spec/views/buttons.erb +5 -0
  232. data/capybara-3.40.0/lib/capybara/spec/views/fieldsets.erb +30 -0
  233. data/capybara-3.40.0/lib/capybara/spec/views/form.erb +738 -0
  234. data/capybara-3.40.0/lib/capybara/spec/views/frame_child.erb +18 -0
  235. data/capybara-3.40.0/lib/capybara/spec/views/frame_one.erb +10 -0
  236. data/capybara-3.40.0/lib/capybara/spec/views/frame_parent.erb +9 -0
  237. data/capybara-3.40.0/lib/capybara/spec/views/frame_two.erb +9 -0
  238. data/capybara-3.40.0/lib/capybara/spec/views/header_links.erb +8 -0
  239. data/capybara-3.40.0/lib/capybara/spec/views/host_links.erb +13 -0
  240. data/capybara-3.40.0/lib/capybara/spec/views/initial_alert.erb +11 -0
  241. data/capybara-3.40.0/lib/capybara/spec/views/layout.erb +10 -0
  242. data/capybara-3.40.0/lib/capybara/spec/views/obscured.erb +47 -0
  243. data/capybara-3.40.0/lib/capybara/spec/views/offset.erb +33 -0
  244. data/capybara-3.40.0/lib/capybara/spec/views/path.erb +13 -0
  245. data/capybara-3.40.0/lib/capybara/spec/views/popup_one.erb +9 -0
  246. data/capybara-3.40.0/lib/capybara/spec/views/popup_two.erb +9 -0
  247. data/capybara-3.40.0/lib/capybara/spec/views/postback.erb +14 -0
  248. data/capybara-3.40.0/lib/capybara/spec/views/react.erb +45 -0
  249. data/capybara-3.40.0/lib/capybara/spec/views/scroll.erb +21 -0
  250. data/capybara-3.40.0/lib/capybara/spec/views/spatial.erb +31 -0
  251. data/capybara-3.40.0/lib/capybara/spec/views/tables.erb +130 -0
  252. data/capybara-3.40.0/lib/capybara/spec/views/with_animation.erb +81 -0
  253. data/capybara-3.40.0/lib/capybara/spec/views/with_base_tag.erb +11 -0
  254. data/capybara-3.40.0/lib/capybara/spec/views/with_count.erb +8 -0
  255. data/capybara-3.40.0/lib/capybara/spec/views/with_dragula.erb +24 -0
  256. data/capybara-3.40.0/lib/capybara/spec/views/with_fixed_header_footer.erb +18 -0
  257. data/capybara-3.40.0/lib/capybara/spec/views/with_hover.erb +24 -0
  258. data/capybara-3.40.0/lib/capybara/spec/views/with_hover1.erb +10 -0
  259. data/capybara-3.40.0/lib/capybara/spec/views/with_html.erb +210 -0
  260. data/capybara-3.40.0/lib/capybara/spec/views/with_html5_svg.erb +20 -0
  261. data/capybara-3.40.0/lib/capybara/spec/views/with_html_entities.erb +2 -0
  262. data/capybara-3.40.0/lib/capybara/spec/views/with_jquery_animation.erb +24 -0
  263. data/capybara-3.40.0/lib/capybara/spec/views/with_js.erb +162 -0
  264. data/capybara-3.40.0/lib/capybara/spec/views/with_jstree.erb +26 -0
  265. data/capybara-3.40.0/lib/capybara/spec/views/with_namespace.erb +21 -0
  266. data/capybara-3.40.0/lib/capybara/spec/views/with_scope.erb +42 -0
  267. data/capybara-3.40.0/lib/capybara/spec/views/with_scope_other.erb +6 -0
  268. data/capybara-3.40.0/lib/capybara/spec/views/with_shadow.erb +31 -0
  269. data/capybara-3.40.0/lib/capybara/spec/views/with_simple_html.erb +2 -0
  270. data/capybara-3.40.0/lib/capybara/spec/views/with_slow_unload.erb +18 -0
  271. data/capybara-3.40.0/lib/capybara/spec/views/with_sortable_js.erb +21 -0
  272. data/capybara-3.40.0/lib/capybara/spec/views/with_unload_alert.erb +15 -0
  273. data/capybara-3.40.0/lib/capybara/spec/views/with_windows.erb +54 -0
  274. data/capybara-3.40.0/lib/capybara/spec/views/within_frames.erb +15 -0
  275. data/capybara-3.40.0/lib/capybara/version.rb +5 -0
  276. data/capybara-3.40.0/lib/capybara/window.rb +142 -0
  277. data/capybara-3.40.0/lib/capybara.rb +521 -0
  278. data/capybara-3.40.0/spec/basic_node_spec.rb +168 -0
  279. data/capybara-3.40.0/spec/capybara_spec.rb +124 -0
  280. data/capybara-3.40.0/spec/counter_spec.rb +35 -0
  281. data/capybara-3.40.0/spec/css_builder_spec.rb +101 -0
  282. data/capybara-3.40.0/spec/css_splitter_spec.rb +38 -0
  283. data/capybara-3.40.0/spec/dsl_spec.rb +291 -0
  284. data/capybara-3.40.0/spec/filter_set_spec.rb +46 -0
  285. data/capybara-3.40.0/spec/fixtures/capybara.csv +1 -0
  286. data/capybara-3.40.0/spec/fixtures/certificate.pem +25 -0
  287. data/capybara-3.40.0/spec/fixtures/key.pem +27 -0
  288. data/capybara-3.40.0/spec/fixtures/selenium_driver_rspec_failure.rb +13 -0
  289. data/capybara-3.40.0/spec/fixtures/selenium_driver_rspec_success.rb +13 -0
  290. data/capybara-3.40.0/spec/minitest_spec.rb +175 -0
  291. data/capybara-3.40.0/spec/minitest_spec_spec.rb +166 -0
  292. data/capybara-3.40.0/spec/per_session_config_spec.rb +68 -0
  293. data/capybara-3.40.0/spec/rack_test_spec.rb +297 -0
  294. data/capybara-3.40.0/spec/regexp_dissassembler_spec.rb +250 -0
  295. data/capybara-3.40.0/spec/result_spec.rb +202 -0
  296. data/capybara-3.40.0/spec/rspec/features_spec.rb +101 -0
  297. data/capybara-3.40.0/spec/rspec/scenarios_spec.rb +23 -0
  298. data/capybara-3.40.0/spec/rspec/shared_spec_matchers.rb +983 -0
  299. data/capybara-3.40.0/spec/rspec/views_spec.rb +14 -0
  300. data/capybara-3.40.0/spec/rspec_matchers_spec.rb +87 -0
  301. data/capybara-3.40.0/spec/rspec_spec.rb +149 -0
  302. data/capybara-3.40.0/spec/sauce_spec_chrome.rb +43 -0
  303. data/capybara-3.40.0/spec/selector_spec.rb +528 -0
  304. data/capybara-3.40.0/spec/selenium_spec_chrome.rb +209 -0
  305. data/capybara-3.40.0/spec/selenium_spec_chrome_remote.rb +96 -0
  306. data/capybara-3.40.0/spec/selenium_spec_edge.rb +60 -0
  307. data/capybara-3.40.0/spec/selenium_spec_firefox.rb +228 -0
  308. data/capybara-3.40.0/spec/selenium_spec_firefox_remote.rb +94 -0
  309. data/capybara-3.40.0/spec/selenium_spec_ie.rb +149 -0
  310. data/capybara-3.40.0/spec/selenium_spec_safari.rb +162 -0
  311. data/capybara-3.40.0/spec/server_spec.rb +315 -0
  312. data/capybara-3.40.0/spec/session_spec.rb +91 -0
  313. data/capybara-3.40.0/spec/shared_selenium_node.rb +79 -0
  314. data/capybara-3.40.0/spec/shared_selenium_session.rb +566 -0
  315. data/capybara-3.40.0/spec/spec_helper.rb +133 -0
  316. data/capybara-3.40.0/spec/whitespace_normalizer_spec.rb +54 -0
  317. data/capybara-3.40.0/spec/xpath_builder_spec.rb +93 -0
  318. data/mega-max-rb.gemspec +12 -0
  319. metadata +358 -0
@@ -0,0 +1,517 @@
1
+ # frozen_string_literal: true
2
+
3
+ Capybara::SpecHelper.spec '#click_button' do
4
+ before do
5
+ @session.visit('/form')
6
+ end
7
+
8
+ it 'should wait for asynchronous load', requires: [:js] do
9
+ @session.visit('/with_js')
10
+ @session.using_wait_time(1.5) do
11
+ @session.click_link('Click me')
12
+ @session.click_button('New Here')
13
+ end
14
+ end
15
+
16
+ it 'casts to string' do
17
+ @session.click_button(:'Relative Action')
18
+ expect(extract_results(@session)['relative']).to eq('Relative Action')
19
+ expect(@session.current_path).to eq('/relative')
20
+ end
21
+
22
+ context 'with multiple values with the same name' do
23
+ it 'should use the latest given value' do
24
+ @session.check('Terms of Use')
25
+ @session.click_button('awesome')
26
+ expect(extract_results(@session)['terms_of_use']).to eq('1')
27
+ end
28
+ end
29
+
30
+ context 'with a form that has a relative url as an action' do
31
+ it 'should post to the correct url' do
32
+ @session.click_button('Relative Action')
33
+ expect(extract_results(@session)['relative']).to eq('Relative Action')
34
+ expect(@session.current_path).to eq('/relative')
35
+ end
36
+ end
37
+
38
+ context 'with a form that has no action specified' do
39
+ it 'should post to the correct url' do
40
+ @session.click_button('No Action')
41
+ expect(extract_results(@session)['no_action']).to eq('No Action')
42
+ expect(@session.current_path).to eq('/form')
43
+ end
44
+ end
45
+
46
+ context 'with value given on a submit button' do
47
+ context 'on a form with HTML5 fields' do
48
+ let(:results) { extract_results(@session) }
49
+
50
+ before do
51
+ @session.click_button('html5_submit')
52
+ end
53
+
54
+ it 'should serialise and submit search fields' do
55
+ expect(results['html5_search']).to eq('what are you looking for')
56
+ end
57
+
58
+ it 'should serialise and submit email fields' do
59
+ expect(results['html5_email']).to eq('person@email.com')
60
+ end
61
+
62
+ it 'should serialise and submit url fields' do
63
+ expect(results['html5_url']).to eq('http://www.example.com')
64
+ end
65
+
66
+ it 'should serialise and submit tel fields' do
67
+ expect(results['html5_tel']).to eq('911')
68
+ end
69
+
70
+ it 'should serialise and submit color fields' do
71
+ expect(results['html5_color'].upcase).to eq('#FFFFFF')
72
+ end
73
+ end
74
+
75
+ context 'on an HTML4 form' do
76
+ let(:results) { extract_results(@session) }
77
+
78
+ before do
79
+ @session.click_button('awesome')
80
+ end
81
+
82
+ it 'should serialize and submit text fields' do
83
+ expect(results['first_name']).to eq('John')
84
+ end
85
+
86
+ it 'should escape fields when submitting' do
87
+ expect(results['phone']).to eq('+1 555 7021')
88
+ end
89
+
90
+ it 'should serialize and submit password fields' do
91
+ expect(results['password']).to eq('seeekrit')
92
+ end
93
+
94
+ it 'should serialize and submit hidden fields' do
95
+ expect(results['token']).to eq('12345')
96
+ end
97
+
98
+ it 'should not serialize fields from other forms' do
99
+ expect(results['middle_name']).to be_nil
100
+ end
101
+
102
+ it 'should submit the button that was clicked, but not other buttons' do
103
+ expect(results['awesome']).to eq('awesome')
104
+ expect(results['crappy']).to be_nil
105
+ end
106
+
107
+ it 'should serialize radio buttons' do
108
+ expect(results['gender']).to eq('female')
109
+ end
110
+
111
+ it "should default radio value to 'on' if none specified" do
112
+ expect(results['valueless_radio']).to eq('on')
113
+ end
114
+
115
+ it 'should serialize check boxes' do
116
+ expect(results['pets']).to include('dog', 'hamster')
117
+ expect(results['pets']).not_to include('cat')
118
+ end
119
+
120
+ it "should default checkbox value to 'on' if none specififed" do
121
+ expect(results['valueless_checkbox']).to eq('on')
122
+ end
123
+
124
+ it 'should serialize text areas' do
125
+ expect(results['description']).to eq('Descriptive text goes here')
126
+ end
127
+
128
+ it 'should serialize select tag with values' do
129
+ expect(results['locale']).to eq('en')
130
+ end
131
+
132
+ it 'should serialize select tag without values' do
133
+ expect(results['region']).to eq('Norway')
134
+ end
135
+
136
+ it 'should serialize first option for select tag with no selection' do
137
+ expect(results['city']).to eq('London')
138
+ end
139
+
140
+ it 'should not serialize a select tag without options' do
141
+ expect(results['tendency']).to be_nil
142
+ end
143
+
144
+ it 'should convert lf to cr/lf in submitted textareas' do
145
+ expect(results['newline']).to eq("\r\nNew line after and before textarea tag\r\n")
146
+ end
147
+
148
+ it 'should not submit disabled fields' do
149
+ expect(results['disabled_text_field']).to be_nil
150
+ expect(results['disabled_textarea']).to be_nil
151
+ expect(results['disabled_checkbox']).to be_nil
152
+ expect(results['disabled_radio']).to be_nil
153
+ expect(results['disabled_select']).to be_nil
154
+ expect(results['disabled_file']).to be_nil
155
+ end
156
+ end
157
+ end
158
+
159
+ context 'input type=submit button' do
160
+ it 'should submit by button id' do
161
+ @session.click_button('awe123')
162
+ expect(extract_results(@session)['first_name']).to eq('John')
163
+ end
164
+
165
+ it 'should submit by specific button id' do
166
+ @session.click_button(id: 'awe123')
167
+ expect(extract_results(@session)['first_name']).to eq('John')
168
+ end
169
+
170
+ it 'should submit by button title' do
171
+ @session.click_button('What an Awesome Button')
172
+ expect(extract_results(@session)['first_name']).to eq('John')
173
+ end
174
+
175
+ it 'should submit by partial title', :exact_false do
176
+ @session.click_button('What an Awesome')
177
+ expect(extract_results(@session)['first_name']).to eq('John')
178
+ end
179
+
180
+ it 'should submit by button name' do
181
+ @session.click_button('form[awesome]')
182
+ expect(extract_results(@session)['first_name']).to eq('John')
183
+ end
184
+
185
+ it 'should submit by specific button name' do
186
+ @session.click_button(name: 'form[awesome]')
187
+ expect(extract_results(@session)['first_name']).to eq('John')
188
+ end
189
+
190
+ it 'should submit by specific button name regex' do
191
+ @session.click_button(name: /form\[awes.*\]/)
192
+ expect(extract_results(@session)['first_name']).to eq('John')
193
+ end
194
+ end
195
+
196
+ context 'when Capybara.enable_aria_role = true' do
197
+ it 'should click on a button role', requires: [:js] do
198
+ Capybara.enable_aria_role = true
199
+ @session.using_wait_time(1.5) do
200
+ @session.visit('/with_js')
201
+ @session.click_button('ARIA button')
202
+ expect(@session).to have_button('ARIA button has been clicked')
203
+ end
204
+ end
205
+ end
206
+
207
+ context 'with fields associated with the form using the form attribute', requires: [:form_attribute] do
208
+ let(:results) { extract_results(@session) }
209
+
210
+ before do
211
+ @session.click_button('submit_form1')
212
+ end
213
+
214
+ it 'should serialize and submit text fields' do
215
+ expect(results['outside_input']).to eq('outside_input')
216
+ end
217
+
218
+ it 'should serialize text areas' do
219
+ expect(results['outside_textarea']).to eq('Some text here')
220
+ end
221
+
222
+ it 'should serialize select tags' do
223
+ expect(results['outside_select']).to eq('Ruby')
224
+ end
225
+
226
+ it 'should not serliaze fields associated with a different form' do
227
+ expect(results['for_form2']).to be_nil
228
+ end
229
+ end
230
+
231
+ context 'with submit button outside the form defined by <button> tag', requires: [:form_attribute] do
232
+ let(:results) { extract_results(@session) }
233
+
234
+ before do
235
+ @session.click_button('outside_button')
236
+ end
237
+
238
+ it 'should submit the associated form' do
239
+ expect(results['which_form']).to eq('form2')
240
+ end
241
+
242
+ it 'should submit the button that was clicked, but not other buttons' do
243
+ expect(results['outside_button']).to eq('outside_button')
244
+ expect(results['unused']).to be_nil
245
+ end
246
+ end
247
+
248
+ context "with submit button outside the form defined by <input type='submit'> tag", requires: [:form_attribute] do
249
+ let(:results) { extract_results(@session) }
250
+
251
+ before do
252
+ @session.click_button('outside_submit')
253
+ end
254
+
255
+ it 'should submit the associated form' do
256
+ expect(results['which_form']).to eq('form1')
257
+ end
258
+
259
+ it 'should submit the button that was clicked, but not other buttons' do
260
+ expect(results['outside_submit']).to eq('outside_submit')
261
+ expect(results['submit_form1']).to be_nil
262
+ end
263
+ end
264
+
265
+ context 'with submit button for form1 located within form2', requires: [:form_attribute] do
266
+ it 'should submit the form associated with the button' do
267
+ @session.click_button('other_form_button')
268
+ expect(extract_results(@session)['which_form']).to eq('form1')
269
+ end
270
+ end
271
+
272
+ context 'with submit button not associated with any form' do
273
+ it 'should not error when clicked' do
274
+ expect { @session.click_button('no_form_button') }.not_to raise_error
275
+ end
276
+ end
277
+
278
+ context 'with alt given on an image button' do
279
+ it 'should submit the associated form' do
280
+ @session.click_button('oh hai thar')
281
+ expect(extract_results(@session)['first_name']).to eq('John')
282
+ end
283
+
284
+ it 'should work with partial matches', :exact_false do
285
+ @session.click_button('hai')
286
+ expect(extract_results(@session)['first_name']).to eq('John')
287
+ end
288
+ end
289
+
290
+ context 'with value given on an image button' do
291
+ it 'should submit the associated form' do
292
+ @session.click_button('okay')
293
+ expect(extract_results(@session)['first_name']).to eq('John')
294
+ end
295
+
296
+ it 'should work with partial matches', :exact_false do
297
+ @session.click_button('kay')
298
+ expect(extract_results(@session)['first_name']).to eq('John')
299
+ end
300
+ end
301
+
302
+ context 'with id given on an image button' do
303
+ it 'should submit the associated form' do
304
+ @session.click_button('okay556')
305
+ expect(extract_results(@session)['first_name']).to eq('John')
306
+ end
307
+ end
308
+
309
+ context 'with title given on an image button' do
310
+ it 'should submit the associated form' do
311
+ @session.click_button('Okay 556 Image')
312
+ expect(extract_results(@session)['first_name']).to eq('John')
313
+ end
314
+
315
+ it 'should work with partial matches', :exact_false do
316
+ @session.click_button('Okay 556')
317
+ expect(extract_results(@session)['first_name']).to eq('John')
318
+ end
319
+ end
320
+
321
+ context 'with text given on a button defined by <button> tag' do
322
+ it 'should submit the associated form' do
323
+ @session.click_button('Click me!')
324
+ expect(extract_results(@session)['first_name']).to eq('John')
325
+ end
326
+
327
+ it 'should work with partial matches', :exact_false do
328
+ @session.click_button('Click')
329
+ expect(extract_results(@session)['first_name']).to eq('John')
330
+ end
331
+ end
332
+
333
+ context 'with id given on a button defined by <button> tag' do
334
+ it 'should submit the associated form' do
335
+ @session.click_button('click_me_123')
336
+ expect(extract_results(@session)['first_name']).to eq('John')
337
+ end
338
+
339
+ it 'should serialize and send GET forms' do
340
+ @session.visit('/form')
341
+ @session.click_button('med')
342
+ results = extract_results(@session)
343
+ expect(results['middle_name']).to eq('Darren')
344
+ expect(results['foo']).to be_nil
345
+ end
346
+ end
347
+
348
+ context 'with name given on a button defined by <button> tag' do
349
+ it 'should submit the associated form when name is locator' do
350
+ @session.click_button('form[no_value]')
351
+ expect(extract_results(@session)['first_name']).to eq('John')
352
+ end
353
+
354
+ it 'should submit the associated form when name is specific' do
355
+ @session.click_button(name: 'form[no_value]')
356
+ expect(extract_results(@session)['first_name']).to eq('John')
357
+ end
358
+ end
359
+
360
+ context 'with value given on a button defined by <button> tag' do
361
+ it 'should submit the associated form' do
362
+ @session.click_button('click_me')
363
+ expect(extract_results(@session)['first_name']).to eq('John')
364
+ end
365
+
366
+ it 'should work with partial matches', :exact_false do
367
+ @session.click_button('ck_me')
368
+ expect(extract_results(@session)['first_name']).to eq('John')
369
+ end
370
+ end
371
+
372
+ context 'with title given on a button defined by <button> tag' do
373
+ it 'should submit the associated form' do
374
+ @session.click_button('Click Title button')
375
+ expect(extract_results(@session)['first_name']).to eq('John')
376
+ end
377
+
378
+ it 'should work with partial matches', :exact_false do
379
+ @session.click_button('Click Title')
380
+ expect(extract_results(@session)['first_name']).to eq('John')
381
+ end
382
+ end
383
+
384
+ context 'with descendant image alt given on a button defined by <button> tag' do
385
+ it 'should submit the associated form' do
386
+ @session.click_button('A horse eating hay')
387
+ expect(extract_results(@session)['first_name']).to eq('John')
388
+ end
389
+
390
+ it 'should work with partial matches', :exact_false do
391
+ @session.click_button('se eating h')
392
+ expect(extract_results(@session)['first_name']).to eq('John')
393
+ end
394
+ end
395
+
396
+ context "with a locator that doesn't exist" do
397
+ it 'should raise an error' do
398
+ msg = /Unable to find button "does not exist"/
399
+ expect do
400
+ @session.click_button('does not exist')
401
+ end.to raise_error(Capybara::ElementNotFound, msg)
402
+ end
403
+ end
404
+
405
+ context 'with formaction attribute on button' do
406
+ it 'should submit to the formaction attribute' do
407
+ @session.click_button('Formaction button')
408
+ results = extract_results(@session)
409
+ expect(@session.current_path).to eq '/form'
410
+ expect(results['which_form']).to eq 'formaction form'
411
+ end
412
+ end
413
+
414
+ context 'with formmethod attribute on button' do
415
+ it 'should submit to the formethod attribute' do
416
+ @session.click_button('Formmethod button')
417
+ results = extract_results(@session)
418
+ expect(@session.current_path).to eq '/form/get'
419
+ expect(results['which_form']).to eq 'formaction form'
420
+ end
421
+ end
422
+
423
+ it 'should serialize and send valueless buttons that were clicked' do
424
+ @session.click_button('No Value!')
425
+ results = extract_results(@session)
426
+ expect(results['no_value']).not_to be_nil
427
+ end
428
+
429
+ it 'should send button in document order' do
430
+ @session.click_button('outside_button')
431
+ results = extract_results(@session)
432
+ expect(results.keys).to eq %w[for_form2 outside_button which_form post_count]
433
+ end
434
+
435
+ it 'should not send image buttons that were not clicked' do
436
+ @session.click_button('Click me!')
437
+ results = extract_results(@session)
438
+ expect(results['okay']).to be_nil
439
+ end
440
+
441
+ it 'should serialize and send GET forms' do
442
+ @session.visit('/form')
443
+ @session.click_button('med')
444
+ results = extract_results(@session)
445
+ expect(results['middle_name']).to eq('Darren')
446
+ expect(results['foo']).to be_nil
447
+ end
448
+
449
+ it 'should follow redirects' do
450
+ @session.click_button('Go FAR')
451
+ expect(@session).to have_content('You landed')
452
+ expect(@session.current_url).to match(%r{/landed$})
453
+ end
454
+
455
+ it 'should follow temporary redirects that maintain method' do
456
+ @session.click_button('Go 307')
457
+ expect(@session).to have_content('You post landed: TWTW')
458
+ end
459
+
460
+ it 'should follow permanent redirects that maintain method' do
461
+ @session.click_button('Go 308')
462
+ expect(@session).to have_content('You post landed: TWTW')
463
+ end
464
+
465
+ it 'should post pack to the same URL when no action given' do
466
+ @session.visit('/postback')
467
+ @session.click_button('With no action')
468
+ expect(@session).to have_content('Postback')
469
+ end
470
+
471
+ it 'should post pack to the same URL when blank action given' do
472
+ @session.visit('/postback')
473
+ @session.click_button('With blank action')
474
+ expect(@session).to have_content('Postback')
475
+ end
476
+
477
+ it 'ignores disabled buttons' do
478
+ expect do
479
+ @session.click_button('Disabled button')
480
+ end.to raise_error(Capybara::ElementNotFound)
481
+ end
482
+
483
+ it 'should encode complex field names, like array[][value]' do
484
+ @session.visit('/form')
485
+ @session.fill_in('address1_city', with: 'Paris')
486
+ @session.fill_in('address1_street', with: 'CDG')
487
+
488
+ @session.fill_in('address2_city', with: 'Mikolaiv')
489
+ @session.fill_in('address2_street', with: 'PGS')
490
+
491
+ @session.click_button 'awesome'
492
+
493
+ addresses = extract_results(@session)['addresses']
494
+ expect(addresses.size).to eq(2)
495
+
496
+ expect(addresses[0]['street']).to eq('CDG')
497
+ expect(addresses[0]['city']).to eq('Paris')
498
+ expect(addresses[0]['country']).to eq('France')
499
+
500
+ expect(addresses[1]['street']).to eq('PGS')
501
+ expect(addresses[1]['city']).to eq('Mikolaiv')
502
+ expect(addresses[1]['country']).to eq('Ukraine')
503
+ end
504
+
505
+ context 'with :exact option' do
506
+ it 'should accept partial matches when false' do
507
+ @session.click_button('What an Awesome', exact: false)
508
+ expect(extract_results(@session)['first_name']).to eq('John')
509
+ end
510
+
511
+ it 'should not accept partial matches when true' do
512
+ expect do
513
+ @session.click_button('What an Awesome', exact: true)
514
+ end.to raise_error(Capybara::ElementNotFound)
515
+ end
516
+ end
517
+ end
@@ -0,0 +1,138 @@
1
+ # frozen_string_literal: true
2
+
3
+ Capybara::SpecHelper.spec '#click_link_or_button' do
4
+ it 'should click on a link' do
5
+ @session.visit('/with_html')
6
+ @session.click_link_or_button('labore')
7
+ expect(@session).to have_content('Bar')
8
+ end
9
+
10
+ it 'should click on a button' do
11
+ @session.visit('/form')
12
+ @session.click_link_or_button('awe123')
13
+ expect(extract_results(@session)['first_name']).to eq('John')
14
+ end
15
+
16
+ it 'should click on a button with no type attribute' do
17
+ @session.visit('/form')
18
+ @session.click_link_or_button('no_type')
19
+ expect(extract_results(@session)['first_name']).to eq('John')
20
+ end
21
+
22
+ it 'should be aliased as click_on' do
23
+ @session.visit('/form')
24
+ @session.click_on('awe123')
25
+ expect(extract_results(@session)['first_name']).to eq('John')
26
+ end
27
+
28
+ it 'should wait for asynchronous load', requires: [:js] do
29
+ Capybara.default_max_wait_time = 2
30
+ @session.visit('/with_js')
31
+ @session.click_link('Click me')
32
+ @session.click_link_or_button('Has been clicked')
33
+ end
34
+
35
+ it 'casts to string' do
36
+ @session.visit('/form')
37
+ @session.click_link_or_button(:awe123)
38
+ expect(extract_results(@session)['first_name']).to eq('John')
39
+ end
40
+
41
+ context 'with test_id' do
42
+ it 'should click on a button' do
43
+ Capybara.test_id = 'data-test-id'
44
+ @session.visit('/form')
45
+ @session.click_link_or_button('test_id_button')
46
+ expect(extract_results(@session)['first_name']).to eq('John')
47
+ end
48
+ end
49
+
50
+ context 'with :exact option' do
51
+ context 'when `false`' do
52
+ it 'clicks on approximately matching link' do
53
+ @session.visit('/with_html')
54
+ @session.click_link_or_button('abore', exact: false)
55
+ expect(@session).to have_content('Bar')
56
+ end
57
+
58
+ it 'clicks on approximately matching button' do
59
+ @session.visit('/form')
60
+ @session.click_link_or_button('awe', exact: false)
61
+ expect(extract_results(@session)['first_name']).to eq('John')
62
+ end
63
+ end
64
+
65
+ context 'when `true`' do
66
+ it 'does not click on link which matches approximately' do
67
+ @session.visit('/with_html')
68
+ msg = 'Unable to find link or button "abore"'
69
+ expect do
70
+ @session.click_link_or_button('abore', exact: true)
71
+ end.to raise_error(Capybara::ElementNotFound, msg)
72
+ end
73
+
74
+ it 'does not click on approximately matching button' do
75
+ @session.visit('/form')
76
+ msg = 'Unable to find link or button "awe"'
77
+
78
+ expect do
79
+ @session.click_link_or_button('awe', exact: true)
80
+ end.to raise_error(Capybara::ElementNotFound, msg)
81
+ end
82
+ end
83
+ end
84
+
85
+ context "with a locator that doesn't exist" do
86
+ it 'should raise an error' do
87
+ @session.visit('/with_html')
88
+ msg = 'Unable to find link or button "does not exist"'
89
+ expect do
90
+ @session.click_link_or_button('does not exist')
91
+ end.to raise_error(Capybara::ElementNotFound, msg)
92
+ end
93
+ end
94
+
95
+ context 'with :disabled option' do
96
+ it 'ignores disabled buttons when false' do
97
+ @session.visit('/form')
98
+ expect do
99
+ @session.click_link_or_button('Disabled button', disabled: false)
100
+ end.to raise_error(Capybara::ElementNotFound)
101
+ end
102
+
103
+ it 'ignores disabled buttons by default' do
104
+ @session.visit('/form')
105
+ expect do
106
+ @session.click_link_or_button('Disabled button')
107
+ end.to raise_error(Capybara::ElementNotFound)
108
+ end
109
+
110
+ it 'happily clicks on links which incorrectly have the disabled attribute' do
111
+ @session.visit('/with_html')
112
+ @session.click_link_or_button('Disabled link')
113
+ expect(@session).to have_content('Bar')
114
+ end
115
+ end
116
+
117
+ it 'should return the element clicked' do
118
+ @session.visit('/with_html')
119
+ link = @session.find(:link, 'Blank Anchor')
120
+ expect(@session.click_link_or_button('Blank Anchor')).to eq link
121
+ end
122
+
123
+ context 'with enable_aria_label' do
124
+ it 'should click on link' do
125
+ @session.visit('/with_html')
126
+ expect do
127
+ @session.click_link_or_button('Go to simple', enable_aria_label: true)
128
+ end.not_to raise_error
129
+ end
130
+
131
+ it 'should click on button' do
132
+ @session.visit('/form')
133
+ expect do
134
+ @session.click_link_or_button('Aria button', enable_aria_label: true)
135
+ end.not_to raise_error
136
+ end
137
+ end
138
+ end