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,100 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rspec/expectations'
4
+ require 'webdrivers' if ENV['CI'] || ENV['WEBDRIVERS']
5
+ require 'selenium_statistics'
6
+ if ENV['TRAVIS']
7
+ require 'coveralls'
8
+ Coveralls.wear! do
9
+ add_filter '/lib/capybara/driver/'
10
+ add_filter '/lib/capybara/registrations/'
11
+ end
12
+ end
13
+ require 'capybara/spec/spec_helper'
14
+
15
+ module Capybara
16
+ module SpecHelper
17
+ def firefox?(session)
18
+ browser_name(session) == :firefox &&
19
+ ((defined?(::Selenium::WebDriver::VERSION) && (::Selenium::WebDriver::VERSION.to_f >= 4)) ||
20
+ session.driver.browser.capabilities.is_a?(::Selenium::WebDriver::Remote::W3C::Capabilities))
21
+ end
22
+
23
+ def firefox_lt?(version, session)
24
+ firefox?(session) && (session.driver.browser.capabilities[:browser_version].to_f < version)
25
+ end
26
+
27
+ def firefox_gte?(version, session)
28
+ firefox?(session) && (session.driver.browser.capabilities[:browser_version].to_f >= version)
29
+ end
30
+
31
+ def chrome?(session)
32
+ browser_name(session) == :chrome
33
+ end
34
+
35
+ def chrome_version(session)
36
+ (session.driver.browser.capabilities[:browser_version] ||
37
+ session.driver.browser.capabilities[:version]).to_f
38
+ end
39
+
40
+ def chrome_lt?(version, session)
41
+ chrome?(session) && (chrome_version(session) < version)
42
+ end
43
+
44
+ def chrome_gte?(version, session)
45
+ chrome?(session) && (chrome_version(session) >= version)
46
+ end
47
+
48
+ def edge?(session)
49
+ browser_name(session).match?(/^edge/)
50
+ end
51
+
52
+ def legacy_edge?(session)
53
+ browser_name(session) == :edge
54
+ end
55
+
56
+ def edge_lt?(version, session)
57
+ edge?(session) && (chrome_version(session) < version)
58
+ end
59
+
60
+ def edge_gte?(version, session)
61
+ edge?(session) && (chrome_version(session) >= version)
62
+ end
63
+
64
+ def ie?(session)
65
+ %i[internet_explorer ie].include?(browser_name(session))
66
+ end
67
+
68
+ def safari?(session)
69
+ %i[safari Safari Safari_Technology_Preview].include?(browser_name(session))
70
+ end
71
+
72
+ def browser_name(session)
73
+ session.driver.browser.browser if session.respond_to?(:driver)
74
+ end
75
+
76
+ def remote?(session)
77
+ session.driver.browser.is_a? ::Selenium::WebDriver::Remote::Driver
78
+ end
79
+
80
+ def self.log_selenium_driver_version(mod)
81
+ mod = mod::Service if ::Selenium::WebDriver::Service.respond_to? :driver_path
82
+ path = mod.driver_path
83
+ path = path.call if path.respond_to? :call
84
+ $stdout.puts `#{path.gsub(' ', '\ ')} --version`
85
+ end
86
+ end
87
+ end
88
+
89
+ RSpec.configure do |config|
90
+ Capybara::SpecHelper.configure(config)
91
+ config.expect_with :rspec do |expectations|
92
+ expectations.syntax = :expect
93
+ end
94
+ config.mock_with :rspec do |mocks|
95
+ mocks.verify_partial_doubles = true
96
+ end
97
+ config.filter_run_including focus_: true unless ENV['CI']
98
+ config.run_all_when_everything_filtered = true
99
+ config.after(:suite) { SeleniumStatistics.print_results }
100
+ end
@@ -0,0 +1,93 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ # rubocop:disable RSpec/InstanceVariable
6
+ RSpec.describe Capybara::Selector::XPathBuilder do
7
+ let :builder do
8
+ ::Capybara::Selector::XPathBuilder.new(@xpath)
9
+ end
10
+
11
+ context 'add_attribute_conditions' do
12
+ it 'adds a single string condition to a single selector' do
13
+ @xpath = './/div'
14
+ selector = builder.add_attribute_conditions(random: 'abc')
15
+ expect(selector).to eq %((.//div)[(./@random = 'abc')])
16
+ end
17
+
18
+ it 'adds multiple string conditions to a single selector' do
19
+ @xpath = './/div'
20
+ selector = builder.add_attribute_conditions(random: 'abc', other: 'def')
21
+ expect(selector).to eq %(((.//div)[(./@random = 'abc')])[(./@other = 'def')])
22
+ end
23
+
24
+ it 'adds a single string condition to a multiple selector' do
25
+ @xpath = XPath.descendant(:div, :ul)
26
+ selector = builder.add_attribute_conditions(random: 'abc')
27
+ expect(selector.to_s).to eq @xpath[XPath.attr(:random) == 'abc'].to_s
28
+ end
29
+
30
+ it 'adds multiple string conditions to a multiple selector' do
31
+ @xpath = XPath.descendant(:div, :ul)
32
+ selector = builder.add_attribute_conditions(random: 'abc', other: 'def')
33
+ expect(selector.to_s).to eq %(.//*[self::div | self::ul][(./@random = 'abc')][(./@other = 'def')])
34
+ end
35
+
36
+ it 'adds simple regexp conditions to a single selector' do
37
+ @xpath = XPath.descendant(:div)
38
+ selector = builder.add_attribute_conditions(random: /abc/, other: /def/)
39
+ expect(selector.to_s).to eq %(.//div[./@random[contains(., 'abc')]][./@other[contains(., 'def')]])
40
+ end
41
+
42
+ it 'adds wildcard regexp conditions to a single selector' do
43
+ @xpath = './/div'
44
+ selector = builder.add_attribute_conditions(random: /abc.*def/, other: /def.*ghi/)
45
+ expect(selector).to eq %(((.//div)[./@random[(contains(., 'abc') and contains(., 'def'))]])[./@other[(contains(., 'def') and contains(., 'ghi'))]])
46
+ end
47
+
48
+ it 'adds alternated regexp conditions to a single selector' do
49
+ @xpath = XPath.descendant(:div)
50
+ selector = builder.add_attribute_conditions(random: /abc|def/, other: /def|ghi/)
51
+ expect(selector.to_s).to eq %(.//div[./@random[(contains(., 'abc') or contains(., 'def'))]][./@other[(contains(., 'def') or contains(., 'ghi'))]])
52
+ end
53
+
54
+ it 'adds alternated regexp conditions to a multiple selector' do
55
+ @xpath = XPath.descendant(:div, :ul)
56
+ selector = builder.add_attribute_conditions(other: /def.*ghi|jkl/)
57
+ expect(selector.to_s).to eq %(.//*[self::div | self::ul][./@other[((contains(., 'def') and contains(., 'ghi')) or contains(., 'jkl'))]])
58
+ end
59
+
60
+ it "returns original selector when regexp can't be substringed" do
61
+ @xpath = './/div'
62
+ selector = builder.add_attribute_conditions(other: /.+/)
63
+ expect(selector).to eq '(.//div)[./@other]'
64
+ end
65
+
66
+ context ':class' do
67
+ it 'handles string' do
68
+ @xpath = './/a'
69
+ selector = builder.add_attribute_conditions(class: 'my_class')
70
+ expect(selector).to eq %((.//a)[contains(concat(' ', normalize-space(./@class), ' '), ' my_class ')])
71
+ end
72
+
73
+ it 'handles negated strings' do
74
+ @xpath = XPath.descendant(:a)
75
+ selector = builder.add_attribute_conditions(class: '!my_class')
76
+ expect(selector.to_s).to eq @xpath[!XPath.attr(:class).contains_word('my_class')].to_s
77
+ end
78
+
79
+ it 'handles array of strings' do
80
+ @xpath = './/a'
81
+ selector = builder.add_attribute_conditions(class: %w[my_class my_other_class])
82
+ expect(selector).to eq %((.//a)[(contains(concat(' ', normalize-space(./@class), ' '), ' my_class ') and contains(concat(' ', normalize-space(./@class), ' '), ' my_other_class '))])
83
+ end
84
+
85
+ it 'handles array of string when negated included' do
86
+ @xpath = XPath.descendant(:a)
87
+ selector = builder.add_attribute_conditions(class: %w[my_class !my_other_class])
88
+ expect(selector.to_s).to eq @xpath[XPath.attr(:class).contains_word('my_class') & !XPath.attr(:class).contains_word('my_other_class')].to_s
89
+ end
90
+ end
91
+ end
92
+ end
93
+ # rubocop:enable RSpec/InstanceVariable
metadata ADDED
@@ -0,0 +1,753 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: capybara
3
+ version: !ruby/object:Gem::Version
4
+ version: 3.32.2
5
+ platform: ruby
6
+ authors:
7
+ - Thomas Walpole
8
+ - Jonas Nicklas
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain:
12
+ - gem-public_cert.pem
13
+ date: 2020-05-16 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: addressable
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - ">="
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ version: '0'
29
+ - !ruby/object:Gem::Dependency
30
+ name: mini_mime
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - ">="
34
+ - !ruby/object:Gem::Version
35
+ version: 0.1.3
36
+ type: :runtime
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 0.1.3
43
+ - !ruby/object:Gem::Dependency
44
+ name: nokogiri
45
+ requirement: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '1.8'
50
+ type: :runtime
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - "~>"
55
+ - !ruby/object:Gem::Version
56
+ version: '1.8'
57
+ - !ruby/object:Gem::Dependency
58
+ name: rack
59
+ requirement: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: 1.6.0
64
+ type: :runtime
65
+ prerelease: false
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ version: 1.6.0
71
+ - !ruby/object:Gem::Dependency
72
+ name: rack-test
73
+ requirement: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - ">="
76
+ - !ruby/object:Gem::Version
77
+ version: 0.6.3
78
+ type: :runtime
79
+ prerelease: false
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ version: 0.6.3
85
+ - !ruby/object:Gem::Dependency
86
+ name: regexp_parser
87
+ requirement: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - "~>"
90
+ - !ruby/object:Gem::Version
91
+ version: '1.5'
92
+ type: :runtime
93
+ prerelease: false
94
+ version_requirements: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - "~>"
97
+ - !ruby/object:Gem::Version
98
+ version: '1.5'
99
+ - !ruby/object:Gem::Dependency
100
+ name: xpath
101
+ requirement: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - "~>"
104
+ - !ruby/object:Gem::Version
105
+ version: '3.2'
106
+ type: :runtime
107
+ prerelease: false
108
+ version_requirements: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - "~>"
111
+ - !ruby/object:Gem::Version
112
+ version: '3.2'
113
+ - !ruby/object:Gem::Dependency
114
+ name: byebug
115
+ requirement: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - ">="
118
+ - !ruby/object:Gem::Version
119
+ version: '0'
120
+ type: :development
121
+ prerelease: false
122
+ version_requirements: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - ">="
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
127
+ - !ruby/object:Gem::Dependency
128
+ name: coveralls
129
+ requirement: !ruby/object:Gem::Requirement
130
+ requirements:
131
+ - - ">="
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
134
+ type: :development
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ requirements:
138
+ - - ">="
139
+ - !ruby/object:Gem::Version
140
+ version: '0'
141
+ - !ruby/object:Gem::Dependency
142
+ name: cucumber
143
+ requirement: !ruby/object:Gem::Requirement
144
+ requirements:
145
+ - - ">="
146
+ - !ruby/object:Gem::Version
147
+ version: 2.3.0
148
+ type: :development
149
+ prerelease: false
150
+ version_requirements: !ruby/object:Gem::Requirement
151
+ requirements:
152
+ - - ">="
153
+ - !ruby/object:Gem::Version
154
+ version: 2.3.0
155
+ - !ruby/object:Gem::Dependency
156
+ name: erubi
157
+ requirement: !ruby/object:Gem::Requirement
158
+ requirements:
159
+ - - ">="
160
+ - !ruby/object:Gem::Version
161
+ version: '0'
162
+ type: :development
163
+ prerelease: false
164
+ version_requirements: !ruby/object:Gem::Requirement
165
+ requirements:
166
+ - - ">="
167
+ - !ruby/object:Gem::Version
168
+ version: '0'
169
+ - !ruby/object:Gem::Dependency
170
+ name: irb
171
+ requirement: !ruby/object:Gem::Requirement
172
+ requirements:
173
+ - - ">="
174
+ - !ruby/object:Gem::Version
175
+ version: '0'
176
+ type: :development
177
+ prerelease: false
178
+ version_requirements: !ruby/object:Gem::Requirement
179
+ requirements:
180
+ - - ">="
181
+ - !ruby/object:Gem::Version
182
+ version: '0'
183
+ - !ruby/object:Gem::Dependency
184
+ name: launchy
185
+ requirement: !ruby/object:Gem::Requirement
186
+ requirements:
187
+ - - ">="
188
+ - !ruby/object:Gem::Version
189
+ version: 2.0.4
190
+ type: :development
191
+ prerelease: false
192
+ version_requirements: !ruby/object:Gem::Requirement
193
+ requirements:
194
+ - - ">="
195
+ - !ruby/object:Gem::Version
196
+ version: 2.0.4
197
+ - !ruby/object:Gem::Dependency
198
+ name: minitest
199
+ requirement: !ruby/object:Gem::Requirement
200
+ requirements:
201
+ - - ">="
202
+ - !ruby/object:Gem::Version
203
+ version: '0'
204
+ type: :development
205
+ prerelease: false
206
+ version_requirements: !ruby/object:Gem::Requirement
207
+ requirements:
208
+ - - ">="
209
+ - !ruby/object:Gem::Version
210
+ version: '0'
211
+ - !ruby/object:Gem::Dependency
212
+ name: puma
213
+ requirement: !ruby/object:Gem::Requirement
214
+ requirements:
215
+ - - ">="
216
+ - !ruby/object:Gem::Version
217
+ version: '0'
218
+ type: :development
219
+ prerelease: false
220
+ version_requirements: !ruby/object:Gem::Requirement
221
+ requirements:
222
+ - - ">="
223
+ - !ruby/object:Gem::Version
224
+ version: '0'
225
+ - !ruby/object:Gem::Dependency
226
+ name: rake
227
+ requirement: !ruby/object:Gem::Requirement
228
+ requirements:
229
+ - - ">="
230
+ - !ruby/object:Gem::Version
231
+ version: '0'
232
+ type: :development
233
+ prerelease: false
234
+ version_requirements: !ruby/object:Gem::Requirement
235
+ requirements:
236
+ - - ">="
237
+ - !ruby/object:Gem::Version
238
+ version: '0'
239
+ - !ruby/object:Gem::Dependency
240
+ name: rspec
241
+ requirement: !ruby/object:Gem::Requirement
242
+ requirements:
243
+ - - ">="
244
+ - !ruby/object:Gem::Version
245
+ version: 3.5.0
246
+ type: :development
247
+ prerelease: false
248
+ version_requirements: !ruby/object:Gem::Requirement
249
+ requirements:
250
+ - - ">="
251
+ - !ruby/object:Gem::Version
252
+ version: 3.5.0
253
+ - !ruby/object:Gem::Dependency
254
+ name: rspec-instafail
255
+ requirement: !ruby/object:Gem::Requirement
256
+ requirements:
257
+ - - ">="
258
+ - !ruby/object:Gem::Version
259
+ version: '0'
260
+ type: :development
261
+ prerelease: false
262
+ version_requirements: !ruby/object:Gem::Requirement
263
+ requirements:
264
+ - - ">="
265
+ - !ruby/object:Gem::Version
266
+ version: '0'
267
+ - !ruby/object:Gem::Dependency
268
+ name: rubocop
269
+ requirement: !ruby/object:Gem::Requirement
270
+ requirements:
271
+ - - "~>"
272
+ - !ruby/object:Gem::Version
273
+ version: '0.72'
274
+ type: :development
275
+ prerelease: false
276
+ version_requirements: !ruby/object:Gem::Requirement
277
+ requirements:
278
+ - - "~>"
279
+ - !ruby/object:Gem::Version
280
+ version: '0.72'
281
+ - !ruby/object:Gem::Dependency
282
+ name: rubocop-performance
283
+ requirement: !ruby/object:Gem::Requirement
284
+ requirements:
285
+ - - ">="
286
+ - !ruby/object:Gem::Version
287
+ version: '0'
288
+ type: :development
289
+ prerelease: false
290
+ version_requirements: !ruby/object:Gem::Requirement
291
+ requirements:
292
+ - - ">="
293
+ - !ruby/object:Gem::Version
294
+ version: '0'
295
+ - !ruby/object:Gem::Dependency
296
+ name: rubocop-rspec
297
+ requirement: !ruby/object:Gem::Requirement
298
+ requirements:
299
+ - - ">="
300
+ - !ruby/object:Gem::Version
301
+ version: '0'
302
+ type: :development
303
+ prerelease: false
304
+ version_requirements: !ruby/object:Gem::Requirement
305
+ requirements:
306
+ - - ">="
307
+ - !ruby/object:Gem::Version
308
+ version: '0'
309
+ - !ruby/object:Gem::Dependency
310
+ name: sauce_whisk
311
+ requirement: !ruby/object:Gem::Requirement
312
+ requirements:
313
+ - - ">="
314
+ - !ruby/object:Gem::Version
315
+ version: '0'
316
+ type: :development
317
+ prerelease: false
318
+ version_requirements: !ruby/object:Gem::Requirement
319
+ requirements:
320
+ - - ">="
321
+ - !ruby/object:Gem::Version
322
+ version: '0'
323
+ - !ruby/object:Gem::Dependency
324
+ name: selenium-webdriver
325
+ requirement: !ruby/object:Gem::Requirement
326
+ requirements:
327
+ - - "~>"
328
+ - !ruby/object:Gem::Version
329
+ version: '3.5'
330
+ type: :development
331
+ prerelease: false
332
+ version_requirements: !ruby/object:Gem::Requirement
333
+ requirements:
334
+ - - "~>"
335
+ - !ruby/object:Gem::Version
336
+ version: '3.5'
337
+ - !ruby/object:Gem::Dependency
338
+ name: selenium_statistics
339
+ requirement: !ruby/object:Gem::Requirement
340
+ requirements:
341
+ - - ">="
342
+ - !ruby/object:Gem::Version
343
+ version: '0'
344
+ type: :development
345
+ prerelease: false
346
+ version_requirements: !ruby/object:Gem::Requirement
347
+ requirements:
348
+ - - ">="
349
+ - !ruby/object:Gem::Version
350
+ version: '0'
351
+ - !ruby/object:Gem::Dependency
352
+ name: sinatra
353
+ requirement: !ruby/object:Gem::Requirement
354
+ requirements:
355
+ - - ">="
356
+ - !ruby/object:Gem::Version
357
+ version: 1.4.0
358
+ type: :development
359
+ prerelease: false
360
+ version_requirements: !ruby/object:Gem::Requirement
361
+ requirements:
362
+ - - ">="
363
+ - !ruby/object:Gem::Version
364
+ version: 1.4.0
365
+ - !ruby/object:Gem::Dependency
366
+ name: uglifier
367
+ requirement: !ruby/object:Gem::Requirement
368
+ requirements:
369
+ - - ">="
370
+ - !ruby/object:Gem::Version
371
+ version: '0'
372
+ type: :development
373
+ prerelease: false
374
+ version_requirements: !ruby/object:Gem::Requirement
375
+ requirements:
376
+ - - ">="
377
+ - !ruby/object:Gem::Version
378
+ version: '0'
379
+ - !ruby/object:Gem::Dependency
380
+ name: webdrivers
381
+ requirement: !ruby/object:Gem::Requirement
382
+ requirements:
383
+ - - ">="
384
+ - !ruby/object:Gem::Version
385
+ version: 3.6.0
386
+ type: :development
387
+ prerelease: false
388
+ version_requirements: !ruby/object:Gem::Requirement
389
+ requirements:
390
+ - - ">="
391
+ - !ruby/object:Gem::Version
392
+ version: 3.6.0
393
+ - !ruby/object:Gem::Dependency
394
+ name: yard
395
+ requirement: !ruby/object:Gem::Requirement
396
+ requirements:
397
+ - - ">="
398
+ - !ruby/object:Gem::Version
399
+ version: 0.9.0
400
+ type: :development
401
+ prerelease: false
402
+ version_requirements: !ruby/object:Gem::Requirement
403
+ requirements:
404
+ - - ">="
405
+ - !ruby/object:Gem::Version
406
+ version: 0.9.0
407
+ description: Capybara is an integration testing tool for rack based web applications.
408
+ It simulates how a user would interact with a website
409
+ email:
410
+ - twalpole@gmail.com
411
+ - jonas.nicklas@gmail.com
412
+ executables: []
413
+ extensions: []
414
+ extra_rdoc_files: []
415
+ files:
416
+ - ".yardopts"
417
+ - History.md
418
+ - License.txt
419
+ - README.md
420
+ - lib/capybara.rb
421
+ - lib/capybara/config.rb
422
+ - lib/capybara/cucumber.rb
423
+ - lib/capybara/driver/base.rb
424
+ - lib/capybara/driver/node.rb
425
+ - lib/capybara/dsl.rb
426
+ - lib/capybara/helpers.rb
427
+ - lib/capybara/minitest.rb
428
+ - lib/capybara/minitest/spec.rb
429
+ - lib/capybara/node/actions.rb
430
+ - lib/capybara/node/base.rb
431
+ - lib/capybara/node/document.rb
432
+ - lib/capybara/node/document_matchers.rb
433
+ - lib/capybara/node/element.rb
434
+ - lib/capybara/node/finders.rb
435
+ - lib/capybara/node/matchers.rb
436
+ - lib/capybara/node/simple.rb
437
+ - lib/capybara/queries/ancestor_query.rb
438
+ - lib/capybara/queries/base_query.rb
439
+ - lib/capybara/queries/current_path_query.rb
440
+ - lib/capybara/queries/match_query.rb
441
+ - lib/capybara/queries/selector_query.rb
442
+ - lib/capybara/queries/sibling_query.rb
443
+ - lib/capybara/queries/style_query.rb
444
+ - lib/capybara/queries/text_query.rb
445
+ - lib/capybara/queries/title_query.rb
446
+ - lib/capybara/rack_test/browser.rb
447
+ - lib/capybara/rack_test/css_handlers.rb
448
+ - lib/capybara/rack_test/driver.rb
449
+ - lib/capybara/rack_test/errors.rb
450
+ - lib/capybara/rack_test/form.rb
451
+ - lib/capybara/rack_test/node.rb
452
+ - lib/capybara/rails.rb
453
+ - lib/capybara/registrations/drivers.rb
454
+ - lib/capybara/registrations/patches/puma_ssl.rb
455
+ - lib/capybara/registrations/servers.rb
456
+ - lib/capybara/result.rb
457
+ - lib/capybara/rspec.rb
458
+ - lib/capybara/rspec/features.rb
459
+ - lib/capybara/rspec/matcher_proxies.rb
460
+ - lib/capybara/rspec/matchers.rb
461
+ - lib/capybara/rspec/matchers/base.rb
462
+ - lib/capybara/rspec/matchers/become_closed.rb
463
+ - lib/capybara/rspec/matchers/compound.rb
464
+ - lib/capybara/rspec/matchers/count_sugar.rb
465
+ - lib/capybara/rspec/matchers/have_ancestor.rb
466
+ - lib/capybara/rspec/matchers/have_current_path.rb
467
+ - lib/capybara/rspec/matchers/have_selector.rb
468
+ - lib/capybara/rspec/matchers/have_sibling.rb
469
+ - lib/capybara/rspec/matchers/have_text.rb
470
+ - lib/capybara/rspec/matchers/have_title.rb
471
+ - lib/capybara/rspec/matchers/match_selector.rb
472
+ - lib/capybara/rspec/matchers/match_style.rb
473
+ - lib/capybara/rspec/matchers/spatial_sugar.rb
474
+ - lib/capybara/selector.rb
475
+ - lib/capybara/selector/builders/css_builder.rb
476
+ - lib/capybara/selector/builders/xpath_builder.rb
477
+ - lib/capybara/selector/css.rb
478
+ - lib/capybara/selector/definition.rb
479
+ - lib/capybara/selector/definition/button.rb
480
+ - lib/capybara/selector/definition/checkbox.rb
481
+ - lib/capybara/selector/definition/css.rb
482
+ - lib/capybara/selector/definition/datalist_input.rb
483
+ - lib/capybara/selector/definition/datalist_option.rb
484
+ - lib/capybara/selector/definition/element.rb
485
+ - lib/capybara/selector/definition/field.rb
486
+ - lib/capybara/selector/definition/fieldset.rb
487
+ - lib/capybara/selector/definition/file_field.rb
488
+ - lib/capybara/selector/definition/fillable_field.rb
489
+ - lib/capybara/selector/definition/frame.rb
490
+ - lib/capybara/selector/definition/id.rb
491
+ - lib/capybara/selector/definition/label.rb
492
+ - lib/capybara/selector/definition/link.rb
493
+ - lib/capybara/selector/definition/link_or_button.rb
494
+ - lib/capybara/selector/definition/option.rb
495
+ - lib/capybara/selector/definition/radio_button.rb
496
+ - lib/capybara/selector/definition/select.rb
497
+ - lib/capybara/selector/definition/table.rb
498
+ - lib/capybara/selector/definition/table_row.rb
499
+ - lib/capybara/selector/definition/xpath.rb
500
+ - lib/capybara/selector/filter.rb
501
+ - lib/capybara/selector/filter_set.rb
502
+ - lib/capybara/selector/filters/base.rb
503
+ - lib/capybara/selector/filters/expression_filter.rb
504
+ - lib/capybara/selector/filters/locator_filter.rb
505
+ - lib/capybara/selector/filters/node_filter.rb
506
+ - lib/capybara/selector/regexp_disassembler.rb
507
+ - lib/capybara/selector/selector.rb
508
+ - lib/capybara/selector/xpath_extensions.rb
509
+ - lib/capybara/selenium/atoms/getAttribute.min.js
510
+ - lib/capybara/selenium/atoms/isDisplayed.min.js
511
+ - lib/capybara/selenium/atoms/src/getAttribute.js
512
+ - lib/capybara/selenium/atoms/src/isDisplayed.js
513
+ - lib/capybara/selenium/driver.rb
514
+ - lib/capybara/selenium/driver_specializations/chrome_driver.rb
515
+ - lib/capybara/selenium/driver_specializations/edge_driver.rb
516
+ - lib/capybara/selenium/driver_specializations/firefox_driver.rb
517
+ - lib/capybara/selenium/driver_specializations/internet_explorer_driver.rb
518
+ - lib/capybara/selenium/driver_specializations/safari_driver.rb
519
+ - lib/capybara/selenium/extensions/file_input_click_emulation.rb
520
+ - lib/capybara/selenium/extensions/find.rb
521
+ - lib/capybara/selenium/extensions/html5_drag.rb
522
+ - lib/capybara/selenium/extensions/modifier_keys_stack.rb
523
+ - lib/capybara/selenium/extensions/scroll.rb
524
+ - lib/capybara/selenium/logger_suppressor.rb
525
+ - lib/capybara/selenium/node.rb
526
+ - lib/capybara/selenium/nodes/chrome_node.rb
527
+ - lib/capybara/selenium/nodes/edge_node.rb
528
+ - lib/capybara/selenium/nodes/firefox_node.rb
529
+ - lib/capybara/selenium/nodes/ie_node.rb
530
+ - lib/capybara/selenium/nodes/safari_node.rb
531
+ - lib/capybara/selenium/patches/action_pauser.rb
532
+ - lib/capybara/selenium/patches/atoms.rb
533
+ - lib/capybara/selenium/patches/is_displayed.rb
534
+ - lib/capybara/selenium/patches/logs.rb
535
+ - lib/capybara/selenium/patches/pause_duration_fix.rb
536
+ - lib/capybara/selenium/patches/persistent_client.rb
537
+ - lib/capybara/server.rb
538
+ - lib/capybara/server/animation_disabler.rb
539
+ - lib/capybara/server/checker.rb
540
+ - lib/capybara/server/middleware.rb
541
+ - lib/capybara/session.rb
542
+ - lib/capybara/session/config.rb
543
+ - lib/capybara/session/matchers.rb
544
+ - lib/capybara/spec/fixtures/another_test_file.txt
545
+ - lib/capybara/spec/fixtures/capybara.jpg
546
+ - lib/capybara/spec/fixtures/no_extension
547
+ - lib/capybara/spec/fixtures/test_file.txt
548
+ - lib/capybara/spec/public/jquery-ui.js
549
+ - lib/capybara/spec/public/jquery.js
550
+ - lib/capybara/spec/public/offset.js
551
+ - lib/capybara/spec/public/test.js
552
+ - lib/capybara/spec/session/accept_alert_spec.rb
553
+ - lib/capybara/spec/session/accept_confirm_spec.rb
554
+ - lib/capybara/spec/session/accept_prompt_spec.rb
555
+ - lib/capybara/spec/session/all_spec.rb
556
+ - lib/capybara/spec/session/ancestor_spec.rb
557
+ - lib/capybara/spec/session/assert_all_of_selectors_spec.rb
558
+ - lib/capybara/spec/session/assert_current_path_spec.rb
559
+ - lib/capybara/spec/session/assert_selector_spec.rb
560
+ - lib/capybara/spec/session/assert_style_spec.rb
561
+ - lib/capybara/spec/session/assert_text_spec.rb
562
+ - lib/capybara/spec/session/assert_title_spec.rb
563
+ - lib/capybara/spec/session/attach_file_spec.rb
564
+ - lib/capybara/spec/session/body_spec.rb
565
+ - lib/capybara/spec/session/check_spec.rb
566
+ - lib/capybara/spec/session/choose_spec.rb
567
+ - lib/capybara/spec/session/click_button_spec.rb
568
+ - lib/capybara/spec/session/click_link_or_button_spec.rb
569
+ - lib/capybara/spec/session/click_link_spec.rb
570
+ - lib/capybara/spec/session/current_scope_spec.rb
571
+ - lib/capybara/spec/session/current_url_spec.rb
572
+ - lib/capybara/spec/session/dismiss_confirm_spec.rb
573
+ - lib/capybara/spec/session/dismiss_prompt_spec.rb
574
+ - lib/capybara/spec/session/element/assert_match_selector_spec.rb
575
+ - lib/capybara/spec/session/element/match_css_spec.rb
576
+ - lib/capybara/spec/session/element/match_xpath_spec.rb
577
+ - lib/capybara/spec/session/element/matches_selector_spec.rb
578
+ - lib/capybara/spec/session/evaluate_async_script_spec.rb
579
+ - lib/capybara/spec/session/evaluate_script_spec.rb
580
+ - lib/capybara/spec/session/execute_script_spec.rb
581
+ - lib/capybara/spec/session/fill_in_spec.rb
582
+ - lib/capybara/spec/session/find_button_spec.rb
583
+ - lib/capybara/spec/session/find_by_id_spec.rb
584
+ - lib/capybara/spec/session/find_field_spec.rb
585
+ - lib/capybara/spec/session/find_link_spec.rb
586
+ - lib/capybara/spec/session/find_spec.rb
587
+ - lib/capybara/spec/session/first_spec.rb
588
+ - lib/capybara/spec/session/frame/frame_title_spec.rb
589
+ - lib/capybara/spec/session/frame/frame_url_spec.rb
590
+ - lib/capybara/spec/session/frame/switch_to_frame_spec.rb
591
+ - lib/capybara/spec/session/frame/within_frame_spec.rb
592
+ - lib/capybara/spec/session/go_back_spec.rb
593
+ - lib/capybara/spec/session/go_forward_spec.rb
594
+ - lib/capybara/spec/session/has_all_selectors_spec.rb
595
+ - lib/capybara/spec/session/has_ancestor_spec.rb
596
+ - lib/capybara/spec/session/has_any_selectors_spec.rb
597
+ - lib/capybara/spec/session/has_button_spec.rb
598
+ - lib/capybara/spec/session/has_css_spec.rb
599
+ - lib/capybara/spec/session/has_current_path_spec.rb
600
+ - lib/capybara/spec/session/has_field_spec.rb
601
+ - lib/capybara/spec/session/has_link_spec.rb
602
+ - lib/capybara/spec/session/has_none_selectors_spec.rb
603
+ - lib/capybara/spec/session/has_select_spec.rb
604
+ - lib/capybara/spec/session/has_selector_spec.rb
605
+ - lib/capybara/spec/session/has_sibling_spec.rb
606
+ - lib/capybara/spec/session/has_table_spec.rb
607
+ - lib/capybara/spec/session/has_text_spec.rb
608
+ - lib/capybara/spec/session/has_title_spec.rb
609
+ - lib/capybara/spec/session/has_xpath_spec.rb
610
+ - lib/capybara/spec/session/headers_spec.rb
611
+ - lib/capybara/spec/session/html_spec.rb
612
+ - lib/capybara/spec/session/matches_style_spec.rb
613
+ - lib/capybara/spec/session/node_spec.rb
614
+ - lib/capybara/spec/session/node_wrapper_spec.rb
615
+ - lib/capybara/spec/session/refresh_spec.rb
616
+ - lib/capybara/spec/session/reset_session_spec.rb
617
+ - lib/capybara/spec/session/response_code_spec.rb
618
+ - lib/capybara/spec/session/save_and_open_page_spec.rb
619
+ - lib/capybara/spec/session/save_and_open_screenshot_spec.rb
620
+ - lib/capybara/spec/session/save_page_spec.rb
621
+ - lib/capybara/spec/session/save_screenshot_spec.rb
622
+ - lib/capybara/spec/session/screenshot_spec.rb
623
+ - lib/capybara/spec/session/scroll_spec.rb
624
+ - lib/capybara/spec/session/select_spec.rb
625
+ - lib/capybara/spec/session/selectors_spec.rb
626
+ - lib/capybara/spec/session/sibling_spec.rb
627
+ - lib/capybara/spec/session/source_spec.rb
628
+ - lib/capybara/spec/session/text_spec.rb
629
+ - lib/capybara/spec/session/title_spec.rb
630
+ - lib/capybara/spec/session/uncheck_spec.rb
631
+ - lib/capybara/spec/session/unselect_spec.rb
632
+ - lib/capybara/spec/session/visit_spec.rb
633
+ - lib/capybara/spec/session/window/become_closed_spec.rb
634
+ - lib/capybara/spec/session/window/current_window_spec.rb
635
+ - lib/capybara/spec/session/window/open_new_window_spec.rb
636
+ - lib/capybara/spec/session/window/switch_to_window_spec.rb
637
+ - lib/capybara/spec/session/window/window_opened_by_spec.rb
638
+ - lib/capybara/spec/session/window/window_spec.rb
639
+ - lib/capybara/spec/session/window/windows_spec.rb
640
+ - lib/capybara/spec/session/window/within_window_spec.rb
641
+ - lib/capybara/spec/session/within_spec.rb
642
+ - lib/capybara/spec/spec_helper.rb
643
+ - lib/capybara/spec/test_app.rb
644
+ - lib/capybara/spec/views/animated.erb
645
+ - lib/capybara/spec/views/buttons.erb
646
+ - lib/capybara/spec/views/fieldsets.erb
647
+ - lib/capybara/spec/views/form.erb
648
+ - lib/capybara/spec/views/frame_child.erb
649
+ - lib/capybara/spec/views/frame_one.erb
650
+ - lib/capybara/spec/views/frame_parent.erb
651
+ - lib/capybara/spec/views/frame_two.erb
652
+ - lib/capybara/spec/views/header_links.erb
653
+ - lib/capybara/spec/views/host_links.erb
654
+ - lib/capybara/spec/views/initial_alert.erb
655
+ - lib/capybara/spec/views/obscured.erb
656
+ - lib/capybara/spec/views/offset.erb
657
+ - lib/capybara/spec/views/path.erb
658
+ - lib/capybara/spec/views/popup_one.erb
659
+ - lib/capybara/spec/views/popup_two.erb
660
+ - lib/capybara/spec/views/postback.erb
661
+ - lib/capybara/spec/views/react.erb
662
+ - lib/capybara/spec/views/scroll.erb
663
+ - lib/capybara/spec/views/spatial.erb
664
+ - lib/capybara/spec/views/tables.erb
665
+ - lib/capybara/spec/views/with_animation.erb
666
+ - lib/capybara/spec/views/with_base_tag.erb
667
+ - lib/capybara/spec/views/with_count.erb
668
+ - lib/capybara/spec/views/with_dragula.erb
669
+ - lib/capybara/spec/views/with_fixed_header_footer.erb
670
+ - lib/capybara/spec/views/with_hover.erb
671
+ - lib/capybara/spec/views/with_hover1.erb
672
+ - lib/capybara/spec/views/with_html.erb
673
+ - lib/capybara/spec/views/with_html5_svg.erb
674
+ - lib/capybara/spec/views/with_html_entities.erb
675
+ - lib/capybara/spec/views/with_js.erb
676
+ - lib/capybara/spec/views/with_jstree.erb
677
+ - lib/capybara/spec/views/with_namespace.erb
678
+ - lib/capybara/spec/views/with_scope.erb
679
+ - lib/capybara/spec/views/with_scope_other.erb
680
+ - lib/capybara/spec/views/with_simple_html.erb
681
+ - lib/capybara/spec/views/with_slow_unload.erb
682
+ - lib/capybara/spec/views/with_sortable_js.erb
683
+ - lib/capybara/spec/views/with_title.erb
684
+ - lib/capybara/spec/views/with_unload_alert.erb
685
+ - lib/capybara/spec/views/with_windows.erb
686
+ - lib/capybara/spec/views/within_frames.erb
687
+ - lib/capybara/version.rb
688
+ - lib/capybara/window.rb
689
+ - spec/basic_node_spec.rb
690
+ - spec/capybara_spec.rb
691
+ - spec/css_builder_spec.rb
692
+ - spec/css_splitter_spec.rb
693
+ - spec/dsl_spec.rb
694
+ - spec/filter_set_spec.rb
695
+ - spec/fixtures/capybara.csv
696
+ - spec/fixtures/certificate.pem
697
+ - spec/fixtures/key.pem
698
+ - spec/fixtures/selenium_driver_rspec_failure.rb
699
+ - spec/fixtures/selenium_driver_rspec_success.rb
700
+ - spec/minitest_spec.rb
701
+ - spec/minitest_spec_spec.rb
702
+ - spec/per_session_config_spec.rb
703
+ - spec/rack_test_spec.rb
704
+ - spec/regexp_dissassembler_spec.rb
705
+ - spec/result_spec.rb
706
+ - spec/rspec/features_spec.rb
707
+ - spec/rspec/scenarios_spec.rb
708
+ - spec/rspec/shared_spec_matchers.rb
709
+ - spec/rspec/views_spec.rb
710
+ - spec/rspec_matchers_spec.rb
711
+ - spec/rspec_spec.rb
712
+ - spec/sauce_spec_chrome.rb
713
+ - spec/selector_spec.rb
714
+ - spec/selenium_spec_chrome.rb
715
+ - spec/selenium_spec_chrome_remote.rb
716
+ - spec/selenium_spec_edge.rb
717
+ - spec/selenium_spec_firefox.rb
718
+ - spec/selenium_spec_firefox_remote.rb
719
+ - spec/selenium_spec_ie.rb
720
+ - spec/selenium_spec_safari.rb
721
+ - spec/server_spec.rb
722
+ - spec/session_spec.rb
723
+ - spec/shared_selenium_node.rb
724
+ - spec/shared_selenium_session.rb
725
+ - spec/spec_helper.rb
726
+ - spec/xpath_builder_spec.rb
727
+ homepage: https://github.com/teamcapybara/capybara
728
+ licenses:
729
+ - MIT
730
+ metadata:
731
+ changelog_uri: https://github.com/teamcapybara/capybara/blob/master/History.md
732
+ source_code_uri: https://github.com/teamcapybara/capybara
733
+ post_install_message:
734
+ rdoc_options: []
735
+ require_paths:
736
+ - lib
737
+ required_ruby_version: !ruby/object:Gem::Requirement
738
+ requirements:
739
+ - - ">="
740
+ - !ruby/object:Gem::Version
741
+ version: 2.4.0
742
+ required_rubygems_version: !ruby/object:Gem::Requirement
743
+ requirements:
744
+ - - ">="
745
+ - !ruby/object:Gem::Version
746
+ version: '0'
747
+ requirements: []
748
+ rubygems_version: 3.1.2
749
+ signing_key:
750
+ specification_version: 4
751
+ summary: Capybara aims to simplify the process of integration testing Rack applications,
752
+ such as Rails, Sinatra or Merb
753
+ test_files: []