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,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ Capybara::SpecHelper.spec '#evaluate_async_script', requires: [:js] do
4
+ it 'should evaluate the given script and return whatever it produces' do
5
+ @session.visit('/with_js')
6
+ expect(@session.evaluate_async_script('arguments[0](4)')).to eq(4)
7
+ end
8
+
9
+ it 'should support passing elements as arguments to the script', requires: %i[js es_args] do
10
+ @session.visit('/with_js')
11
+ el = @session.find(:css, '#drag p')
12
+ result = @session.evaluate_async_script('arguments[2]([arguments[0].innerText, arguments[1]])', el, 'Doodle Funk')
13
+ expect(result).to eq ['This is a draggable element.', 'Doodle Funk']
14
+ end
15
+
16
+ it 'should support returning elements after asynchronous operation', requires: %i[js es_args] do
17
+ @session.visit('/with_js')
18
+ @session.find(:css, '#change') # ensure page has loaded and element is available
19
+ el = @session.evaluate_async_script("var cb = arguments[0]; setTimeout(function(){ cb(document.getElementById('change')) }, 100)")
20
+ expect(el).to be_instance_of(Capybara::Node::Element)
21
+ expect(el).to eq(@session.find(:css, '#change'))
22
+ end
23
+ end
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+
3
+ Capybara::SpecHelper.spec '#evaluate_script', requires: [:js] do
4
+ it 'should evaluate the given script and return whatever it produces' do
5
+ @session.visit('/with_js')
6
+ expect(@session.evaluate_script('1+3')).to eq(4)
7
+ end
8
+
9
+ it 'should ignore leading whitespace' do
10
+ @session.visit('/with_js')
11
+ expect(@session.evaluate_script('
12
+ 1 + 3
13
+ ')).to eq(4)
14
+ end
15
+
16
+ it 'should pass arguments to the script', requires: %i[js es_args] do
17
+ @session.visit('/with_js')
18
+ expect(@session).to have_css('#change')
19
+ @session.evaluate_script("document.getElementById('change').textContent = arguments[0]", 'Doodle Funk')
20
+ expect(@session).to have_css('#change', text: 'Doodle Funk')
21
+ end
22
+
23
+ it 'should support passing elements as arguments to the script', requires: %i[js es_args] do
24
+ @session.visit('/with_js')
25
+ el = @session.find(:css, '#change')
26
+ @session.evaluate_script('arguments[0].textContent = arguments[1]', el, 'Doodle Funk')
27
+ expect(@session).to have_css('#change', text: 'Doodle Funk')
28
+ end
29
+
30
+ it 'should support returning elements', requires: %i[js es_args] do
31
+ @session.visit('/with_js')
32
+ @session.find(:css, '#change') # ensure page has loaded and element is available
33
+ el = @session.evaluate_script("document.getElementById('change')")
34
+ expect(el).to be_instance_of(Capybara::Node::Element)
35
+ expect(el).to eq(@session.find(:css, '#change'))
36
+ end
37
+
38
+ it 'should support multi statement via IIFE' do
39
+ @session.visit('/with_js')
40
+ @session.find(:css, '#change')
41
+ el = @session.evaluate_script(<<~JS)
42
+ (function(){
43
+ var el = document.getElementById('change');
44
+ return el;
45
+ })()
46
+ JS
47
+ expect(el).to eq(@session.find(:css, '#change'))
48
+ end
49
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ Capybara::SpecHelper.spec '#execute_script', requires: [:js] do
4
+ it 'should execute the given script and return nothing' do
5
+ @session.visit('/with_js')
6
+ expect(@session.execute_script("document.getElementById('change').textContent = 'Funky Doodle'")).to be_nil
7
+ expect(@session).to have_css('#change', text: 'Funky Doodle')
8
+ end
9
+
10
+ it 'should be able to call functions defined in the page' do
11
+ @session.visit('/with_js')
12
+ expect { @session.execute_script("$('#change').text('Funky Doodle')") }.not_to raise_error
13
+ end
14
+
15
+ it 'should pass arguments to the script', requires: %i[js es_args] do
16
+ @session.visit('/with_js')
17
+ expect(@session).to have_css('#change')
18
+ @session.execute_script("document.getElementById('change').textContent = arguments[0]", 'Doodle Funk')
19
+ expect(@session).to have_css('#change', text: 'Doodle Funk')
20
+ end
21
+
22
+ it 'should support passing elements as arguments to the script', requires: %i[js es_args] do
23
+ @session.visit('/with_js')
24
+ el = @session.find(:css, '#change')
25
+ @session.execute_script('arguments[1].textContent = arguments[0]', 'Doodle Funk', el)
26
+ expect(@session).to have_css('#change', text: 'Doodle Funk')
27
+ end
28
+ end
@@ -0,0 +1,292 @@
1
+ # frozen_string_literal: true
2
+
3
+ Capybara::SpecHelper.spec '#fill_in' do
4
+ before do
5
+ @session.visit('/form')
6
+ end
7
+
8
+ it 'should fill in a text field by id' do
9
+ @session.fill_in('form_first_name', with: 'Harry')
10
+ @session.click_button('awesome')
11
+ expect(extract_results(@session)['first_name']).to eq('Harry')
12
+ end
13
+
14
+ it 'should fill in a text field by name' do
15
+ @session.fill_in('form[last_name]', with: 'Green')
16
+ @session.click_button('awesome')
17
+ expect(extract_results(@session)['last_name']).to eq('Green')
18
+ end
19
+
20
+ it 'should fill in a text field by label without for' do
21
+ @session.fill_in('First Name', with: 'Harry')
22
+ @session.click_button('awesome')
23
+ expect(extract_results(@session)['first_name']).to eq('Harry')
24
+ end
25
+
26
+ it 'should fill in a url field by label without for' do
27
+ @session.fill_in('Html5 Url', with: 'http://www.avenueq.com')
28
+ @session.click_button('html5_submit')
29
+ expect(extract_results(@session)['html5_url']).to eq('http://www.avenueq.com')
30
+ end
31
+
32
+ it 'should fill in a textarea by id' do
33
+ @session.fill_in('form_description', with: 'Texty text')
34
+ @session.click_button('awesome')
35
+ expect(extract_results(@session)['description']).to eq('Texty text')
36
+ end
37
+
38
+ it 'should fill in a textarea by label' do
39
+ @session.fill_in('Description', with: 'Texty text')
40
+ @session.click_button('awesome')
41
+ expect(extract_results(@session)['description']).to eq('Texty text')
42
+ end
43
+
44
+ it 'should fill in a textarea by name' do
45
+ @session.fill_in('form[description]', with: 'Texty text')
46
+ @session.click_button('awesome')
47
+ expect(extract_results(@session)['description']).to eq('Texty text')
48
+ end
49
+
50
+ it 'should fill in a textarea in a reasonable time by default' do
51
+ textarea = @session.find(:fillable_field, 'form[description]')
52
+ value = 'a' * 4000
53
+ start = Time.now
54
+ textarea.fill_in(with: value)
55
+ expect(Time.now.to_f).to be_within(0.25).of start.to_f
56
+ expect(textarea.value).to eq value
57
+ end
58
+
59
+ it 'should fill in a password field by id' do
60
+ @session.fill_in('form_password', with: 'supasikrit')
61
+ @session.click_button('awesome')
62
+ expect(extract_results(@session)['password']).to eq('supasikrit')
63
+ end
64
+
65
+ context 'Date/Time' do
66
+ it 'should fill in a date input' do
67
+ date = Date.today
68
+ @session.fill_in('form_date', with: date)
69
+ @session.click_button('awesome')
70
+ expect(Date.parse(extract_results(@session)['date'])).to eq date
71
+ end
72
+
73
+ it 'should fill in a time input' do
74
+ time = Time.new(2018, 3, 9, 15, 26)
75
+ @session.fill_in('form_time', with: time)
76
+ @session.click_button('awesome')
77
+ results = extract_results(@session)['time']
78
+ expect(Time.parse(results).strftime('%r')).to eq time.strftime('%r')
79
+ end
80
+
81
+ it 'should fill in a datetime input' do
82
+ dt = Time.new(2018, 3, 13, 9, 53)
83
+ @session.fill_in('form_datetime', with: dt)
84
+ @session.click_button('awesome')
85
+ expect(Time.parse(extract_results(@session)['datetime'])).to eq dt
86
+ end
87
+ end
88
+
89
+ it 'should handle HTML in a textarea' do
90
+ @session.fill_in('form_description', with: 'is <strong>very</strong> secret!')
91
+ @session.click_button('awesome')
92
+ expect(extract_results(@session)['description']).to eq('is <strong>very</strong> secret!')
93
+ end
94
+
95
+ it 'should handle newlines in a textarea' do
96
+ @session.fill_in('form_description', with: "\nSome text\n")
97
+ @session.click_button('awesome')
98
+ expect(extract_results(@session)['description']).to eq("\r\nSome text\r\n")
99
+ end
100
+
101
+ it 'should handle carriage returns with line feeds in a textarea correctly' do
102
+ @session.fill_in('form_description', with: "\r\nSome text\r\n")
103
+ @session.click_button('awesome')
104
+ expect(extract_results(@session)['description']).to eq("\r\nSome text\r\n")
105
+ end
106
+
107
+ it 'should fill in a color field' do
108
+ @session.fill_in('Html5 Color', with: '#112233')
109
+ @session.click_button('html5_submit')
110
+ expect(extract_results(@session)['html5_color']).to eq('#112233')
111
+ end
112
+
113
+ describe 'with input[type="range"]' do
114
+ it 'should set the range slider correctly' do
115
+ @session.fill_in('form_age', with: 51)
116
+ @session.click_button('awesome')
117
+ expect(extract_results(@session)['age'].to_f).to eq 51
118
+ end
119
+
120
+ it 'should set the range slider to valid values' do
121
+ @session.fill_in('form_age', with: '37.6')
122
+ @session.click_button('awesome')
123
+ expect(extract_results(@session)['age'].to_f).to eq 37.5
124
+ end
125
+
126
+ it 'should respect the range slider limits' do
127
+ @session.fill_in('form_age', with: '3')
128
+ @session.click_button('awesome')
129
+ expect(extract_results(@session)['age'].to_f).to eq 13
130
+ end
131
+ end
132
+
133
+ it 'should fill in a field with a custom type' do
134
+ @session.fill_in('Schmooo', with: 'Schmooo is the game')
135
+ @session.click_button('awesome')
136
+ expect(extract_results(@session)['schmooo']).to eq('Schmooo is the game')
137
+ end
138
+
139
+ it 'should fill in a field without a type' do
140
+ @session.fill_in('Phone', with: '+1 555 7022')
141
+ @session.click_button('awesome')
142
+ expect(extract_results(@session)['phone']).to eq('+1 555 7022')
143
+ end
144
+
145
+ it 'should fill in a text field respecting its maxlength attribute' do
146
+ @session.fill_in('Zipcode', with: '52071350')
147
+ @session.click_button('awesome')
148
+ expect(extract_results(@session)['zipcode']).to eq('52071')
149
+ end
150
+
151
+ it 'should fill in a password field by name' do
152
+ @session.fill_in('form[password]', with: 'supasikrit')
153
+ @session.click_button('awesome')
154
+ expect(extract_results(@session)['password']).to eq('supasikrit')
155
+ end
156
+
157
+ it 'should fill in a password field by label' do
158
+ @session.fill_in('Password', with: 'supasikrit')
159
+ @session.click_button('awesome')
160
+ expect(extract_results(@session)['password']).to eq('supasikrit')
161
+ end
162
+
163
+ it 'should fill in a password field by name' do
164
+ @session.fill_in('form[password]', with: 'supasikrit')
165
+ @session.click_button('awesome')
166
+ expect(extract_results(@session)['password']).to eq('supasikrit')
167
+ end
168
+
169
+ it 'should fill in a field based on current value' do
170
+ @session.fill_in(id: /form.*name/, currently_with: 'John', with: 'Thomas')
171
+ @session.click_button('awesome')
172
+ expect(extract_results(@session)['first_name']).to eq('Thomas')
173
+ end
174
+
175
+ it 'should fill in a field based on type' do
176
+ @session.fill_in(type: 'schmooo', with: 'Schmooo for all')
177
+ @session.click_button('awesome')
178
+ expect(extract_results(@session)['schmooo']).to eq('Schmooo for all')
179
+ end
180
+
181
+ it 'should be able to fill in element called on when no locator passed' do
182
+ field = @session.find(:fillable_field, 'form[password]')
183
+ field.fill_in(with: 'supasikrit')
184
+ @session.click_button('awesome')
185
+ expect(extract_results(@session)['password']).to eq('supasikrit')
186
+ end
187
+
188
+ it "should throw an exception if a hash containing 'with' is not provided" do
189
+ expect { @session.fill_in 'Name' }.to raise_error(ArgumentError, /with/)
190
+ end
191
+
192
+ it 'should wait for asynchronous load', requires: [:js] do
193
+ Capybara.default_max_wait_time = 2
194
+ @session.visit('/with_js')
195
+ @session.click_link('Click me')
196
+ @session.fill_in('new_field', with: 'Testing...')
197
+ end
198
+
199
+ it 'casts to string' do
200
+ @session.fill_in(:form_first_name, with: :Harry)
201
+ @session.click_button('awesome')
202
+ expect(extract_results(@session)['first_name']).to eq('Harry')
203
+ end
204
+
205
+ it 'casts to string if field has maxlength' do
206
+ @session.fill_in(:form_zipcode, with: 1234567)
207
+ @session.click_button('awesome')
208
+ expect(extract_results(@session)['zipcode']).to eq('12345')
209
+ end
210
+
211
+ it 'fills in a field if default_set_options is nil' do
212
+ Capybara.default_set_options = nil
213
+ @session.fill_in(:form_first_name, with: 'Thomas')
214
+ @session.click_button('awesome')
215
+ expect(extract_results(@session)['first_name']).to eq('Thomas')
216
+ end
217
+
218
+ context 'on a pre-populated textfield with a reformatting onchange', requires: [:js] do
219
+ it 'should only trigger onchange once' do
220
+ @session.visit('/with_js')
221
+ # Click somewhere on the page to ensure focus is acquired. Without this FF won't generate change events for some reason???
222
+ @session.find(:css, 'h1', text: 'FooBar').click
223
+ @session.fill_in('with_change_event', with: 'some value')
224
+ # click outside the field to trigger the change event
225
+ @session.find(:css, 'h1', text: 'FooBar').click
226
+ expect(@session.find(:css, '.change_event_triggered', match: :one)).to have_text 'some value'
227
+ end
228
+
229
+ it 'should trigger change when clearing field' do
230
+ @session.visit('/with_js')
231
+ @session.fill_in('with_change_event', with: '')
232
+ # click outside the field to trigger the change event
233
+ @session.find(:css, 'h1', text: 'FooBar').click
234
+ expect(@session).to have_selector(:css, '.change_event_triggered', match: :one)
235
+ end
236
+ end
237
+
238
+ context 'with ignore_hidden_fields' do
239
+ before { Capybara.ignore_hidden_elements = true }
240
+
241
+ after { Capybara.ignore_hidden_elements = false }
242
+
243
+ it 'should not find a hidden field' do
244
+ msg = /Unable to find visible field "Super Secret"/
245
+ expect do
246
+ @session.fill_in('Super Secret', with: '777')
247
+ end.to raise_error(Capybara::ElementNotFound, msg)
248
+ end
249
+ end
250
+
251
+ context "with a locator that doesn't exist" do
252
+ it 'should raise an error' do
253
+ msg = /Unable to find field "does not exist"/
254
+ expect do
255
+ @session.fill_in('does not exist', with: 'Blah blah')
256
+ end.to raise_error(Capybara::ElementNotFound, msg)
257
+ end
258
+ end
259
+
260
+ context 'on a disabled field' do
261
+ it 'should raise an error' do
262
+ expect do
263
+ @session.fill_in('Disabled Text Field', with: 'Blah blah')
264
+ end.to raise_error(Capybara::ElementNotFound)
265
+ end
266
+ end
267
+
268
+ context 'with :exact option' do
269
+ it 'should accept partial matches when false' do
270
+ @session.fill_in('Explanation', with: 'Dude', exact: false)
271
+ @session.click_button('awesome')
272
+ expect(extract_results(@session)['name_explanation']).to eq('Dude')
273
+ end
274
+
275
+ it 'should not accept partial matches when true' do
276
+ expect do
277
+ @session.fill_in('Explanation', with: 'Dude', exact: true)
278
+ end.to raise_error(Capybara::ElementNotFound)
279
+ end
280
+ end
281
+
282
+ it 'should return the element filled in' do
283
+ el = @session.find(:fillable_field, 'form_first_name')
284
+ expect(@session.fill_in('form_first_name', with: 'Harry')).to eq el
285
+ end
286
+
287
+ it 'should warn if passed what looks like a CSS id selector' do
288
+ expect do
289
+ @session.fill_in('#form_first_name', with: 'Harry')
290
+ end.to raise_error(/you may be passing a CSS selector or XPath expression rather than a locator/)
291
+ end
292
+ end
@@ -0,0 +1,74 @@
1
+ # frozen_string_literal: true
2
+
3
+ Capybara::SpecHelper.spec '#find_button' do
4
+ before do
5
+ @session.visit('/form')
6
+ end
7
+
8
+ it 'should find any button' do
9
+ expect(@session.find_button('med')[:id]).to eq('mediocre')
10
+ expect(@session.find_button('crap321').value).to eq('crappy')
11
+ end
12
+
13
+ context 'aria_label attribute with Capybara.enable_aria_label' do
14
+ it 'should find when true' do
15
+ Capybara.enable_aria_label = true
16
+ expect(@session.find_button('Mediocre Button')[:id]).to eq('mediocre')
17
+ end
18
+
19
+ it 'should not find when false' do
20
+ Capybara.enable_aria_label = false
21
+ expect { @session.find_button('Mediocre Button') }.to raise_error(Capybara::ElementNotFound)
22
+ end
23
+ end
24
+
25
+ it 'casts to string' do
26
+ expect(@session.find_button(:med)[:id]).to eq('mediocre')
27
+ end
28
+
29
+ it "should raise error if the button doesn't exist" do
30
+ expect do
31
+ @session.find_button('Does not exist')
32
+ end.to raise_error(Capybara::ElementNotFound)
33
+ end
34
+
35
+ context 'with :exact option' do
36
+ it 'should accept partial matches when false' do
37
+ expect(@session.find_button('What an Awesome', exact: false).value).to eq('awesome')
38
+ end
39
+
40
+ it 'should not accept partial matches when true' do
41
+ expect do
42
+ @session.find_button('What an Awesome', exact: true)
43
+ end.to raise_error(Capybara::ElementNotFound)
44
+ end
45
+ end
46
+
47
+ context 'with :disabled option' do
48
+ it 'should find disabled buttons when true' do
49
+ expect(@session.find_button('Disabled button', disabled: true).value).to eq('Disabled button')
50
+ end
51
+
52
+ it 'should not find disabled buttons when false' do
53
+ expect do
54
+ @session.find_button('Disabled button', disabled: false)
55
+ end.to raise_error(Capybara::ElementNotFound)
56
+ end
57
+
58
+ it 'should default to not finding disabled buttons' do
59
+ expect do
60
+ @session.find_button('Disabled button')
61
+ end.to raise_error(Capybara::ElementNotFound)
62
+ end
63
+
64
+ it 'should find disabled buttons when :all' do
65
+ expect(@session.find_button('Disabled button', disabled: :all).value).to eq('Disabled button')
66
+ end
67
+ end
68
+
69
+ context 'without locator' do
70
+ it 'should use options' do
71
+ expect(@session.find_button(disabled: true).value).to eq('Disabled button')
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ Capybara::SpecHelper.spec '#find_by_id' do
4
+ before do
5
+ @session.visit('/with_html')
6
+ end
7
+
8
+ it 'should find any element by id' do
9
+ expect(@session.find_by_id('red').tag_name).to eq('a')
10
+ end
11
+
12
+ it 'casts to string' do
13
+ expect(@session.find_by_id(:red).tag_name).to eq('a')
14
+ end
15
+
16
+ it 'should raise error if no element with id is found' do
17
+ expect do
18
+ @session.find_by_id('nothing_with_this_id')
19
+ end.to raise_error(Capybara::ElementNotFound)
20
+ end
21
+
22
+ context 'with :visible option' do
23
+ it 'finds invisible elements when `false`' do
24
+ expect(@session.find_by_id('hidden_via_ancestor', visible: false).text(:all)).to match(/with hidden ancestor/)
25
+ end
26
+
27
+ it "doesn't find invisible elements when `true`" do
28
+ expect do
29
+ @session.find_by_id('hidden_via_ancestor', visible: true)
30
+ end.to raise_error(Capybara::ElementNotFound)
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,113 @@
1
+ # frozen_string_literal: true
2
+
3
+ Capybara::SpecHelper.spec '#find_field' do
4
+ before do
5
+ @session.visit('/form')
6
+ end
7
+
8
+ it 'should find any field' do
9
+ Capybara.test_id = 'data-test-id'
10
+ expect(@session.find_field('Dog').value).to eq('dog')
11
+ expect(@session.find_field('form_description').value).to eq('Descriptive text goes here')
12
+ expect(@session.find_field('Region')[:name]).to eq('form[region]')
13
+ expect(@session.find_field('With Asterisk*')).to be_truthy
14
+ expect(@session.find_field('my_test_id')).to be_truthy
15
+ end
16
+
17
+ context 'aria_label attribute with Capybara.enable_aria_label' do
18
+ it 'should find when true' do
19
+ Capybara.enable_aria_label = true
20
+ expect(@session.find_field('Unlabelled Input')[:name]).to eq('form[which_form]')
21
+ # expect(@session.find_field('Emergency Number')[:id]).to eq('html5_tel')
22
+ end
23
+
24
+ it 'should not find when false' do
25
+ Capybara.enable_aria_label = false
26
+ expect { @session.find_field('Unlabelled Input') }.to raise_error(Capybara::ElementNotFound)
27
+ # expect { @session.find_field('Emergency Number') }.to raise_error(Capybara::ElementNotFound)
28
+ end
29
+ end
30
+
31
+ it 'casts to string' do
32
+ expect(@session.find_field(:Dog).value).to eq('dog')
33
+ end
34
+
35
+ it "should raise error if the field doesn't exist" do
36
+ expect do
37
+ @session.find_field('Does not exist')
38
+ end.to raise_error(Capybara::ElementNotFound)
39
+ end
40
+
41
+ it 'should raise error if filter option is invalid' do
42
+ expect do
43
+ @session.find_field('Dog', disabled: nil)
44
+ end.to raise_error ArgumentError, 'Invalid value nil passed to NodeFilter disabled'
45
+ end
46
+
47
+ context 'with :exact option' do
48
+ it 'should accept partial matches when false' do
49
+ expect(@session.find_field('Explanation', exact: false)[:name]).to eq('form[name_explanation]')
50
+ end
51
+
52
+ it 'should not accept partial matches when true' do
53
+ expect do
54
+ @session.find_field('Explanation', exact: true)
55
+ end.to raise_error(Capybara::ElementNotFound)
56
+ end
57
+ end
58
+
59
+ context 'with :disabled option' do
60
+ it 'should find disabled fields when true' do
61
+ expect(@session.find_field('Disabled Checkbox', disabled: true)[:name]).to eq('form[disabled_checkbox]')
62
+ expect(@session.find_field('form_disabled_fieldset_child', disabled: true)[:name]).to eq('form[disabled_fieldset_child]')
63
+ expect(@session.find_field('form_disabled_fieldset_descendant', disabled: true)[:name]).to eq('form[disabled_fieldset_descendant]')
64
+ end
65
+
66
+ it 'should not find disabled fields when false' do
67
+ expect do
68
+ @session.find_field('Disabled Checkbox', disabled: false)
69
+ end.to raise_error(Capybara::ElementNotFound)
70
+ end
71
+
72
+ it 'should not find disabled fields by default' do
73
+ expect do
74
+ @session.find_field('Disabled Checkbox')
75
+ end.to raise_error(Capybara::ElementNotFound)
76
+ end
77
+
78
+ it 'should find disabled fields when :all' do
79
+ expect(@session.find_field('Disabled Checkbox', disabled: :all)[:name]).to eq('form[disabled_checkbox]')
80
+ end
81
+
82
+ it 'should find enabled fields when :all' do
83
+ expect(@session.find_field('Dog', disabled: :all).value).to eq('dog')
84
+ end
85
+ end
86
+
87
+ context 'with :readonly option' do
88
+ it 'should find readonly fields when true' do
89
+ expect(@session.find_field('form[readonly_test]', readonly: true)[:id]).to eq 'readonly'
90
+ end
91
+
92
+ it 'should not find readonly fields when false' do
93
+ expect(@session.find_field('form[readonly_test]', readonly: false)[:id]).to eq 'not_readonly'
94
+ end
95
+
96
+ it 'should ignore readonly by default' do
97
+ expect do
98
+ @session.find_field('form[readonly_test]')
99
+ end.to raise_error(Capybara::Ambiguous, /found 2 elements/)
100
+ end
101
+ end
102
+
103
+ context 'with no locator' do
104
+ it 'should use options to find the field' do
105
+ expect(@session.find_field(type: 'checkbox', with: 'dog')['id']).to eq 'form_pets_dog'
106
+ end
107
+ end
108
+
109
+ it 'should accept an optional filter block' do
110
+ # this would be better done with the :with option but this is just a test
111
+ expect(@session.find_field('form[pets][]') { |node| node.value == 'dog' }[:id]).to eq 'form_pets_dog'
112
+ end
113
+ end