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,209 @@
1
+ # frozen_string_literal: true
2
+
3
+ Capybara::SpecHelper.spec '#has_table?' do
4
+ before do
5
+ @session.visit('/tables')
6
+ end
7
+
8
+ it 'should be true if the table is on the page' do
9
+ expect(@session).to have_table('Villain')
10
+ expect(@session).to have_table('villain_table')
11
+ expect(@session).to have_table(:villain_table)
12
+ end
13
+
14
+ it 'should accept rows with column header hashes' do
15
+ expect(@session).to have_table('Horizontal Headers', with_rows:
16
+ [
17
+ { 'First Name' => 'Vern', 'Last Name' => 'Konopelski', 'City' => 'Everette' },
18
+ { 'First Name' => 'Palmer', 'Last Name' => 'Sawayn', 'City' => 'West Trinidad' }
19
+ ])
20
+ end
21
+
22
+ it 'should accept rows with partial column header hashes' do
23
+ expect(@session).to have_table('Horizontal Headers', with_rows:
24
+ [
25
+ { 'First Name' => 'Thomas' },
26
+ { 'Last Name' => 'Sawayn', 'City' => 'West Trinidad' }
27
+ ])
28
+
29
+ expect(@session).not_to have_table('Horizontal Headers', with_rows:
30
+ [
31
+ { 'Unmatched Header' => 'Thomas' }
32
+ ])
33
+ end
34
+
35
+ it 'should accept rows with array of cell values' do
36
+ expect(@session).to have_table('Horizontal Headers', with_rows:
37
+ [
38
+ %w[Thomas Walpole Oceanside],
39
+ ['Ratke', 'Lawrence', 'East Sorayashire']
40
+ ])
41
+ end
42
+
43
+ it 'should consider order of cells in each row' do
44
+ expect(@session).not_to have_table('Horizontal Headers', with_rows:
45
+ [
46
+ %w[Thomas Walpole Oceanside],
47
+ ['Lawrence', 'Ratke', 'East Sorayashire']
48
+ ])
49
+ end
50
+
51
+ it 'should accept all rows with array of cell values' do
52
+ expect(@session).to have_table('Horizontal Headers', rows:
53
+ [
54
+ %w[Thomas Walpole Oceanside],
55
+ %w[Danilo Wilkinson Johnsonville],
56
+ %w[Vern Konopelski Everette],
57
+ ['Ratke', 'Lawrence', 'East Sorayashire'],
58
+ ['Palmer', 'Sawayn', 'West Trinidad']
59
+ ])
60
+ end
61
+
62
+ it 'should match with vertical headers' do
63
+ expect(@session).to have_table('Vertical Headers', with_cols:
64
+ [
65
+ { 'First Name' => 'Thomas' },
66
+ { 'First Name' => 'Danilo', 'Last Name' => 'Wilkinson', 'City' => 'Johnsonville' },
67
+ { 'Last Name' => 'Sawayn', 'City' => 'West Trinidad' }
68
+ ])
69
+ end
70
+
71
+ it 'should match col with array of cell values' do
72
+ expect(@session).to have_table('Vertical Headers', with_cols:
73
+ [
74
+ %w[Vern Konopelski Everette]
75
+ ])
76
+ end
77
+
78
+ it 'should match cols with array of cell values' do
79
+ expect(@session).to have_table('Vertical Headers', with_cols:
80
+ [
81
+ %w[Danilo Wilkinson Johnsonville],
82
+ %w[Vern Konopelski Everette]
83
+ ])
84
+ end
85
+
86
+ it 'should match all cols with array of cell values' do
87
+ expect(@session).to have_table('Vertical Headers', cols:
88
+ [
89
+ %w[Thomas Walpole Oceanside],
90
+ %w[Danilo Wilkinson Johnsonville],
91
+ %w[Vern Konopelski Everette],
92
+ ['Ratke', 'Lawrence', 'East Sorayashire'],
93
+ ['Palmer', 'Sawayn', 'West Trinidad']
94
+ ])
95
+ end
96
+
97
+ it "should not match if the order of cell values doesn't match" do
98
+ expect(@session).not_to have_table('Vertical Headers', with_cols:
99
+ [
100
+ %w[Vern Everette Konopelski]
101
+ ])
102
+ end
103
+
104
+ it "should not match with vertical headers if the columns don't match" do
105
+ expect(@session).not_to have_table('Vertical Headers', with_cols:
106
+ [
107
+ { 'First Name' => 'Thomas' },
108
+ { 'First Name' => 'Danilo', 'Last Name' => 'Walpole', 'City' => 'Johnsonville' },
109
+ { 'Last Name' => 'Sawayn', 'City' => 'West Trinidad' }
110
+ ])
111
+
112
+ expect(@session).not_to have_table('Vertical Headers', with_cols:
113
+ [
114
+ { 'Unmatched Header' => 'Thomas' }
115
+ ])
116
+ end
117
+
118
+ it 'should be false if the table is not on the page' do
119
+ expect(@session).not_to have_table('Monkey')
120
+ end
121
+
122
+ it 'should find row by header and cell values' do
123
+ expect(@session.find(:table, 'Horizontal Headers')).to have_selector(:table_row, 'First Name' => 'Thomas', 'Last Name' => 'Walpole')
124
+ expect(@session.find(:table, 'Horizontal Headers')).to have_selector(:table_row, 'Last Name' => 'Walpole')
125
+ expect(@session.find(:table, 'Horizontal Headers')).not_to have_selector(:table_row, 'First Name' => 'Walpole')
126
+ expect(@session.find(:table, 'Horizontal Headers')).not_to have_selector(:table_row, 'Unmatched Header' => 'Thomas')
127
+ end
128
+
129
+ it 'should find row by cell values' do
130
+ expect(@session.find(:table, 'Horizontal Headers')).to have_selector(:table_row, %w[Thomas Walpole Oceanside])
131
+ expect(@session.find(:table, 'Horizontal Headers')).not_to have_selector(:table_row, %w[Walpole Thomas])
132
+ expect(@session.find(:table, 'Horizontal Headers')).not_to have_selector(:table_row, %w[Other])
133
+ end
134
+ end
135
+
136
+ Capybara::SpecHelper.spec '#has_no_table?' do
137
+ before do
138
+ @session.visit('/tables')
139
+ end
140
+
141
+ it 'should be false if the table is on the page' do
142
+ expect(@session).not_to have_no_table('Villain')
143
+ expect(@session).not_to have_no_table('villain_table')
144
+ end
145
+
146
+ it 'should be true if the table is not on the page' do
147
+ expect(@session).to have_no_table('Monkey')
148
+ end
149
+
150
+ it 'should consider rows' do
151
+ expect(@session).to have_no_table('Horizontal Headers', with_rows:
152
+ [
153
+ { 'First Name' => 'Thomas', 'City' => 'Los Angeles' }
154
+ ])
155
+ end
156
+
157
+ context 'using :with_cols' do
158
+ it 'should consider a single column' do
159
+ expect(@session).to have_no_table('Vertical Headers', with_cols:
160
+ [
161
+ { 'First Name' => 'Joe' }
162
+ ])
163
+ end
164
+
165
+ it 'should be true even if the last column does exist' do
166
+ expect(@session).to have_no_table('Vertical Headers', with_cols:
167
+ [
168
+ {
169
+ 'First Name' => 'What?',
170
+ 'What?' => 'Walpole',
171
+ 'City' => 'Oceanside' # This line makes the example fail
172
+ }
173
+ ])
174
+ end
175
+
176
+ it 'should be true if none of the columns exist' do
177
+ expect(@session).to have_no_table('Vertical Headers', with_cols:
178
+ [
179
+ {
180
+ 'First Name' => 'What?',
181
+ 'What?' => 'Walpole',
182
+ 'City' => 'What?'
183
+ }
184
+ ])
185
+ end
186
+
187
+ it 'should be true if the first column does match' do
188
+ expect(@session).to have_no_table('Vertical Headers', with_cols:
189
+ [
190
+ {
191
+ 'First Name' => 'Thomas',
192
+ 'Last Name' => 'What',
193
+ 'City' => 'What'
194
+ }
195
+ ])
196
+ end
197
+
198
+ it 'should be true if none of the columns match' do
199
+ expect(@session).to have_no_table('Vertical Headers', with_cols:
200
+ [
201
+ {
202
+ 'First Name' => 'What',
203
+ 'Last Name' => 'What',
204
+ 'City' => 'What'
205
+ }
206
+ ])
207
+ end
208
+ end
209
+ end
@@ -0,0 +1,375 @@
1
+ # frozen_string_literal: true
2
+
3
+ Capybara::SpecHelper.spec '#has_text?' do
4
+ it 'should be true if the given text is on the page at least once' do
5
+ @session.visit('/with_html')
6
+ expect(@session).to have_text('est')
7
+ expect(@session).to have_text('Lorem')
8
+ expect(@session).to have_text('Redirect')
9
+ expect(@session).to have_text(:Redirect)
10
+ end
11
+
12
+ it 'should be true if scoped to an element which has the text' do
13
+ @session.visit('/with_html')
14
+ @session.within("//a[@title='awesome title']") do
15
+ expect(@session).to have_text('labore')
16
+ end
17
+ end
18
+
19
+ it 'should be false if scoped to an element which does not have the text' do
20
+ @session.visit('/with_html')
21
+ @session.within("//a[@title='awesome title']") do
22
+ expect(@session).not_to have_text('monkey')
23
+ end
24
+ end
25
+
26
+ it 'should ignore tags' do
27
+ @session.visit('/with_html')
28
+ expect(@session).not_to have_text('exercitation <a href="/foo" id="foo">ullamco</a> laboris')
29
+ expect(@session).to have_text('exercitation ullamco laboris')
30
+ end
31
+
32
+ it 'should search correctly normalized text' do
33
+ @session.visit('/with_html')
34
+ expect(@session).to have_text('text with whitespace')
35
+ end
36
+
37
+ it 'should search whitespace collapsed text' do
38
+ @session.visit('/with_html')
39
+ expect(@session).to have_text('text with whitespace', normalize_ws: true)
40
+ end
41
+
42
+ context 'with enabled default collapsing whitespace' do
43
+ before { Capybara.default_normalize_ws = true }
44
+
45
+ it 'should search unnormalized text' do
46
+ @session.visit('/with_html')
47
+ expect(@session).to have_text('text with whitespace', normalize_ws: false)
48
+ end
49
+
50
+ it 'should search whitespace collapsed text' do
51
+ @session.visit('/with_html')
52
+ expect(@session).to have_text('text with whitespace')
53
+ end
54
+ end
55
+
56
+ it 'should be false if the given text is not on the page' do
57
+ @session.visit('/with_html')
58
+ expect(@session).not_to have_text('xxxxyzzz')
59
+ expect(@session).not_to have_text('monkey')
60
+ end
61
+
62
+ it 'should handle single quotes in the text' do
63
+ @session.visit('/with-quotes')
64
+ expect(@session).to have_text("can't")
65
+ end
66
+
67
+ it 'should handle double quotes in the text' do
68
+ @session.visit('/with-quotes')
69
+ expect(@session).to have_text('"No," he said')
70
+ end
71
+
72
+ it 'should handle mixed single and double quotes in the text' do
73
+ @session.visit('/with-quotes')
74
+ expect(@session).to have_text(%q("you can't do that."))
75
+ end
76
+
77
+ it 'should be false if text is in the title tag in the head' do
78
+ @session.visit('/with_js')
79
+ expect(@session).not_to have_text('with_js')
80
+ end
81
+
82
+ it 'should be false if text is inside a script tag in the body' do
83
+ @session.visit('/with_js')
84
+ expect(@session).not_to have_text('a javascript comment')
85
+ expect(@session).not_to have_text('aVar')
86
+ end
87
+
88
+ it 'should be false if the given text is on the page but not visible' do
89
+ @session.visit('/with_html')
90
+ expect(@session).not_to have_text('Inside element with hidden ancestor')
91
+ end
92
+
93
+ it 'should be true if :all given and text is invisible.' do
94
+ @session.visit('/with_html')
95
+ expect(@session).to have_text(:all, 'Some of this text is hidden!')
96
+ end
97
+
98
+ it 'should be true if `Capybara.ignore_hidden_elements = false` and text is invisible.' do
99
+ Capybara.ignore_hidden_elements = false
100
+ @session.visit('/with_html')
101
+ expect(@session).to have_text('Some of this text is hidden!')
102
+ end
103
+
104
+ it 'should be true if the text in the page matches given regexp' do
105
+ @session.visit('/with_html')
106
+ expect(@session).to have_text(/Lorem/)
107
+ end
108
+
109
+ it "should be false if the text in the page doesn't match given regexp" do
110
+ @session.visit('/with_html')
111
+ expect(@session).not_to have_text(/xxxxyzzz/)
112
+ end
113
+
114
+ context 'with object implementing to_s and to_hash' do
115
+ it 'should work if the object is passed alone' do
116
+ with_to_hash = Class.new do
117
+ def to_s; '42' end
118
+ def to_hash; { value: 'Other hash' } end
119
+ end.new
120
+ @session.visit('/with_html')
121
+ expect(@session).to have_text(with_to_hash)
122
+ end
123
+
124
+ it 'should work if passed with empty options' do
125
+ with_to_hash = Class.new do
126
+ def to_s; '42' end
127
+ def to_hash; { value: 'Other hash' } end
128
+ end.new
129
+ @session.visit('/with_html')
130
+ expect(@session).to have_text(:visible, with_to_hash, **{})
131
+ end
132
+ end
133
+
134
+ context 'with exact: true option' do
135
+ it 'should be true if text matches exactly' do
136
+ @session.visit('/with_html')
137
+ expect(@session.find(:id, 'h2one')).to have_text('Header Class Test One', exact: true)
138
+ end
139
+
140
+ it "should be false if text doesn't match exactly" do
141
+ @session.visit('/with_html')
142
+ expect(@session.find(:id, 'h2one')).not_to have_text('Header Class Test On', exact: true)
143
+ end
144
+ end
145
+
146
+ it 'should escape any characters that would have special meaning in a regexp' do
147
+ @session.visit('/with_html')
148
+ expect(@session).not_to have_text('.orem')
149
+ end
150
+
151
+ it 'should accept non-string parameters' do
152
+ @session.visit('/with_html')
153
+ expect(@session).to have_text(42)
154
+ end
155
+
156
+ it 'should be true when passed nil, and warn about it' do
157
+ # nil is converted to '' when to_s is invoked
158
+ @session.visit('/with_html')
159
+ expect do
160
+ expect(@session).to have_text(nil)
161
+ end.to output(/Checking for expected text of nil is confusing/).to_stderr
162
+ end
163
+
164
+ it 'should wait for text to appear', requires: [:js] do
165
+ Capybara.using_wait_time(3) do
166
+ @session.visit('/with_js')
167
+ @session.click_link('Click me')
168
+ expect(@session).to have_text('Has been clicked')
169
+ end
170
+ end
171
+
172
+ context 'with between' do
173
+ it 'should be true if the text occurs within the range given' do
174
+ @session.visit('/with_count')
175
+ expect(@session).to have_text('count', between: 1..3)
176
+ expect(@session).to have_text(/count/, between: 2..2)
177
+ end
178
+
179
+ it 'should be false if the text occurs more or fewer times than range' do
180
+ @session.visit('/with_count')
181
+ expect(@session).not_to have_text('count', between: 0..1)
182
+ expect(@session).not_to have_text('count', between: 3..10)
183
+ expect(@session).not_to have_text(/count/, between: 2...2)
184
+ end
185
+ end
186
+
187
+ context 'with count' do
188
+ it 'should be true if the text occurs the given number of times' do
189
+ @session.visit('/with_count')
190
+ expect(@session).to have_text('count', count: 2)
191
+ expect(@session).to have_text('count').exactly(2).times
192
+ end
193
+
194
+ it 'should be false if the text occurs a different number of times than the given' do
195
+ @session.visit('/with_count')
196
+ expect(@session).not_to have_text('count', count: 0)
197
+ expect(@session).not_to have_text('count', count: 1)
198
+ expect(@session).not_to have_text('count').once
199
+ expect(@session).not_to have_text(/count/, count: 3)
200
+ end
201
+
202
+ it 'should coerce count to an integer' do
203
+ @session.visit('/with_count')
204
+ expect(@session).to have_text('count', count: '2')
205
+ expect(@session).not_to have_text('count', count: '3')
206
+ end
207
+ end
208
+
209
+ context 'with maximum' do
210
+ it 'should be true when text occurs same or fewer times than given' do
211
+ @session.visit('/with_count')
212
+ expect(@session).to have_text('count', maximum: 2)
213
+ expect(@session).to have_text('count').at_most(2).times
214
+ expect(@session).to have_text(/count/, maximum: 3)
215
+ end
216
+
217
+ it 'should be false when text occurs more times than given' do
218
+ @session.visit('/with_count')
219
+ expect(@session).not_to have_text('count', maximum: 1)
220
+ expect(@session).not_to have_text('count').at_most(1).times
221
+ expect(@session).not_to have_text('count', maximum: 0)
222
+ end
223
+
224
+ it 'should coerce maximum to an integer' do
225
+ @session.visit('/with_count')
226
+ expect(@session).to have_text('count', maximum: '2')
227
+ expect(@session).not_to have_text('count', maximum: '1')
228
+ end
229
+ end
230
+
231
+ context 'with minimum' do
232
+ it 'should be true when text occurs same or more times than given' do
233
+ @session.visit('/with_count')
234
+ expect(@session).to have_text('count', minimum: 2)
235
+ expect(@session).to have_text('count').at_least(2).times
236
+ expect(@session).to have_text(/count/, minimum: 0)
237
+ end
238
+
239
+ it 'should be false when text occurs fewer times than given' do
240
+ @session.visit('/with_count')
241
+ expect(@session).not_to have_text('count', minimum: 3)
242
+ expect(@session).not_to have_text('count').at_least(3).times
243
+ end
244
+
245
+ it 'should coerce minimum to an integer' do
246
+ @session.visit('/with_count')
247
+ expect(@session).to have_text('count', minimum: '2')
248
+ expect(@session).not_to have_text('count', minimum: '3')
249
+ end
250
+ end
251
+
252
+ context 'with wait', requires: [:js] do
253
+ it 'should find element if it appears before given wait duration' do
254
+ Capybara.using_wait_time(0.1) do
255
+ @session.visit('/with_js')
256
+ @session.click_link('Click me')
257
+ expect(@session).to have_text('Has been clicked', wait: 3)
258
+ end
259
+ end
260
+ end
261
+
262
+ it 'should raise an error if an invalid option is passed' do
263
+ @session.visit('/with_html')
264
+ expect do
265
+ expect(@session).to have_text('Lorem', invalid: true)
266
+ end.to raise_error(ArgumentError)
267
+ end
268
+ end
269
+
270
+ Capybara::SpecHelper.spec '#has_no_text?' do
271
+ it 'should be false if the given text is on the page at least once' do
272
+ @session.visit('/with_html')
273
+ expect(@session).not_to have_no_text('est')
274
+ expect(@session).not_to have_no_text('Lorem')
275
+ expect(@session).not_to have_no_text('Redirect')
276
+ end
277
+
278
+ it 'should be false if scoped to an element which has the text' do
279
+ @session.visit('/with_html')
280
+ @session.within("//a[@title='awesome title']") do
281
+ expect(@session).not_to have_no_text('labore')
282
+ end
283
+ end
284
+
285
+ it 'should be true if scoped to an element which does not have the text' do
286
+ @session.visit('/with_html')
287
+ @session.within("//a[@title='awesome title']") do
288
+ expect(@session).to have_no_text('monkey')
289
+ end
290
+ end
291
+
292
+ it 'should ignore tags' do
293
+ @session.visit('/with_html')
294
+ expect(@session).to have_no_text('exercitation <a href="/foo" id="foo">ullamco</a> laboris')
295
+ expect(@session).not_to have_no_text('exercitation ullamco laboris')
296
+ end
297
+
298
+ it 'should be true if the given text is not on the page' do
299
+ @session.visit('/with_html')
300
+ expect(@session).to have_no_text('xxxxyzzz')
301
+ expect(@session).to have_no_text('monkey')
302
+ end
303
+
304
+ it 'should handle single quotes in the text' do
305
+ @session.visit('/with-quotes')
306
+ expect(@session).not_to have_no_text("can't")
307
+ end
308
+
309
+ it 'should handle double quotes in the text' do
310
+ @session.visit('/with-quotes')
311
+ expect(@session).not_to have_no_text('"No," he said')
312
+ end
313
+
314
+ it 'should handle mixed single and double quotes in the text' do
315
+ @session.visit('/with-quotes')
316
+ expect(@session).not_to have_no_text(%q("you can't do that."))
317
+ end
318
+
319
+ it 'should be true if text is in the title tag in the head' do
320
+ @session.visit('/with_js')
321
+ expect(@session).to have_no_text('with_js')
322
+ end
323
+
324
+ it 'should be true if text is inside a script tag in the body' do
325
+ @session.visit('/with_js')
326
+ expect(@session).to have_no_text('a javascript comment')
327
+ expect(@session).to have_no_text('aVar')
328
+ end
329
+
330
+ it 'should be true if the given text is on the page but not visible' do
331
+ @session.visit('/with_html')
332
+ expect(@session).to have_no_text('Inside element with hidden ancestor')
333
+ end
334
+
335
+ it 'should be false if :all given and text is invisible.' do
336
+ @session.visit('/with_html')
337
+ expect(@session).not_to have_no_text(:all, 'Some of this text is hidden!')
338
+ end
339
+
340
+ it 'should be false if `Capybara.ignore_hidden_elements = false` and text is invisible.' do
341
+ Capybara.ignore_hidden_elements = false
342
+ @session.visit('/with_html')
343
+ expect(@session).not_to have_no_text('Some of this text is hidden!')
344
+ end
345
+
346
+ it "should be true if the text in the page doesn't match given regexp" do
347
+ @session.visit('/with_html')
348
+ expect(@session).to have_no_text(/xxxxyzzz/)
349
+ end
350
+
351
+ it 'should be false if the text in the page matches given regexp' do
352
+ @session.visit('/with_html')
353
+ expect(@session).not_to have_no_text(/Lorem/)
354
+ end
355
+
356
+ it 'should escape any characters that would have special meaning in a regexp' do
357
+ @session.visit('/with_html')
358
+ expect(@session).to have_no_text('.orem')
359
+ end
360
+
361
+ it 'should wait for text to disappear', requires: [:js] do
362
+ Capybara.default_max_wait_time = 2
363
+ @session.visit('/with_js')
364
+ @session.click_link('Click me')
365
+ expect(@session).to have_no_text('I changed it')
366
+ end
367
+
368
+ context 'with wait', requires: [:js] do
369
+ it 'should not find element if it appears after given wait duration' do
370
+ @session.visit('/with_js')
371
+ @session.click_link('Click me')
372
+ expect(@session).to have_no_text('Has been clicked', wait: 0.05)
373
+ end
374
+ end
375
+ end
@@ -0,0 +1,71 @@
1
+ # frozen_string_literal: true
2
+
3
+ Capybara::SpecHelper.spec '#has_title?' do
4
+ before do
5
+ @session.visit('/with_js')
6
+ end
7
+
8
+ it 'should be true if the page has the given title' do
9
+ expect(@session).to have_title('with_js')
10
+ expect(@session.has_title?('with_js')).to be true
11
+ end
12
+
13
+ it 'should allow regexp matches' do
14
+ expect(@session).to have_title(/w[a-z]{3}_js/)
15
+ expect(@session).not_to have_title(/monkey/)
16
+ end
17
+
18
+ it 'should wait for title', requires: [:js] do
19
+ @session.click_link('Change title')
20
+ expect(@session).to have_title('changed title')
21
+ end
22
+
23
+ it 'should be false if the page has not the given title' do
24
+ expect(@session).not_to have_title('monkey')
25
+ expect(@session.has_title?('monkey')).to be false
26
+ end
27
+
28
+ it 'should default to exact: false matching' do
29
+ expect(@session).to have_title('with_js', exact: false)
30
+ expect(@session).to have_title('with_', exact: false)
31
+ end
32
+
33
+ it 'should match exactly if exact: true option passed' do
34
+ expect(@session).to have_title('with_js', exact: true)
35
+ expect(@session).not_to have_title('with_', exact: true)
36
+ expect(@session.has_title?('with_js', exact: true)).to be true
37
+ expect(@session.has_title?('with_', exact: true)).to be false
38
+ end
39
+
40
+ it 'should match partial if exact: false option passed' do
41
+ expect(@session).to have_title('with_js', exact: false)
42
+ expect(@session).to have_title('with_', exact: false)
43
+ end
44
+ end
45
+
46
+ Capybara::SpecHelper.spec '#has_no_title?' do
47
+ before do
48
+ @session.visit('/with_js')
49
+ end
50
+
51
+ it 'should be false if the page has the given title' do
52
+ expect(@session).not_to have_no_title('with_js')
53
+ end
54
+
55
+ it 'should allow regexp matches' do
56
+ expect(@session).not_to have_no_title(/w[a-z]{3}_js/)
57
+ expect(@session).to have_no_title(/monkey/)
58
+ end
59
+
60
+ it 'should wait for title to disappear', requires: [:js] do
61
+ Capybara.using_wait_time(5) do
62
+ @session.click_link('Change title') # triggers title change after 400ms
63
+ expect(@session).to have_no_title('with_js')
64
+ end
65
+ end
66
+
67
+ it 'should be true if the page has not the given title' do
68
+ expect(@session).to have_no_title('monkey')
69
+ expect(@session.has_no_title?('monkey')).to be true
70
+ end
71
+ end