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,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ Capybara::SpecHelper.spec '#has_element?' do
4
+ before do
5
+ @session.visit('/with_html')
6
+ end
7
+
8
+ it 'should be true if the given element is on the page' do
9
+ expect(@session).to have_element('a', id: 'foo')
10
+ expect(@session).to have_element('a', text: 'A link', href: '/with_simple_html')
11
+ expect(@session).to have_element('a', text: :'A link', href: :'/with_simple_html')
12
+ expect(@session).to have_element('a', text: 'A link', href: %r{/with_simple_html})
13
+ expect(@session).to have_element('a', text: 'labore', target: '_self')
14
+ end
15
+
16
+ it 'should be false if the given element is not on the page' do
17
+ expect(@session).not_to have_element('a', text: 'monkey')
18
+ expect(@session).not_to have_element('a', text: 'A link', href: '/nonexistent-href')
19
+ expect(@session).not_to have_element('a', text: 'A link', href: /nonexistent/)
20
+ expect(@session).not_to have_element('a', text: 'labore', target: '_blank')
21
+ end
22
+
23
+ it 'should notify if an invalid locator is specified' do
24
+ allow(Capybara::Helpers).to receive(:warn).and_return(nil)
25
+ @session.has_element?(@session)
26
+ expect(Capybara::Helpers).to have_received(:warn).with(/Called from: .+/)
27
+ end
28
+ end
29
+
30
+ Capybara::SpecHelper.spec '#has_no_element?' do
31
+ before do
32
+ @session.visit('/with_html')
33
+ end
34
+
35
+ it 'should be false if the given element is on the page' do
36
+ expect(@session).not_to have_no_element('a', id: 'foo')
37
+ expect(@session).not_to have_no_element('a', text: 'A link', href: '/with_simple_html')
38
+ expect(@session).not_to have_no_element('a', text: 'labore', target: '_self')
39
+ end
40
+
41
+ it 'should be true if the given element is not on the page' do
42
+ expect(@session).to have_no_element('a', text: 'monkey')
43
+ expect(@session).to have_no_element('a', text: 'A link', href: '/nonexistent-href')
44
+ expect(@session).to have_no_element('a', text: 'A link', href: %r{/nonexistent-href})
45
+ expect(@session).to have_no_element('a', text: 'labore', target: '_blank')
46
+ end
47
+ end
@@ -0,0 +1,389 @@
1
+ # frozen_string_literal: true
2
+
3
+ Capybara::SpecHelper.spec '#has_field' do
4
+ before { @session.visit('/form') }
5
+
6
+ it 'should be true if the field is on the page' do
7
+ expect(@session).to have_field('Dog')
8
+ expect(@session).to have_field('form_description')
9
+ expect(@session).to have_field('Region')
10
+ expect(@session).to have_field(:Region)
11
+ end
12
+
13
+ it 'should be false if the field is not on the page' do
14
+ expect(@session).not_to have_field('Monkey')
15
+ end
16
+
17
+ context 'with value' do
18
+ it 'should be true if a field with the given value is on the page' do
19
+ expect(@session).to have_field('First Name', with: 'John')
20
+ expect(@session).to have_field('First Name', with: /^Joh/)
21
+ expect(@session).to have_field('Phone', with: '+1 555 7021')
22
+ expect(@session).to have_field('Street', with: 'Sesame street 66')
23
+ expect(@session).to have_field('Description', with: 'Descriptive text goes here')
24
+ end
25
+
26
+ it 'should be false if the given field is not on the page' do
27
+ expect(@session).not_to have_field('First Name', with: 'Peter')
28
+ expect(@session).not_to have_field('First Name', with: /eter$/)
29
+ expect(@session).not_to have_field('Wrong Name', with: 'John')
30
+ expect(@session).not_to have_field('Description', with: 'Monkey')
31
+ end
32
+
33
+ it 'should be true after the field has been filled in with the given value' do
34
+ @session.fill_in('First Name', with: 'Jonas')
35
+ expect(@session).to have_field('First Name', with: 'Jonas')
36
+ expect(@session).to have_field('First Name', with: /ona/)
37
+ end
38
+
39
+ it 'should be false after the field has been filled in with a different value' do
40
+ @session.fill_in('First Name', with: 'Jonas')
41
+ expect(@session).not_to have_field('First Name', with: 'John')
42
+ expect(@session).not_to have_field('First Name', with: /John|Paul|George|Ringo/)
43
+ end
44
+
45
+ it 'should output filter errors if only one element matched the selector but failed the filters' do
46
+ @session.fill_in('First Name', with: 'Thomas')
47
+ expect do
48
+ expect(@session).to have_field('First Name', with: 'Jonas')
49
+ end.to raise_exception(RSpec::Expectations::ExpectationNotMetError, /Expected value to be "Jonas" but was "Thomas"/)
50
+
51
+ # native boolean node filter
52
+ expect do
53
+ expect(@session).to have_field('First Name', readonly: true)
54
+ end.to raise_exception(RSpec::Expectations::ExpectationNotMetError, /Expected readonly true but it wasn't/)
55
+
56
+ # inherited boolean node filter
57
+ expect do
58
+ expect(@session).to have_field('form_pets_cat', checked: true)
59
+ end.to raise_exception(RSpec::Expectations::ExpectationNotMetError, /Expected checked true but it wasn't/)
60
+ end
61
+ end
62
+
63
+ context 'with validation message', requires: [:html_validation] do
64
+ it 'should accept a regexp' do
65
+ @session.fill_in('form_zipcode', with: '1234')
66
+ expect(@session).to have_field('form_zipcode', validation_message: /match the requested format/)
67
+ expect(@session).not_to have_field('form_zipcode', validation_message: /random/)
68
+ end
69
+
70
+ it 'should accept a string' do
71
+ @session.fill_in('form_zipcode', with: '1234')
72
+ expect(@session).to have_field('form_zipcode', validation_message: 'Please match the requested format.')
73
+ expect(@session).not_to have_field('form_zipcode', validation_message: 'match the requested format.')
74
+ @session.fill_in('form_zipcode', with: '12345')
75
+ expect(@session).to have_field('form_zipcode', validation_message: '')
76
+ end
77
+ end
78
+
79
+ context 'with type' do
80
+ it 'should be true if a field with the given type is on the page' do
81
+ expect(@session).to have_field('First Name', type: 'text')
82
+ expect(@session).to have_field('Html5 Email', type: 'email')
83
+ expect(@session).to have_field('Html5 Multiple Email', type: 'email')
84
+ expect(@session).to have_field('Html5 Tel', type: 'tel')
85
+ expect(@session).to have_field('Description', type: 'textarea')
86
+ expect(@session).to have_field('Languages', type: 'select')
87
+ end
88
+
89
+ it 'should be false if the given field is not on the page' do
90
+ expect(@session).not_to have_field('First Name', type: 'textarea')
91
+ expect(@session).not_to have_field('Html5 Email', type: 'tel')
92
+ expect(@session).not_to have_field('Html5 Multiple Email', type: 'tel')
93
+ expect(@session).not_to have_field('Description', type: '')
94
+ expect(@session).not_to have_field('Description', type: 'email')
95
+ expect(@session).not_to have_field('Languages', type: 'textarea')
96
+ end
97
+
98
+ it 'it can find type="hidden" elements if explicity specified' do
99
+ expect(@session).to have_field('form[data]', with: 'TWTW', type: 'hidden')
100
+ end
101
+ end
102
+
103
+ context 'with multiple' do
104
+ it 'should be true if a field with the multiple attribute is on the page' do
105
+ expect(@session).to have_field('Html5 Multiple Email', multiple: true)
106
+ end
107
+
108
+ it 'should be false if a field without the multiple attribute is not on the page' do
109
+ expect(@session).not_to have_field('Html5 Multiple Email', multiple: false)
110
+ end
111
+ end
112
+
113
+ context 'with focused:', requires: [:active_element] do
114
+ it 'should be true if a field has focus' do
115
+ 2.times { @session.send_keys(:tab) }
116
+
117
+ expect(@session).to have_field('An Input', focused: true)
118
+ end
119
+
120
+ it 'should be false if a field does not have focus' do
121
+ expect(@session).to have_field('An Input', focused: false)
122
+ end
123
+ end
124
+
125
+ context 'with valid', requires: [:js] do
126
+ it 'should be true if field is valid' do
127
+ @session.fill_in 'required', with: 'something'
128
+ @session.fill_in 'length', with: 'abcd'
129
+
130
+ expect(@session).to have_field('required', valid: true)
131
+ expect(@session).to have_field('length', valid: true)
132
+ end
133
+
134
+ it 'should be false if field is invalid' do
135
+ expect(@session).not_to have_field('required', valid: true)
136
+ expect(@session).to have_field('required', valid: false)
137
+
138
+ @session.fill_in 'length', with: 'abc'
139
+ expect(@session).not_to have_field('length', valid: true)
140
+ end
141
+ end
142
+ end
143
+
144
+ Capybara::SpecHelper.spec '#has_no_field' do
145
+ before { @session.visit('/form') }
146
+
147
+ it 'should be false if the field is on the page' do
148
+ expect(@session).not_to have_no_field('Dog')
149
+ expect(@session).not_to have_no_field('form_description')
150
+ expect(@session).not_to have_no_field('Region')
151
+ end
152
+
153
+ it 'should be true if the field is not on the page' do
154
+ expect(@session).to have_no_field('Monkey')
155
+ end
156
+
157
+ context 'with value' do
158
+ it 'should be false if a field with the given value is on the page' do
159
+ expect(@session).not_to have_no_field('First Name', with: 'John')
160
+ expect(@session).not_to have_no_field('Phone', with: '+1 555 7021')
161
+ expect(@session).not_to have_no_field('Street', with: 'Sesame street 66')
162
+ expect(@session).not_to have_no_field('Description', with: 'Descriptive text goes here')
163
+ end
164
+
165
+ it 'should be true if the given field is not on the page' do
166
+ expect(@session).to have_no_field('First Name', with: 'Peter')
167
+ expect(@session).to have_no_field('Wrong Name', with: 'John')
168
+ expect(@session).to have_no_field('Description', with: 'Monkey')
169
+ end
170
+
171
+ it 'should be false after the field has been filled in with the given value' do
172
+ @session.fill_in('First Name', with: 'Jonas')
173
+ expect(@session).not_to have_no_field('First Name', with: 'Jonas')
174
+ end
175
+
176
+ it 'should be true after the field has been filled in with a different value' do
177
+ @session.fill_in('First Name', with: 'Jonas')
178
+ expect(@session).to have_no_field('First Name', with: 'John')
179
+ end
180
+ end
181
+
182
+ context 'with type' do
183
+ it 'should be false if a field with the given type is on the page' do
184
+ expect(@session).not_to have_no_field('First Name', type: 'text')
185
+ expect(@session).not_to have_no_field('Html5 Email', type: 'email')
186
+ expect(@session).not_to have_no_field('Html5 Tel', type: 'tel')
187
+ expect(@session).not_to have_no_field('Description', type: 'textarea')
188
+ expect(@session).not_to have_no_field('Languages', type: 'select')
189
+ end
190
+
191
+ it 'should be true if the given field is not on the page' do
192
+ expect(@session).to have_no_field('First Name', type: 'textarea')
193
+ expect(@session).to have_no_field('Html5 Email', type: 'tel')
194
+ expect(@session).to have_no_field('Description', type: '')
195
+ expect(@session).to have_no_field('Description', type: 'email')
196
+ expect(@session).to have_no_field('Languages', type: 'textarea')
197
+ end
198
+ end
199
+
200
+ context 'with focused:', requires: [:active_element] do
201
+ it 'should be true if a field does not have focus when focused: true' do
202
+ expect(@session).to have_no_field('An Input', focused: true)
203
+ end
204
+
205
+ it 'should be false if a field has focus when focused: true' do
206
+ 2.times { @session.send_keys(:tab) }
207
+
208
+ expect(@session).not_to have_no_field('An Input', focused: true)
209
+ end
210
+ end
211
+ end
212
+
213
+ Capybara::SpecHelper.spec '#has_checked_field?' do
214
+ before { @session.visit('/form') }
215
+
216
+ it 'should be true if a checked field is on the page' do
217
+ expect(@session).to have_checked_field('gender_female')
218
+ expect(@session).to have_checked_field('Hamster')
219
+ end
220
+
221
+ it 'should be true for disabled checkboxes if disabled: true' do
222
+ expect(@session).to have_checked_field('Disabled Checkbox', disabled: true)
223
+ end
224
+
225
+ it 'should be false if an unchecked field is on the page' do
226
+ expect(@session).not_to have_checked_field('form_pets_cat')
227
+ expect(@session).not_to have_checked_field('Male')
228
+ end
229
+
230
+ it 'should be false if no field is on the page' do
231
+ expect(@session).not_to have_checked_field('Does Not Exist')
232
+ end
233
+
234
+ it 'should be false for disabled checkboxes by default' do
235
+ expect(@session).not_to have_checked_field('Disabled Checkbox')
236
+ end
237
+
238
+ it 'should be false for disabled checkboxes if disabled: false' do
239
+ expect(@session).not_to have_checked_field('Disabled Checkbox', disabled: false)
240
+ end
241
+
242
+ it 'should be true for disabled checkboxes if disabled: :all' do
243
+ expect(@session).to have_checked_field('Disabled Checkbox', disabled: :all)
244
+ end
245
+
246
+ it 'should be true for enabled checkboxes if disabled: :all' do
247
+ expect(@session).to have_checked_field('gender_female', disabled: :all)
248
+ end
249
+
250
+ it 'should be true after an unchecked checkbox is checked' do
251
+ @session.check('form_pets_cat')
252
+ expect(@session).to have_checked_field('form_pets_cat')
253
+ end
254
+
255
+ it 'should be false after a checked checkbox is unchecked' do
256
+ @session.uncheck('form_pets_dog')
257
+ expect(@session).not_to have_checked_field('form_pets_dog')
258
+ end
259
+
260
+ it 'should be true after an unchecked radio button is chosen' do
261
+ @session.choose('gender_male')
262
+ expect(@session).to have_checked_field('gender_male')
263
+ end
264
+
265
+ it 'should be false after another radio button in the group is chosen' do
266
+ @session.choose('gender_male')
267
+ expect(@session).not_to have_checked_field('gender_female')
268
+ end
269
+ end
270
+
271
+ Capybara::SpecHelper.spec '#has_no_checked_field?' do
272
+ before { @session.visit('/form') }
273
+
274
+ it 'should be false if a checked field is on the page' do
275
+ expect(@session).not_to have_no_checked_field('gender_female')
276
+ expect(@session).not_to have_no_checked_field('Hamster')
277
+ end
278
+
279
+ it 'should be false for disabled checkboxes if disabled: true' do
280
+ expect(@session).not_to have_no_checked_field('Disabled Checkbox', disabled: true)
281
+ end
282
+
283
+ it 'should be true if an unchecked field is on the page' do
284
+ expect(@session).to have_no_checked_field('form_pets_cat')
285
+ expect(@session).to have_no_checked_field('Male')
286
+ end
287
+
288
+ it 'should be true if no field is on the page' do
289
+ expect(@session).to have_no_checked_field('Does Not Exist')
290
+ end
291
+
292
+ it 'should be true for disabled checkboxes by default' do
293
+ expect(@session).to have_no_checked_field('Disabled Checkbox')
294
+ end
295
+
296
+ it 'should be true for disabled checkboxes if disabled: false' do
297
+ expect(@session).to have_no_checked_field('Disabled Checkbox', disabled: false)
298
+ end
299
+ end
300
+
301
+ Capybara::SpecHelper.spec '#has_unchecked_field?' do
302
+ before { @session.visit('/form') }
303
+
304
+ it 'should be false if a checked field is on the page' do
305
+ expect(@session).not_to have_unchecked_field('gender_female')
306
+ expect(@session).not_to have_unchecked_field('Hamster')
307
+ end
308
+
309
+ it 'should be true if an unchecked field is on the page' do
310
+ expect(@session).to have_unchecked_field('form_pets_cat')
311
+ expect(@session).to have_unchecked_field('Male')
312
+ end
313
+
314
+ it 'should be true for disabled unchecked fields if disabled: true' do
315
+ expect(@session).to have_unchecked_field('Disabled Unchecked Checkbox', disabled: true)
316
+ end
317
+
318
+ it 'should be false if no field is on the page' do
319
+ expect(@session).not_to have_unchecked_field('Does Not Exist')
320
+ end
321
+
322
+ it 'should be false for disabled unchecked fields by default' do
323
+ expect(@session).not_to have_unchecked_field('Disabled Unchecked Checkbox')
324
+ end
325
+
326
+ it 'should be false for disabled unchecked fields if disabled: false' do
327
+ expect(@session).not_to have_unchecked_field('Disabled Unchecked Checkbox', disabled: false)
328
+ end
329
+
330
+ it 'should be false after an unchecked checkbox is checked' do
331
+ @session.check('form_pets_cat')
332
+ expect(@session).not_to have_unchecked_field('form_pets_cat')
333
+ end
334
+
335
+ it 'should be true after a checked checkbox is unchecked' do
336
+ @session.uncheck('form_pets_dog')
337
+ expect(@session).to have_unchecked_field('form_pets_dog')
338
+ end
339
+
340
+ it 'should be false after an unchecked radio button is chosen' do
341
+ @session.choose('gender_male')
342
+ expect(@session).not_to have_unchecked_field('gender_male')
343
+ end
344
+
345
+ it 'should be true after another radio button in the group is chosen' do
346
+ @session.choose('gender_male')
347
+ expect(@session).to have_unchecked_field('gender_female')
348
+ end
349
+
350
+ it 'should support locator-less usage' do
351
+ expect(@session.has_unchecked_field?(disabled: true, id: 'form_disabled_unchecked_checkbox')).to be true
352
+ expect(@session).to have_unchecked_field(disabled: true, id: 'form_disabled_unchecked_checkbox')
353
+ end
354
+ end
355
+
356
+ Capybara::SpecHelper.spec '#has_no_unchecked_field?' do
357
+ before { @session.visit('/form') }
358
+
359
+ it 'should be true if a checked field is on the page' do
360
+ expect(@session).to have_no_unchecked_field('gender_female')
361
+ expect(@session).to have_no_unchecked_field('Hamster')
362
+ end
363
+
364
+ it 'should be false if an unchecked field is on the page' do
365
+ expect(@session).not_to have_no_unchecked_field('form_pets_cat')
366
+ expect(@session).not_to have_no_unchecked_field('Male')
367
+ end
368
+
369
+ it 'should be false for disabled unchecked fields if disabled: true' do
370
+ expect(@session).not_to have_no_unchecked_field('Disabled Unchecked Checkbox', disabled: true)
371
+ end
372
+
373
+ it 'should be true if no field is on the page' do
374
+ expect(@session).to have_no_unchecked_field('Does Not Exist')
375
+ end
376
+
377
+ it 'should be true for disabled unchecked fields by default' do
378
+ expect(@session).to have_no_unchecked_field('Disabled Unchecked Checkbox')
379
+ end
380
+
381
+ it 'should be true for disabled unchecked fields if disabled: false' do
382
+ expect(@session).to have_no_unchecked_field('Disabled Unchecked Checkbox', disabled: false)
383
+ end
384
+
385
+ it 'should support locator-less usage' do
386
+ expect(@session.has_no_unchecked_field?(disabled: false, id: 'form_disabled_unchecked_checkbox')).to be true
387
+ expect(@session).to have_no_unchecked_field(disabled: false, id: 'form_disabled_unchecked_checkbox')
388
+ end
389
+ end
@@ -0,0 +1,79 @@
1
+ # frozen_string_literal: true
2
+
3
+ Capybara::SpecHelper.spec '#has_link?' do
4
+ before do
5
+ @session.visit('/with_html')
6
+ end
7
+
8
+ it 'should be true if the given link is on the page' do
9
+ expect(@session).to have_link('foo')
10
+ expect(@session).to have_link('awesome title')
11
+ expect(@session).to have_link('A link', href: '/with_simple_html')
12
+ expect(@session).to have_link(:'A link', href: :'/with_simple_html')
13
+ expect(@session).to have_link('A link', href: %r{/with_simple_html})
14
+ expect(@session).to have_link('labore', target: '_self')
15
+ end
16
+
17
+ it 'should be false if the given link is not on the page' do
18
+ expect(@session).not_to have_link('monkey')
19
+ expect(@session).not_to have_link('A link', href: '/nonexistent-href')
20
+ expect(@session).not_to have_link('A link', href: /nonexistent/)
21
+ expect(@session).not_to have_link('labore', target: '_blank')
22
+ end
23
+
24
+ it 'should notify if an invalid locator is specified' do
25
+ allow(Capybara::Helpers).to receive(:warn).and_return(nil)
26
+ @session.has_link?(@session)
27
+ expect(Capybara::Helpers).to have_received(:warn).with(/Called from: .+/)
28
+ end
29
+
30
+ context 'with focused:', requires: [:active_element] do
31
+ it 'should be true if the given link is on the page and has focus' do
32
+ @session.send_keys(:tab)
33
+
34
+ expect(@session).to have_link('labore', focused: true)
35
+ end
36
+
37
+ it 'should be false if the given link is on the page and does not have focus' do
38
+ expect(@session).to have_link('labore', focused: false)
39
+ end
40
+ end
41
+
42
+ it 'should raise an error if an invalid option is passed' do
43
+ expect do
44
+ expect(@session).to have_link('labore', invalid: true)
45
+ end.to raise_error(ArgumentError, 'Invalid option(s) :invalid, should be one of :above, :below, :left_of, :right_of, :near, :count, :minimum, :maximum, :between, :text, :id, :class, :style, :visible, :obscured, :exact, :exact_text, :normalize_ws, :match, :wait, :filter_set, :focused, :href, :alt, :title, :target, :download')
46
+ end
47
+ end
48
+
49
+ Capybara::SpecHelper.spec '#has_no_link?' do
50
+ before do
51
+ @session.visit('/with_html')
52
+ end
53
+
54
+ it 'should be false if the given link is on the page' do
55
+ expect(@session).not_to have_no_link('foo')
56
+ expect(@session).not_to have_no_link('awesome title')
57
+ expect(@session).not_to have_no_link('A link', href: '/with_simple_html')
58
+ expect(@session).not_to have_no_link('labore', target: '_self')
59
+ end
60
+
61
+ it 'should be true if the given link is not on the page' do
62
+ expect(@session).to have_no_link('monkey')
63
+ expect(@session).to have_no_link('A link', href: '/nonexistent-href')
64
+ expect(@session).to have_no_link('A link', href: %r{/nonexistent-href})
65
+ expect(@session).to have_no_link('labore', target: '_blank')
66
+ end
67
+
68
+ context 'with focused:', requires: [:active_element] do
69
+ it 'should be true if the given link is on the page and has focus' do
70
+ expect(@session).to have_no_link('labore', focused: true)
71
+ end
72
+
73
+ it 'should be false if the given link is on the page and does not have focus' do
74
+ @session.send_keys(:tab)
75
+
76
+ expect(@session).to have_no_link('labore', focused: false)
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,78 @@
1
+ # frozen_string_literal: true
2
+
3
+ Capybara::SpecHelper.spec '#have_none_of_selectors' do
4
+ before do
5
+ @session.visit('/with_html')
6
+ end
7
+
8
+ it 'should be false if any of the given locators are on the page' do
9
+ expect do
10
+ expect(@session).to have_none_of_selectors(:xpath, '//p', '//a')
11
+ end.to raise_error RSpec::Expectations::ExpectationNotMetError
12
+ expect do
13
+ expect(@session).to have_none_of_selectors(:css, 'p a#foo')
14
+ end.to raise_error RSpec::Expectations::ExpectationNotMetError
15
+ end
16
+
17
+ it 'should be true if none of the given locators are on the page' do
18
+ expect(@session).to have_none_of_selectors(:xpath, '//abbr', '//td')
19
+ expect(@session).to have_none_of_selectors(:css, 'p a#doesnotexist', 'abbr')
20
+ end
21
+
22
+ it 'should use default selector' do
23
+ Capybara.default_selector = :css
24
+ expect(@session).to have_none_of_selectors('p a#doesnotexist', 'abbr')
25
+ expect do
26
+ expect(@session).to have_none_of_selectors('abbr', 'p a#foo')
27
+ end.to raise_error RSpec::Expectations::ExpectationNotMetError
28
+ end
29
+
30
+ context 'should respect scopes' do
31
+ it 'when used with `within`' do
32
+ @session.within "//p[@id='first']" do
33
+ expect do
34
+ expect(@session).to have_none_of_selectors(".//a[@id='foo']")
35
+ end.to raise_error RSpec::Expectations::ExpectationNotMetError
36
+ expect(@session).to have_none_of_selectors(".//a[@id='red']")
37
+ end
38
+ end
39
+
40
+ it 'when called on an element' do
41
+ el = @session.find "//p[@id='first']"
42
+ expect do
43
+ expect(el).to have_none_of_selectors(".//a[@id='foo']")
44
+ end.to raise_error RSpec::Expectations::ExpectationNotMetError
45
+ expect(el).to have_none_of_selectors(".//a[@id='red']")
46
+ end
47
+ end
48
+
49
+ context 'with options' do
50
+ it 'should apply the options to all locators' do
51
+ expect do
52
+ expect(@session).to have_none_of_selectors('//p//a', text: 'Redirect')
53
+ end.to raise_error RSpec::Expectations::ExpectationNotMetError
54
+ expect(@session).to have_none_of_selectors('//p', text: 'Doesnotexist')
55
+ end
56
+
57
+ it 'should discard all matches where the given regexp is matched' do
58
+ expect do
59
+ expect(@session).to have_none_of_selectors('//p//a', text: /re[dab]i/i, count: 1)
60
+ end.to raise_error RSpec::Expectations::ExpectationNotMetError
61
+ expect(@session).to have_none_of_selectors('//p//a', text: /Red$/)
62
+ end
63
+ end
64
+
65
+ context 'with wait', requires: [:js] do
66
+ it 'should not find elements if they appear after given wait duration' do
67
+ @session.visit('/with_js')
68
+ @session.click_link('Click me')
69
+ expect(@session).to have_none_of_selectors(:css, '#new_field', 'a#has-been-clicked', wait: 0.1)
70
+ end
71
+ end
72
+
73
+ it 'cannot be negated' do
74
+ expect do
75
+ expect(@session).not_to have_none_of_selectors(:css, 'p a#foo', 'h2#h2one', 'h2#h2two')
76
+ end.to raise_error ArgumentError
77
+ end
78
+ end