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,99 @@
1
+ # frozen_string_literal: true
2
+
3
+ # NOTE: This file uses `sleep` to sync up parts of the tests. This is only implemented like this
4
+ # because of the methods being tested. In tests using Capybara this type of behavior should be implemented
5
+ # using Capybara provided assertions with builtin waiting behavior.
6
+
7
+ Capybara::SpecHelper.spec '#window_opened_by', requires: [:windows] do
8
+ before do
9
+ @window = @session.current_window
10
+ @session.visit('/with_windows')
11
+ @session.assert_selector(:css, 'body.loaded')
12
+ end
13
+
14
+ after do
15
+ (@session.windows - [@window]).each do |w|
16
+ @session.switch_to_window w
17
+ w.close
18
+ end
19
+ @session.switch_to_window(@window)
20
+ end
21
+
22
+ let(:zero_windows_message) { 'block passed to #window_opened_by opened 0 windows instead of 1' }
23
+ let(:two_windows_message) { 'block passed to #window_opened_by opened 2 windows instead of 1' }
24
+
25
+ context 'with :wait option' do
26
+ it 'should raise error if value of :wait is less than timeout' do
27
+ # So large value is used as `driver.window_handles` takes up to 800 ms on Travis
28
+ Capybara.using_wait_time 2 do
29
+ button = @session.find(:css, '#openWindowWithLongerTimeout')
30
+ expect do
31
+ @session.window_opened_by(wait: 0.3) do
32
+ button.click
33
+ end
34
+ end.to raise_error(Capybara::WindowError, zero_windows_message)
35
+ end
36
+ @session.document.synchronize(5, errors: [Capybara::CapybaraError]) do
37
+ raise Capybara::CapybaraError if @session.windows.size != 2
38
+ end
39
+ end
40
+
41
+ it 'should find window if value of :wait is more than timeout' do
42
+ button = @session.find(:css, '#openWindowWithTimeout')
43
+ Capybara.using_wait_time 0.1 do
44
+ window = @session.window_opened_by(wait: 1.5) do
45
+ button.click
46
+ end
47
+ expect(window).to be_instance_of(Capybara::Window)
48
+ end
49
+ end
50
+ end
51
+
52
+ context 'without :wait option' do
53
+ it 'should raise error if default_max_wait_time is less than timeout' do
54
+ button = @session.find(:css, '#openWindowWithTimeout')
55
+ Capybara.using_wait_time 0.1 do
56
+ expect do
57
+ @session.window_opened_by do
58
+ button.click
59
+ end
60
+ end.to raise_error(Capybara::WindowError, zero_windows_message)
61
+ end
62
+ @session.document.synchronize(2, errors: [Capybara::CapybaraError]) do
63
+ raise Capybara::CapybaraError if @session.windows.size != 2
64
+ end
65
+ end
66
+
67
+ it 'should find window if default_max_wait_time is more than timeout' do
68
+ button = @session.find(:css, '#openWindowWithTimeout')
69
+ Capybara.using_wait_time 5 do
70
+ window = @session.window_opened_by do
71
+ button.click
72
+ end
73
+ expect(window).to be_instance_of(Capybara::Window)
74
+ end
75
+ end
76
+ end
77
+
78
+ it 'should raise error when two windows have been opened by block' do
79
+ button = @session.find(:css, '#openTwoWindows')
80
+ expect do
81
+ @session.window_opened_by do
82
+ button.click
83
+ sleep 1 # It's possible for window_opened_by to be fullfilled before the second window opens
84
+ end
85
+ end.to raise_error(Capybara::WindowError, two_windows_message)
86
+ @session.document.synchronize(2, errors: [Capybara::CapybaraError]) do
87
+ raise Capybara::CapybaraError if @session.windows.size != 3
88
+ end
89
+ end
90
+
91
+ it 'should raise error when no windows were opened by block' do
92
+ button = @session.find(:css, '#doesNotOpenWindows')
93
+ expect do
94
+ @session.window_opened_by do
95
+ button.click
96
+ end
97
+ end.to raise_error(Capybara::WindowError, zero_windows_message)
98
+ end
99
+ end
@@ -0,0 +1,203 @@
1
+ # frozen_string_literal: true
2
+
3
+ # NOTE: This file uses `sleep` to sync up parts of the tests. This is only implemented like this
4
+ # because of the methods being tested. In tests using Capybara this type of behavior should be implemented
5
+ # using Capybara provided assertions with builtin waiting behavior.
6
+
7
+ Capybara::SpecHelper.spec Capybara::Window, requires: [:windows] do
8
+ let!(:orig_window) { @session.current_window }
9
+ before do
10
+ @session.visit('/with_windows')
11
+ end
12
+
13
+ after do
14
+ (@session.windows - [orig_window]).each do |w|
15
+ @session.switch_to_window w
16
+ w.close
17
+ end
18
+ @session.switch_to_window(orig_window)
19
+ end
20
+
21
+ describe '#exists?' do
22
+ it 'should become false after window was closed' do
23
+ other_window = @session.window_opened_by do
24
+ @session.find(:css, '#openWindow').click
25
+ end
26
+
27
+ expect do
28
+ @session.switch_to_window other_window
29
+ other_window.close
30
+ end.to change(other_window, :exists?).from(true).to(false)
31
+ end
32
+ end
33
+
34
+ describe '#closed?' do
35
+ it 'should become true after window was closed' do
36
+ other_window = @session.window_opened_by do
37
+ @session.find(:css, '#openWindow').click
38
+ end
39
+ expect do
40
+ @session.switch_to_window other_window
41
+ other_window.close
42
+ end.to change { other_window.closed? }.from(false).to(true)
43
+ end
44
+ end
45
+
46
+ describe '#current?' do
47
+ let(:other_window) do
48
+ @session.window_opened_by do
49
+ @session.find(:css, '#openWindow').click
50
+ end
51
+ end
52
+
53
+ it 'should become true after switching to window' do
54
+ expect do
55
+ @session.switch_to_window(other_window)
56
+ end.to change(other_window, :current?).from(false).to(true)
57
+ end
58
+
59
+ it 'should return false if window is closed' do
60
+ @session.switch_to_window(other_window)
61
+ other_window.close
62
+ expect(other_window.current?).to be(false)
63
+ end
64
+ end
65
+
66
+ describe '#close' do
67
+ let!(:other_window) do
68
+ @session.window_opened_by do
69
+ @session.find(:css, '#openWindow').click
70
+ end
71
+ end
72
+
73
+ it 'should switch to original window if invoked not for current window' do
74
+ expect(@session.windows.size).to eq(2)
75
+ expect(@session.current_window).to eq(orig_window)
76
+ other_window.close
77
+ expect(@session.windows.size).to eq(1)
78
+ expect(@session.current_window).to eq(orig_window)
79
+ end
80
+
81
+ it 'should make subsequent invocations of other methods raise no_such_window_error if invoked for current window' do
82
+ @session.switch_to_window(other_window)
83
+ expect(@session.current_window).to eq(other_window)
84
+ other_window.close
85
+ expect do
86
+ @session.find(:css, '#some_id')
87
+ end.to raise_error(@session.driver.no_such_window_error)
88
+ @session.switch_to_window(orig_window)
89
+ end
90
+ end
91
+
92
+ describe '#size' do
93
+ def win_size
94
+ @session.evaluate_script('[window.outerWidth || window.innerWidth, window.outerHeight || window.innerHeight]')
95
+ end
96
+
97
+ it 'should return size of whole window', requires: %i[windows js] do
98
+ expect(@session.current_window.size).to eq win_size
99
+ end
100
+
101
+ it 'should switch to original window if invoked not for current window' do
102
+ other_window = @session.window_opened_by do
103
+ @session.find(:css, '#openWindow').click
104
+ end
105
+ sleep 1
106
+ size = @session.within_window(other_window) do
107
+ win_size
108
+ end
109
+ expect(other_window.size).to eq(size)
110
+ expect(@session.current_window).to eq(orig_window)
111
+ end
112
+ end
113
+
114
+ describe '#resize_to' do
115
+ let!(:initial_size) { @session.current_window.size }
116
+
117
+ after do
118
+ @session.current_window.resize_to(*initial_size)
119
+ sleep 1
120
+ end
121
+
122
+ it 'should be able to resize window', requires: %i[windows js] do
123
+ width, height = initial_size
124
+ @session.current_window.resize_to(width - 100, height - 100)
125
+ sleep 1
126
+ expect(@session.current_window.size).to eq([width - 100, height - 100])
127
+ end
128
+
129
+ it 'should stay on current window if invoked not for current window', requires: %i[windows js] do
130
+ other_window = @session.window_opened_by do
131
+ @session.find(:css, '#openWindow').click
132
+ end
133
+
134
+ other_window.resize_to(600, 400)
135
+ expect(@session.current_window).to eq(orig_window)
136
+
137
+ @session.within_window(other_window) do
138
+ expect(@session.current_window.size).to eq([600, 400])
139
+ end
140
+ end
141
+ end
142
+
143
+ describe '#maximize' do
144
+ let! :initial_size do
145
+ @session.current_window.size
146
+ end
147
+
148
+ after do
149
+ @session.current_window.resize_to(*initial_size)
150
+ sleep 0.5
151
+ end
152
+
153
+ it 'should be able to maximize window', requires: %i[windows js] do
154
+ start_width, start_height = 400, 300
155
+ @session.current_window.resize_to(start_width, start_height)
156
+ sleep 0.5
157
+
158
+ @session.current_window.maximize
159
+ sleep 0.5 # The timing on maximize is finicky on Travis -- wait a bit for maximize to occur
160
+
161
+ max_width, max_height = @session.current_window.size
162
+
163
+ # maximize behavior is window manage dependant, so just make sure it increases in size
164
+ expect(max_width).to be > start_width
165
+ expect(max_height).to be > start_height
166
+ end
167
+
168
+ it 'should stay on current window if invoked not for current window', requires: %i[windows js] do
169
+ other_window = @session.window_opened_by do
170
+ @session.find(:css, '#openWindow').click
171
+ end
172
+ other_window.resize_to(400, 300)
173
+ sleep 0.5
174
+ other_window.maximize
175
+ sleep 0.5 # The timing on maximize is finicky on Travis -- wait a bit for maximize to occur
176
+
177
+ expect(@session.current_window).to eq(orig_window)
178
+ # Maximizing the browser affects all tabs so this may not be valid in real browsers
179
+ # expect(@session.current_window.size).to eq(initial_size)
180
+
181
+ ow_width, ow_height = other_window.size
182
+ expect(ow_width).to be > 400
183
+ expect(ow_height).to be > 300
184
+ end
185
+ end
186
+
187
+ describe '#fullscreen' do
188
+ let! :initial_size do
189
+ @session.current_window.size
190
+ end
191
+
192
+ after do
193
+ @session.current_window.resize_to(*initial_size)
194
+ sleep 1
195
+ end
196
+
197
+ it 'should be able to fullscreen the window' do
198
+ expect do
199
+ @session.current_window.fullscreen
200
+ end.not_to raise_error
201
+ end
202
+ end
203
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ # NOTE: This file uses `sleep` to sync up parts of the tests. This is only implemented like this
4
+ # because of the methods being tested. In tests using Capybara this type of behavior should be implemented
5
+ # using Capybara provided assertions with builtin waiting behavior.
6
+
7
+ Capybara::SpecHelper.spec '#windows', requires: [:windows] do
8
+ before do
9
+ @window = @session.current_window
10
+ @session.visit('/with_windows')
11
+ @session.find(:css, '#openTwoWindows').click
12
+
13
+ @session.document.synchronize(3, errors: [Capybara::CapybaraError]) do
14
+ raise Capybara::CapybaraError if @session.windows.size != 3
15
+ end
16
+ end
17
+
18
+ after do
19
+ (@session.windows - [@window]).each(&:close)
20
+ @session.switch_to_window(@window)
21
+ end
22
+
23
+ it 'should return objects of Capybara::Window class' do
24
+ expect(@session.windows.map { |window| window.instance_of?(Capybara::Window) }).to eq([true] * 3)
25
+ end
26
+
27
+ it 'should be able to switch to windows' do
28
+ sleep 1 # give windows enough time to fully load
29
+ titles = @session.windows.map do |window|
30
+ @session.within_window(window) { @session.title }
31
+ end
32
+ expect(titles).to match_array(['With Windows', 'Title of the first popup', 'Title of popup two']) # rubocop:disable RSpec/MatchArray
33
+ end
34
+ end
@@ -0,0 +1,157 @@
1
+ # frozen_string_literal: true
2
+
3
+ Capybara::SpecHelper.spec '#within_window', requires: [:windows] do
4
+ before do
5
+ @window = @session.current_window
6
+ @session.visit('/with_windows')
7
+ @session.find(:css, '#openTwoWindows').click
8
+
9
+ @session.document.synchronize(3, errors: [Capybara::CapybaraError]) do
10
+ raise Capybara::CapybaraError if @session.windows.size != 3
11
+ end
12
+ end
13
+
14
+ after do
15
+ (@session.windows - [@window]).each do |w|
16
+ @session.switch_to_window w
17
+ w.close
18
+ end
19
+ @session.switch_to_window(@window)
20
+ end
21
+
22
+ context 'with an instance of Capybara::Window' do
23
+ it 'should not invoke driver#switch_to_window when given current window' do
24
+ allow(@session.driver).to receive(:switch_to_window).and_call_original
25
+ @session.within_window @window do
26
+ expect(@session.title).to eq('With Windows')
27
+ end
28
+ expect(@session.driver).not_to have_received(:switch_to_window)
29
+ end
30
+
31
+ it 'should be able to switch to another window' do
32
+ window = (@session.windows - [@window]).first
33
+ @session.within_window window do
34
+ expect(@session).to have_title(/Title of the first popup|Title of popup two/)
35
+ end
36
+ expect(@session.title).to eq('With Windows')
37
+ end
38
+
39
+ it 'returns value from the block' do
40
+ window = (@session.windows - [@window]).first
41
+ value = @session.within_window window do
42
+ 43252003274489856000
43
+ end
44
+ expect(value).to eq(43252003274489856000)
45
+ end
46
+
47
+ it 'should switch back if exception was raised inside block' do
48
+ window = (@session.windows - [@window]).first
49
+ expect do
50
+ @session.within_window(window) do
51
+ @session.within 'html' do
52
+ raise 'some error'
53
+ end
54
+ end
55
+ end.to raise_error(StandardError, 'some error')
56
+ expect(@session.current_window).to eq(@window)
57
+ expect(@session).to have_css('#doesNotOpenWindows')
58
+ expect(@session.send(:scopes)).to eq([nil])
59
+ end
60
+
61
+ it 'should leave correct scopes after execution in case of error', requires: %i[windows frames] do
62
+ window = (@session.windows - [@window]).first
63
+ expect do
64
+ @session.within_frame 'frameOne' do
65
+ @session.within_window(window) {}
66
+ end
67
+ end.to raise_error(Capybara::ScopeError)
68
+ expect(@session.current_window).to eq(@window)
69
+ expect(@session).to have_css('#doesNotOpenWindows')
70
+ expect(@session.send(:scopes)).to eq([nil])
71
+ end
72
+
73
+ it 'should raise error if closed window was passed' do
74
+ other_window = (@session.windows - [@window]).first
75
+ @session.within_window other_window do
76
+ other_window.close
77
+ end
78
+ expect do
79
+ @session.within_window(other_window) do
80
+ raise 'should not be invoked'
81
+ end
82
+ end.to raise_error(@session.driver.no_such_window_error)
83
+ expect(@session.current_window).to eq(@window)
84
+ expect(@session).to have_css('#doesNotOpenWindows')
85
+ expect(@session.send(:scopes)).to eq([nil])
86
+ end
87
+ end
88
+
89
+ context 'with lambda' do
90
+ it 'should find the div in another window' do
91
+ @session.within_window(-> { @session.title == 'Title of the first popup' }) do
92
+ expect(@session).to have_css('#divInPopupOne')
93
+ end
94
+ end
95
+
96
+ it 'should find divs in both windows' do
97
+ @session.within_window(-> { @session.title == 'Title of popup two' }) do
98
+ expect(@session).to have_css('#divInPopupTwo')
99
+ end
100
+ @session.within_window(-> { @session.title == 'Title of the first popup' }) do
101
+ expect(@session).to have_css('#divInPopupOne')
102
+ end
103
+ expect(@session.title).to eq('With Windows')
104
+ end
105
+
106
+ it 'should be able to nest within_window' do
107
+ @session.within_window(-> { @session.title == 'Title of popup two' }) do
108
+ expect(@session).to have_css('#divInPopupTwo')
109
+ @session.within_window(-> { @session.title == 'Title of the first popup' }) do
110
+ expect(@session).to have_css('#divInPopupOne')
111
+ end
112
+ expect(@session).to have_css('#divInPopupTwo')
113
+ expect(@session).not_to have_css('divInPopupOne')
114
+ end
115
+ expect(@session).not_to have_css('#divInPopupTwo')
116
+ expect(@session).not_to have_css('divInPopupOne')
117
+ expect(@session.title).to eq('With Windows')
118
+ end
119
+
120
+ it 'should work inside a normal scope' do
121
+ expect(@session).to have_css('#openWindow')
122
+ @session.within(:css, '#scope') do
123
+ @session.within_window(-> { @session.title == 'Title of the first popup' }) do
124
+ expect(@session).to have_css('#divInPopupOne')
125
+ end
126
+ expect(@session).to have_content('My scoped content')
127
+ expect(@session).not_to have_css('#openWindow')
128
+ end
129
+ end
130
+
131
+ it "should raise error if window wasn't found" do
132
+ expect do
133
+ @session.within_window(-> { @session.title == 'Invalid title' }) do
134
+ expect(@session).to have_css('#divInPopupOne')
135
+ end
136
+ end.to raise_error(Capybara::WindowError, 'Could not find a window matching block/lambda')
137
+ expect(@session.current_window).to eq(@window)
138
+ expect(@session).to have_css('#doesNotOpenWindows')
139
+ expect(@session.send(:scopes)).to eq([nil])
140
+ end
141
+
142
+ it 'returns value from the block' do
143
+ value = @session.within_window(-> { @session.title == 'Title of popup two' }) { 42 }
144
+ expect(value).to eq(42)
145
+ end
146
+
147
+ it 'should switch back if exception was raised inside block' do
148
+ expect do
149
+ @session.within_window(-> { @session.title == 'Title of popup two' }) do
150
+ raise 'some error'
151
+ end
152
+ end.to raise_error(StandardError, 'some error')
153
+ expect(@session.current_window).to eq(@window)
154
+ expect(@session.send(:scopes)).to eq([nil])
155
+ end
156
+ end
157
+ end