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,229 @@
1
+ # frozen_string_literal: true
2
+
3
+ Capybara::SpecHelper.spec '#select' do
4
+ before do
5
+ @session.visit('/form')
6
+ end
7
+
8
+ it 'should return value of the first option' do
9
+ expect(@session.find_field('Title').value).to eq('Mrs')
10
+ end
11
+
12
+ it 'should return value of the selected option' do
13
+ @session.select('Miss', from: 'Title')
14
+ expect(@session.find_field('Title').value).to eq('Miss')
15
+ end
16
+
17
+ it 'should allow selecting exact options where there are inexact matches', :exact_false do
18
+ @session.select('Mr', from: 'Title')
19
+ expect(@session.find_field('Title').value).to eq('Mr')
20
+ end
21
+
22
+ it 'should allow selecting options where they are the only inexact match', :exact_false do
23
+ @session.select('Mis', from: 'Title')
24
+ expect(@session.find_field('Title').value).to eq('Miss')
25
+ end
26
+
27
+ it 'should not allow selecting options where they are the only inexact match if `exact: true` is specified' do
28
+ sel = @session.find(:select, 'Title')
29
+ expect do
30
+ sel.select('Mis', exact: true)
31
+ end.to raise_error(Capybara::ElementNotFound)
32
+ end
33
+
34
+ it 'should not allow selecting an option if the match is ambiguous', :exact_false do
35
+ expect do
36
+ @session.select('M', from: 'Title')
37
+ end.to raise_error(Capybara::Ambiguous)
38
+ end
39
+
40
+ it 'should return the value attribute rather than content if present' do
41
+ expect(@session.find_field('Locale').value).to eq('en')
42
+ end
43
+
44
+ it 'should select an option from a select box by id' do
45
+ @session.select('Finnish', from: 'form_locale')
46
+ @session.click_button('awesome')
47
+ expect(extract_results(@session)['locale']).to eq('fi')
48
+ end
49
+
50
+ it 'should select an option from a select box by label' do
51
+ @session.select('Finnish', from: 'Locale')
52
+ @session.click_button('awesome')
53
+ expect(extract_results(@session)['locale']).to eq('fi')
54
+ end
55
+
56
+ it 'should select an option without giving a select box' do
57
+ @session.select('Swedish')
58
+ @session.click_button('awesome')
59
+ expect(extract_results(@session)['locale']).to eq('sv')
60
+ end
61
+
62
+ it 'should escape quotes' do
63
+ @session.select("John's made-up language", from: 'Locale')
64
+ @session.click_button('awesome')
65
+ expect(extract_results(@session)['locale']).to eq('jo')
66
+ end
67
+
68
+ it 'should obey from' do
69
+ @session.select('Miss', from: 'Other title')
70
+ @session.click_button('awesome')
71
+ results = extract_results(@session)
72
+ expect(results['other_title']).to eq('Miss')
73
+ expect(results['title']).not_to eq('Miss')
74
+ end
75
+
76
+ it 'show match labels with preceding or trailing whitespace' do
77
+ @session.select('Lojban', from: 'Locale')
78
+ @session.click_button('awesome')
79
+ expect(extract_results(@session)['locale']).to eq('jbo')
80
+ end
81
+
82
+ it 'casts to string' do
83
+ @session.select(:Miss, from: :Title)
84
+ expect(@session.find_field('Title').value).to eq('Miss')
85
+ end
86
+
87
+ context 'input with datalist' do
88
+ it 'should select an option' do
89
+ @session.select('Audi', from: 'manufacturer')
90
+ @session.click_button('awesome')
91
+ expect(extract_results(@session)['manufacturer']).to eq('Audi')
92
+ end
93
+
94
+ it 'should not find an input without a datalist' do
95
+ expect do
96
+ @session.select('Thomas', from: 'form_first_name')
97
+ end.to raise_error(/Unable to find input box with datalist completion "form_first_name"/)
98
+ end
99
+
100
+ it "should not select an option that doesn't exist" do
101
+ expect do
102
+ @session.select('Tata', from: 'manufacturer')
103
+ end.to raise_error(/Unable to find datalist option "Tata"/)
104
+ end
105
+
106
+ it 'should not select a disabled option' do
107
+ expect do
108
+ @session.select('Mercedes', from: 'manufacturer')
109
+ end.to raise_error(/Unable to find datalist option "Mercedes"/)
110
+ end
111
+ end
112
+
113
+ context "with a locator that doesn't exist" do
114
+ it 'should raise an error' do
115
+ msg = /Unable to find select box "does not exist"/
116
+ expect do
117
+ @session.select('foo', from: 'does not exist')
118
+ end.to raise_error(Capybara::ElementNotFound, msg)
119
+ end
120
+ end
121
+
122
+ context "with an option that doesn't exist" do
123
+ it 'should raise an error' do
124
+ msg = /^Unable to find option "Does not Exist" within/
125
+ expect do
126
+ @session.select('Does not Exist', from: 'form_locale')
127
+ end.to raise_error(Capybara::ElementNotFound, msg)
128
+ end
129
+ end
130
+
131
+ context 'on a disabled select' do
132
+ it 'should raise an error' do
133
+ expect do
134
+ @session.select('Should not see me', from: 'Disabled Select')
135
+ end.to raise_error(Capybara::ElementNotFound)
136
+ end
137
+ end
138
+
139
+ context 'on a disabled option' do
140
+ it 'should not select' do
141
+ @session.select('Other', from: 'form_title')
142
+ expect(@session.find_field('form_title').value).not_to eq 'Other'
143
+ end
144
+ end
145
+
146
+ context 'with multiple select' do
147
+ it 'should return an empty value' do
148
+ expect(@session.find_field('Languages').value).to eq([])
149
+ end
150
+
151
+ it 'should return value of the selected options' do
152
+ @session.select('Ruby', from: 'Languages')
153
+ @session.select('Javascript', from: 'Languages')
154
+ expect(@session.find_field('Languages').value).to include('Ruby', 'Javascript')
155
+ end
156
+
157
+ it 'should select one option' do
158
+ @session.select('Ruby', from: 'Languages')
159
+ @session.click_button('awesome')
160
+ expect(extract_results(@session)['languages']).to eq(['Ruby'])
161
+ end
162
+
163
+ it 'should select multiple options' do
164
+ @session.select('Ruby', from: 'Languages')
165
+ @session.select('Javascript', from: 'Languages')
166
+ @session.click_button('awesome')
167
+ expect(extract_results(@session)['languages']).to include('Ruby', 'Javascript')
168
+ end
169
+
170
+ it 'should remain selected if already selected' do
171
+ @session.select('Ruby', from: 'Languages')
172
+ @session.select('Javascript', from: 'Languages')
173
+ @session.select('Ruby', from: 'Languages')
174
+ @session.click_button('awesome')
175
+ expect(extract_results(@session)['languages']).to include('Ruby', 'Javascript')
176
+ end
177
+
178
+ it 'should return value attribute rather than content if present' do
179
+ expect(@session.find_field('Underwear').value).to include('thermal')
180
+ end
181
+ end
182
+
183
+ context 'with :exact option' do
184
+ context 'when `false`' do
185
+ it 'can match select box approximately' do
186
+ @session.select('Finnish', from: 'Loc', exact: false)
187
+ @session.click_button('awesome')
188
+ expect(extract_results(@session)['locale']).to eq('fi')
189
+ end
190
+
191
+ it 'can match option approximately' do
192
+ @session.select('Fin', from: 'Locale', exact: false)
193
+ @session.click_button('awesome')
194
+ expect(extract_results(@session)['locale']).to eq('fi')
195
+ end
196
+
197
+ it 'can match option approximately when :from not given' do
198
+ @session.select('made-up language', exact: false)
199
+ @session.click_button('awesome')
200
+ expect(extract_results(@session)['locale']).to eq('jo')
201
+ end
202
+ end
203
+
204
+ context 'when `true`' do
205
+ it 'can match select box approximately' do
206
+ expect do
207
+ @session.select('Finnish', from: 'Loc', exact: true)
208
+ end.to raise_error(Capybara::ElementNotFound)
209
+ end
210
+
211
+ it 'can match option approximately' do
212
+ expect do
213
+ @session.select('Fin', from: 'Locale', exact: true)
214
+ end.to raise_error(Capybara::ElementNotFound)
215
+ end
216
+
217
+ it 'can match option approximately when :from not given' do
218
+ expect do
219
+ @session.select('made-up language', exact: true)
220
+ end.to raise_error(Capybara::ElementNotFound)
221
+ end
222
+ end
223
+ end
224
+
225
+ it 'should error when not passed a locator for :from option' do
226
+ select = @session.find(:select, 'Title')
227
+ expect { @session.select('Mr', from: select) }.to raise_error(ArgumentError, /does not take an element/)
228
+ end
229
+ end
@@ -0,0 +1,98 @@
1
+ # frozen_string_literal: true
2
+
3
+ Capybara::SpecHelper.spec Capybara::Selector do
4
+ before do
5
+ @session.visit('/form')
6
+ end
7
+
8
+ describe ':label selector' do
9
+ it 'finds a label by text' do
10
+ expect(@session.find(:label, 'Customer Name').text).to eq 'Customer Name'
11
+ end
12
+
13
+ it 'finds a label by for attribute string' do
14
+ expect(@session.find(:label, for: 'form_other_title')['for']).to eq 'form_other_title'
15
+ end
16
+
17
+ it 'finds a label for for attribute regex' do
18
+ expect(@session.find(:label, for: /_other_title/)['for']).to eq 'form_other_title'
19
+ end
20
+
21
+ it 'finds a label from nested input using :for filter with id string' do
22
+ expect(@session.find(:label, for: 'nested_label').text).to eq 'Nested Label'
23
+ end
24
+
25
+ it 'finds a label from nested input using :for filter with id regexp' do
26
+ expect(@session.find(:label, for: /nested_lab/).text).to eq 'Nested Label'
27
+ end
28
+
29
+ it 'finds a label from nested input using :for filter with element' do
30
+ input = @session.find(:id, 'nested_label')
31
+ expect(@session.find(:label, for: input).text).to eq 'Nested Label'
32
+ end
33
+
34
+ it 'finds a label from nested input using :for filter with element when no id on label' do
35
+ input = @session.find(:css, '#wrapper_label').find(:css, 'input')
36
+ expect(@session.find(:label, for: input).text).to eq 'Wrapper Label'
37
+ end
38
+
39
+ it 'finds the label for an non-nested element when using :for filter' do
40
+ select = @session.find(:id, 'form_other_title')
41
+ expect(@session.find(:label, for: select)['for']).to eq 'form_other_title'
42
+ end
43
+
44
+ context 'with exact option' do
45
+ it 'matches substrings' do
46
+ expect(@session.find(:label, 'Customer Na', exact: false).text).to eq 'Customer Name'
47
+ end
48
+
49
+ it "doesn't match substrings" do
50
+ expect { @session.find(:label, 'Customer Na', exact: true) }.to raise_error(Capybara::ElementNotFound)
51
+ end
52
+ end
53
+ end
54
+
55
+ describe 'field selectors' do
56
+ context 'with :id option' do
57
+ it 'can find specifically by id' do
58
+ expect(@session.find(:field, id: 'customer_email').value).to eq 'ben@ben.com'
59
+ end
60
+
61
+ it 'can find by regex' do
62
+ expect(@session.find(:field, id: /ustomer.emai/).value).to eq 'ben@ben.com'
63
+ end
64
+
65
+ it 'can find by case-insensitive id' do
66
+ expect(@session.find(:field, id: /StOmer.emAI/i).value).to eq 'ben@ben.com'
67
+ end
68
+ end
69
+
70
+ it 'can find specifically by name string' do
71
+ expect(@session.find(:field, name: 'form[other_title]')['id']).to eq 'form_other_title'
72
+ end
73
+
74
+ it 'can find specifically by name regex' do
75
+ expect(@session.find(:field, name: /form\[other_.*\]/)['id']).to eq 'form_other_title'
76
+ end
77
+
78
+ it 'can find specifically by placeholder string' do
79
+ expect(@session.find(:field, placeholder: 'FirstName')['id']).to eq 'form_first_name'
80
+ end
81
+
82
+ it 'can find specifically by placeholder regex' do
83
+ expect(@session.find(:field, placeholder: /FirstN.*/)['id']).to eq 'form_first_name'
84
+ end
85
+
86
+ it 'can find by type' do
87
+ expect(@session.find(:field, 'Confusion', type: 'checkbox')['id']).to eq 'confusion_checkbox'
88
+ expect(@session.find(:field, 'Confusion', type: 'text')['id']).to eq 'confusion_text'
89
+ expect(@session.find(:field, 'Confusion', type: 'textarea')['id']).to eq 'confusion_textarea'
90
+ end
91
+
92
+ it 'can find by class' do
93
+ expect(@session.find(:field, class: 'confusion-checkbox')['id']).to eq 'confusion_checkbox'
94
+ expect(@session).to have_selector(:field, class: 'confusion', count: 3)
95
+ expect(@session.find(:field, class: %w[confusion confusion-textarea])['id']).to eq 'confusion_textarea'
96
+ end
97
+ end
98
+ end
@@ -0,0 +1,52 @@
1
+ # frozen_string_literal: true
2
+
3
+ Capybara::SpecHelper.spec '#sibling' do
4
+ before do
5
+ @session.visit('/with_html')
6
+ end
7
+
8
+ after do
9
+ Capybara::Selector.remove(:monkey)
10
+ end
11
+
12
+ it 'should find a prior sibling element using the given locator' do
13
+ el = @session.find(:css, '#mid_sibling')
14
+ expect(el.sibling('//div[@data-pre]')[:id]).to eq('pre_sibling')
15
+ end
16
+
17
+ it 'should find a following sibling element using the given locator' do
18
+ el = @session.find(:css, '#mid_sibling')
19
+ expect(el.sibling('//div[@data-post]')[:id]).to eq('post_sibling')
20
+ end
21
+
22
+ it 'should raise an error if there are multiple matches' do
23
+ el = @session.find(:css, '#mid_sibling')
24
+ expect { el.sibling('//div') }.to raise_error(Capybara::Ambiguous)
25
+ end
26
+
27
+ context 'with css selectors' do
28
+ it 'should find the first element using the given locator' do
29
+ el = @session.find(:css, '#mid_sibling')
30
+ expect(el.sibling(:css, '#pre_sibling')).to have_text('Pre Sibling')
31
+ expect(el.sibling(:css, '#post_sibling')).to have_text('Post Sibling')
32
+ end
33
+ end
34
+
35
+ context 'with custom selector' do
36
+ it 'should use the custom selector' do
37
+ Capybara.add_selector(:data_attribute) do
38
+ xpath { |attr| ".//*[@data-#{attr}]" }
39
+ end
40
+ el = @session.find(:css, '#mid_sibling')
41
+ expect(el.sibling(:data_attribute, 'pre').text).to eq('Pre Sibling')
42
+ expect(el.sibling(:data_attribute, 'post').text).to eq('Post Sibling')
43
+ end
44
+ end
45
+
46
+ it 'should raise ElementNotFound with a useful default message if nothing was found' do
47
+ el = @session.find(:css, '#child')
48
+ expect do
49
+ el.sibling(:xpath, '//div[@id="nosuchthing"]')
50
+ end.to raise_error(Capybara::ElementNotFound, 'Unable to find xpath "//div[@id=\\"nosuchthing\\"]" that is a sibling of visible css "#child"')
51
+ end
52
+ end
@@ -0,0 +1,74 @@
1
+ # frozen_string_literal: true
2
+
3
+ Capybara::SpecHelper.spec '#text' do
4
+ it 'should print the text of the page' do
5
+ @session.visit('/with_simple_html')
6
+ expect(@session.text).to eq('Bar')
7
+ end
8
+
9
+ it 'ignores invisible text by default' do
10
+ @session.visit('/with_html')
11
+ expect(@session.find(:id, 'hidden-text').text).to eq('Some of this text is')
12
+ end
13
+
14
+ it 'shows invisible text if `:all` given' do
15
+ @session.visit('/with_html')
16
+ expect(@session.find(:id, 'hidden-text').text(:all)).to eq('Some of this text is hidden!')
17
+ end
18
+
19
+ it 'ignores invisible text if `:visible` given' do
20
+ Capybara.ignore_hidden_elements = false
21
+ @session.visit('/with_html')
22
+ expect(@session.find(:id, 'hidden-text').text(:visible)).to eq('Some of this text is')
23
+ end
24
+
25
+ it 'ignores invisible text if `Capybara.ignore_hidden_elements = true`' do
26
+ @session.visit('/with_html')
27
+ expect(@session.find(:id, 'hidden-text').text).to eq('Some of this text is')
28
+ Capybara.ignore_hidden_elements = false
29
+ expect(@session.find(:id, 'hidden-text').text).to eq('Some of this text is hidden!')
30
+ end
31
+
32
+ it 'ignores invisible text if `Capybara.visible_text_only = true`' do
33
+ @session.visit('/with_html')
34
+ Capybara.visible_text_only = true
35
+ expect(@session.find(:id, 'hidden-text').text).to eq('Some of this text is')
36
+ Capybara.ignore_hidden_elements = false
37
+ expect(@session.find(:id, 'hidden-text').text).to eq('Some of this text is')
38
+ end
39
+
40
+ it 'ignores invisible text if ancestor is invisible' do
41
+ @session.visit('/with_html')
42
+ expect(@session.find(:id, 'hidden_via_ancestor', visible: false).text).to eq('')
43
+ end
44
+
45
+ context 'with css as default selector' do
46
+ before { Capybara.default_selector = :css }
47
+
48
+ after { Capybara.default_selector = :xpath }
49
+
50
+ it 'should print the text of the page' do
51
+ @session.visit('/with_simple_html')
52
+ expect(@session.text).to eq('Bar')
53
+ end
54
+ end
55
+
56
+ it 'should be correctly normalized when visible' do
57
+ @session.visit('/with_html')
58
+ el = @session.find(:css, '#normalized')
59
+ expect(el.text).to eq "Some text\nMore text\nAnd more text\nEven more text on multiple lines"
60
+ end
61
+
62
+ it 'should be a textContent with irrelevant whitespace collapsed when non-visible' do
63
+ @session.visit('/with_html')
64
+ el = @session.find(:css, '#non_visible_normalized', visible: false)
65
+ expect(el.text(:all)).to eq 'Some textMore text And more text Even more text on multiple lines'
66
+ end
67
+
68
+ it 'should strip correctly' do
69
+ @session.visit('/with_html')
70
+ el = @session.find(:css, '#ws')
71
+ expect(el.text).to eq ' '
72
+ expect(el.text(:all)).to eq ' '
73
+ end
74
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ Capybara::SpecHelper.spec '#title' do
4
+ it 'should get the title of the page' do
5
+ @session.visit('/with_title')
6
+ expect(@session.title).to eq('Test Title')
7
+ end
8
+
9
+ context 'with css as default selector' do
10
+ before { Capybara.default_selector = :css }
11
+
12
+ after { Capybara.default_selector = :xpath }
13
+
14
+ it 'should get the title of the page' do
15
+ @session.visit('/with_title')
16
+ expect(@session.title).to eq('Test Title')
17
+ end
18
+ end
19
+
20
+ context 'within iframe', requires: [:frames] do
21
+ it 'should get the title of the top level browsing context' do
22
+ @session.visit('/within_frames')
23
+ expect(@session.title).to eq('With Frames')
24
+ @session.within_frame('frameOne') do
25
+ expect(@session.title).to eq('With Frames')
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,100 @@
1
+ # frozen_string_literal: true
2
+
3
+ Capybara::SpecHelper.spec '#uncheck' do
4
+ before do
5
+ @session.visit('/form')
6
+ end
7
+
8
+ it 'should uncheck a checkbox by id' do
9
+ @session.uncheck('form_pets_hamster')
10
+ @session.click_button('awesome')
11
+ expect(extract_results(@session)['pets']).to include('dog')
12
+ expect(extract_results(@session)['pets']).not_to include('hamster')
13
+ end
14
+
15
+ it 'should uncheck a checkbox by label' do
16
+ @session.uncheck('Hamster')
17
+ @session.click_button('awesome')
18
+ expect(extract_results(@session)['pets']).to include('dog')
19
+ expect(extract_results(@session)['pets']).not_to include('hamster')
20
+ end
21
+
22
+ it 'should work without a locator string' do
23
+ @session.uncheck(id: 'form_pets_hamster')
24
+ @session.click_button('awesome')
25
+ expect(extract_results(@session)['pets']).to include('dog')
26
+ expect(extract_results(@session)['pets']).not_to include('hamster')
27
+ end
28
+
29
+ it 'should be able to uncheck itself if no locator specified' do
30
+ cb = @session.find(:id, 'form_pets_hamster')
31
+ cb.uncheck
32
+ @session.click_button('awesome')
33
+ expect(extract_results(@session)['pets']).to include('dog')
34
+ expect(extract_results(@session)['pets']).not_to include('hamster')
35
+ end
36
+
37
+ it 'casts to string' do
38
+ @session.uncheck(:form_pets_hamster)
39
+ @session.click_button('awesome')
40
+ expect(extract_results(@session)['pets']).to include('dog')
41
+ expect(extract_results(@session)['pets']).not_to include('hamster')
42
+ end
43
+
44
+ context 'with :exact option' do
45
+ it 'should accept partial matches when false' do
46
+ @session.uncheck('Ham', exact: false)
47
+ @session.click_button('awesome')
48
+ expect(extract_results(@session)['pets']).not_to include('hamster')
49
+ end
50
+
51
+ it 'should not accept partial matches when true' do
52
+ expect do
53
+ @session.uncheck('Ham', exact: true)
54
+ end.to raise_error(Capybara::ElementNotFound)
55
+ end
56
+ end
57
+
58
+ context 'when checkbox hidden' do
59
+ context 'with Capybara.automatic_label_click == true' do
60
+ around do |spec|
61
+ old_click_label, Capybara.automatic_label_click = Capybara.automatic_label_click, true
62
+ spec.run
63
+ Capybara.automatic_label_click = old_click_label
64
+ end
65
+
66
+ it 'should uncheck via clicking the label with :for attribute if possible' do
67
+ expect(@session.find(:checkbox, 'form_cars_jaguar', checked: true, visible: :hidden)).to be_truthy
68
+ @session.uncheck('form_cars_jaguar')
69
+ @session.click_button('awesome')
70
+ expect(extract_results(@session)['cars']).not_to include('jaguar')
71
+ end
72
+
73
+ it 'should uncheck via clicking the wrapping label if possible' do
74
+ expect(@session.find(:checkbox, 'form_cars_koenigsegg', checked: true, visible: :hidden)).to be_truthy
75
+ @session.uncheck('form_cars_koenigsegg')
76
+ @session.click_button('awesome')
77
+ expect(extract_results(@session)['cars']).not_to include('koenigsegg')
78
+ end
79
+
80
+ it 'should not click the label if unneeded' do
81
+ expect(@session.find(:checkbox, 'form_cars_tesla', unchecked: true, visible: :hidden)).to be_truthy
82
+ @session.uncheck('form_cars_tesla')
83
+ @session.click_button('awesome')
84
+ expect(extract_results(@session)['cars']).not_to include('tesla')
85
+ end
86
+
87
+ it 'should raise original error when no label available' do
88
+ expect { @session.uncheck('form_cars_porsche') }.to raise_error(Capybara::ElementNotFound, /Unable to find visible checkbox "form_cars_porsche"/)
89
+ end
90
+
91
+ it 'should raise error if not allowed to click label' do
92
+ expect { @session.uncheck('form_cars_jaguar', allow_label_click: false) }.to raise_error(Capybara::ElementNotFound, /Unable to find visible checkbox "form_cars_jaguar"/)
93
+ end
94
+
95
+ it 'should include node filter description in error if necessary' do
96
+ expect { @session.uncheck('form_cars_maserati', allow_label_click: false) }.to raise_error(Capybara::ElementNotFound, 'Unable to find visible checkbox "form_cars_maserati" that is not disabled')
97
+ end
98
+ end
99
+ end
100
+ end