capybara 3.32.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (313) hide show
  1. checksums.yaml +7 -0
  2. data/.yardopts +1 -0
  3. data/History.md +1813 -0
  4. data/License.txt +22 -0
  5. data/README.md +1099 -0
  6. data/lib/capybara.rb +511 -0
  7. data/lib/capybara/config.rb +94 -0
  8. data/lib/capybara/cucumber.rb +27 -0
  9. data/lib/capybara/driver/base.rb +170 -0
  10. data/lib/capybara/driver/node.rb +139 -0
  11. data/lib/capybara/dsl.rb +65 -0
  12. data/lib/capybara/helpers.rb +108 -0
  13. data/lib/capybara/minitest.rb +386 -0
  14. data/lib/capybara/minitest/spec.rb +264 -0
  15. data/lib/capybara/node/actions.rb +420 -0
  16. data/lib/capybara/node/base.rb +143 -0
  17. data/lib/capybara/node/document.rb +48 -0
  18. data/lib/capybara/node/document_matchers.rb +67 -0
  19. data/lib/capybara/node/element.rb +606 -0
  20. data/lib/capybara/node/finders.rb +325 -0
  21. data/lib/capybara/node/matchers.rb +883 -0
  22. data/lib/capybara/node/simple.rb +208 -0
  23. data/lib/capybara/queries/ancestor_query.rb +27 -0
  24. data/lib/capybara/queries/base_query.rb +106 -0
  25. data/lib/capybara/queries/current_path_query.rb +51 -0
  26. data/lib/capybara/queries/match_query.rb +26 -0
  27. data/lib/capybara/queries/selector_query.rb +710 -0
  28. data/lib/capybara/queries/sibling_query.rb +26 -0
  29. data/lib/capybara/queries/style_query.rb +45 -0
  30. data/lib/capybara/queries/text_query.rb +110 -0
  31. data/lib/capybara/queries/title_query.rb +39 -0
  32. data/lib/capybara/rack_test/browser.rb +140 -0
  33. data/lib/capybara/rack_test/css_handlers.rb +13 -0
  34. data/lib/capybara/rack_test/driver.rb +109 -0
  35. data/lib/capybara/rack_test/errors.rb +6 -0
  36. data/lib/capybara/rack_test/form.rb +127 -0
  37. data/lib/capybara/rack_test/node.rb +325 -0
  38. data/lib/capybara/rails.rb +16 -0
  39. data/lib/capybara/registrations/drivers.rb +36 -0
  40. data/lib/capybara/registrations/patches/puma_ssl.rb +27 -0
  41. data/lib/capybara/registrations/servers.rb +44 -0
  42. data/lib/capybara/result.rb +190 -0
  43. data/lib/capybara/rspec.rb +29 -0
  44. data/lib/capybara/rspec/features.rb +23 -0
  45. data/lib/capybara/rspec/matcher_proxies.rb +82 -0
  46. data/lib/capybara/rspec/matchers.rb +201 -0
  47. data/lib/capybara/rspec/matchers/base.rb +111 -0
  48. data/lib/capybara/rspec/matchers/become_closed.rb +33 -0
  49. data/lib/capybara/rspec/matchers/compound.rb +88 -0
  50. data/lib/capybara/rspec/matchers/count_sugar.rb +37 -0
  51. data/lib/capybara/rspec/matchers/have_ancestor.rb +28 -0
  52. data/lib/capybara/rspec/matchers/have_current_path.rb +29 -0
  53. data/lib/capybara/rspec/matchers/have_selector.rb +77 -0
  54. data/lib/capybara/rspec/matchers/have_sibling.rb +27 -0
  55. data/lib/capybara/rspec/matchers/have_text.rb +33 -0
  56. data/lib/capybara/rspec/matchers/have_title.rb +29 -0
  57. data/lib/capybara/rspec/matchers/match_selector.rb +27 -0
  58. data/lib/capybara/rspec/matchers/match_style.rb +38 -0
  59. data/lib/capybara/rspec/matchers/spatial_sugar.rb +39 -0
  60. data/lib/capybara/selector.rb +233 -0
  61. data/lib/capybara/selector/builders/css_builder.rb +84 -0
  62. data/lib/capybara/selector/builders/xpath_builder.rb +69 -0
  63. data/lib/capybara/selector/css.rb +102 -0
  64. data/lib/capybara/selector/definition.rb +276 -0
  65. data/lib/capybara/selector/definition/button.rb +51 -0
  66. data/lib/capybara/selector/definition/checkbox.rb +26 -0
  67. data/lib/capybara/selector/definition/css.rb +10 -0
  68. data/lib/capybara/selector/definition/datalist_input.rb +35 -0
  69. data/lib/capybara/selector/definition/datalist_option.rb +25 -0
  70. data/lib/capybara/selector/definition/element.rb +27 -0
  71. data/lib/capybara/selector/definition/field.rb +40 -0
  72. data/lib/capybara/selector/definition/fieldset.rb +14 -0
  73. data/lib/capybara/selector/definition/file_field.rb +13 -0
  74. data/lib/capybara/selector/definition/fillable_field.rb +33 -0
  75. data/lib/capybara/selector/definition/frame.rb +17 -0
  76. data/lib/capybara/selector/definition/id.rb +6 -0
  77. data/lib/capybara/selector/definition/label.rb +62 -0
  78. data/lib/capybara/selector/definition/link.rb +46 -0
  79. data/lib/capybara/selector/definition/link_or_button.rb +16 -0
  80. data/lib/capybara/selector/definition/option.rb +27 -0
  81. data/lib/capybara/selector/definition/radio_button.rb +27 -0
  82. data/lib/capybara/selector/definition/select.rb +81 -0
  83. data/lib/capybara/selector/definition/table.rb +109 -0
  84. data/lib/capybara/selector/definition/table_row.rb +21 -0
  85. data/lib/capybara/selector/definition/xpath.rb +5 -0
  86. data/lib/capybara/selector/filter.rb +5 -0
  87. data/lib/capybara/selector/filter_set.rb +124 -0
  88. data/lib/capybara/selector/filters/base.rb +77 -0
  89. data/lib/capybara/selector/filters/expression_filter.rb +22 -0
  90. data/lib/capybara/selector/filters/locator_filter.rb +29 -0
  91. data/lib/capybara/selector/filters/node_filter.rb +31 -0
  92. data/lib/capybara/selector/regexp_disassembler.rb +214 -0
  93. data/lib/capybara/selector/selector.rb +147 -0
  94. data/lib/capybara/selector/xpath_extensions.rb +17 -0
  95. data/lib/capybara/selenium/atoms/getAttribute.min.js +1 -0
  96. data/lib/capybara/selenium/atoms/isDisplayed.min.js +1 -0
  97. data/lib/capybara/selenium/atoms/src/getAttribute.js +161 -0
  98. data/lib/capybara/selenium/atoms/src/isDisplayed.js +454 -0
  99. data/lib/capybara/selenium/driver.rb +496 -0
  100. data/lib/capybara/selenium/driver_specializations/chrome_driver.rb +119 -0
  101. data/lib/capybara/selenium/driver_specializations/edge_driver.rb +126 -0
  102. data/lib/capybara/selenium/driver_specializations/firefox_driver.rb +89 -0
  103. data/lib/capybara/selenium/driver_specializations/internet_explorer_driver.rb +26 -0
  104. data/lib/capybara/selenium/driver_specializations/safari_driver.rb +24 -0
  105. data/lib/capybara/selenium/extensions/file_input_click_emulation.rb +34 -0
  106. data/lib/capybara/selenium/extensions/find.rb +110 -0
  107. data/lib/capybara/selenium/extensions/html5_drag.rb +228 -0
  108. data/lib/capybara/selenium/extensions/modifier_keys_stack.rb +28 -0
  109. data/lib/capybara/selenium/extensions/scroll.rb +78 -0
  110. data/lib/capybara/selenium/logger_suppressor.rb +34 -0
  111. data/lib/capybara/selenium/node.rb +610 -0
  112. data/lib/capybara/selenium/nodes/chrome_node.rb +119 -0
  113. data/lib/capybara/selenium/nodes/edge_node.rb +104 -0
  114. data/lib/capybara/selenium/nodes/firefox_node.rb +131 -0
  115. data/lib/capybara/selenium/nodes/ie_node.rb +22 -0
  116. data/lib/capybara/selenium/nodes/safari_node.rb +118 -0
  117. data/lib/capybara/selenium/patches/action_pauser.rb +26 -0
  118. data/lib/capybara/selenium/patches/atoms.rb +18 -0
  119. data/lib/capybara/selenium/patches/is_displayed.rb +16 -0
  120. data/lib/capybara/selenium/patches/logs.rb +47 -0
  121. data/lib/capybara/selenium/patches/pause_duration_fix.rb +9 -0
  122. data/lib/capybara/selenium/patches/persistent_client.rb +20 -0
  123. data/lib/capybara/server.rb +126 -0
  124. data/lib/capybara/server/animation_disabler.rb +58 -0
  125. data/lib/capybara/server/checker.rb +44 -0
  126. data/lib/capybara/server/middleware.rb +69 -0
  127. data/lib/capybara/session.rb +942 -0
  128. data/lib/capybara/session/config.rb +124 -0
  129. data/lib/capybara/session/matchers.rb +87 -0
  130. data/lib/capybara/spec/fixtures/another_test_file.txt +1 -0
  131. data/lib/capybara/spec/fixtures/capybara.jpg +3 -0
  132. data/lib/capybara/spec/fixtures/no_extension +1 -0
  133. data/lib/capybara/spec/fixtures/test_file.txt +1 -0
  134. data/lib/capybara/spec/public/jquery-ui.js +13 -0
  135. data/lib/capybara/spec/public/jquery.js +5 -0
  136. data/lib/capybara/spec/public/offset.js +6 -0
  137. data/lib/capybara/spec/public/test.js +268 -0
  138. data/lib/capybara/spec/session/accept_alert_spec.rb +81 -0
  139. data/lib/capybara/spec/session/accept_confirm_spec.rb +32 -0
  140. data/lib/capybara/spec/session/accept_prompt_spec.rb +78 -0
  141. data/lib/capybara/spec/session/all_spec.rb +278 -0
  142. data/lib/capybara/spec/session/ancestor_spec.rb +88 -0
  143. data/lib/capybara/spec/session/assert_all_of_selectors_spec.rb +140 -0
  144. data/lib/capybara/spec/session/assert_current_path_spec.rb +75 -0
  145. data/lib/capybara/spec/session/assert_selector_spec.rb +143 -0
  146. data/lib/capybara/spec/session/assert_style_spec.rb +26 -0
  147. data/lib/capybara/spec/session/assert_text_spec.rb +258 -0
  148. data/lib/capybara/spec/session/assert_title_spec.rb +93 -0
  149. data/lib/capybara/spec/session/attach_file_spec.rb +216 -0
  150. data/lib/capybara/spec/session/body_spec.rb +23 -0
  151. data/lib/capybara/spec/session/check_spec.rb +235 -0
  152. data/lib/capybara/spec/session/choose_spec.rb +121 -0
  153. data/lib/capybara/spec/session/click_button_spec.rb +506 -0
  154. data/lib/capybara/spec/session/click_link_or_button_spec.rb +129 -0
  155. data/lib/capybara/spec/session/click_link_spec.rb +229 -0
  156. data/lib/capybara/spec/session/current_scope_spec.rb +31 -0
  157. data/lib/capybara/spec/session/current_url_spec.rb +115 -0
  158. data/lib/capybara/spec/session/dismiss_confirm_spec.rb +36 -0
  159. data/lib/capybara/spec/session/dismiss_prompt_spec.rb +21 -0
  160. data/lib/capybara/spec/session/element/assert_match_selector_spec.rb +38 -0
  161. data/lib/capybara/spec/session/element/match_css_spec.rb +31 -0
  162. data/lib/capybara/spec/session/element/match_xpath_spec.rb +25 -0
  163. data/lib/capybara/spec/session/element/matches_selector_spec.rb +120 -0
  164. data/lib/capybara/spec/session/evaluate_async_script_spec.rb +23 -0
  165. data/lib/capybara/spec/session/evaluate_script_spec.rb +49 -0
  166. data/lib/capybara/spec/session/execute_script_spec.rb +28 -0
  167. data/lib/capybara/spec/session/fill_in_spec.rb +286 -0
  168. data/lib/capybara/spec/session/find_button_spec.rb +74 -0
  169. data/lib/capybara/spec/session/find_by_id_spec.rb +33 -0
  170. data/lib/capybara/spec/session/find_field_spec.rb +113 -0
  171. data/lib/capybara/spec/session/find_link_spec.rb +70 -0
  172. data/lib/capybara/spec/session/find_spec.rb +531 -0
  173. data/lib/capybara/spec/session/first_spec.rb +156 -0
  174. data/lib/capybara/spec/session/frame/frame_title_spec.rb +23 -0
  175. data/lib/capybara/spec/session/frame/frame_url_spec.rb +23 -0
  176. data/lib/capybara/spec/session/frame/switch_to_frame_spec.rb +116 -0
  177. data/lib/capybara/spec/session/frame/within_frame_spec.rb +112 -0
  178. data/lib/capybara/spec/session/go_back_spec.rb +12 -0
  179. data/lib/capybara/spec/session/go_forward_spec.rb +14 -0
  180. data/lib/capybara/spec/session/has_all_selectors_spec.rb +69 -0
  181. data/lib/capybara/spec/session/has_ancestor_spec.rb +46 -0
  182. data/lib/capybara/spec/session/has_any_selectors_spec.rb +25 -0
  183. data/lib/capybara/spec/session/has_button_spec.rb +69 -0
  184. data/lib/capybara/spec/session/has_css_spec.rb +374 -0
  185. data/lib/capybara/spec/session/has_current_path_spec.rb +138 -0
  186. data/lib/capybara/spec/session/has_field_spec.rb +349 -0
  187. data/lib/capybara/spec/session/has_link_spec.rb +39 -0
  188. data/lib/capybara/spec/session/has_none_selectors_spec.rb +78 -0
  189. data/lib/capybara/spec/session/has_select_spec.rb +310 -0
  190. data/lib/capybara/spec/session/has_selector_spec.rb +202 -0
  191. data/lib/capybara/spec/session/has_sibling_spec.rb +50 -0
  192. data/lib/capybara/spec/session/has_table_spec.rb +198 -0
  193. data/lib/capybara/spec/session/has_text_spec.rb +394 -0
  194. data/lib/capybara/spec/session/has_title_spec.rb +71 -0
  195. data/lib/capybara/spec/session/has_xpath_spec.rb +149 -0
  196. data/lib/capybara/spec/session/headers_spec.rb +8 -0
  197. data/lib/capybara/spec/session/html_spec.rb +47 -0
  198. data/lib/capybara/spec/session/matches_style_spec.rb +35 -0
  199. data/lib/capybara/spec/session/node_spec.rb +1292 -0
  200. data/lib/capybara/spec/session/node_wrapper_spec.rb +39 -0
  201. data/lib/capybara/spec/session/refresh_spec.rb +33 -0
  202. data/lib/capybara/spec/session/reset_session_spec.rb +148 -0
  203. data/lib/capybara/spec/session/response_code_spec.rb +8 -0
  204. data/lib/capybara/spec/session/save_and_open_page_spec.rb +21 -0
  205. data/lib/capybara/spec/session/save_and_open_screenshot_spec.rb +43 -0
  206. data/lib/capybara/spec/session/save_page_spec.rb +110 -0
  207. data/lib/capybara/spec/session/save_screenshot_spec.rb +55 -0
  208. data/lib/capybara/spec/session/screenshot_spec.rb +18 -0
  209. data/lib/capybara/spec/session/scroll_spec.rb +117 -0
  210. data/lib/capybara/spec/session/select_spec.rb +229 -0
  211. data/lib/capybara/spec/session/selectors_spec.rb +98 -0
  212. data/lib/capybara/spec/session/sibling_spec.rb +52 -0
  213. data/lib/capybara/spec/session/source_spec.rb +0 -0
  214. data/lib/capybara/spec/session/text_spec.rb +74 -0
  215. data/lib/capybara/spec/session/title_spec.rb +29 -0
  216. data/lib/capybara/spec/session/uncheck_spec.rb +100 -0
  217. data/lib/capybara/spec/session/unselect_spec.rb +116 -0
  218. data/lib/capybara/spec/session/visit_spec.rb +204 -0
  219. data/lib/capybara/spec/session/window/become_closed_spec.rb +89 -0
  220. data/lib/capybara/spec/session/window/current_window_spec.rb +28 -0
  221. data/lib/capybara/spec/session/window/open_new_window_spec.rb +31 -0
  222. data/lib/capybara/spec/session/window/switch_to_window_spec.rb +132 -0
  223. data/lib/capybara/spec/session/window/window_opened_by_spec.rb +99 -0
  224. data/lib/capybara/spec/session/window/window_spec.rb +203 -0
  225. data/lib/capybara/spec/session/window/windows_spec.rb +34 -0
  226. data/lib/capybara/spec/session/window/within_window_spec.rb +157 -0
  227. data/lib/capybara/spec/session/within_spec.rb +199 -0
  228. data/lib/capybara/spec/spec_helper.rb +134 -0
  229. data/lib/capybara/spec/test_app.rb +226 -0
  230. data/lib/capybara/spec/views/animated.erb +49 -0
  231. data/lib/capybara/spec/views/buttons.erb +5 -0
  232. data/lib/capybara/spec/views/fieldsets.erb +30 -0
  233. data/lib/capybara/spec/views/form.erb +685 -0
  234. data/lib/capybara/spec/views/frame_child.erb +18 -0
  235. data/lib/capybara/spec/views/frame_one.erb +10 -0
  236. data/lib/capybara/spec/views/frame_parent.erb +9 -0
  237. data/lib/capybara/spec/views/frame_two.erb +9 -0
  238. data/lib/capybara/spec/views/header_links.erb +8 -0
  239. data/lib/capybara/spec/views/host_links.erb +13 -0
  240. data/lib/capybara/spec/views/initial_alert.erb +10 -0
  241. data/lib/capybara/spec/views/obscured.erb +47 -0
  242. data/lib/capybara/spec/views/offset.erb +32 -0
  243. data/lib/capybara/spec/views/path.erb +13 -0
  244. data/lib/capybara/spec/views/popup_one.erb +9 -0
  245. data/lib/capybara/spec/views/popup_two.erb +9 -0
  246. data/lib/capybara/spec/views/postback.erb +14 -0
  247. data/lib/capybara/spec/views/react.erb +45 -0
  248. data/lib/capybara/spec/views/scroll.erb +20 -0
  249. data/lib/capybara/spec/views/spatial.erb +31 -0
  250. data/lib/capybara/spec/views/tables.erb +130 -0
  251. data/lib/capybara/spec/views/with_animation.erb +74 -0
  252. data/lib/capybara/spec/views/with_base_tag.erb +11 -0
  253. data/lib/capybara/spec/views/with_count.erb +8 -0
  254. data/lib/capybara/spec/views/with_dragula.erb +22 -0
  255. data/lib/capybara/spec/views/with_fixed_header_footer.erb +17 -0
  256. data/lib/capybara/spec/views/with_hover.erb +24 -0
  257. data/lib/capybara/spec/views/with_hover1.erb +10 -0
  258. data/lib/capybara/spec/views/with_html.erb +208 -0
  259. data/lib/capybara/spec/views/with_html5_svg.erb +20 -0
  260. data/lib/capybara/spec/views/with_html_entities.erb +2 -0
  261. data/lib/capybara/spec/views/with_js.erb +160 -0
  262. data/lib/capybara/spec/views/with_jstree.erb +26 -0
  263. data/lib/capybara/spec/views/with_namespace.erb +20 -0
  264. data/lib/capybara/spec/views/with_scope.erb +42 -0
  265. data/lib/capybara/spec/views/with_scope_other.erb +6 -0
  266. data/lib/capybara/spec/views/with_simple_html.erb +2 -0
  267. data/lib/capybara/spec/views/with_slow_unload.erb +17 -0
  268. data/lib/capybara/spec/views/with_sortable_js.erb +21 -0
  269. data/lib/capybara/spec/views/with_title.erb +5 -0
  270. data/lib/capybara/spec/views/with_unload_alert.erb +14 -0
  271. data/lib/capybara/spec/views/with_windows.erb +54 -0
  272. data/lib/capybara/spec/views/within_frames.erb +15 -0
  273. data/lib/capybara/version.rb +5 -0
  274. data/lib/capybara/window.rb +146 -0
  275. data/spec/basic_node_spec.rb +154 -0
  276. data/spec/capybara_spec.rb +112 -0
  277. data/spec/css_builder_spec.rb +101 -0
  278. data/spec/css_splitter_spec.rb +38 -0
  279. data/spec/dsl_spec.rb +276 -0
  280. data/spec/filter_set_spec.rb +46 -0
  281. data/spec/fixtures/capybara.csv +1 -0
  282. data/spec/fixtures/certificate.pem +25 -0
  283. data/spec/fixtures/key.pem +27 -0
  284. data/spec/fixtures/selenium_driver_rspec_failure.rb +13 -0
  285. data/spec/fixtures/selenium_driver_rspec_success.rb +13 -0
  286. data/spec/minitest_spec.rb +163 -0
  287. data/spec/minitest_spec_spec.rb +162 -0
  288. data/spec/per_session_config_spec.rb +68 -0
  289. data/spec/rack_test_spec.rb +268 -0
  290. data/spec/regexp_dissassembler_spec.rb +250 -0
  291. data/spec/result_spec.rb +196 -0
  292. data/spec/rspec/features_spec.rb +99 -0
  293. data/spec/rspec/scenarios_spec.rb +19 -0
  294. data/spec/rspec/shared_spec_matchers.rb +947 -0
  295. data/spec/rspec/views_spec.rb +14 -0
  296. data/spec/rspec_matchers_spec.rb +62 -0
  297. data/spec/rspec_spec.rb +145 -0
  298. data/spec/sauce_spec_chrome.rb +43 -0
  299. data/spec/selector_spec.rb +513 -0
  300. data/spec/selenium_spec_chrome.rb +188 -0
  301. data/spec/selenium_spec_chrome_remote.rb +96 -0
  302. data/spec/selenium_spec_edge.rb +47 -0
  303. data/spec/selenium_spec_firefox.rb +208 -0
  304. data/spec/selenium_spec_firefox_remote.rb +80 -0
  305. data/spec/selenium_spec_ie.rb +150 -0
  306. data/spec/selenium_spec_safari.rb +148 -0
  307. data/spec/server_spec.rb +292 -0
  308. data/spec/session_spec.rb +91 -0
  309. data/spec/shared_selenium_node.rb +83 -0
  310. data/spec/shared_selenium_session.rb +476 -0
  311. data/spec/spec_helper.rb +100 -0
  312. data/spec/xpath_builder_spec.rb +93 -0
  313. metadata +753 -0
@@ -0,0 +1,74 @@
1
+
2
+ <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
3
+ <head>
4
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8"/>
5
+ <title>with_animation</title>
6
+ <script src="/jquery.js" type="text/javascript" charset="utf-8"></script>
7
+ <script src="/jquery-ui.js" type="text/javascript" charset="utf-8"></script>
8
+ <script src="/test.js" type="text/javascript" charset="utf-8"></script>
9
+ <script type="text/javascript">
10
+ $(document).on('transitionend', function(){
11
+ $(document.body).append('<div>Transition Ended</div>')
12
+ });
13
+ $(document).on('animationend', function(){
14
+ $(document.body).append('<div>Animation Ended</div>')
15
+ });
16
+ $(document).on('contextmenu', function(e){
17
+ e.preventDefault();
18
+ });
19
+ </script>
20
+ <style>
21
+ .transition.away {
22
+ width: 0%;
23
+ }
24
+
25
+ a {
26
+ display: inline-block;
27
+ width: 100%;
28
+ overflow: hidden;
29
+ }
30
+
31
+ a::after {
32
+ content: "";
33
+ width: 0px;
34
+ height: 0px;
35
+ background-color: blue;
36
+ }
37
+
38
+ a:not(.away) {
39
+ height: 20px;
40
+ }
41
+
42
+ a.transition {
43
+ transition: all 3s ease-in-out;
44
+ }
45
+
46
+ @keyframes animation {
47
+ 0% {height: 20px; width: 100%;}
48
+ 100% {height: 0px; width: 0%;}
49
+ }
50
+
51
+ a.animation.away {
52
+ animation-name: animation;
53
+ animation-duration: 3s;
54
+ animation-fill-mode: forwards;
55
+ }
56
+
57
+ @keyframes pseudo_grow {
58
+ 100% { height: 100px, width: 100px };
59
+ }
60
+
61
+ a.animation.pseudo::after {
62
+ animation: pseudo_grow 3s forwards;
63
+ }
64
+ </style>
65
+ </head>
66
+
67
+ <body id="with_animation">
68
+ <a href='#' class='transition' onclick='this.classList.add("away")'>transition me away</a>
69
+ <a href='#' class='animation' onclick='this.classList.add("away")' oncontextmenu='this.classList.add("pseudo")'>
70
+ animate me away
71
+ </a>
72
+ </body>
73
+ </html>
74
+
@@ -0,0 +1,11 @@
1
+
2
+ <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
3
+ <head>
4
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8"/>
5
+ <base href="http://example2.com" />
6
+ <title>with_external_source</title>
7
+ </head>
8
+ <body id="with_js">
9
+ <h1>FooBar</h1>
10
+ </body>
11
+ </html
@@ -0,0 +1,8 @@
1
+
2
+ <h1>This page is used for testing number options of has_text?</h1>
3
+
4
+ <p>count1</p>
5
+ <div>
6
+ <p>2 count</p>
7
+ <p>Count</p>
8
+ </div>
@@ -0,0 +1,22 @@
1
+ <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
2
+ <head>
3
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8"/>
4
+ <title>with_dragula</title>
5
+
6
+ </head>
7
+
8
+ <body id="with_dragula">
9
+ <div id="sortable">
10
+ <div class="item1">Item 1</div>
11
+ <div class="item2">Item 2</div>
12
+ <div class="item3">Item 3</div>
13
+ <div class="item4">Item 4</div>
14
+ <div class="item5">Item 5</div>
15
+ </div>
16
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/dragula/3.7.2/dragula.js" type="text/javascript"></script>
17
+ <script>
18
+ dragula([document.getElementById("sortable")]);
19
+ </script>
20
+ </body>
21
+ </html>
22
+
@@ -0,0 +1,17 @@
1
+ <html>
2
+ <head>
3
+ <style>
4
+ header { height: 45px; position: fixed; top: 0; background-color: red; width: 100%;}
5
+ footer { height: 45px; position: fixed; bottom: 0; background-color: red; width: 100%;}
6
+ #main { margin: 45px;}
7
+ #tall { display: block; height: 2000px;}
8
+ </style>
9
+ </head>
10
+ <body>
11
+ <header>My headers</header>
12
+ <div id="main">
13
+ <div id="tall">A tall block</div>
14
+ <a href="/">Go to root</a>
15
+ </div>
16
+ <footer>My footer</footer>
17
+ </body>
@@ -0,0 +1,24 @@
1
+
2
+ <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
3
+ <head>
4
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8"/>
5
+ <title>with_hover</title>
6
+ </head>
7
+
8
+ <body id="with_hover">
9
+ <style type="text/css">
10
+ .hidden_until_hover {display: none;}
11
+ .wrapper:hover .hidden_until_hover { display: block }
12
+ </style>
13
+ <a href='with_hover1'>Other hover page</a>
14
+ <div class="wrapper">
15
+ Some text here so the wrapper has size
16
+ <div class="hidden_until_hover">Here I am</div>
17
+ </div>
18
+ <div style="display: block; height: 1000px; width: 100%"></div>
19
+ <div class="wrapper scroll_needed" >
20
+ Some text here so the wrapper has size
21
+ <div class="hidden_until_hover">Here I am</div>
22
+ </div>
23
+ </body>
24
+ </html>
@@ -0,0 +1,10 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8"/>
5
+ </head>
6
+
7
+ <body>
8
+ <a href="with_hover">Go back</a>
9
+ </body>
10
+ </html>
@@ -0,0 +1,208 @@
1
+
2
+ <style>
3
+ p { display: block; }
4
+ </style>
5
+
6
+ <div id="referrer"><%= referrer %></div>
7
+ <h1>This is a test</h1>
8
+
9
+ <h2 class="no text"></h2>
10
+ <h2 class="no text"></h2>
11
+ <h2 class="head" id="h2one">Header Class Test One</h2>
12
+ <h2 class="head" id="h2two">Header Class Test Two</h2>
13
+ <h2 class="head" id="h2_">Header Class Test Three</h2>
14
+ <h2 class="head">Header Class Test Four</h2>
15
+ <h2 class="head">Header Class <span style="display: none">Random</span>Test Five</h2>
16
+
17
+ <span class="number">42</span>
18
+ <span>Other span</span>
19
+
20
+ <p class="para" id="first" data-random="abc\def" style="line-height: 25px;">
21
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
22
+ tempor incididunt ut <a href="/with_simple_html" title="awesome title" class="simple">labore</a>
23
+ et dolore magna aliqua. Ut enim ad minim veniam,
24
+ quis nostrud exercitation <a href="/foo" id="foo" data-test-id="test-foo">ullamco</a> laboris nisi
25
+ ut aliquip ex ea commodo consequat.
26
+ <a href="/with_simple_html" aria-label="Go to simple" data-test-id="test-simple"><img id="first_image" width="20" height="20" alt="awesome image" src="data:image/gif;base64,R0lGODlhAQABAIAAAAUEBAAAACwAAAAAAQABAAACAkQBADs="/></a>
27
+ </p>
28
+
29
+ <p class="para" id="second" style="display: inline;">
30
+ Duis aute irure dolor in reprehenderit in voluptate velit esse cillum
31
+ dolore eu fugiat <a href="/redirect" id="red">Redirect</a> pariatur. Excepteur sint occaecat cupidatat non proident,
32
+ sunt in culpa qui officia
33
+ text with &nbsp;
34
+ whitespace
35
+ id est laborum.
36
+ </p>
37
+
38
+ <p>
39
+ <input type="text" id="test_field" spellcheck="TRUE" data-test-id="test_id" value="monkey"/>
40
+ <input type="text" readonly="readonly" spellcheck="FALSE" value="should not change" />
41
+ <textarea id="normal" data-other-test-id="test_id">
42
+ banana</textarea>
43
+ <textarea id="additional_newline">
44
+
45
+ banana</textarea>
46
+ <textarea readonly="readonly">textarea should not change</textarea>
47
+ <a href="/redirect_back">BackToMyself</a>
48
+ <a title="twas a fine link" href="/redirect">A link came first</a>
49
+ <a title="a fine link" href="/with_simple_html">A link</a>
50
+ <a title="a fine link with data method" data-method="delete" href="/delete">A link with data-method</a>
51
+ <a title="a fine link with capitalized data method" data-method="DELETE" href="/delete">A link with capitalized data-method</a>
52
+ <a>No Href</a>
53
+ <a href="">Blank Href</a>
54
+ <a href="#">Blank Anchor</a>
55
+ <a href="javascript:void(0)">Blank JS Anchor</a>
56
+ <a href="#anchor">Normal Anchor</a>
57
+ <a href="/with_simple_html#anchor">Anchor on different page</a>
58
+ <a href="/with_html#anchor">Anchor on same page</a>
59
+ <a href="with_html">Relative</a>
60
+ <a href="//<%= request.host_with_port %>/foo">Protocol</a>
61
+ <input type="text" checked="checked" id="checked_field">
62
+ <a href="/redirect"><img width="20" height="20" alt="very fine image" /></a>
63
+ <a href="/with_simple_html"><img width="20" height="20" alt="fine image" /></a>
64
+ <a href="/with_simple_html" disabled="disabled">Disabled link</a>
65
+
66
+ <a href="?query_string=true">Naked Query String</a>
67
+ <% if params[:query_string] %>
68
+ <em>Query String sent</em>
69
+ <% end %>
70
+ </p>
71
+
72
+ <div id="hidden" style="display: none;">
73
+ <div id="hidden_via_ancestor">Inside element with hidden ancestor</div>
74
+ <a href="/with_simple_html" title="hidden link" class="simple">hidden link</a>
75
+ </div>
76
+
77
+ <div id="hidden_attr" hidden="hidden">
78
+ <a id="hidden_attr_via_ancestor">hidden attribute ancestor link</a>
79
+ </div>
80
+
81
+
82
+ <div id="hidden-text">
83
+ Some of this text is <em style="display:none">hidden!</em>
84
+ </div>
85
+
86
+ <div id="some-hidden-text">
87
+ Some of this text is not hidden <em style="display:none">and some is hidden</em>
88
+ </div>
89
+
90
+ <div style="display: none;">
91
+ <a id="first_invisble" class="hidden">first hidden link</a>
92
+ </div>
93
+
94
+ <div style="display: none;">
95
+ <a id="invisible" class="visibility hidden">hidden link</a>
96
+ </div>
97
+
98
+ <div>
99
+ <a id="visible" class="visibility">visible link</a>
100
+ </div>
101
+
102
+ <div>
103
+ Number 42
104
+ </div>
105
+
106
+ <ul>
107
+ <li class="beatle guitarist" id="john">John</li>
108
+ <li class="beatle bassist drummer" id="paul">Paul</li>
109
+ <li class="beatle guitarist" id="george">George</li>
110
+ <li class="beatle drummer" id="ringo">Ringo</li>
111
+ </ul>
112
+
113
+ <div>
114
+ <div class="singular">singular</div>
115
+ <div class="multiple">multiple one</div>
116
+ <div class="multiple">multiple two</div>
117
+ <div class="almost_singular but_not_quite">almost singular but not quite</div>
118
+ <div class="almost_singular">almost singular</div>
119
+ </div>
120
+
121
+ <input type="text" disabled="disabled" name="disabled_text" value="This is disabled"/>
122
+ <input type="hidden" id="hidden_input" name="hidden_input" value="This is a hidden input"/>
123
+
124
+ <div>
125
+ <a id="link_placeholder">No href</a>
126
+ <a id="link_blank_href" href="">Blank href</a>
127
+ </div>
128
+
129
+ <div id="uppercase" style="text-transform: uppercase;">
130
+ text here
131
+ </div>
132
+
133
+ <div id="ancestor3">
134
+ Ancestor
135
+ <div id="ancestor2">
136
+ Ancestor
137
+ <div id="ancestor1">
138
+ Ancestor
139
+ <div id="child">Child</div>
140
+ </div>
141
+ <div id="ancestor1_sibiling">
142
+ ASibling
143
+ </div>
144
+ </div>
145
+ <button id="ancestor_button" type="submit" disabled>
146
+ <img id="button_img" width="20" height="20" alt="button img"/>
147
+ </button>
148
+ </div>
149
+
150
+ <div id="sibling_test">
151
+ <div id="sibling_wrapper" data-pre=true>
152
+ <div id="pre_sibling" data-pre=true>Pre Sibling</div>
153
+ <div id="mid_sibling">Mid Sibling</div>
154
+ <div id="post_sibling" data-post=true>Post Sibling</div>
155
+ </div>
156
+ <div id="other_sibling_wrapper" data-post=true>
157
+ <div data-pre=true>Pre Sibling</div>
158
+ <div data-post=true>Post Sibling</div>
159
+ </div>
160
+ </div>
161
+
162
+ <div id='1escape.me' class="2escape">needs escaping</div>
163
+
164
+ <div id="normalized">
165
+ Some text<div>More text</div>
166
+ <div> And more text</div>
167
+ Even more &nbsp;&nbsp; text
168
+
169
+ on multiple lines
170
+ </div>
171
+
172
+ <div id="non_visible_normalized" style="display: none">
173
+ Some text<div>More text</div>
174
+ <div> And more text</div>
175
+ Even more &nbsp;&nbsp; text
176
+
177
+ on multiple lines
178
+ </div>
179
+
180
+ <div id="ws">
181
+ &#x20;&#x1680;&#x2000;&#x2001;&#x2002; &#x2003;&#x2004;&nbsp;&#x2005; &#x2006;&#x2007;&#x2008;&#x2009;&#x200A;&#x202F;&#x205F;&#x3000;
182
+ </div>
183
+
184
+ <details id="closed_details">
185
+ <summary>
186
+ <h6>Something</h6>
187
+ </summary>
188
+ <ul>
189
+ <li>Random</li>
190
+ <li>Things</li>
191
+ </ul>
192
+ </details>
193
+
194
+ <details id="open_details" open>
195
+ <summary>
196
+ <h6>Summary</h6>
197
+ </summary>
198
+ <div>
199
+ Contents
200
+ </div>
201
+ </details>
202
+
203
+ <template id="template">
204
+ <input />
205
+ </template>
206
+
207
+ <a href="/download.csv" download>Download Me</a>
208
+ <a href="/download.csv" download="other.csv">Download Other</a>
@@ -0,0 +1,20 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>Namespace</title>
5
+ </head>
6
+ <body id="body">
7
+ <div>
8
+ <svg viewBox="0 0 100 100" preserveAspectRatio="xMidYMid slice"
9
+ style="width:100%; height:100%; position:absolute; top:0; left:0; z-index:-1;">
10
+ <linearGradient id="gradient">
11
+ <stop class="begin" offset="0%"/>
12
+ <stop class="end" offset="100%"/>
13
+ </linearGradient>
14
+ <rect x="0" y="0" width="100" height="100" style="fill:url(#gradient)" />
15
+ <rect x="150" y="150" width="25" height="25" style="fill:url(#gradient)" />
16
+ <circle cx="50" cy="50" r="30" style="fill:url(#gradient)" />
17
+ </svg>
18
+ <div>
19
+ </body>
20
+ </html>
@@ -0,0 +1,2 @@
1
+
2
+ Encoding with &mdash; html entities &raquo;
@@ -0,0 +1,160 @@
1
+
2
+ <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
3
+ <head>
4
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8"/>
5
+ <title>with_js</title>
6
+ <script src="/jquery.js" type="text/javascript" charset="utf-8"></script>
7
+ <script src="/jquery-ui.js" type="text/javascript" charset="utf-8"></script>
8
+ <script src="/test.js" type="text/javascript" charset="utf-8"></script>
9
+ </head>
10
+
11
+ <body id="with_js">
12
+ <h1>FooBar</h1>
13
+
14
+ <p id="change">This is text</p>
15
+ <a id="drag_link" href='#'>This link is non-HTML5 draggable</a>
16
+ <div id="drag">
17
+ <p>This is a draggable element.</p>
18
+ </div>
19
+ <div id="drop">
20
+ <p>It should be dropped here.</p>
21
+ </div>
22
+ <div id="drop_scroll">
23
+ <p>It should be dropped here.</p>
24
+ </div>
25
+ <div id="drop_html5_scroll" class="drop">
26
+ <p>It should be dropped here.</p>
27
+ </div>
28
+ <div id="drag_html5" draggable="true">
29
+ <p>This is an HTML5 draggable element.</p>
30
+ </div>
31
+ <a id="drag_link_html5" href="#"><p>This is an HTML5 draggable link</p></a>
32
+ <div id="drop_html5" class="drop">
33
+ <p>It should be dropped here.</p>
34
+ </div>
35
+
36
+ <p><a href="#" id="clickable">Click me</a></p>
37
+ <p><a href="#" id="slow-click">Slowly</a></p>
38
+
39
+ <p>
40
+ <select id="waiter">
41
+ <option>Foo</option>
42
+ <option>My Waiting Option</option>
43
+ </select>
44
+ </p>
45
+
46
+ <p>
47
+ <input type="text" name="with_focus_event" value="" id="with_focus_event"/>
48
+ </p>
49
+
50
+ <p>
51
+ <input type="text" name="with_change_event" value="default value" id="with_change_event"/>
52
+ </p>
53
+
54
+ <p>
55
+ <div contenteditable='true' id='existing_content_editable'>Editable content</div>
56
+ <div contenteditable='true' id='blank_content_editable' style='height: 1em;'></div>
57
+ <div contenteditable='true' id='existing_content_editable_child_parent' style='height: 1em;'>
58
+ Some content
59
+ <div id='existing_content_editable_child' style='height: 1em;'>Content</div>
60
+ </div>
61
+ </p>
62
+
63
+ <p>
64
+ <input type="checkbox" id="checkbox_with_event"/>
65
+ </p>
66
+
67
+ <p>
68
+ <input type="submit" id="fire_ajax_request" value="Fire Ajax Request"/>
69
+ </p>
70
+
71
+ <p>
72
+ <a id="reload-link" href="#">Reload!</a>
73
+ <em>this won't change</em>
74
+ <div id="reload-me"><em>waiting to be reloaded</em></div>
75
+ </p>
76
+
77
+ <p>
78
+ <a id="reload-list" href="#">Fetch new list!</a>
79
+ <ul id="the-list">
80
+ <li>Item 1</li>
81
+ <li>Item 2</li>
82
+ </ul>
83
+ </p>
84
+
85
+ <p>
86
+ <a href="#" id="change-title">Change title</a>
87
+ </p>
88
+
89
+ <p>
90
+ <a href="#" id="change-size">Change size</a>
91
+ </p>
92
+
93
+ <p id="click-test">Click me</p>
94
+
95
+ <p>
96
+ <a href="#" id="open-alert">Open alert</a>
97
+ <a href="/with_html" id="alert-page-change">Alert page change</a>
98
+ </p>
99
+
100
+ <p>
101
+ <a href="#" id="open-delayed-alert">Open delayed alert</a>
102
+ <a href="#" id="open-slow-alert">Open slow alert</a>
103
+ </p>
104
+
105
+ <p>
106
+ <a href="#" id="open-confirm">Open confirm</a>
107
+ </p>
108
+
109
+ <p>
110
+ <a href="#" id="open-twice">Open check twice</a>
111
+ </p>
112
+
113
+ <p>
114
+ <a href="#" id="open-prompt">Open prompt</a>
115
+ </p>
116
+
117
+ <p>
118
+ <a href="#" id="open-prompt-with-default">Open defaulted prompt</a>
119
+ </p>
120
+
121
+ <p>
122
+ <input id="disable-on-click"/>
123
+ </p>
124
+ <p>
125
+ <input id="set-storage"/>
126
+ </p>
127
+ <p>
128
+ <a href="#" id="delayed-page-change">Change page</a>
129
+ <a href="/with_html?options[]=things">Non-escaped query options</a>
130
+ <a href="/with_html?options%5B%5D=things">Escaped query options</a>
131
+ </p>
132
+
133
+ <p>
134
+ <input type="test" name="with-key-events" id="with-key-events">
135
+ <p id="key-events-output"></p>
136
+ </p>
137
+
138
+ <p>
139
+ <input type="file" id="hidden_file" style="opacity:0; display: none;">
140
+ <label for="hidden_file">Label for hidden file input</label>
141
+ </p>
142
+
143
+ <p>
144
+ <input type="file" id="multiple-file" multiple="multiple"/>
145
+ </p>
146
+
147
+ <div id="drag_scroll">
148
+ <p>This is a draggable element.</p>
149
+ </div>
150
+ <div id="drag_html5_scroll" draggable="true">
151
+ <p>This is an HTML5 draggable element.</p>
152
+ </div>
153
+
154
+ <script type="text/javascript">
155
+ // a javascript comment
156
+ var aVar = 123;
157
+ </script>
158
+ </body>
159
+ </html>
160
+