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,250 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ RSpec.describe Capybara::Selector::RegexpDisassembler, :aggregate_failures do
6
+ it 'handles strings' do
7
+ verify_strings(
8
+ /abcdef/ => %w[abcdef],
9
+ /abc def/ => ['abc def']
10
+ )
11
+ end
12
+
13
+ it 'handles escaped characters' do
14
+ verify_strings(
15
+ /abc\\def/ => %w[abc\def],
16
+ /abc\.def/ => %w[abc.def],
17
+ /\nabc/ => ["\nabc"],
18
+ %r{abc/} => %w[abc/],
19
+ /ab\++cd/ => %w[ab+ cd]
20
+ )
21
+ end
22
+
23
+ it 'handles wildcards' do
24
+ verify_strings(
25
+ /abc.*def/ => %w[abc def],
26
+ /.*def/ => %w[def],
27
+ /abc./ => %w[abc],
28
+ /abc.*/ => %w[abc],
29
+ /abc.def/ => %w[abc def],
30
+ /abc.def.ghi/ => %w[abc def ghi],
31
+ /abc.abcd.abcde/ => %w[abcde],
32
+ /.*/ => []
33
+ )
34
+ end
35
+
36
+ it 'ignores optional characters for substrings' do
37
+ {
38
+ /abc*def/ => %w[ab def],
39
+ /abc*/ => %w[ab],
40
+ /c*/ => [],
41
+ /abc?def/ => %w[ab def],
42
+ /abc?/ => %w[ab],
43
+ /abc?def?/ => %w[ab de],
44
+ /abc?def?g/ => %w[ab de g],
45
+ /d?/ => []
46
+ }.each do |regexp, expected|
47
+ expect(described_class.new(regexp).substrings).to eq expected
48
+ end
49
+ end
50
+
51
+ it 'handles optional characters for #alternated_substrings' do
52
+ verify_alternated_strings(
53
+ {
54
+ /abc*def/ => [%w[ab def]],
55
+ /abc*/ => [%w[ab]],
56
+ /c*/ => [],
57
+ /abc?def/ => [%w[abdef], %w[abcdef]],
58
+ /abc?/ => [%w[ab]],
59
+ /abc?def?/ => [%w[abde], %w[abcde]],
60
+ /abc?def?g/ => [%w[abdeg], %w[abdefg], %w[abcdeg], %w[abcdefg]],
61
+ /d?/ => []
62
+ }
63
+ )
64
+ end
65
+
66
+ it 'handles character classes' do
67
+ verify_strings(
68
+ /abc[a-z]/ => %w[abc],
69
+ /abc[a-z]def[0-9]g/ => %w[abc def g],
70
+ /[0-9]abc/ => %w[abc],
71
+ /[0-9]+/ => [],
72
+ /abc[0-9&&[^7]]/ => %w[abc]
73
+ )
74
+ end
75
+
76
+ it 'handles posix bracket expressions' do
77
+ verify_strings(
78
+ /abc[[:alpha:]]/ => %w[abc],
79
+ /[[:digit:]]abc/ => %w[abc],
80
+ /abc[[:print:]]def/ => %w[abc def]
81
+ )
82
+ end
83
+
84
+ it 'handles repitition' do
85
+ verify_strings(
86
+ /abc{3}/ => %w[abccc],
87
+ /abc{3}d/ => %w[abcccd],
88
+ /abc{0}/ => %w[ab],
89
+ /abc{,2}/ => %w[ab],
90
+ /abc{2,}/ => %w[abcc],
91
+ /def{1,5}/ => %w[def],
92
+ /abc+def/ => %w[abc def],
93
+ /ab(cde){,4}/ => %w[ab],
94
+ /(ab){,2}cd/ => %w[cd],
95
+ /(abc){2,3}/ => %w[abcabc],
96
+ /(abc){3}/ => %w[abcabcabc],
97
+ /ab{2,3}cd/ => %w[abb cd],
98
+ /(ab){2,3}cd/ => %w[abab cd]
99
+ )
100
+ end
101
+
102
+ it 'handles non-greedy repetition' do
103
+ verify_strings(
104
+ /abc.*?/ => %w[abc],
105
+ /abc+?/ => %w[abc],
106
+ /abc*?cde/ => %w[ab cde],
107
+ /(abc)+?def/ => %w[abc def],
108
+ /ab(cde)*?fg/ => %w[ab fg]
109
+ )
110
+ end
111
+
112
+ it 'ignores alternation for #substrings' do
113
+ {
114
+ /abc|def/ => [],
115
+ /ab(?:c|d)/ => %w[ab],
116
+ /ab(c|d|e)fg/ => %w[ab fg],
117
+ /ab?(c|d)fg/ => %w[a fg],
118
+ /ab(c|d)ef/ => %w[ab ef],
119
+ /ab(cd?|ef)g/ => %w[ab g],
120
+ /ab(cd|ef*)g/ => %w[ab g],
121
+ /ab|cd*/ => [],
122
+ /cd(?:ef|gh)|xyz/ => [],
123
+ /(cd(?:ef|gh)|xyz)/ => [],
124
+ /cd(ef|gh)+/ => %w[cd],
125
+ /cd(ef|gh)?/ => %w[cd],
126
+ /cd(ef|gh)?ij/ => %w[cd ij],
127
+ /cd(ef|gh)+ij/ => %w[cd ij],
128
+ /cd(ef|gh){2}ij/ => %w[cd ij],
129
+ /(cd(ef|g*))/ => %w[cd],
130
+ /ab(cd){0,2}ef/ => %w[ab ef],
131
+ /ab(cd){0,1}ef/ => %w[ab ef],
132
+ /ab(cd|cd)ef/ => %w[ab ef],
133
+ /ab(cd|cd)?ef/ => %w[ab ef],
134
+ /ab\\?cd/ => %w[ab cd]
135
+ }.each do |regexp, expected|
136
+ expect(described_class.new(regexp).substrings).to eq expected
137
+ end
138
+ end
139
+
140
+ it 'handles alternation for #alternated_substrings' do
141
+ verify_alternated_strings(
142
+ {
143
+ /abc|def/ => [%w[abc], %w[def]],
144
+ /ab(?:c|d)/ => [%w[abc], %w[abd]],
145
+ /ab(c|d|e)fg/ => [%w[abcfg], %w[abdfg], %w[abefg]],
146
+ /ab?(c|d)fg/ => [%w[acfg], %w[adfg], %w[abcfg], %w[abdfg]],
147
+ /ab(c|d)ef/ => [%w[abcef], %w[abdef]],
148
+ /ab(cd?|ef)g/ => [%w[abcg], %w[abcdg], %w[abefg]],
149
+ /ab(cd|ef*)g/ => [%w[abcdg], %w[abe g]],
150
+ /ab|cd*/ => [%w[ab], %w[c]],
151
+ /cd(?:ef|gh)|xyz/ => [%w[cdef], %w[cdgh], %w[xyz]],
152
+ /(cd(?:ef|gh)|xyz)/ => [%w[cdef], %w[cdgh], %w[xyz]],
153
+ /cd(ef|gh)+/ => [%w[cdef], %w[cdgh]],
154
+ /cd(ef|gh)?/ => [%w[cd]],
155
+ /cd(ef|gh)?ij/ => [%w[cdij], %w[cdefij], %w[cdghij]],
156
+ /cd(ef|gh)+ij/ => [%w[cdef ij], %w[cdgh ij]],
157
+ /cd(ef|gh){2}ij/ => [%w[cdefefij], %w[cdefghij], %w[cdghefij], %w[cdghghij]],
158
+ /(cd(ef|g*))/ => [%w[cd]],
159
+ /a|b*/ => [],
160
+ /ab(?:c|d?)/ => [%w[ab]],
161
+ /ab(c|d)|a*/ => [],
162
+ /(abc)?(d|e)/ => [%w[d], %w[e]],
163
+ /(abc*de)?(d|e)/ => [%w[d], %w[e]],
164
+ /(abc*de)?(d|e?)/ => [],
165
+ /(abc)?(d|e?)/ => [],
166
+ /ab(cd){0,2}ef/ => [%w[ab ef]],
167
+ /ab(cd){0,1}ef/ => [%w[abef], %w[abcdef]],
168
+ /ab(cd|cd)ef/ => [%w[abcdef]],
169
+ /ab(cd|cd)?ef/ => [%w[abef], %w[abcdef]],
170
+ /ab\\?cd/ => [%w[abcd], %w[ab\cd]]
171
+ }
172
+ )
173
+ end
174
+
175
+ it 'handles grouping' do
176
+ verify_strings(
177
+ /(abc)/ => %w[abc],
178
+ /(abc)?/ => [],
179
+ /ab(cde)/ => %w[abcde],
180
+ /(abc)de/ => %w[abcde],
181
+ /ab(cde)fg/ => %w[abcdefg],
182
+ /ab(?<name>cd)ef/ => %w[abcdef],
183
+ /gh(?>ij)kl/ => %w[ghijkl],
184
+ /m(n.*p)q/ => %w[mn pq],
185
+ /(?:ab(cd)*){2,3}/ => %w[ab],
186
+ /(ab(cd){3})?/ => [],
187
+ /(ab(cd)+){2}/ => %w[abcd]
188
+ )
189
+ end
190
+
191
+ it 'handles meta characters' do
192
+ verify_strings(
193
+ /abc\d/ => %w[abc],
194
+ /abc\wdef/ => %w[abc def],
195
+ /\habc/ => %w[abc]
196
+ )
197
+ end
198
+
199
+ it 'handles character properties' do
200
+ verify_strings(
201
+ /ab\p{Alpha}cd/ => %w[ab cd],
202
+ /ab\p{Blank}/ => %w[ab],
203
+ /\p{Digit}cd/ => %w[cd]
204
+ )
205
+ end
206
+
207
+ it 'handles backreferences' do
208
+ verify_strings(
209
+ /a(?<group>abc).\k<group>.+/ => %w[aabc]
210
+ )
211
+ end
212
+
213
+ it 'handles subexpressions' do
214
+ verify_strings(
215
+ /\A(?<paren>a\g<paren>*b)+\z/ => %w[a b]
216
+ )
217
+ end
218
+
219
+ it 'ignores negative lookaheads' do
220
+ verify_strings(
221
+ /^(?!.*\bContributing Editor\b).*$/ => %w[],
222
+ /abc(?!.*def).*/ => %w[abc],
223
+ /(?!.*def)abc/ => %w[abc],
224
+ /abc(?!.*def.*).*ghi/ => %w[abc ghi],
225
+ /abc(?!.*bcd)def/ => %w[abcdef]
226
+ )
227
+ end
228
+
229
+ it 'handles anchors' do
230
+ verify_strings(
231
+ /^abc/ => %w[abc],
232
+ /def$/ => %w[def],
233
+ /^abc$/ => %w[abc]
234
+ )
235
+ end
236
+
237
+ def verify_strings(hsh)
238
+ hsh.each do |regexp, expected|
239
+ expect(Capybara::Selector::RegexpDisassembler.new(regexp).substrings).to eq expected
240
+ end
241
+ verify_alternated_strings(hsh, wrap: true)
242
+ end
243
+
244
+ def verify_alternated_strings(hsh, wrap: false)
245
+ hsh.each do |regexp, expected|
246
+ expected = [expected] if wrap && (expected != [])
247
+ expect(Capybara::Selector::RegexpDisassembler.new(regexp).alternated_substrings).to eq expected
248
+ end
249
+ end
250
+ end
@@ -0,0 +1,202 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ RSpec.describe Capybara::Result do
6
+ let :string do
7
+ Capybara.string <<-STRING
8
+ <ul>
9
+ <li>Alpha</li>
10
+ <li>Beta</li>
11
+ <li>Gamma</li>
12
+ <li>Delta</li>
13
+ </ul>
14
+ STRING
15
+ end
16
+
17
+ let :result do
18
+ string.all '//li', minimum: 0 # pass minimum: 0 so lazy evaluation doesn't get triggered yet
19
+ end
20
+
21
+ it 'has a length' do
22
+ expect(result.length).to eq(4)
23
+ end
24
+
25
+ it 'has a first element' do
26
+ result.first.text == 'Alpha'
27
+ end
28
+
29
+ it 'has a last element' do
30
+ result.last.text == 'Delta'
31
+ end
32
+
33
+ it 'splats into multiple assignment' do
34
+ first, *rest, last = result
35
+
36
+ expect(first).to have_text 'Alpha'
37
+ expect(rest.first).to have_text 'Beta'
38
+ expect(rest.last).to have_text 'Gamma'
39
+ expect(last).to have_text 'Delta'
40
+ end
41
+
42
+ it 'can supports values_at method' do
43
+ expect(result.values_at(0, 2).map(&:text)).to eq(%w[Alpha Gamma])
44
+ end
45
+
46
+ it 'can return an element by its index' do
47
+ expect(result.at(1).text).to eq('Beta')
48
+ expect(result[2].text).to eq('Gamma')
49
+ end
50
+
51
+ it 'can be mapped' do
52
+ expect(result.map(&:text)).to eq(%w[Alpha Beta Gamma Delta])
53
+ end
54
+
55
+ it 'can be selected' do
56
+ expect(result.count do |element|
57
+ element.text.include? 't'
58
+ end).to eq(2)
59
+ end
60
+
61
+ it 'can be reduced' do
62
+ expect(result.reduce('') do |memo, element|
63
+ memo + element.text[0]
64
+ end).to eq('ABGD')
65
+ end
66
+
67
+ it 'can be sampled' do
68
+ expect(result).to include(result.sample)
69
+ end
70
+
71
+ it 'can be indexed' do
72
+ expect(result.index do |el|
73
+ el.text == 'Gamma'
74
+ end).to eq(2)
75
+ end
76
+
77
+ def recalc_result
78
+ string.all '//li', minimum: 0 # pass minimum: 0 so lazy evaluation doesn't get triggered yet
79
+ end
80
+
81
+ it 'supports all modes of []' do
82
+ expect(recalc_result[1].text).to eq 'Beta'
83
+ expect(recalc_result[0, 2].map(&:text)).to eq %w[Alpha Beta]
84
+ expect(recalc_result[1..3].map(&:text)).to eq %w[Beta Gamma Delta]
85
+ expect(recalc_result[-1].text).to eq 'Delta'
86
+ expect(recalc_result[-2, 3].map(&:text)).to eq %w[Gamma Delta]
87
+ expect(recalc_result[1...3].map(&:text)).to eq %w[Beta Gamma]
88
+ expect(recalc_result[1..7].map(&:text)).to eq %w[Beta Gamma Delta]
89
+ expect(recalc_result[2...-1].map(&:text)).to eq %w[Gamma]
90
+ expect(recalc_result[2..-1].map(&:text)).to eq %w[Gamma Delta] # rubocop:disable Style/SlicingWithRange
91
+ expect(recalc_result[2..].map(&:text)).to eq %w[Gamma Delta]
92
+ end
93
+
94
+ it 'supports endless ranges' do
95
+ expect(result[2..].map(&:text)).to eq %w[Gamma Delta]
96
+ end
97
+
98
+ it 'supports inclusive positive beginless ranges' do
99
+ expect(result[..2].map(&:text)).to eq %w[Alpha Beta Gamma]
100
+ end
101
+
102
+ it 'supports inclusive negative beginless ranges' do
103
+ expect(result[..-2].map(&:text)).to eq %w[Alpha Beta Gamma]
104
+ expect(result[..-1].map(&:text)).to eq %w[Alpha Beta Gamma Delta]
105
+ end
106
+
107
+ it 'supports exclusive positive beginless ranges' do
108
+ expect(result[...2].map(&:text)).to eq %w[Alpha Beta]
109
+ end
110
+
111
+ it 'supports exclusive negative beginless ranges' do
112
+ expect(result[...-2].map(&:text)).to eq %w[Alpha Beta]
113
+ expect(result[...-1].map(&:text)).to eq %w[Alpha Beta Gamma]
114
+ end
115
+
116
+ it 'works with filter blocks' do
117
+ result = string.all('//li') { |node| node.text == 'Alpha' }
118
+ expect(result.size).to eq 1
119
+ end
120
+
121
+ # Not a great test but it indirectly tests what is needed
122
+ it 'should evaluate filters lazily for idx' do
123
+ skip 'JRuby has an issue with lazy enumerator evaluation' if jruby_lazy_enumerator_workaround?
124
+ # Not processed until accessed
125
+ expect(result.instance_variable_get(:@result_cache).size).to be 0
126
+
127
+ # Only one retrieved when needed
128
+ result.first
129
+ expect(result.instance_variable_get(:@result_cache).size).to be 1
130
+
131
+ # works for indexed access
132
+ result[0]
133
+ expect(result.instance_variable_get(:@result_cache).size).to be 1
134
+
135
+ result[2]
136
+ expect(result.instance_variable_get(:@result_cache).size).to be 3
137
+
138
+ # All cached when converted to array
139
+ result.to_a
140
+ expect(result.instance_variable_get(:@result_cache).size).to eq 4
141
+ end
142
+
143
+ it 'should evaluate filters lazily for range' do
144
+ skip 'JRuby has an issue with lazy enumerator evaluation' if jruby_lazy_enumerator_workaround?
145
+ result[0..1]
146
+ expect(result.instance_variable_get(:@result_cache).size).to be 2
147
+
148
+ expect(result[0..7].size).to eq 4
149
+ expect(result.instance_variable_get(:@result_cache).size).to be 4
150
+ end
151
+
152
+ it 'should evaluate filters lazily for idx and length' do
153
+ skip 'JRuby has an issue with lazy enumerator evaluation' if jruby_lazy_enumerator_workaround?
154
+ result[1, 2]
155
+ expect(result.instance_variable_get(:@result_cache).size).to be 3
156
+
157
+ expect(result[2, 5].size).to eq 2
158
+ expect(result.instance_variable_get(:@result_cache).size).to be 4
159
+ end
160
+
161
+ it 'should only need to evaluate one result for any?' do
162
+ skip 'JRuby has an issue with lazy enumerator evaluation' if jruby_lazy_enumerator_workaround?
163
+ result.any?
164
+ expect(result.instance_variable_get(:@result_cache).size).to be 1
165
+ end
166
+
167
+ it 'should evaluate all elements when #to_a called' do
168
+ # All cached when converted to array
169
+ result.to_a
170
+ expect(result.instance_variable_get(:@result_cache).size).to eq 4
171
+ end
172
+
173
+ describe '#each' do
174
+ it 'lazily evaluates' do
175
+ skip 'JRuby has an issue with lazy enumerator evaluation' if jruby_lazy_enumerator_workaround?
176
+ results = []
177
+ result.each do |el|
178
+ results << el
179
+ expect(result.instance_variable_get(:@result_cache).size).to eq results.size
180
+ end
181
+
182
+ expect(results.size).to eq 4
183
+ end
184
+
185
+ context 'without a block' do
186
+ it 'returns an iterator' do
187
+ expect(result.each).to be_a(Enumerator)
188
+ end
189
+
190
+ it 'lazily evaluates' do
191
+ skip 'JRuby has an issue with lazy enumerator evaluation' if jruby_lazy_enumerator_workaround?
192
+ result.each.with_index do |_el, idx|
193
+ expect(result.instance_variable_get(:@result_cache).size).to eq(idx + 1) # 0 indexing
194
+ end
195
+ end
196
+ end
197
+ end
198
+
199
+ def jruby_lazy_enumerator_workaround?
200
+ RUBY_PLATFORM == 'java'
201
+ end
202
+ end
@@ -0,0 +1,101 @@
1
+ # frozen_string_literal: true
2
+
3
+ # rubocop:disable RSpec/MultipleDescribes
4
+
5
+ require 'spec_helper'
6
+ require 'capybara/rspec'
7
+
8
+ # rubocop:disable RSpec/InstanceVariable
9
+ RSpec.configuration.before(:each, file_path: './spec/rspec/features_spec.rb') do
10
+ @in_filtered_hook = true
11
+ end
12
+
13
+ feature "Capybara's feature DSL" do
14
+ background do
15
+ @in_background = true
16
+ end
17
+
18
+ scenario 'includes Capybara' do
19
+ visit('/')
20
+ expect(page).to have_content('Hello world!')
21
+ end
22
+
23
+ scenario 'preserves description' do |ex|
24
+ expect(ex.metadata[:full_description])
25
+ .to eq("Capybara's feature DSL preserves description")
26
+ end
27
+
28
+ scenario 'allows driver switching', driver: :selenium do
29
+ expect(Capybara.current_driver).to eq(:selenium)
30
+ end
31
+
32
+ scenario 'runs background' do
33
+ expect(@in_background).to be_truthy
34
+ end
35
+
36
+ scenario 'runs hooks filtered by file path' do
37
+ expect(@in_filtered_hook).to be_truthy
38
+ end
39
+
40
+ scenario "doesn't pollute the Object namespace" do
41
+ expect(Object.new).not_to respond_to(:feature)
42
+ end
43
+
44
+ feature 'nested features' do
45
+ scenario 'work as expected' do
46
+ visit '/'
47
+ expect(page).to have_content 'Hello world!'
48
+ end
49
+
50
+ scenario 'are marked in the metadata as capybara_feature' do |ex|
51
+ expect(ex.metadata[:capybara_feature]).to be_truthy
52
+ end
53
+
54
+ scenario 'have a type of :feature' do |ex|
55
+ expect(ex.metadata[:type]).to eq :feature
56
+ end
57
+ end
58
+ end
59
+ # rubocop:enable RSpec/InstanceVariable
60
+
61
+ feature 'given and given! aliases to let and let!' do
62
+ given(:value) { :available }
63
+ given!(:value_in_background) { :available }
64
+
65
+ background do
66
+ expect(value_in_background).to be(:available)
67
+ end
68
+
69
+ scenario 'given and given! work as intended' do
70
+ expect(value).to be(:available)
71
+ expect(value_in_background).to be(:available)
72
+ end
73
+ end
74
+
75
+ feature "Capybara's feature DSL with driver", driver: :culerity do
76
+ scenario 'switches driver' do
77
+ expect(Capybara.current_driver).to eq(:culerity)
78
+ end
79
+ end
80
+
81
+ # rubocop:disable RSpec/RepeatedExample
82
+ xfeature 'if xfeature aliases to pending then' do
83
+ scenario "this should be 'temporarily disabled with xfeature'" do
84
+ # dummy
85
+ end
86
+
87
+ scenario "this also should be 'temporarily disabled with xfeature'" do
88
+ # dummy
89
+ end
90
+ end
91
+
92
+ ffeature 'if ffeature aliases focused tag then' do # rubocop:disable RSpec/Focus
93
+ scenario 'scenario inside this feature has metatag focus tag' do |example|
94
+ expect(example.metadata[:focus]).to be true
95
+ end
96
+
97
+ scenario 'other scenarios also has metatag focus tag' do |example|
98
+ expect(example.metadata[:focus]).to be true
99
+ end
100
+ end
101
+ # rubocop:enable RSpec/RepeatedExample, RSpec/MultipleDescribes
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ # rubocop:disable RSpec/MultipleDescribes
4
+
5
+ require 'spec_helper'
6
+ require 'capybara/rspec'
7
+
8
+ RSpec.configuration.before(:each, file_path: './spec/rspec/scenarios_spec.rb') do
9
+ @in_filtered_hook = true
10
+ end
11
+
12
+ feature 'if fscenario aliases focused tag then' do
13
+ fscenario 'scenario should have focused meta tag' do |example| # rubocop:disable RSpec/Focus
14
+ expect(example.metadata[:focus]).to be true
15
+ end
16
+ end
17
+
18
+ feature 'if xscenario aliases to pending then' do
19
+ xscenario "this test should be 'temporarily disabled with xscenario'" do # rubocop:disable RSpec/PendingWithoutReason
20
+ end
21
+ end
22
+
23
+ # rubocop:enable RSpec/MultipleDescribes