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,166 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+ require 'capybara/minitest'
5
+ require 'capybara/minitest/spec'
6
+
7
+ class MinitestSpecTest < Minitest::Spec
8
+ include ::Capybara::DSL
9
+ include ::Capybara::Minitest::Assertions
10
+
11
+ before do
12
+ visit('/form')
13
+ end
14
+
15
+ after do
16
+ Capybara.reset_sessions!
17
+ end
18
+
19
+ def self.test_order
20
+ :sorted
21
+ end
22
+
23
+ it 'supports text expectations' do
24
+ _(page).must_have_text('Form', minimum: 1)
25
+ _(page).wont_have_text('Not a form')
26
+ form = find(:css, 'form', text: 'Title')
27
+ _(form).must_have_text('Customer Email')
28
+ _(form).wont_have_text('Some other email')
29
+ end
30
+
31
+ it 'supports current_path expectations' do
32
+ _(page).must_have_current_path('/form')
33
+ _(page).wont_have_current_path('/form2')
34
+ end
35
+
36
+ it 'supports title expectations' do
37
+ visit('/with_title')
38
+ _(page).must_have_title('Test Title')
39
+ _(page).wont_have_title('Not the title')
40
+ end
41
+
42
+ it 'supports xpath expectations' do
43
+ _(page).must_have_xpath('.//input[@id="customer_email"]')
44
+ _(page).wont_have_xpath('.//select[@id="not_form_title"]')
45
+ _(page).wont_have_xpath('.//input[@id="customer_email"]') { |el| el[:id] == 'not_customer_email' }
46
+ select = find(:select, 'form_title')
47
+ _(select).must_have_xpath('.//option[@class="title"]')
48
+ _(select).must_have_xpath('.//option', count: 1) { |option| option[:class] != 'title' && !option.disabled? }
49
+ _(select).wont_have_xpath('.//input[@id="customer_email"]')
50
+ end
51
+
52
+ it 'support css expectations' do
53
+ _(page).must_have_css('input#customer_email')
54
+ _(page).wont_have_css('select#not_form_title')
55
+ el = find(:select, 'form_title')
56
+ _(el).must_have_css('option.title')
57
+ _(el).wont_have_css('input#customer_email')
58
+ end
59
+
60
+ it 'supports link expectations' do
61
+ visit('/with_html')
62
+ _(page).must_have_link('A link')
63
+ _(page).wont_have_link('Not on page')
64
+ end
65
+
66
+ it 'supports button expectations' do
67
+ _(page).must_have_button('fresh_btn')
68
+ _(page).wont_have_button('not_btn')
69
+ end
70
+
71
+ it 'supports field expectations' do
72
+ _(page).must_have_field('customer_email')
73
+ _(page).wont_have_field('not_on_the_form')
74
+ end
75
+
76
+ it 'supports select expectations' do
77
+ _(page).must_have_select('form_title')
78
+ _(page).wont_have_select('not_form_title')
79
+ end
80
+
81
+ it 'supports checked_field expectations' do
82
+ _(page).must_have_checked_field('form_pets_dog')
83
+ _(page).wont_have_checked_field('form_pets_cat')
84
+ end
85
+
86
+ it 'supports unchecked_field expectations' do
87
+ _(page).must_have_unchecked_field('form_pets_cat')
88
+ _(page).wont_have_unchecked_field('form_pets_dog')
89
+ end
90
+
91
+ it 'supports table expectations' do
92
+ visit('/tables')
93
+ _(page).must_have_table('agent_table')
94
+ _(page).wont_have_table('not_on_form')
95
+ end
96
+
97
+ it 'supports all_of_selectors expectations' do
98
+ _(page).must_have_all_of_selectors(:css, 'select#form_other_title', 'input#form_last_name')
99
+ end
100
+
101
+ it 'supports none_of_selectors expectations' do
102
+ _(page).must_have_none_of_selectors(:css, 'input#not_on_page', 'input#also_not_on_page')
103
+ end
104
+
105
+ it 'supports any_of_selectors expectations' do
106
+ _(page).must_have_any_of_selectors(:css, 'select#form_other_title', 'input#not_on_page')
107
+ end
108
+
109
+ it 'supports match_selector expectations' do
110
+ _(find(:field, 'customer_email')).must_match_selector(:field, 'customer_email')
111
+ _(find(:select, 'form_title')).wont_match_selector(:field, 'customer_email')
112
+ end
113
+
114
+ it 'supports match_css expectations' do
115
+ _(find(:select, 'form_title')).must_match_css('select#form_title')
116
+ _(find(:select, 'form_title')).wont_match_css('select#form_other_title')
117
+ end
118
+
119
+ it 'supports match_xpath expectations' do
120
+ _(find(:select, 'form_title')).must_match_xpath('.//select[@id="form_title"]')
121
+ _(find(:select, 'form_title')).wont_match_xpath('.//select[@id="not_on_page"]')
122
+ end
123
+
124
+ it 'handles failures' do
125
+ _(page).must_have_select('non_existing_form_title')
126
+ end
127
+
128
+ it 'supports style expectations' do
129
+ skip "Rack test doesn't support style" if Capybara.current_driver == :rack_test
130
+ visit('/with_html')
131
+ _(find(:css, '#second')).must_have_style('display' => 'inline') # deprecated
132
+ _(find(:css, '#second')).must_match_style('display' => 'inline')
133
+ end
134
+
135
+ it 'supports ancestor expectations' do
136
+ option = find(:option, 'Finnish')
137
+ _(option).must_have_ancestor(:css, '#form_locale')
138
+ end
139
+
140
+ it 'supports sibling expectations' do
141
+ option = find(:css, '#form_title').find(:option, 'Mrs')
142
+ _(option).must_have_sibling(:option, 'Mr')
143
+ end
144
+ end
145
+
146
+ RSpec.describe 'capybara/minitest/spec' do
147
+ before do
148
+ Capybara.current_driver = :rack_test
149
+ Capybara.app = TestApp
150
+ end
151
+
152
+ after do
153
+ Capybara.use_default_driver
154
+ end
155
+
156
+ it 'should support minitest spec' do
157
+ output = StringIO.new
158
+ reporter = Minitest::SummaryReporter.new(output)
159
+ reporter.start
160
+ MinitestSpecTest.run reporter, {}
161
+ reporter.report
162
+ expect(output.string).to include('22 runs, 44 assertions, 1 failures, 0 errors, 1 skips')
163
+ # Make sure error messages are displayed
164
+ expect(output.string).to match(/expected to find select box "non_existing_form_title" .*but there were no matches/)
165
+ end
166
+ end
@@ -0,0 +1,68 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+ require 'capybara/dsl'
5
+
6
+ RSpec.describe Capybara::SessionConfig do
7
+ describe 'threadsafe' do
8
+ it 'defaults to global session options' do
9
+ Capybara.threadsafe = true
10
+ session = Capybara::Session.new(:rack_test, TestApp)
11
+ %i[default_host app_host always_include_port run_server
12
+ default_selector default_max_wait_time ignore_hidden_elements
13
+ automatic_reload match exact raise_server_errors visible_text_only
14
+ automatic_label_click enable_aria_label save_path
15
+ asset_host default_retry_interval].each do |m|
16
+ expect(session.config.public_send(m)).to eq Capybara.public_send(m)
17
+ end
18
+ end
19
+
20
+ it "doesn't change global session when changed" do
21
+ Capybara.threadsafe = true
22
+ host = 'http://my.example.com'
23
+ session = Capybara::Session.new(:rack_test, TestApp) do |config|
24
+ config.default_host = host
25
+ config.automatic_label_click = !config.automatic_label_click
26
+ config.server_errors << ArgumentError
27
+ end
28
+ expect(Capybara.default_host).not_to eq host
29
+ expect(session.config.default_host).to eq host
30
+ expect(Capybara.automatic_label_click).not_to eq session.config.automatic_label_click
31
+ expect(Capybara.server_errors).not_to eq session.config.server_errors
32
+ end
33
+
34
+ it "doesn't allow session configuration block when false" do
35
+ Capybara.threadsafe = false
36
+ expect do
37
+ Capybara::Session.new(:rack_test, TestApp) { |config| }
38
+ end.to raise_error 'A configuration block is only accepted when Capybara.threadsafe == true'
39
+ end
40
+
41
+ it "doesn't allow session config when false" do
42
+ Capybara.threadsafe = false
43
+ session = Capybara::Session.new(:rack_test, TestApp)
44
+ expect { session.config.default_selector = :title }.to raise_error(/Per session settings are only supported when Capybara.threadsafe == true/)
45
+ expect do
46
+ session.configure do |config|
47
+ config.exact = true
48
+ end
49
+ end.to raise_error(/Session configuration is only supported when Capybara.threadsafe == true/)
50
+ end
51
+
52
+ it 'uses the config from the session' do
53
+ Capybara.threadsafe = true
54
+ session = Capybara::Session.new(:rack_test, TestApp) do |config|
55
+ config.default_selector = :link
56
+ end
57
+ session.visit('/with_html')
58
+ expect(session.find('foo').tag_name).to eq 'a'
59
+ end
60
+
61
+ it "won't change threadsafe once a session is created" do
62
+ Capybara.threadsafe = true
63
+ Capybara.threadsafe = false
64
+ Capybara::Session.new(:rack_test, TestApp)
65
+ expect { Capybara.threadsafe = true }.to raise_error(/Threadsafe setting cannot be changed once a session is created/)
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,297 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ module TestSessions
6
+ RackTest = Capybara::Session.new(:rack_test, TestApp)
7
+ end
8
+
9
+ skipped_tests = %i[
10
+ js
11
+ modals
12
+ screenshot
13
+ frames
14
+ windows
15
+ send_keys
16
+ server
17
+ hover
18
+ about_scheme
19
+ download
20
+ css
21
+ scroll
22
+ spatial
23
+ html_validation
24
+ shadow_dom
25
+ active_element
26
+ ]
27
+ Capybara::SpecHelper.run_specs TestSessions::RackTest, 'RackTest', capybara_skip: skipped_tests do |example|
28
+ case example.metadata[:full_description]
29
+ when /has_css\? should support case insensitive :class and :id options/
30
+ skip "Nokogiri doesn't support case insensitive CSS attribute matchers"
31
+ when /#click_button should follow permanent redirects that maintain method/
32
+ skip "Rack < 2 doesn't support 308" if Gem.loaded_specs['rack'].version < Gem::Version.new('2.0.0')
33
+ when /#attach_file with multipart form should send prior hidden field if no file submitted/
34
+ skip 'Rack-test < 2 needs an empty file to detect multipart form' if Gem.loaded_specs['rack-test'].version < Gem::Version.new('2.0.0')
35
+ end
36
+ end
37
+
38
+ RSpec.describe Capybara::Session do # rubocop:disable RSpec/MultipleDescribes
39
+ include Capybara::RSpecMatchers
40
+ context 'with rack test driver' do
41
+ let(:session) { TestSessions::RackTest }
42
+
43
+ describe '#driver' do
44
+ it 'should be a rack test driver' do
45
+ expect(session.driver).to be_an_instance_of(Capybara::RackTest::Driver)
46
+ end
47
+ end
48
+
49
+ describe '#mode' do
50
+ it 'should remember the mode' do
51
+ expect(session.mode).to eq(:rack_test)
52
+ end
53
+ end
54
+
55
+ describe '#click_link' do
56
+ after do
57
+ session.driver.options[:respect_data_method] = false
58
+ end
59
+
60
+ it 'should use data-method if option is true' do
61
+ session.driver.options[:respect_data_method] = true
62
+ session.visit '/with_html'
63
+ session.click_link 'A link with data-method'
64
+ expect(session.html).to include('The requested object was deleted')
65
+ end
66
+
67
+ it 'should not use data-method if option is false' do
68
+ session.driver.options[:respect_data_method] = false
69
+ session.visit '/with_html'
70
+ session.click_link 'A link with data-method'
71
+ expect(session.html).to include('Not deleted')
72
+ end
73
+
74
+ it "should use data-method if available even if it's capitalized" do
75
+ session.driver.options[:respect_data_method] = true
76
+ session.visit '/with_html'
77
+ session.click_link 'A link with capitalized data-method'
78
+ expect(session.html).to include('The requested object was deleted')
79
+ end
80
+ end
81
+
82
+ describe '#fill_in' do
83
+ it 'should warn that :fill_options are not supported' do
84
+ session.visit '/with_html'
85
+ expect { session.fill_in 'test_field', with: 'not_monkey', fill_options: { random: true } }.to \
86
+ output(/^Options passed to Node#set but the RackTest driver doesn't support any - ignoring/).to_stderr
87
+ expect(session).to have_field('test_field', with: 'not_monkey')
88
+ end
89
+ end
90
+
91
+ describe '#attach_file' do
92
+ context 'with multipart form' do
93
+ it 'should submit an empty form-data section if no file is submitted' do
94
+ session.visit('/form')
95
+ session.click_button('Upload Empty')
96
+ expect(session.html).to include('Successfully ignored empty file field.')
97
+ end
98
+
99
+ it 'should submit multipart even if no file is submitted' do
100
+ session.visit('/form')
101
+ session.click_button('Upload Empty')
102
+ expect(session.html).to include('Content type was multipart/form-data;')
103
+ end
104
+ end
105
+
106
+ it 'should not submit an obsolete mime type' do
107
+ test_jpg_file_path = File.expand_path('fixtures/capybara.csv', File.dirname(__FILE__))
108
+ session.visit('/form')
109
+ session.attach_file 'form_document', test_jpg_file_path
110
+ session.click_button('Upload Single')
111
+ expect(session).to have_content('Content-type: text/csv')
112
+ end
113
+ end
114
+
115
+ describe '#click' do
116
+ context 'on a label' do
117
+ it 'should toggle the associated checkbox' do
118
+ session.visit('/form')
119
+ expect(session).to have_unchecked_field('form_pets_cat')
120
+ session.find(:label, 'Cat').click
121
+ expect(session).to have_checked_field('form_pets_cat')
122
+ session.find(:label, 'Cat').click
123
+ expect(session).to have_unchecked_field('form_pets_cat')
124
+ session.find(:label, 'McLaren').click
125
+ expect(session).to have_checked_field('form_cars_mclaren', visible: :hidden)
126
+ end
127
+
128
+ it 'should toggle the associated radio' do
129
+ session.visit('/form')
130
+ expect(session).to have_unchecked_field('gender_male')
131
+ session.find(:label, 'Male').click
132
+ expect(session).to have_checked_field('gender_male')
133
+ session.find(:label, 'Female').click
134
+ expect(session).to have_unchecked_field('gender_male')
135
+ end
136
+
137
+ it 'should rewrite the forms action query for get submission' do
138
+ session.visit('/form')
139
+ session.click_button('mediocre')
140
+ expect(session).not_to have_current_path(/foo|bar/)
141
+ end
142
+
143
+ it 'should rewrite the submit buttons formaction query for get submission' do
144
+ session.visit('/form')
145
+ session.click_button('mediocre2')
146
+ expect(session).not_to have_current_path(/foo|bar/)
147
+ end
148
+ end
149
+ end
150
+
151
+ describe '#send_keys' do
152
+ it 'raises an UnsupportedMethodError' do
153
+ session.visit('/form')
154
+
155
+ expect { session.send_keys(:tab) }.to raise_error(Capybara::NotSupportedByDriverError)
156
+ end
157
+ end
158
+
159
+ describe '#active_element' do
160
+ it 'raises an UnsupportedMethodError' do
161
+ session.visit('/form')
162
+
163
+ expect { session.active_element }.to raise_error(Capybara::NotSupportedByDriverError)
164
+ end
165
+ end
166
+
167
+ describe '#text' do
168
+ it 'should return original text content for textareas' do
169
+ session.visit('/with_html')
170
+ session.find_field('normal', type: 'textarea', with: 'banana').set('hello')
171
+ normal = session.find(:css, '#normal')
172
+ expect(normal.value).to eq 'hello'
173
+ expect(normal.text).to eq 'banana'
174
+ end
175
+ end
176
+
177
+ describe '#style' do
178
+ it 'should raise an error' do
179
+ session.visit('/with_html')
180
+ el = session.find(:css, '#first')
181
+ expect { el.style('display') }.to raise_error NotImplementedError, /not process CSS/
182
+ end
183
+ end
184
+ end
185
+ end
186
+
187
+ RSpec.describe Capybara::RackTest::Driver do
188
+ let(:driver) { TestSessions::RackTest.driver }
189
+
190
+ describe ':headers option' do
191
+ it 'should always set headers' do
192
+ driver = described_class.new(TestApp, headers: { 'HTTP_FOO' => 'foobar' })
193
+ driver.visit('/get_header')
194
+ expect(driver.html).to include('foobar')
195
+ end
196
+
197
+ it 'should keep headers on link clicks' do
198
+ driver = described_class.new(TestApp, headers: { 'HTTP_FOO' => 'foobar' })
199
+ driver.visit('/header_links')
200
+ driver.find_xpath('.//a').first.click
201
+ expect(driver.html).to include('foobar')
202
+ end
203
+
204
+ it 'should keep headers on form submit' do
205
+ driver = described_class.new(TestApp, headers: { 'HTTP_FOO' => 'foobar' })
206
+ driver.visit('/header_links')
207
+ driver.find_xpath('.//input').first.click
208
+ expect(driver.html).to include('foobar')
209
+ end
210
+
211
+ it 'should keep headers on redirects' do
212
+ driver = described_class.new(TestApp, headers: { 'HTTP_FOO' => 'foobar' })
213
+ driver.visit('/get_header_via_redirect')
214
+ expect(driver.html).to include('foobar')
215
+ end
216
+ end
217
+
218
+ describe ':follow_redirects option' do
219
+ it 'defaults to following redirects' do
220
+ driver = described_class.new(TestApp)
221
+
222
+ driver.visit('/redirect')
223
+ expect(driver.response.headers['Location']).to be_nil
224
+ expect(driver.current_url).to match %r{/landed$}
225
+ end
226
+
227
+ it 'should not include fragments in the referer header' do
228
+ driver.visit('/header_links#an-anchor')
229
+ driver.find_xpath('.//input').first.click
230
+ expect(driver.request.get_header('HTTP_REFERER')).to eq('http://www.example.com/header_links')
231
+ end
232
+
233
+ it 'is possible to not follow redirects' do
234
+ driver = described_class.new(TestApp, follow_redirects: false)
235
+
236
+ driver.visit('/redirect')
237
+ expect(driver.response.headers['Location']).to match %r{/redirect_again$}
238
+ expect(driver.current_url).to match %r{/redirect$}
239
+ end
240
+ end
241
+
242
+ describe ':redirect_limit option' do
243
+ context 'with default redirect limit' do
244
+ let(:driver) { described_class.new(TestApp) }
245
+
246
+ it 'should follow 5 redirects' do
247
+ driver.visit('/redirect/5/times')
248
+ expect(driver.html).to include('redirection complete')
249
+ end
250
+
251
+ it 'should not follow more than 6 redirects' do
252
+ expect do
253
+ driver.visit('/redirect/6/times')
254
+ end.to raise_error(Capybara::InfiniteRedirectError)
255
+ end
256
+ end
257
+
258
+ context 'with 21 redirect limit' do
259
+ let(:driver) { described_class.new(TestApp, redirect_limit: 21) }
260
+
261
+ it 'should follow 21 redirects' do
262
+ driver.visit('/redirect/21/times')
263
+ expect(driver.html).to include('redirection complete')
264
+ end
265
+
266
+ it 'should not follow more than 21 redirects' do
267
+ expect do
268
+ driver.visit('/redirect/22/times')
269
+ end.to raise_error(Capybara::InfiniteRedirectError)
270
+ end
271
+ end
272
+ end
273
+ end
274
+
275
+ RSpec.describe 'Capybara::String' do
276
+ it 'should use HTML5 parsing' do
277
+ skip 'Only valid if Nokogiri >= 1.12.0 or gumbo is included' unless defined? Nokogiri::HTML5
278
+ Capybara.use_html5_parsing = true
279
+ allow(Nokogiri::HTML5).to receive(:parse).and_call_original
280
+ Capybara.string('<div id=test_div></div>')
281
+ expect(Nokogiri::HTML5).to have_received(:parse)
282
+ end
283
+ end
284
+
285
+ module CSSHandlerIncludeTester
286
+ def dont_extend_css_handler
287
+ raise 'should never be called'
288
+ end
289
+ end
290
+
291
+ RSpec.describe Capybara::RackTest::CSSHandlers do
292
+ include CSSHandlerIncludeTester
293
+
294
+ it 'should not be extended by global includes' do
295
+ expect(described_class.new).not_to respond_to(:dont_extend_css_handler)
296
+ end
297
+ end