capybara 3.0.0 → 3.40.0

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 (312) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +1 -1
  3. data/History.md +891 -12
  4. data/License.txt +1 -1
  5. data/README.md +257 -84
  6. data/lib/capybara/config.rb +29 -10
  7. data/lib/capybara/cucumber.rb +1 -1
  8. data/lib/capybara/driver/base.rb +22 -4
  9. data/lib/capybara/driver/node.rb +38 -9
  10. data/lib/capybara/dsl.rb +9 -7
  11. data/lib/capybara/helpers.rb +57 -8
  12. data/lib/capybara/minitest/spec.rb +185 -84
  13. data/lib/capybara/minitest.rb +264 -145
  14. data/lib/capybara/node/actions.rb +248 -124
  15. data/lib/capybara/node/base.rb +35 -20
  16. data/lib/capybara/node/document.rb +14 -2
  17. data/lib/capybara/node/document_matchers.rb +13 -15
  18. data/lib/capybara/node/element.rb +350 -113
  19. data/lib/capybara/node/finders.rb +104 -82
  20. data/lib/capybara/node/matchers.rb +363 -157
  21. data/lib/capybara/node/simple.rb +54 -15
  22. data/lib/capybara/node/whitespace_normalizer.rb +81 -0
  23. data/lib/capybara/queries/active_element_query.rb +18 -0
  24. data/lib/capybara/queries/ancestor_query.rb +9 -10
  25. data/lib/capybara/queries/base_query.rb +25 -18
  26. data/lib/capybara/queries/current_path_query.rb +16 -6
  27. data/lib/capybara/queries/match_query.rb +11 -0
  28. data/lib/capybara/queries/selector_query.rb +617 -104
  29. data/lib/capybara/queries/sibling_query.rb +9 -7
  30. data/lib/capybara/queries/style_query.rb +45 -0
  31. data/lib/capybara/queries/text_query.rb +40 -22
  32. data/lib/capybara/queries/title_query.rb +2 -2
  33. data/lib/capybara/rack_test/browser.rb +106 -31
  34. data/lib/capybara/rack_test/driver.rb +16 -7
  35. data/lib/capybara/rack_test/errors.rb +6 -0
  36. data/lib/capybara/rack_test/form.rb +74 -49
  37. data/lib/capybara/rack_test/node.rb +120 -47
  38. data/lib/capybara/rails.rb +1 -1
  39. data/lib/capybara/registration_container.rb +41 -0
  40. data/lib/capybara/registrations/drivers.rb +42 -0
  41. data/lib/capybara/registrations/patches/puma_ssl.rb +29 -0
  42. data/lib/capybara/registrations/servers.rb +66 -0
  43. data/lib/capybara/result.rb +87 -53
  44. data/lib/capybara/rspec/features.rb +8 -10
  45. data/lib/capybara/rspec/matcher_proxies.rb +39 -18
  46. data/lib/capybara/rspec/matchers/base.rb +113 -0
  47. data/lib/capybara/rspec/matchers/become_closed.rb +33 -0
  48. data/lib/capybara/rspec/matchers/compound.rb +88 -0
  49. data/lib/capybara/rspec/matchers/count_sugar.rb +37 -0
  50. data/lib/capybara/rspec/matchers/have_ancestor.rb +28 -0
  51. data/lib/capybara/rspec/matchers/have_current_path.rb +29 -0
  52. data/lib/capybara/rspec/matchers/have_selector.rb +69 -0
  53. data/lib/capybara/rspec/matchers/have_sibling.rb +27 -0
  54. data/lib/capybara/rspec/matchers/have_text.rb +33 -0
  55. data/lib/capybara/rspec/matchers/have_title.rb +29 -0
  56. data/lib/capybara/rspec/matchers/match_selector.rb +27 -0
  57. data/lib/capybara/rspec/matchers/match_style.rb +43 -0
  58. data/lib/capybara/rspec/matchers/spatial_sugar.rb +39 -0
  59. data/lib/capybara/rspec/matchers.rb +142 -315
  60. data/lib/capybara/rspec.rb +3 -2
  61. data/lib/capybara/selector/builders/css_builder.rb +84 -0
  62. data/lib/capybara/selector/builders/xpath_builder.rb +71 -0
  63. data/lib/capybara/selector/css.rb +85 -8
  64. data/lib/capybara/selector/definition/button.rb +68 -0
  65. data/lib/capybara/selector/definition/checkbox.rb +26 -0
  66. data/lib/capybara/selector/definition/css.rb +10 -0
  67. data/lib/capybara/selector/definition/datalist_input.rb +35 -0
  68. data/lib/capybara/selector/definition/datalist_option.rb +25 -0
  69. data/lib/capybara/selector/definition/element.rb +28 -0
  70. data/lib/capybara/selector/definition/field.rb +40 -0
  71. data/lib/capybara/selector/definition/fieldset.rb +14 -0
  72. data/lib/capybara/selector/definition/file_field.rb +13 -0
  73. data/lib/capybara/selector/definition/fillable_field.rb +33 -0
  74. data/lib/capybara/selector/definition/frame.rb +17 -0
  75. data/lib/capybara/selector/definition/id.rb +6 -0
  76. data/lib/capybara/selector/definition/label.rb +62 -0
  77. data/lib/capybara/selector/definition/link.rb +55 -0
  78. data/lib/capybara/selector/definition/link_or_button.rb +16 -0
  79. data/lib/capybara/selector/definition/option.rb +27 -0
  80. data/lib/capybara/selector/definition/radio_button.rb +27 -0
  81. data/lib/capybara/selector/definition/select.rb +81 -0
  82. data/lib/capybara/selector/definition/table.rb +109 -0
  83. data/lib/capybara/selector/definition/table_row.rb +21 -0
  84. data/lib/capybara/selector/definition/xpath.rb +5 -0
  85. data/lib/capybara/selector/definition.rb +280 -0
  86. data/lib/capybara/selector/filter.rb +1 -0
  87. data/lib/capybara/selector/filter_set.rb +72 -28
  88. data/lib/capybara/selector/filters/base.rb +45 -2
  89. data/lib/capybara/selector/filters/expression_filter.rb +5 -6
  90. data/lib/capybara/selector/filters/locator_filter.rb +29 -0
  91. data/lib/capybara/selector/filters/node_filter.rb +18 -4
  92. data/lib/capybara/selector/regexp_disassembler.rb +211 -0
  93. data/lib/capybara/selector/selector.rb +89 -200
  94. data/lib/capybara/selector/xpath_extensions.rb +17 -0
  95. data/lib/capybara/selector.rb +474 -534
  96. data/lib/capybara/selenium/atoms/getAttribute.min.js +1 -0
  97. data/lib/capybara/selenium/atoms/isDisplayed.min.js +1 -0
  98. data/lib/capybara/selenium/atoms/src/getAttribute.js +161 -0
  99. data/lib/capybara/selenium/atoms/src/isDisplayed.js +454 -0
  100. data/lib/capybara/selenium/driver.rb +270 -245
  101. data/lib/capybara/selenium/driver_specializations/chrome_driver.rb +117 -0
  102. data/lib/capybara/selenium/driver_specializations/edge_driver.rb +128 -0
  103. data/lib/capybara/selenium/driver_specializations/firefox_driver.rb +84 -0
  104. data/lib/capybara/selenium/driver_specializations/internet_explorer_driver.rb +26 -0
  105. data/lib/capybara/selenium/driver_specializations/safari_driver.rb +24 -0
  106. data/lib/capybara/selenium/extensions/file_input_click_emulation.rb +34 -0
  107. data/lib/capybara/selenium/extensions/find.rb +110 -0
  108. data/lib/capybara/selenium/extensions/html5_drag.rb +229 -0
  109. data/lib/capybara/selenium/extensions/modifier_keys_stack.rb +28 -0
  110. data/lib/capybara/selenium/extensions/scroll.rb +76 -0
  111. data/lib/capybara/selenium/node.rb +460 -170
  112. data/lib/capybara/selenium/nodes/chrome_node.rb +125 -0
  113. data/lib/capybara/selenium/nodes/edge_node.rb +110 -0
  114. data/lib/capybara/selenium/nodes/firefox_node.rb +136 -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/atoms.rb +18 -0
  118. data/lib/capybara/selenium/patches/is_displayed.rb +16 -0
  119. data/lib/capybara/selenium/patches/logs.rb +45 -0
  120. data/lib/capybara/selenium/patches/pause_duration_fix.rb +9 -0
  121. data/lib/capybara/selenium/patches/persistent_client.rb +20 -0
  122. data/lib/capybara/server/animation_disabler.rb +80 -0
  123. data/lib/capybara/server/checker.rb +44 -0
  124. data/lib/capybara/server/middleware.rb +71 -0
  125. data/lib/capybara/server.rb +58 -67
  126. data/lib/capybara/session/config.rb +40 -6
  127. data/lib/capybara/session/matchers.rb +26 -19
  128. data/lib/capybara/session.rb +252 -194
  129. data/lib/capybara/spec/public/jquery.js +5 -5
  130. data/lib/capybara/spec/public/offset.js +6 -0
  131. data/lib/capybara/spec/public/test.js +126 -8
  132. data/lib/capybara/spec/session/accept_alert_spec.rb +11 -11
  133. data/lib/capybara/spec/session/accept_confirm_spec.rb +3 -3
  134. data/lib/capybara/spec/session/accept_prompt_spec.rb +9 -10
  135. data/lib/capybara/spec/session/active_element_spec.rb +31 -0
  136. data/lib/capybara/spec/session/all_spec.rb +135 -44
  137. data/lib/capybara/spec/session/ancestor_spec.rb +24 -19
  138. data/lib/capybara/spec/session/assert_all_of_selectors_spec.rb +67 -38
  139. data/lib/capybara/spec/session/{assert_current_path.rb → assert_current_path_spec.rb} +20 -18
  140. data/lib/capybara/spec/session/assert_selector_spec.rb +143 -0
  141. data/lib/capybara/spec/session/assert_style_spec.rb +26 -0
  142. data/lib/capybara/spec/session/{assert_text.rb → assert_text_spec.rb} +76 -52
  143. data/lib/capybara/spec/session/{assert_title.rb → assert_title_spec.rb} +12 -12
  144. data/lib/capybara/spec/session/attach_file_spec.rb +126 -72
  145. data/lib/capybara/spec/session/body_spec.rb +11 -13
  146. data/lib/capybara/spec/session/check_spec.rb +112 -51
  147. data/lib/capybara/spec/session/choose_spec.rb +62 -30
  148. data/lib/capybara/spec/session/click_button_spec.rb +227 -161
  149. data/lib/capybara/spec/session/click_link_or_button_spec.rb +49 -30
  150. data/lib/capybara/spec/session/click_link_spec.rb +89 -55
  151. data/lib/capybara/spec/session/current_scope_spec.rb +8 -8
  152. data/lib/capybara/spec/session/current_url_spec.rb +44 -37
  153. data/lib/capybara/spec/session/dismiss_confirm_spec.rb +3 -3
  154. data/lib/capybara/spec/session/dismiss_prompt_spec.rb +2 -2
  155. data/lib/capybara/spec/session/element/{assert_match_selector.rb → assert_match_selector_spec.rb} +11 -9
  156. data/lib/capybara/spec/session/element/match_css_spec.rb +18 -10
  157. data/lib/capybara/spec/session/element/match_xpath_spec.rb +8 -6
  158. data/lib/capybara/spec/session/element/matches_selector_spec.rb +70 -56
  159. data/lib/capybara/spec/session/evaluate_async_script_spec.rb +7 -7
  160. data/lib/capybara/spec/session/evaluate_script_spec.rb +28 -8
  161. data/lib/capybara/spec/session/execute_script_spec.rb +8 -7
  162. data/lib/capybara/spec/session/fill_in_spec.rb +110 -44
  163. data/lib/capybara/spec/session/find_button_spec.rb +23 -23
  164. data/lib/capybara/spec/session/find_by_id_spec.rb +8 -8
  165. data/lib/capybara/spec/session/find_field_spec.rb +33 -31
  166. data/lib/capybara/spec/session/find_link_spec.rb +42 -14
  167. data/lib/capybara/spec/session/find_spec.rb +251 -142
  168. data/lib/capybara/spec/session/first_spec.rb +45 -44
  169. data/lib/capybara/spec/session/frame/frame_title_spec.rb +6 -6
  170. data/lib/capybara/spec/session/frame/frame_url_spec.rb +6 -6
  171. data/lib/capybara/spec/session/frame/switch_to_frame_spec.rb +32 -20
  172. data/lib/capybara/spec/session/frame/within_frame_spec.rb +46 -19
  173. data/lib/capybara/spec/session/go_back_spec.rb +1 -1
  174. data/lib/capybara/spec/session/go_forward_spec.rb +1 -1
  175. data/lib/capybara/spec/session/has_all_selectors_spec.rb +23 -23
  176. data/lib/capybara/spec/session/has_ancestor_spec.rb +46 -0
  177. data/lib/capybara/spec/session/has_any_selectors_spec.rb +29 -0
  178. data/lib/capybara/spec/session/has_button_spec.rb +98 -12
  179. data/lib/capybara/spec/session/has_css_spec.rb +271 -137
  180. data/lib/capybara/spec/session/has_current_path_spec.rb +50 -35
  181. data/lib/capybara/spec/session/has_element_spec.rb +47 -0
  182. data/lib/capybara/spec/session/has_field_spec.rb +137 -58
  183. data/lib/capybara/spec/session/has_link_spec.rb +46 -6
  184. data/lib/capybara/spec/session/has_none_selectors_spec.rb +33 -31
  185. data/lib/capybara/spec/session/has_select_spec.rb +84 -50
  186. data/lib/capybara/spec/session/has_selector_spec.rb +117 -69
  187. data/lib/capybara/spec/session/has_sibling_spec.rb +50 -0
  188. data/lib/capybara/spec/session/has_table_spec.rb +181 -4
  189. data/lib/capybara/spec/session/has_text_spec.rb +101 -53
  190. data/lib/capybara/spec/session/has_title_spec.rb +19 -14
  191. data/lib/capybara/spec/session/has_xpath_spec.rb +56 -38
  192. data/lib/capybara/spec/session/{headers.rb → headers_spec.rb} +1 -1
  193. data/lib/capybara/spec/session/html_spec.rb +13 -6
  194. data/lib/capybara/spec/session/matches_style_spec.rb +37 -0
  195. data/lib/capybara/spec/session/node_spec.rb +958 -122
  196. data/lib/capybara/spec/session/node_wrapper_spec.rb +15 -12
  197. data/lib/capybara/spec/session/refresh_spec.rb +9 -7
  198. data/lib/capybara/spec/session/reset_session_spec.rb +65 -37
  199. data/lib/capybara/spec/session/{response_code.rb → response_code_spec.rb} +1 -1
  200. data/lib/capybara/spec/session/save_and_open_page_spec.rb +2 -2
  201. data/lib/capybara/spec/session/save_and_open_screenshot_spec.rb +5 -4
  202. data/lib/capybara/spec/session/save_page_spec.rb +41 -38
  203. data/lib/capybara/spec/session/save_screenshot_spec.rb +13 -11
  204. data/lib/capybara/spec/session/screenshot_spec.rb +2 -2
  205. data/lib/capybara/spec/session/scroll_spec.rb +119 -0
  206. data/lib/capybara/spec/session/select_spec.rb +102 -76
  207. data/lib/capybara/spec/session/selectors_spec.rb +51 -18
  208. data/lib/capybara/spec/session/sibling_spec.rb +9 -9
  209. data/lib/capybara/spec/session/text_spec.rb +26 -24
  210. data/lib/capybara/spec/session/title_spec.rb +8 -6
  211. data/lib/capybara/spec/session/uncheck_spec.rb +41 -22
  212. data/lib/capybara/spec/session/unselect_spec.rb +37 -37
  213. data/lib/capybara/spec/session/visit_spec.rb +79 -53
  214. data/lib/capybara/spec/session/window/become_closed_spec.rb +22 -19
  215. data/lib/capybara/spec/session/window/current_window_spec.rb +4 -3
  216. data/lib/capybara/spec/session/window/open_new_window_spec.rb +4 -3
  217. data/lib/capybara/spec/session/window/switch_to_window_spec.rb +25 -21
  218. data/lib/capybara/spec/session/window/window_opened_by_spec.rb +10 -5
  219. data/lib/capybara/spec/session/window/window_spec.rb +88 -54
  220. data/lib/capybara/spec/session/window/windows_spec.rb +11 -8
  221. data/lib/capybara/spec/session/window/within_window_spec.rb +17 -16
  222. data/lib/capybara/spec/session/within_spec.rb +82 -44
  223. data/lib/capybara/spec/spec_helper.rb +46 -52
  224. data/lib/capybara/spec/test_app.rb +148 -41
  225. data/lib/capybara/spec/views/animated.erb +49 -0
  226. data/lib/capybara/spec/views/form.erb +156 -42
  227. data/lib/capybara/spec/views/frame_child.erb +4 -3
  228. data/lib/capybara/spec/views/frame_one.erb +2 -1
  229. data/lib/capybara/spec/views/frame_parent.erb +1 -1
  230. data/lib/capybara/spec/views/frame_two.erb +1 -1
  231. data/lib/capybara/spec/views/initial_alert.erb +2 -1
  232. data/lib/capybara/spec/views/layout.erb +10 -0
  233. data/lib/capybara/spec/views/obscured.erb +47 -0
  234. data/lib/capybara/spec/views/offset.erb +33 -0
  235. data/lib/capybara/spec/views/path.erb +2 -2
  236. data/lib/capybara/spec/views/popup_one.erb +1 -1
  237. data/lib/capybara/spec/views/popup_two.erb +1 -1
  238. data/lib/capybara/spec/views/react.erb +45 -0
  239. data/lib/capybara/spec/views/scroll.erb +21 -0
  240. data/lib/capybara/spec/views/spatial.erb +31 -0
  241. data/lib/capybara/spec/views/tables.erb +68 -1
  242. data/lib/capybara/spec/views/with_animation.erb +81 -0
  243. data/lib/capybara/spec/views/with_base_tag.erb +2 -2
  244. data/lib/capybara/spec/views/with_dragula.erb +24 -0
  245. data/lib/capybara/spec/views/with_fixed_header_footer.erb +2 -1
  246. data/lib/capybara/spec/views/with_hover.erb +3 -2
  247. data/lib/capybara/spec/views/with_hover1.erb +10 -0
  248. data/lib/capybara/spec/views/with_html.erb +46 -11
  249. data/lib/capybara/spec/views/with_html5_svg.erb +20 -0
  250. data/lib/capybara/spec/views/with_jquery_animation.erb +24 -0
  251. data/lib/capybara/spec/views/with_js.erb +30 -5
  252. data/lib/capybara/spec/views/with_jstree.erb +26 -0
  253. data/lib/capybara/spec/views/with_namespace.erb +21 -0
  254. data/lib/capybara/spec/views/with_scope.erb +2 -2
  255. data/lib/capybara/spec/views/with_scope_other.erb +6 -0
  256. data/lib/capybara/spec/views/with_shadow.erb +31 -0
  257. data/lib/capybara/spec/views/with_slow_unload.erb +2 -1
  258. data/lib/capybara/spec/views/with_sortable_js.erb +21 -0
  259. data/lib/capybara/spec/views/with_unload_alert.erb +1 -0
  260. data/lib/capybara/spec/views/with_windows.erb +1 -1
  261. data/lib/capybara/spec/views/within_frames.erb +1 -1
  262. data/lib/capybara/version.rb +1 -1
  263. data/lib/capybara/window.rb +32 -26
  264. data/lib/capybara.rb +128 -104
  265. data/spec/basic_node_spec.rb +59 -34
  266. data/spec/capybara_spec.rb +65 -51
  267. data/spec/counter_spec.rb +35 -0
  268. data/spec/css_builder_spec.rb +101 -0
  269. data/spec/css_splitter_spec.rb +38 -0
  270. data/spec/dsl_spec.rb +84 -55
  271. data/spec/filter_set_spec.rb +24 -7
  272. data/spec/fixtures/certificate.pem +25 -0
  273. data/spec/fixtures/key.pem +27 -0
  274. data/spec/fixtures/selenium_driver_rspec_failure.rb +5 -5
  275. data/spec/fixtures/selenium_driver_rspec_success.rb +5 -5
  276. data/spec/minitest_spec.rb +49 -5
  277. data/spec/minitest_spec_spec.rb +92 -62
  278. data/spec/per_session_config_spec.rb +6 -6
  279. data/spec/rack_test_spec.rb +183 -115
  280. data/spec/regexp_dissassembler_spec.rb +250 -0
  281. data/spec/result_spec.rb +99 -39
  282. data/spec/rspec/features_spec.rb +28 -25
  283. data/spec/rspec/scenarios_spec.rb +10 -6
  284. data/spec/rspec/shared_spec_matchers.rb +418 -364
  285. data/spec/rspec/views_spec.rb +4 -3
  286. data/spec/rspec_matchers_spec.rb +35 -10
  287. data/spec/rspec_spec.rb +109 -85
  288. data/spec/sauce_spec_chrome.rb +43 -0
  289. data/spec/selector_spec.rb +392 -62
  290. data/spec/selenium_spec_chrome.rb +183 -41
  291. data/spec/selenium_spec_chrome_remote.rb +96 -0
  292. data/spec/selenium_spec_edge.rb +41 -8
  293. data/spec/selenium_spec_firefox.rb +228 -0
  294. data/spec/selenium_spec_firefox_remote.rb +94 -0
  295. data/spec/selenium_spec_ie.rb +129 -11
  296. data/spec/selenium_spec_safari.rb +162 -0
  297. data/spec/server_spec.rb +192 -81
  298. data/spec/session_spec.rb +52 -16
  299. data/spec/shared_selenium_node.rb +79 -0
  300. data/spec/shared_selenium_session.rb +460 -123
  301. data/spec/spec_helper.rb +124 -2
  302. data/spec/whitespace_normalizer_spec.rb +54 -0
  303. data/spec/xpath_builder_spec.rb +93 -0
  304. metadata +344 -45
  305. data/.yard/templates_custom/default/class/html/selectors.erb +0 -38
  306. data/.yard/templates_custom/default/class/html/setup.rb +0 -17
  307. data/.yard/yard_extensions.rb +0 -78
  308. data/lib/capybara/rspec/compound.rb +0 -90
  309. data/lib/capybara/spec/session/assert_selector.rb +0 -149
  310. data/lib/capybara/spec/session/source_spec.rb +0 -0
  311. data/lib/capybara/spec/views/with_title.erb +0 -5
  312. data/spec/selenium_spec_marionette.rb +0 -143
@@ -5,39 +5,40 @@ Capybara::SpecHelper.spec '#assert_current_path' do
5
5
  @session.visit('/with_js')
6
6
  end
7
7
 
8
- it "should not raise if the page has the given current path" do
8
+ it 'should not raise if the page has the given current path' do
9
9
  expect { @session.assert_current_path('/with_js') }.not_to raise_error
10
10
  end
11
11
 
12
- it "should allow regexp matches" do
12
+ it 'should allow regexp matches' do
13
13
  expect { @session.assert_current_path(/w[a-z]{3}_js/) }.not_to raise_error
14
14
  end
15
15
 
16
- it "should wait for current_path", requires: [:js] do
17
- @session.click_link("Change page")
18
- expect { @session.assert_current_path("/with_html") }.not_to raise_error
16
+ it 'should wait for current_path', requires: [:js] do
17
+ @session.click_link('Change page')
18
+ expect { @session.assert_current_path('/with_html') }.not_to raise_error
19
19
  end
20
20
 
21
- it "should raise if the page has not the given current_path" do
21
+ it 'should raise if the page has not the given current_path' do
22
22
  expect { @session.assert_current_path('/with_html') }.to raise_error(Capybara::ExpectationNotMet, 'expected "/with_js" to equal "/with_html"')
23
23
  end
24
24
 
25
- it "should check query options" do
25
+ it 'should check query options' do
26
26
  @session.visit('/with_js?test=test')
27
27
  expect { @session.assert_current_path('/with_js?test=test') }.not_to raise_error
28
28
  end
29
29
 
30
- it "should compare the full url" do
30
+ it 'should compare the full url' do
31
31
  expect { @session.assert_current_path(%r{\Ahttp://[^/]*/with_js\Z}, url: true) }.not_to raise_error
32
32
  end
33
33
 
34
- it "should ignore the query" do
34
+ it 'should ignore the query' do
35
35
  @session.visit('/with_js?test=test')
36
36
  expect { @session.assert_current_path('/with_js', ignore_query: true) }.not_to raise_error
37
37
  end
38
38
 
39
- it "should not cause an exception when current_url is nil" do
40
- allow_any_instance_of(Capybara::Session).to receive(:current_url) { nil }
39
+ it 'should not cause an exception when current_url is nil' do
40
+ allow(@session).to receive(:current_url).and_return(nil)
41
+ allow(@session.page).to receive(:current_url).and_return(nil) if @session.respond_to? :page
41
42
 
42
43
  expect { @session.assert_current_path(nil) }.not_to raise_error
43
44
  end
@@ -48,25 +49,26 @@ Capybara::SpecHelper.spec '#assert_no_current_path?' do
48
49
  @session.visit('/with_js')
49
50
  end
50
51
 
51
- it "should raise if the page has the given current_path" do
52
+ it 'should raise if the page has the given current_path' do
52
53
  expect { @session.assert_no_current_path('/with_js') }.to raise_error(Capybara::ExpectationNotMet)
53
54
  end
54
55
 
55
- it "should allow regexp matches" do
56
+ it 'should allow regexp matches' do
56
57
  expect { @session.assert_no_current_path(/monkey/) }.not_to raise_error
57
58
  end
58
59
 
59
- it "should wait for current_path to disappear", requires: [:js] do
60
- @session.click_link("Change page")
60
+ it 'should wait for current_path to disappear', requires: [:js] do
61
+ @session.click_link('Change page')
61
62
  expect { @session.assert_no_current_path('/with_js') }.not_to raise_error
62
63
  end
63
64
 
64
- it "should not raise if the page has not the given current_path" do
65
+ it 'should not raise if the page has not the given current_path' do
65
66
  expect { @session.assert_no_current_path('/with_html') }.not_to raise_error
66
67
  end
67
68
 
68
- it "should not cause an exception when current_url is nil" do
69
- allow_any_instance_of(Capybara::Session).to receive(:current_url) { nil }
69
+ it 'should not cause an exception when current_url is nil' do
70
+ allow(@session).to receive(:current_url).and_return(nil)
71
+ allow(@session.page).to receive(:current_url).and_return(nil) if @session.respond_to? :page
70
72
 
71
73
  expect { @session.assert_no_current_path('/with_html') }.not_to raise_error
72
74
  end
@@ -0,0 +1,143 @@
1
+ # frozen_string_literal: true
2
+
3
+ Capybara::SpecHelper.spec '#assert_selector' do
4
+ before do
5
+ @session.visit('/with_html')
6
+ end
7
+
8
+ it 'should be true if the given selector is on the page' do
9
+ @session.assert_selector(:xpath, '//p')
10
+ @session.assert_selector(:css, 'p a#foo')
11
+ @session.assert_selector("//p[contains(.,'est')]")
12
+ end
13
+
14
+ it 'should be false if the given selector is not on the page' do
15
+ expect { @session.assert_selector(:xpath, '//abbr') }.to raise_error(Capybara::ElementNotFound)
16
+ expect { @session.assert_selector(:css, 'p a#doesnotexist') }.to raise_error(Capybara::ElementNotFound)
17
+ expect { @session.assert_selector("//p[contains(.,'thisstringisnotonpage')]") }.to raise_error(Capybara::ElementNotFound)
18
+ end
19
+
20
+ it 'should use default selector' do
21
+ Capybara.default_selector = :css
22
+ expect { @session.assert_selector('p a#doesnotexist') }.to raise_error(Capybara::ElementNotFound)
23
+ @session.assert_selector('p a#foo')
24
+ end
25
+
26
+ it 'should respect scopes' do
27
+ @session.within "//p[@id='first']" do
28
+ @session.assert_selector(".//a[@id='foo']")
29
+ expect { @session.assert_selector(".//a[@id='red']") }.to raise_error(Capybara::ElementNotFound)
30
+ end
31
+ end
32
+
33
+ context 'with count' do
34
+ it 'should be true if the content is on the page the given number of times' do
35
+ @session.assert_selector('//p', count: 3)
36
+ @session.assert_selector("//p//a[@id='foo']", count: 1)
37
+ @session.assert_selector("//p[contains(.,'est')]", count: 1)
38
+ end
39
+
40
+ it 'should be false if the content is on the page the given number of times' do
41
+ expect { @session.assert_selector('//p', count: 6) }.to raise_error(Capybara::ElementNotFound)
42
+ expect { @session.assert_selector("//p//a[@id='foo']", count: 2) }.to raise_error(Capybara::ElementNotFound)
43
+ expect { @session.assert_selector("//p[contains(.,'est')]", count: 5) }.to raise_error(Capybara::ElementNotFound)
44
+ end
45
+
46
+ it "should be false if the content isn't on the page at all" do
47
+ expect { @session.assert_selector('//abbr', count: 2) }.to raise_error(Capybara::ElementNotFound)
48
+ expect { @session.assert_selector("//p//a[@id='doesnotexist']", count: 1) }.to raise_error(Capybara::ElementNotFound)
49
+ end
50
+ end
51
+
52
+ context 'with text' do
53
+ it 'should discard all matches where the given string is not contained' do
54
+ @session.assert_selector('//p//a', text: 'Redirect', count: 1)
55
+ expect { @session.assert_selector('//p', text: 'Doesnotexist') }.to raise_error(Capybara::ElementNotFound)
56
+ end
57
+
58
+ it 'should discard all matches where the given regexp is not matched' do
59
+ @session.assert_selector('//p//a', text: /re[dab]i/i, count: 1)
60
+ expect { @session.assert_selector('//p//a', text: /Red$/) }.to raise_error(Capybara::ElementNotFound)
61
+ end
62
+ end
63
+
64
+ context 'with wait', requires: [:js] do
65
+ it 'should find element if it appears before given wait duration' do
66
+ Capybara.using_wait_time(0.1) do
67
+ @session.visit('/with_js')
68
+ @session.click_link('Click me')
69
+ @session.assert_selector(:css, 'a#has-been-clicked', text: 'Has been clicked', wait: 2)
70
+ end
71
+ end
72
+ end
73
+ end
74
+
75
+ Capybara::SpecHelper.spec '#assert_no_selector' do
76
+ before do
77
+ @session.visit('/with_html')
78
+ end
79
+
80
+ it 'should be false if the given selector is on the page' do
81
+ expect { @session.assert_no_selector(:xpath, '//p') }.to raise_error(Capybara::ElementNotFound)
82
+ expect { @session.assert_no_selector(:css, 'p a#foo') }.to raise_error(Capybara::ElementNotFound)
83
+ expect { @session.assert_no_selector("//p[contains(.,'est')]") }.to raise_error(Capybara::ElementNotFound)
84
+ end
85
+
86
+ it 'should be true if the given selector is not on the page' do
87
+ @session.assert_no_selector(:xpath, '//abbr')
88
+ @session.assert_no_selector(:css, 'p a#doesnotexist')
89
+ @session.assert_no_selector("//p[contains(.,'thisstringisnotonpage')]")
90
+ end
91
+
92
+ it 'should use default selector' do
93
+ Capybara.default_selector = :css
94
+ @session.assert_no_selector('p a#doesnotexist')
95
+ expect { @session.assert_no_selector('p a#foo') }.to raise_error(Capybara::ElementNotFound)
96
+ end
97
+
98
+ it 'should respect scopes' do
99
+ @session.within "//p[@id='first']" do
100
+ expect { @session.assert_no_selector(".//a[@id='foo']") }.to raise_error(Capybara::ElementNotFound)
101
+ @session.assert_no_selector(".//a[@id='red']")
102
+ end
103
+ end
104
+
105
+ context 'with count' do
106
+ it 'should be false if the content is on the page the given number of times' do
107
+ expect { @session.assert_no_selector('//p', count: 3) }.to raise_error(Capybara::ElementNotFound)
108
+ expect { @session.assert_no_selector("//p//a[@id='foo']", count: 1) }.to raise_error(Capybara::ElementNotFound)
109
+ expect { @session.assert_no_selector("//p[contains(.,'est')]", count: 1) }.to raise_error(Capybara::ElementNotFound)
110
+ end
111
+
112
+ it 'should be true if the content is on the page the wrong number of times' do
113
+ @session.assert_no_selector('//p', count: 6)
114
+ @session.assert_no_selector("//p//a[@id='foo']", count: 2)
115
+ @session.assert_no_selector("//p[contains(.,'est')]", count: 5)
116
+ end
117
+
118
+ it "should be true if the content isn't on the page at all" do
119
+ @session.assert_no_selector('//abbr', count: 2)
120
+ @session.assert_no_selector("//p//a[@id='doesnotexist']", count: 1)
121
+ end
122
+ end
123
+
124
+ context 'with text' do
125
+ it 'should discard all matches where the given string is contained' do
126
+ expect { @session.assert_no_selector('//p//a', text: 'Redirect', count: 1) }.to raise_error(Capybara::ElementNotFound)
127
+ @session.assert_no_selector('//p', text: 'Doesnotexist')
128
+ end
129
+
130
+ it 'should discard all matches where the given regexp is matched' do
131
+ expect { @session.assert_no_selector('//p//a', text: /re[dab]i/i, count: 1) }.to raise_error(Capybara::ElementNotFound)
132
+ @session.assert_no_selector('//p//a', text: /Red$/)
133
+ end
134
+ end
135
+
136
+ context 'with wait', requires: [:js] do
137
+ it 'should not find element if it appears after given wait duration' do
138
+ @session.visit('/with_js')
139
+ @session.click_link('Click me')
140
+ @session.assert_no_selector(:css, 'a#has-been-clicked', text: 'Has been clicked', wait: 0.1)
141
+ end
142
+ end
143
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ Capybara::SpecHelper.spec '#assert_matches_style', requires: [:css] do
4
+ it 'should not raise if the elements style contains the given properties' do
5
+ @session.visit('/with_html')
6
+ expect do
7
+ @session.find(:css, '#first').assert_matches_style(display: 'block')
8
+ end.not_to raise_error
9
+ end
10
+
11
+ it "should raise error if the elements style doesn't contain the given properties" do
12
+ @session.visit('/with_html')
13
+ expect do
14
+ @session.find(:css, '#first').assert_matches_style(display: 'inline')
15
+ end.to raise_error(Capybara::ExpectationNotMet, 'Expected node to have styles {"display"=>"inline"}. Actual styles were {"display"=>"block"}')
16
+ end
17
+
18
+ it 'should wait for style', requires: %i[css js] do
19
+ @session.visit('/with_js')
20
+ el = @session.find(:css, '#change')
21
+ @session.click_link('Change size')
22
+ expect do
23
+ el.assert_matches_style({ 'font-size': '50px' }, wait: 3)
24
+ end.not_to raise_error
25
+ end
26
+ end
@@ -1,23 +1,42 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  Capybara::SpecHelper.spec '#assert_text' do
4
- it "should be true if the given text is on the page" do
4
+ it 'should be true if the given text is on the page' do
5
5
  @session.visit('/with_html')
6
- expect(@session.assert_text('est')).to eq(true)
7
- expect(@session.assert_text('Lorem')).to eq(true)
8
- expect(@session.assert_text('Redirect')).to eq(true)
9
- expect(@session.assert_text(:Redirect)).to eq(true)
10
- expect(@session.assert_text('text with whitespace')).to eq(true)
6
+ expect(@session.assert_text('est')).to be(true)
7
+ expect(@session.assert_text('Lorem')).to be(true)
8
+ expect(@session.assert_text('Redirect')).to be(true)
9
+ expect(@session.assert_text(:Redirect)).to be(true)
10
+ expect(@session.assert_text('text with whitespace')).to be(true)
11
11
  end
12
12
 
13
- it "should take scopes into account" do
13
+ it 'should support collapsing whitespace' do
14
+ @session.visit('/with_html')
15
+ expect(@session.assert_text('text with whitespace', normalize_ws: true)).to be(true)
16
+ end
17
+
18
+ context 'with enabled default collapsing whitespace' do
19
+ before { Capybara.default_normalize_ws = true }
20
+
21
+ it 'should be true if the given unnormalized text is on the page' do
22
+ @session.visit('/with_html')
23
+ expect(@session.assert_text('text with whitespace', normalize_ws: false)).to be(true)
24
+ end
25
+
26
+ it 'should support collapsing whitespace' do
27
+ @session.visit('/with_html')
28
+ expect(@session.assert_text('text with whitespace')).to be(true)
29
+ end
30
+ end
31
+
32
+ it 'should take scopes into account' do
14
33
  @session.visit('/with_html')
15
34
  @session.within("//a[@title='awesome title']") do
16
- expect(@session.assert_text('labore')).to eq(true)
35
+ expect(@session.assert_text('labore')).to be(true)
17
36
  end
18
37
  end
19
38
 
20
- it "should raise if scoped to an element which does not have the text" do
39
+ it 'should raise if scoped to an element which does not have the text' do
21
40
  @session.visit('/with_html')
22
41
  @session.within("//a[@title='awesome title']") do
23
42
  expect do
@@ -26,18 +45,18 @@ Capybara::SpecHelper.spec '#assert_text' do
26
45
  end
27
46
  end
28
47
 
29
- it "should be true if :all given and text is invisible." do
48
+ it 'should be true if :all given and text is invisible.' do
30
49
  @session.visit('/with_html')
31
- expect(@session.assert_text(:all, 'Some of this text is hidden!')).to eq(true)
50
+ expect(@session.assert_text(:all, 'Some of this text is hidden!')).to be(true)
32
51
  end
33
52
 
34
- it "should be true if `Capybara.ignore_hidden_elements = true` and text is invisible." do
53
+ it 'should be true if `Capybara.ignore_hidden_elements = true` and text is invisible.' do
35
54
  Capybara.ignore_hidden_elements = false
36
55
  @session.visit('/with_html')
37
- expect(@session.assert_text('Some of this text is hidden!')).to eq(true)
56
+ expect(@session.assert_text('Some of this text is hidden!')).to be(true)
38
57
  end
39
58
 
40
- it "should raise error with a helpful message if the requested text is present but invisible" do
59
+ it 'should raise error with a helpful message if the requested text is present but invisible' do
41
60
  @session.visit('/with_html')
42
61
  el = @session.find(:css, '#hidden-text')
43
62
  expect do
@@ -45,14 +64,14 @@ Capybara::SpecHelper.spec '#assert_text' do
45
64
  end.to raise_error(Capybara::ExpectationNotMet, /it was found 1 time including non-visible text/)
46
65
  end
47
66
 
48
- it "should raise error with a helpful message if the requested text is present but with incorrect case" do
67
+ it 'should raise error with a helpful message if the requested text is present but with incorrect case' do
49
68
  @session.visit('/with_html')
50
69
  expect do
51
70
  @session.assert_text('Text With Whitespace')
52
71
  end.to raise_error(Capybara::ExpectationNotMet, /it was found 1 time using a case insensitive search/)
53
72
  end
54
73
 
55
- it "should raise error with helpful message if requested text is present but invisible and with incorrect case", requires: [:js] do
74
+ it 'should raise error with helpful message if requested text is present but invisible and with incorrect case', requires: [:js] do
56
75
  @session.visit('/with_html')
57
76
  el = @session.find(:css, '#uppercase')
58
77
  expect do
@@ -60,54 +79,55 @@ Capybara::SpecHelper.spec '#assert_text' do
60
79
  end.to raise_error(Capybara::ExpectationNotMet, /it was found 1 time using a case insensitive search and it was found 1 time including non-visible text/)
61
80
  end
62
81
 
63
- it "should raise the correct error if requested text is missing but contains regex special characters" do
82
+ it 'should raise the correct error if requested text is missing but contains regex special characters' do
64
83
  @session.visit('/with_html')
65
84
  expect do
66
85
  @session.assert_text('[]*.')
67
86
  end.to raise_error(Capybara::ExpectationNotMet, /expected to find text "\[\]\*\."/)
68
87
  end
69
88
 
70
- it "should be true if the text in the page matches given regexp" do
89
+ it 'should be true if the text in the page matches given regexp' do
71
90
  @session.visit('/with_html')
72
- expect(@session.assert_text(/Lorem/)).to eq(true)
91
+ expect(@session.assert_text(/Lorem/)).to be(true)
73
92
  end
74
93
 
75
- it "should be raise error if the text in the page doesn't match given regexp" do
94
+ it "should raise error if the text in the page doesn't match given regexp" do
76
95
  @session.visit('/with_html')
77
96
  expect do
78
97
  @session.assert_text(/xxxxyzzz/)
79
- end.to raise_error(Capybara::ExpectationNotMet, /\Aexpected to find text matching \/xxxxyzzz\/ in "This is a test\\nHeader Class(.+)"\Z/)
98
+ end.to raise_error(Capybara::ExpectationNotMet, %r{\Aexpected to find text matching /xxxxyzzz/ in "This is a test\\nHeader Class(.+)"\Z})
80
99
  end
81
100
 
82
- it "should escape any characters that would have special meaning in a regexp" do
101
+ it 'should escape any characters that would have special meaning in a regexp' do
83
102
  @session.visit('/with_html')
84
103
  expect do
85
104
  @session.assert_text('.orem')
86
105
  end.to raise_error(Capybara::ExpectationNotMet)
87
106
  end
88
107
 
89
- it "should wait for text to appear", requires: [:js] do
108
+ it 'should wait for text to appear', requires: [:js] do
109
+ Capybara.default_max_wait_time = 2
90
110
  @session.visit('/with_js')
91
111
  @session.click_link('Click me')
92
- expect(@session.assert_text('Has been clicked')).to eq(true)
112
+ expect(@session.assert_text('Has been clicked')).to be(true)
93
113
  end
94
114
 
95
- context "with between" do
96
- it "should be true if the text occurs within the range given" do
115
+ context 'with between' do
116
+ it 'should be true if the text occurs within the range given' do
97
117
  @session.visit('/with_count')
98
- expect(@session.assert_text('count', between: 1..3)).to eq(true)
118
+ expect(@session.assert_text('count', between: 1..3)).to be(true)
99
119
  end
100
120
 
101
- it "should be false if the text occurs more or fewer times than range" do
121
+ it 'should be false if the text occurs more or fewer times than range' do
102
122
  @session.visit('/with_html')
103
123
  expect do
104
124
  @session.find(:css, '.number').assert_text(/\d/, between: 0..1)
105
- end.to raise_error(Capybara::ExpectationNotMet, "expected to find text matching /\\d/ between 0 and 1 times but found 2 times in \"42\"")
125
+ end.to raise_error(Capybara::ExpectationNotMet, 'expected to find text matching /\\d/ between 0 and 1 times but found 2 times in "42"')
106
126
  end
107
127
  end
108
128
 
109
- context "with wait", requires: [:js] do
110
- it "should find element if it appears before given wait duration" do
129
+ context 'with wait', requires: [:js] do
130
+ it 'should find element if it appears before given wait duration' do
111
131
  Capybara.using_wait_time(0) do
112
132
  @session.visit('/with_js')
113
133
  @session.find(:css, '#reload-list').click
@@ -115,7 +135,7 @@ Capybara::SpecHelper.spec '#assert_text' do
115
135
  end
116
136
  end
117
137
 
118
- it "should raise error if it appears after given wait duration" do
138
+ it 'should raise error if it appears after given wait duration' do
119
139
  Capybara.using_wait_time(0) do
120
140
  @session.visit('/with_js')
121
141
  @session.find(:css, '#reload-list').click
@@ -128,7 +148,7 @@ Capybara::SpecHelper.spec '#assert_text' do
128
148
  end
129
149
 
130
150
  context 'with multiple count filters' do
131
- before(:each) do
151
+ before do
132
152
  @session.visit('/with_html')
133
153
  end
134
154
 
@@ -137,58 +157,62 @@ Capybara::SpecHelper.spec '#assert_text' do
137
157
  minimum: 6,
138
158
  maximum: 0,
139
159
  between: 0..4 }
140
- expect { @session.assert_text('Header', o) }.not_to raise_error
160
+ expect { @session.assert_text('Header', **o) }.not_to raise_error
141
161
  end
162
+
142
163
  context 'with no :count expectation' do
143
164
  it 'fails if :minimum is not met' do
144
165
  o = { minimum: 6,
145
166
  maximum: 5,
146
167
  between: 2..7 }
147
- expect { @session.assert_text('Header', o) }.to raise_error(Capybara::ExpectationNotMet)
168
+ expect { @session.assert_text('Header', **o) }.to raise_error(Capybara::ExpectationNotMet)
148
169
  end
170
+
149
171
  it 'fails if :maximum is not met' do
150
172
  o = { minimum: 0,
151
173
  maximum: 0,
152
174
  between: 2..7 }
153
- expect { @session.assert_text('Header', o) }.to raise_error(Capybara::ExpectationNotMet)
175
+ expect { @session.assert_text('Header', **o) }.to raise_error(Capybara::ExpectationNotMet)
154
176
  end
177
+
155
178
  it 'fails if :between is not met' do
156
179
  o = { minimum: 0,
157
180
  maximum: 5,
158
181
  between: 0..4 }
159
- expect { @session.assert_text('Header', o) }.to raise_error(Capybara::ExpectationNotMet)
182
+ expect { @session.assert_text('Header', **o) }.to raise_error(Capybara::ExpectationNotMet)
160
183
  end
184
+
161
185
  it 'succeeds if all combineable expectations are met' do
162
186
  o = { minimum: 0,
163
187
  maximum: 5,
164
188
  between: 2..7 }
165
- expect { @session.assert_text('Header', o) }.not_to raise_error
189
+ expect { @session.assert_text('Header', **o) }.not_to raise_error
166
190
  end
167
191
  end
168
192
  end
169
193
  end
170
194
 
171
195
  Capybara::SpecHelper.spec '#assert_no_text' do
172
- it "should raise error if the given text is on the page at least once" do
196
+ it 'should raise error if the given text is on the page at least once' do
173
197
  @session.visit('/with_html')
174
198
  expect do
175
199
  @session.assert_no_text('Lorem')
176
200
  end.to raise_error(Capybara::ExpectationNotMet, /\Aexpected not to find text "Lorem" in "This is a test.*"\z/)
177
201
  end
178
202
 
179
- it "should be true if scoped to an element which does not have the text" do
203
+ it 'should be true if scoped to an element which does not have the text' do
180
204
  @session.visit('/with_html')
181
205
  @session.within("//a[@title='awesome title']") do
182
- expect(@session.assert_no_text('monkey')).to eq(true)
206
+ expect(@session.assert_no_text('monkey')).to be(true)
183
207
  end
184
208
  end
185
209
 
186
- it "should be true if the given text is on the page but not visible" do
210
+ it 'should be true if the given text is on the page but not visible' do
187
211
  @session.visit('/with_html')
188
- expect(@session.assert_no_text('Inside element with hidden ancestor')).to eq(true)
212
+ expect(@session.assert_no_text('Inside element with hidden ancestor')).to be(true)
189
213
  end
190
214
 
191
- it "should raise error if :all given and text is invisible." do
215
+ it 'should raise error if :all given and text is invisible.' do
192
216
  @session.visit('/with_html')
193
217
  el = @session.find(:css, '#hidden-text', visible: false)
194
218
  expect do
@@ -196,7 +220,7 @@ Capybara::SpecHelper.spec '#assert_no_text' do
196
220
  end.to raise_error(Capybara::ExpectationNotMet, 'expected not to find text "Some of this text is hidden!" in "Some of this text is hidden!"')
197
221
  end
198
222
 
199
- it "should raise error if :all given and text is invisible." do
223
+ it 'should raise error if :all given and text is invisible.' do
200
224
  @session.visit('/with_html')
201
225
  el = @session.find(:css, '#some-hidden-text', visible: false)
202
226
  expect do
@@ -209,22 +233,22 @@ Capybara::SpecHelper.spec '#assert_no_text' do
209
233
  @session.assert_no_text(/xxxxyzzz/)
210
234
  end
211
235
 
212
- context "with count" do
213
- it "should be true if the text occurs within the range given" do
236
+ context 'with count' do
237
+ it 'should be true if the text occurs within the range given' do
214
238
  @session.visit('/with_count')
215
- expect(@session.assert_text('count', count: 2)).to eq(true)
239
+ expect(@session.assert_text('count', count: 2)).to be(true)
216
240
  end
217
241
 
218
- it "should be false if the text occurs more or fewer times than range" do
242
+ it 'should be false if the text occurs more or fewer times than range' do
219
243
  @session.visit('/with_html')
220
244
  expect do
221
245
  @session.find(:css, '.number').assert_text(/\d/, count: 1)
222
- end.to raise_error(Capybara::ExpectationNotMet, "expected to find text matching /\\d/ 1 time but found 2 times in \"42\"")
246
+ end.to raise_error(Capybara::ExpectationNotMet, 'expected to find text matching /\\d/ 1 time but found 2 times in "42"')
223
247
  end
224
248
  end
225
249
 
226
- context "with wait", requires: [:js] do
227
- it "should not find element if it appears after given wait duration" do
250
+ context 'with wait', requires: [:js] do
251
+ it 'should not find element if it appears after given wait duration' do
228
252
  @session.visit('/with_js')
229
253
  @session.click_link('Click me')
230
254
  @session.find(:css, '#reload-list').click
@@ -11,13 +11,13 @@ Capybara::SpecHelper.spec '#assert_title' do
11
11
  end.not_to raise_error
12
12
  end
13
13
 
14
- it "should not raise when given an empty string" do
14
+ it 'should not raise when given an empty string' do
15
15
  expect do
16
16
  @session.assert_title('')
17
17
  end.not_to raise_error
18
18
  end
19
19
 
20
- it "should allow regexp matches" do
20
+ it 'should allow regexp matches' do
21
21
  expect do
22
22
  @session.assert_title(/w[a-z]{3}_js/)
23
23
  end.not_to raise_error
@@ -27,10 +27,10 @@ Capybara::SpecHelper.spec '#assert_title' do
27
27
  end.to raise_error(Capybara::ExpectationNotMet, 'expected "with_js" to match /w[a-z]{10}_js/')
28
28
  end
29
29
 
30
- it "should wait for title", requires: [:js] do
31
- @session.click_link("Change title")
30
+ it 'should wait for title', requires: [:js] do
31
+ @session.click_link('Change title')
32
32
  expect do
33
- @session.assert_title("changed title", wait: 3)
33
+ @session.assert_title('changed title', wait: 3)
34
34
  end.not_to raise_error
35
35
  end
36
36
 
@@ -40,12 +40,12 @@ Capybara::SpecHelper.spec '#assert_title' do
40
40
  end.to raise_error(Capybara::ExpectationNotMet, 'expected "with_js" to include "monkey"')
41
41
  end
42
42
 
43
- it "should not normalize given title" do
43
+ it 'should not normalize given title' do
44
44
  @session.visit('/with_js')
45
45
  expect { @session.assert_title(' with_js ') }.to raise_error(Capybara::ExpectationNotMet)
46
46
  end
47
47
 
48
- it "should match correctly normalized title" do
48
+ it 'should match correctly normalized title' do
49
49
  uri = Addressable::URI.parse('/with_title')
50
50
  uri.query_values = { title: '   with space  title ' }
51
51
  @session.visit(uri.to_s)
@@ -53,7 +53,7 @@ Capybara::SpecHelper.spec '#assert_title' do
53
53
  expect { @session.assert_title('with space title') }.to raise_error(Capybara::ExpectationNotMet)
54
54
  end
55
55
 
56
- it "should not normalize given title in error message" do
56
+ it 'should not normalize given title in error message' do
57
57
  expect do
58
58
  @session.assert_title(2)
59
59
  end.to raise_error(Capybara::ExpectationNotMet, 'expected "with_js" to include "2"')
@@ -65,21 +65,21 @@ Capybara::SpecHelper.spec '#assert_no_title' do
65
65
  @session.visit('/with_js')
66
66
  end
67
67
 
68
- it "should raise error if the title contains the given string" do
68
+ it 'should raise error if the title contains the given string' do
69
69
  expect do
70
70
  @session.assert_no_title('with_j')
71
71
  end.to raise_error(Capybara::ExpectationNotMet, 'expected "with_js" not to include "with_j"')
72
72
  end
73
73
 
74
- it "should allow regexp matches" do
74
+ it 'should allow regexp matches' do
75
75
  expect do
76
76
  @session.assert_no_title(/w[a-z]{3}_js/)
77
77
  end.to raise_error(Capybara::ExpectationNotMet, 'expected "with_js" not to match /w[a-z]{3}_js/')
78
78
  @session.assert_no_title(/monkey/)
79
79
  end
80
80
 
81
- it "should wait for title to disappear", requires: [:js] do
82
- @session.click_link("Change title")
81
+ it 'should wait for title to disappear', requires: [:js] do
82
+ @session.click_link('Change title')
83
83
  expect do
84
84
  @session.assert_no_title('with_js', wait: 3)
85
85
  end.not_to raise_error