capybara 3.32.2

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 (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
+