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,316 @@
1
+ # frozen_string_literal: true
2
+
3
+ Capybara::SpecHelper.spec '#has_select?' 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_select('Locale')
8
+ expect(@session).to have_select('form_region')
9
+ expect(@session).to have_select('Languages')
10
+ expect(@session).to have_select(:Languages)
11
+ end
12
+
13
+ it 'should be false if the field is not on the page' do
14
+ expect(@session).not_to have_select('Monkey')
15
+ end
16
+
17
+ context 'with selected value' do
18
+ it 'should be true if a field with the given value is on the page' do
19
+ expect(@session).to have_select('form_locale', selected: 'English')
20
+ expect(@session).to have_select('Region', selected: 'Norway')
21
+ expect(@session).to have_select('Underwear', selected: [
22
+ 'Boxerbriefs', 'Briefs', 'Commando', "Frenchman's Pantalons", 'Long Johns'
23
+ ])
24
+ end
25
+
26
+ it 'should be false if the given field is not on the page' do
27
+ expect(@session).not_to have_select('Locale', selected: 'Swedish')
28
+ expect(@session).not_to have_select('Does not exist', selected: 'John')
29
+ expect(@session).not_to have_select('City', selected: 'Not there')
30
+ expect(@session).not_to have_select('Underwear', selected: [
31
+ 'Boxerbriefs', 'Briefs', 'Commando', "Frenchman's Pantalons", 'Long Johns', 'Nonexistent'
32
+ ])
33
+ expect(@session).not_to have_select('Underwear', selected: [
34
+ 'Boxerbriefs', 'Briefs', 'Boxers', 'Commando', "Frenchman's Pantalons", 'Long Johns'
35
+ ])
36
+ expect(@session).not_to have_select('Underwear', selected: [
37
+ 'Boxerbriefs', 'Briefs', 'Commando', "Frenchman's Pantalons"
38
+ ])
39
+ end
40
+
41
+ it 'should be true after the given value is selected' do
42
+ @session.select('Swedish', from: 'Locale')
43
+ expect(@session).to have_select('Locale', selected: 'Swedish')
44
+ end
45
+
46
+ it 'should be false after a different value is selected' do
47
+ @session.select('Swedish', from: 'Locale')
48
+ expect(@session).not_to have_select('Locale', selected: 'English')
49
+ end
50
+
51
+ it 'should be true after the given values are selected' do
52
+ @session.select('Boxers', from: 'Underwear')
53
+ expect(@session).to have_select('Underwear', selected: [
54
+ 'Boxerbriefs', 'Briefs', 'Boxers', 'Commando', "Frenchman's Pantalons", 'Long Johns'
55
+ ])
56
+ end
57
+
58
+ it 'should be false after one of the values is unselected' do
59
+ @session.unselect('Briefs', from: 'Underwear')
60
+ expect(@session).not_to have_select('Underwear', selected: [
61
+ 'Boxerbriefs', 'Briefs', 'Commando', "Frenchman's Pantalons", 'Long Johns'
62
+ ])
63
+ end
64
+
65
+ it "should be true even when the selected option invisible, regardless of the select's visibility" do
66
+ expect(@session).to have_select('Icecream', visible: :hidden, selected: 'Chocolate')
67
+ expect(@session).to have_select('Sorbet', selected: 'Vanilla')
68
+ end
69
+ end
70
+
71
+ context 'with partial select' do
72
+ it 'should be true if a field with the given partial values is on the page' do
73
+ expect(@session).to have_select('Underwear', with_selected: %w[Boxerbriefs Briefs])
74
+ end
75
+
76
+ it 'should be false if a field with the given partial values is not on the page' do
77
+ expect(@session).not_to have_select('Underwear', with_selected: %w[Boxerbriefs Boxers])
78
+ end
79
+
80
+ it 'should be true after the given partial value is selected' do
81
+ @session.select('Boxers', from: 'Underwear')
82
+ expect(@session).to have_select('Underwear', with_selected: %w[Boxerbriefs Boxers])
83
+ end
84
+
85
+ it 'should be false after one of the given partial values is unselected' do
86
+ @session.unselect('Briefs', from: 'Underwear')
87
+ expect(@session).not_to have_select('Underwear', with_selected: %w[Boxerbriefs Briefs])
88
+ end
89
+
90
+ it "should be true even when the selected values are invisible, regardless of the select's visibility" do
91
+ expect(@session).to have_select('Dessert', visible: :hidden, with_options: %w[Pudding Tiramisu])
92
+ expect(@session).to have_select('Cake', with_selected: ['Chocolate Cake', 'Sponge Cake'])
93
+ end
94
+
95
+ it 'should support non array partial values' do
96
+ expect(@session).to have_select('Underwear', with_selected: 'Briefs')
97
+ expect(@session).not_to have_select('Underwear', with_selected: 'Boxers')
98
+ end
99
+ end
100
+
101
+ context 'with exact options' do
102
+ it 'should be true if a field with the given options is on the page' do
103
+ expect(@session).to have_select('Region', options: %w[Norway Sweden Finland])
104
+ expect(@session).to have_select('Tendency', options: [])
105
+ end
106
+
107
+ it 'should be false if the given field is not on the page' do
108
+ expect(@session).not_to have_select('Locale', options: ['Swedish'])
109
+ expect(@session).not_to have_select('Does not exist', options: ['John'])
110
+ expect(@session).not_to have_select('City', options: ['London', 'Made up city'])
111
+ expect(@session).not_to have_select('Region', options: %w[Norway Sweden])
112
+ expect(@session).not_to have_select('Region', options: %w[Norway Norway Norway])
113
+ end
114
+
115
+ it 'should be true even when the options are invisible, if the select itself is invisible' do
116
+ expect(@session).to have_select('Icecream', visible: :hidden, options: %w[Chocolate Vanilla Strawberry])
117
+ end
118
+ end
119
+
120
+ context 'with enabled options' do
121
+ it 'should be true if the listed options exist and are enabled' do
122
+ expect(@session).to have_select('form_title', enabled_options: %w[Mr Mrs Miss])
123
+ end
124
+
125
+ it 'should be false if the listed options do not exist' do
126
+ expect(@session).not_to have_select('form_title', enabled_options: ['Not there'])
127
+ end
128
+
129
+ it 'should be false if the listed option exists but is not enabled' do
130
+ expect(@session).not_to have_select('form_title', enabled_options: %w[Mr Mrs Miss Other])
131
+ end
132
+ end
133
+
134
+ context 'with disabled options' do
135
+ it 'should be true if the listed options exist and are disabled' do
136
+ expect(@session).to have_select('form_title', disabled_options: ['Other'])
137
+ end
138
+
139
+ it 'should be false if the listed options do not exist' do
140
+ expect(@session).not_to have_select('form_title', disabled_options: ['Not there'])
141
+ end
142
+
143
+ it 'should be false if the listed option exists but is not disabled' do
144
+ expect(@session).not_to have_select('form_title', disabled_options: %w[Other Mrs])
145
+ end
146
+ end
147
+
148
+ context 'with partial options' do
149
+ it 'should be true if a field with the given partial options is on the page' do
150
+ expect(@session).to have_select('Region', with_options: %w[Norway Sweden])
151
+ expect(@session).to have_select('City', with_options: ['London'])
152
+ end
153
+
154
+ it 'should be false if a field with the given partial options is not on the page' do
155
+ expect(@session).not_to have_select('Locale', with_options: ['Uruguayan'])
156
+ expect(@session).not_to have_select('Does not exist', with_options: ['John'])
157
+ expect(@session).not_to have_select('Region', with_options: %w[Norway Sweden Finland Latvia])
158
+ end
159
+
160
+ it 'should be true even when the options are invisible, if the select itself is invisible' do
161
+ expect(@session).to have_select('Icecream', visible: :hidden, with_options: %w[Vanilla Strawberry])
162
+ end
163
+ end
164
+
165
+ context 'with multiple option' do
166
+ it 'should find multiple selects if true' do
167
+ expect(@session).to have_select('form_languages', multiple: true)
168
+ expect(@session).not_to have_select('form_other_title', multiple: true)
169
+ end
170
+
171
+ it 'should not find multiple selects if false' do
172
+ expect(@session).not_to have_select('form_languages', multiple: false)
173
+ expect(@session).to have_select('form_other_title', multiple: false)
174
+ end
175
+
176
+ it 'should find both if not specified' do
177
+ expect(@session).to have_select('form_languages')
178
+ expect(@session).to have_select('form_other_title')
179
+ end
180
+ end
181
+
182
+ it 'should raise an error if an invalid option is passed' do
183
+ expect do
184
+ expect(@session).to have_select('form_languages', invalid: true)
185
+ 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, :disabled, :name, :placeholder, :options, :enabled_options, :disabled_options, :selected, :with_selected, :multiple, :with_options')
186
+ end
187
+
188
+ it 'should support locator-less usage' do
189
+ expect(@session.has_select?(with_options: %w[Norway Sweden])).to be true
190
+ expect(@session).to have_select(with_options: ['London'])
191
+ expect(@session.has_select?(with_selected: %w[Commando Boxerbriefs])).to be true
192
+ expect(@session).to have_select(with_selected: ['Briefs'])
193
+ end
194
+ end
195
+
196
+ Capybara::SpecHelper.spec '#has_no_select?' do
197
+ before { @session.visit('/form') }
198
+
199
+ it 'should be false if the field is on the page' do
200
+ expect(@session).not_to have_no_select('Locale')
201
+ expect(@session).not_to have_no_select('form_region')
202
+ expect(@session).not_to have_no_select('Languages')
203
+ end
204
+
205
+ it 'should be true if the field is not on the page' do
206
+ expect(@session).to have_no_select('Monkey')
207
+ end
208
+
209
+ context 'with selected value' do
210
+ it 'should be false if a field with the given value is on the page' do
211
+ expect(@session).not_to have_no_select('form_locale', selected: 'English')
212
+ expect(@session).not_to have_no_select('Region', selected: 'Norway')
213
+ expect(@session).not_to have_no_select('Underwear', selected: [
214
+ 'Boxerbriefs', 'Briefs', 'Commando', "Frenchman's Pantalons", 'Long Johns'
215
+ ])
216
+ end
217
+
218
+ it 'should be true if the given field is not on the page' do
219
+ expect(@session).to have_no_select('Locale', selected: 'Swedish')
220
+ expect(@session).to have_no_select('Does not exist', selected: 'John')
221
+ expect(@session).to have_no_select('City', selected: 'Not there')
222
+ expect(@session).to have_no_select('Underwear', selected: [
223
+ 'Boxerbriefs', 'Briefs', 'Commando', "Frenchman's Pantalons", 'Long Johns', 'Nonexistent'
224
+ ])
225
+ expect(@session).to have_no_select('Underwear', selected: [
226
+ 'Boxerbriefs', 'Briefs', 'Boxers', 'Commando', "Frenchman's Pantalons", 'Long Johns'
227
+ ])
228
+ expect(@session).to have_no_select('Underwear', selected: [
229
+ 'Boxerbriefs', 'Briefs', 'Commando', "Frenchman's Pantalons"
230
+ ])
231
+ end
232
+
233
+ it 'should be false after the given value is selected' do
234
+ @session.select('Swedish', from: 'Locale')
235
+ expect(@session).not_to have_no_select('Locale', selected: 'Swedish')
236
+ end
237
+
238
+ it 'should be true after a different value is selected' do
239
+ @session.select('Swedish', from: 'Locale')
240
+ expect(@session).to have_no_select('Locale', selected: 'English')
241
+ end
242
+
243
+ it 'should be false after the given values are selected' do
244
+ @session.select('Boxers', from: 'Underwear')
245
+ expect(@session).not_to have_no_select('Underwear', selected: [
246
+ 'Boxerbriefs', 'Briefs', 'Boxers', 'Commando', "Frenchman's Pantalons", 'Long Johns'
247
+ ])
248
+ end
249
+
250
+ it 'should be true after one of the values is unselected' do
251
+ @session.unselect('Briefs', from: 'Underwear')
252
+ expect(@session).to have_no_select('Underwear', selected: [
253
+ 'Boxerbriefs', 'Briefs', 'Commando', "Frenchman's Pantalons", 'Long Johns'
254
+ ])
255
+ end
256
+ end
257
+
258
+ context 'with partial select' do
259
+ it 'should be false if a field with the given partial values is on the page' do
260
+ expect(@session).not_to have_no_select('Underwear', with_selected: %w[Boxerbriefs Briefs])
261
+ end
262
+
263
+ it 'should be true if a field with the given partial values is not on the page' do
264
+ expect(@session).to have_no_select('Underwear', with_selected: %w[Boxerbriefs Boxers])
265
+ end
266
+
267
+ it 'should be false after the given partial value is selected' do
268
+ @session.select('Boxers', from: 'Underwear')
269
+ expect(@session).not_to have_no_select('Underwear', with_selected: %w[Boxerbriefs Boxers])
270
+ end
271
+
272
+ it 'should be true after one of the given partial values is unselected' do
273
+ @session.unselect('Briefs', from: 'Underwear')
274
+ expect(@session).to have_no_select('Underwear', with_selected: %w[Boxerbriefs Briefs])
275
+ end
276
+
277
+ it 'should support non array partial values' do
278
+ expect(@session).not_to have_no_select('Underwear', with_selected: 'Briefs')
279
+ expect(@session).to have_no_select('Underwear', with_selected: 'Boxers')
280
+ end
281
+ end
282
+
283
+ context 'with exact options' do
284
+ it 'should be false if a field with the given options is on the page' do
285
+ expect(@session).not_to have_no_select('Region', options: %w[Norway Sweden Finland])
286
+ end
287
+
288
+ it 'should be true if the given field is not on the page' do
289
+ expect(@session).to have_no_select('Locale', options: ['Swedish'])
290
+ expect(@session).to have_no_select('Does not exist', options: ['John'])
291
+ expect(@session).to have_no_select('City', options: ['London', 'Made up city'])
292
+ expect(@session).to have_no_select('Region', options: %w[Norway Sweden])
293
+ expect(@session).to have_no_select('Region', options: %w[Norway Norway Norway])
294
+ end
295
+ end
296
+
297
+ context 'with partial options' do
298
+ it 'should be false if a field with the given partial options is on the page' do
299
+ expect(@session).not_to have_no_select('Region', with_options: %w[Norway Sweden])
300
+ expect(@session).not_to have_no_select('City', with_options: ['London'])
301
+ end
302
+
303
+ it 'should be true if a field with the given partial options is not on the page' do
304
+ expect(@session).to have_no_select('Locale', with_options: ['Uruguayan'])
305
+ expect(@session).to have_no_select('Does not exist', with_options: ['John'])
306
+ expect(@session).to have_no_select('Region', with_options: %w[Norway Sweden Finland Latvia])
307
+ end
308
+ end
309
+
310
+ it 'should support locator-less usage' do
311
+ expect(@session.has_no_select?(with_options: %w[Norway Sweden Finland Latvia])).to be true
312
+ expect(@session).to have_no_select(with_options: ['New London'])
313
+ expect(@session.has_no_select?(id: 'form_underwear', with_selected: ['Boxers'])).to be true
314
+ expect(@session).to have_no_select(id: 'form_underwear', with_selected: %w[Commando Boxers])
315
+ end
316
+ end
@@ -0,0 +1,217 @@
1
+ # frozen_string_literal: true
2
+
3
+ Capybara::SpecHelper.spec '#has_selector?' do
4
+ before do
5
+ @session.visit('/with_html')
6
+ end
7
+
8
+ it 'should be true if the given selector is on the page' do
9
+ expect(@session).to have_selector(:xpath, '//p')
10
+ expect(@session).to have_selector(:css, 'p a#foo')
11
+ expect(@session).to have_selector("//p[contains(.,'est')]")
12
+ end
13
+
14
+ it 'should be false if the given selector is not on the page' do
15
+ expect(@session).not_to have_selector(:xpath, '//abbr')
16
+ expect(@session).not_to have_selector(:css, 'p a#doesnotexist')
17
+ expect(@session).not_to have_selector("//p[contains(.,'thisstringisnotonpage')]")
18
+ end
19
+
20
+ it 'should use default selector' do
21
+ Capybara.default_selector = :css
22
+ expect(@session).not_to have_selector('p a#doesnotexist')
23
+ expect(@session).to have_selector('p a#foo')
24
+ end
25
+
26
+ it 'should respect scopes' do
27
+ @session.within "//p[@id='first']" do
28
+ expect(@session).to have_selector(".//a[@id='foo']")
29
+ expect(@session).not_to have_selector(".//a[@id='red']")
30
+ end
31
+ end
32
+
33
+ it 'should accept a filter block' do
34
+ expect(@session).to have_selector(:css, 'a', count: 1) { |el| el[:id] == 'foo' }
35
+ end
36
+
37
+ context 'with count' do
38
+ it 'should be true if the content is on the page the given number of times' do
39
+ expect(@session).to have_selector('//p', count: 3)
40
+ expect(@session).to have_selector("//p//a[@id='foo']", count: 1)
41
+ expect(@session).to have_selector("//p[contains(.,'est')]", count: 1)
42
+ end
43
+
44
+ it 'should be false if the content is on the page the given number of times' do
45
+ expect(@session).not_to have_selector('//p', count: 6)
46
+ expect(@session).not_to have_selector("//p//a[@id='foo']", count: 2)
47
+ expect(@session).not_to have_selector("//p[contains(.,'est')]", count: 5)
48
+ end
49
+
50
+ it "should be false if the content isn't on the page at all" do
51
+ expect(@session).not_to have_selector('//abbr', count: 2)
52
+ expect(@session).not_to have_selector("//p//a[@id='doesnotexist']", count: 1)
53
+ end
54
+ end
55
+
56
+ context 'with text' do
57
+ it 'should discard all matches where the given string is not contained' do
58
+ expect(@session).to have_selector('//p//a', text: 'Redirect', count: 1)
59
+ expect(@session).to have_selector(:css, 'p a', text: 'Redirect', count: 1)
60
+ expect(@session).not_to have_selector('//p', text: 'Doesnotexist')
61
+ end
62
+
63
+ it 'should respect visibility setting' do
64
+ expect(@session).to have_selector(:id, 'hidden-text', text: 'Some of this text is hidden!', visible: :all)
65
+ expect(@session).not_to have_selector(:id, 'hidden-text', text: 'Some of this text is hidden!', visible: :visible)
66
+ Capybara.ignore_hidden_elements = false
67
+ expect(@session).to have_selector(:id, 'hidden-text', text: 'Some of this text is hidden!', visible: :all)
68
+ Capybara.visible_text_only = true
69
+ expect(@session).not_to have_selector(:id, 'hidden-text', text: 'Some of this text is hidden!', visible: :visible)
70
+ end
71
+
72
+ it 'should discard all matches where the given regexp is not matched' do
73
+ expect(@session).to have_selector('//p//a', text: /re[dab]i/i, count: 1)
74
+ expect(@session).not_to have_selector('//p//a', text: /Red$/)
75
+ end
76
+
77
+ it 'should raise when extra parameters passed' do
78
+ expect do
79
+ expect(@session).to have_selector(:css, 'p a#foo', 'extra')
80
+ end.to raise_error ArgumentError, /extra/
81
+ end
82
+
83
+ context 'with whitespace normalization' do
84
+ context 'Capybara.default_normalize_ws = false' do
85
+ it 'should support normalize_ws option' do
86
+ Capybara.default_normalize_ws = false
87
+ expect(@session).not_to have_selector(:id, 'second', text: 'text with whitespace')
88
+ expect(@session).to have_selector(:id, 'second', text: 'text with whitespace', normalize_ws: true)
89
+ end
90
+ end
91
+
92
+ context 'Capybara.default_normalize_ws = true' do
93
+ it 'should support normalize_ws option' do
94
+ Capybara.default_normalize_ws = true
95
+ expect(@session).to have_selector(:id, 'second', text: 'text with whitespace')
96
+ expect(@session).not_to have_selector(:id, 'second', text: 'text with whitespace', normalize_ws: false)
97
+ end
98
+ end
99
+ end
100
+ end
101
+
102
+ context 'with exact_text' do
103
+ context 'string' do
104
+ it 'should only match elements that match exactly' do
105
+ expect(@session).to have_selector(:id, 'h2one', exact_text: 'Header Class Test One')
106
+ expect(@session).to have_no_selector(:id, 'h2one', exact_text: 'Header Class Test')
107
+ end
108
+ end
109
+
110
+ context 'boolean' do
111
+ it 'should only match elements that match exactly when true' do
112
+ expect(@session).to have_selector(:id, 'h2one', text: 'Header Class Test One', exact_text: true)
113
+ expect(@session).to have_no_selector(:id, 'h2one', text: 'Header Class Test', exact_text: true)
114
+ end
115
+
116
+ it 'should match substrings when false' do
117
+ expect(@session).to have_selector(:id, 'h2one', text: 'Header Class Test One', exact_text: false)
118
+ expect(@session).to have_selector(:id, 'h2one', text: 'Header Class Test', exact_text: false)
119
+ end
120
+
121
+ it 'should warn if text option is a regexp that it is ignoring exact_text' do
122
+ allow(Capybara::Helpers).to receive(:warn)
123
+ expect(@session).to have_selector(:id, 'h2one', text: /Class Test/, exact_text: true)
124
+ expect(Capybara::Helpers).to have_received(:warn).with(/'exact_text' option is not supported/)
125
+ end
126
+ end
127
+
128
+ context 'regexp' do
129
+ it 'should only match when it fully matches' do
130
+ expect(@session).to have_selector(:id, 'h2one', exact_text: /Header Class Test One/)
131
+ expect(@session).to have_no_selector(:id, 'h2one', exact_text: /Header Class Test/)
132
+ expect(@session).to have_no_selector(:id, 'h2one', exact_text: /Class Test One/)
133
+ expect(@session).to have_no_selector(:id, 'h2one', exact_text: /Class Test/)
134
+ end
135
+ end
136
+ end
137
+
138
+ context 'datalist' do
139
+ it 'should match options' do
140
+ @session.visit('/form')
141
+ expect(@session).to have_selector(:datalist_input, with_options: %w[Jaguar Audi Mercedes])
142
+ expect(@session).not_to have_selector(:datalist_input, with_options: %w[Ford Chevy])
143
+ end
144
+ end
145
+ end
146
+
147
+ Capybara::SpecHelper.spec '#has_no_selector?' do
148
+ before do
149
+ @session.visit('/with_html')
150
+ end
151
+
152
+ it 'should be false if the given selector is on the page' do
153
+ expect(@session).not_to have_no_selector(:xpath, '//p')
154
+ expect(@session).not_to have_no_selector(:css, 'p a#foo')
155
+ expect(@session).not_to have_no_selector("//p[contains(.,'est')]")
156
+ end
157
+
158
+ it 'should be true if the given selector is not on the page' do
159
+ expect(@session).to have_no_selector(:xpath, '//abbr')
160
+ expect(@session).to have_no_selector(:css, 'p a#doesnotexist')
161
+ expect(@session).to have_no_selector("//p[contains(.,'thisstringisnotonpage')]")
162
+ end
163
+
164
+ it 'should use default selector' do
165
+ Capybara.default_selector = :css
166
+ expect(@session).to have_no_selector('p a#doesnotexist')
167
+ expect(@session).not_to have_no_selector('p a#foo')
168
+ end
169
+
170
+ it 'should respect scopes' do
171
+ @session.within "//p[@id='first']" do
172
+ expect(@session).not_to have_no_selector(".//a[@id='foo']")
173
+ expect(@session).to have_no_selector(".//a[@id='red']")
174
+ end
175
+ end
176
+
177
+ it 'should accept a filter block' do
178
+ expect(@session).to have_no_selector(:css, 'a#foo') { |el| el[:id] != 'foo' }
179
+ end
180
+
181
+ context 'with count' do
182
+ it 'should be false if the content is on the page the given number of times' do
183
+ expect(@session).not_to have_no_selector('//p', count: 3)
184
+ expect(@session).not_to have_no_selector("//p//a[@id='foo']", count: 1)
185
+ expect(@session).not_to have_no_selector("//p[contains(.,'est')]", count: 1)
186
+ end
187
+
188
+ it 'should be true if the content is on the page the wrong number of times' do
189
+ expect(@session).to have_no_selector('//p', count: 6)
190
+ expect(@session).to have_no_selector("//p//a[@id='foo']", count: 2)
191
+ expect(@session).to have_no_selector("//p[contains(.,'est')]", count: 5)
192
+ end
193
+
194
+ it "should be true if the content isn't on the page at all" do
195
+ expect(@session).to have_no_selector('//abbr', count: 2)
196
+ expect(@session).to have_no_selector("//p//a[@id='doesnotexist']", count: 1)
197
+ end
198
+ end
199
+
200
+ context 'with text' do
201
+ it 'should discard all matches where the given string is contained' do
202
+ expect(@session).not_to have_no_selector('//p//a', text: 'Redirect', count: 1)
203
+ expect(@session).to have_no_selector('//p', text: 'Doesnotexist')
204
+ end
205
+
206
+ it 'should discard all matches where the given regexp is matched' do
207
+ expect(@session).not_to have_no_selector('//p//a', text: /re[dab]i/i, count: 1)
208
+ expect(@session).to have_no_selector('//p//a', text: /Red$/)
209
+ end
210
+
211
+ it 'should error when matching element exists' do
212
+ expect do
213
+ expect(@session).to have_no_selector('//h2', text: 'Header Class Test Five')
214
+ end.to raise_error RSpec::Expectations::ExpectationNotMetError
215
+ end
216
+ end
217
+ end
@@ -0,0 +1,50 @@
1
+ # frozen_string_literal: true
2
+
3
+ Capybara::SpecHelper.spec '#have_sibling' do
4
+ before do
5
+ @session.visit('/with_html')
6
+ end
7
+
8
+ it 'should assert a prior sibling element using the given locator' do
9
+ el = @session.find(:css, '#mid_sibling')
10
+ expect(el).to have_sibling(:css, '#pre_sibling')
11
+ end
12
+
13
+ it 'should assert a following sibling element using the given locator' do
14
+ el = @session.find(:css, '#mid_sibling')
15
+ expect(el).to have_sibling(:css, '#post_sibling')
16
+ end
17
+
18
+ it 'should not raise an error if there are multiple matches' do
19
+ el = @session.find(:css, '#mid_sibling')
20
+ expect(el).to have_sibling(:css, 'div')
21
+ end
22
+
23
+ it 'should allow counts to be specified' do
24
+ el = @session.find(:css, '#mid_sibling')
25
+
26
+ expect(el).to have_sibling(:css, 'div').exactly(2).times
27
+ expect do
28
+ expect(el).to have_sibling(:css, 'div').once
29
+ end.to raise_error(RSpec::Expectations::ExpectationNotMetError)
30
+ end
31
+ end
32
+
33
+ Capybara::SpecHelper.spec '#have_no_sibling' do
34
+ before do
35
+ @session.visit('/with_html')
36
+ end
37
+
38
+ it 'should assert no matching sibling' do
39
+ el = @session.find(:css, '#mid_sibling')
40
+ expect(el).to have_no_sibling(:css, '#not_a_sibling')
41
+ expect(el).not_to have_sibling(:css, '#not_a_sibling')
42
+ end
43
+
44
+ it 'should raise if there are matching siblings' do
45
+ el = @session.find(:css, '#mid_sibling')
46
+ expect do
47
+ expect(el).to have_no_sibling(:css, '#pre_sibling')
48
+ end.to raise_error(RSpec::Expectations::ExpectationNotMetError)
49
+ end
50
+ end