capybara 3.0.0 → 3.36.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 (308) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +1 -1
  3. data/History.md +777 -10
  4. data/License.txt +1 -1
  5. data/README.md +75 -58
  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 +34 -9
  10. data/lib/capybara/dsl.rb +14 -6
  11. data/lib/capybara/helpers.rb +52 -7
  12. data/lib/capybara/minitest/spec.rb +173 -84
  13. data/lib/capybara/minitest.rb +250 -144
  14. data/lib/capybara/node/actions.rb +248 -124
  15. data/lib/capybara/node/base.rb +34 -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 +339 -113
  19. data/lib/capybara/node/finders.rb +95 -82
  20. data/lib/capybara/node/matchers.rb +338 -157
  21. data/lib/capybara/node/simple.rb +54 -15
  22. data/lib/capybara/queries/active_element_query.rb +18 -0
  23. data/lib/capybara/queries/ancestor_query.rb +9 -10
  24. data/lib/capybara/queries/base_query.rb +25 -18
  25. data/lib/capybara/queries/current_path_query.rb +16 -6
  26. data/lib/capybara/queries/match_query.rb +11 -0
  27. data/lib/capybara/queries/selector_query.rb +600 -103
  28. data/lib/capybara/queries/sibling_query.rb +9 -7
  29. data/lib/capybara/queries/style_query.rb +45 -0
  30. data/lib/capybara/queries/text_query.rb +40 -22
  31. data/lib/capybara/queries/title_query.rb +2 -2
  32. data/lib/capybara/rack_test/browser.rb +47 -28
  33. data/lib/capybara/rack_test/driver.rb +12 -3
  34. data/lib/capybara/rack_test/errors.rb +6 -0
  35. data/lib/capybara/rack_test/form.rb +53 -50
  36. data/lib/capybara/rack_test/node.rb +114 -37
  37. data/lib/capybara/rails.rb +1 -1
  38. data/lib/capybara/registration_container.rb +44 -0
  39. data/lib/capybara/registrations/drivers.rb +42 -0
  40. data/lib/capybara/registrations/patches/puma_ssl.rb +29 -0
  41. data/lib/capybara/registrations/servers.rb +45 -0
  42. data/lib/capybara/result.rb +86 -52
  43. data/lib/capybara/rspec/features.rb +8 -10
  44. data/lib/capybara/rspec/matcher_proxies.rb +39 -18
  45. data/lib/capybara/rspec/matchers/base.rb +111 -0
  46. data/lib/capybara/rspec/matchers/become_closed.rb +33 -0
  47. data/lib/capybara/rspec/matchers/compound.rb +88 -0
  48. data/lib/capybara/rspec/matchers/count_sugar.rb +37 -0
  49. data/lib/capybara/rspec/matchers/have_ancestor.rb +28 -0
  50. data/lib/capybara/rspec/matchers/have_current_path.rb +29 -0
  51. data/lib/capybara/rspec/matchers/have_selector.rb +77 -0
  52. data/lib/capybara/rspec/matchers/have_sibling.rb +27 -0
  53. data/lib/capybara/rspec/matchers/have_text.rb +33 -0
  54. data/lib/capybara/rspec/matchers/have_title.rb +29 -0
  55. data/lib/capybara/rspec/matchers/match_selector.rb +27 -0
  56. data/lib/capybara/rspec/matchers/match_style.rb +43 -0
  57. data/lib/capybara/rspec/matchers/spatial_sugar.rb +39 -0
  58. data/lib/capybara/rspec/matchers.rb +138 -316
  59. data/lib/capybara/rspec.rb +3 -2
  60. data/lib/capybara/selector/builders/css_builder.rb +84 -0
  61. data/lib/capybara/selector/builders/xpath_builder.rb +71 -0
  62. data/lib/capybara/selector/css.rb +89 -12
  63. data/lib/capybara/selector/definition/button.rb +68 -0
  64. data/lib/capybara/selector/definition/checkbox.rb +26 -0
  65. data/lib/capybara/selector/definition/css.rb +10 -0
  66. data/lib/capybara/selector/definition/datalist_input.rb +35 -0
  67. data/lib/capybara/selector/definition/datalist_option.rb +25 -0
  68. data/lib/capybara/selector/definition/element.rb +28 -0
  69. data/lib/capybara/selector/definition/field.rb +40 -0
  70. data/lib/capybara/selector/definition/fieldset.rb +14 -0
  71. data/lib/capybara/selector/definition/file_field.rb +13 -0
  72. data/lib/capybara/selector/definition/fillable_field.rb +33 -0
  73. data/lib/capybara/selector/definition/frame.rb +17 -0
  74. data/lib/capybara/selector/definition/id.rb +6 -0
  75. data/lib/capybara/selector/definition/label.rb +62 -0
  76. data/lib/capybara/selector/definition/link.rb +54 -0
  77. data/lib/capybara/selector/definition/link_or_button.rb +16 -0
  78. data/lib/capybara/selector/definition/option.rb +27 -0
  79. data/lib/capybara/selector/definition/radio_button.rb +27 -0
  80. data/lib/capybara/selector/definition/select.rb +81 -0
  81. data/lib/capybara/selector/definition/table.rb +109 -0
  82. data/lib/capybara/selector/definition/table_row.rb +21 -0
  83. data/lib/capybara/selector/definition/xpath.rb +5 -0
  84. data/lib/capybara/selector/definition.rb +279 -0
  85. data/lib/capybara/selector/filter.rb +1 -0
  86. data/lib/capybara/selector/filter_set.rb +72 -27
  87. data/lib/capybara/selector/filters/base.rb +45 -2
  88. data/lib/capybara/selector/filters/expression_filter.rb +5 -6
  89. data/lib/capybara/selector/filters/locator_filter.rb +29 -0
  90. data/lib/capybara/selector/filters/node_filter.rb +18 -4
  91. data/lib/capybara/selector/regexp_disassembler.rb +214 -0
  92. data/lib/capybara/selector/selector.rb +85 -200
  93. data/lib/capybara/selector/xpath_extensions.rb +17 -0
  94. data/lib/capybara/selector.rb +226 -537
  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 +296 -238
  100. data/lib/capybara/selenium/driver_specializations/chrome_driver.rb +117 -0
  101. data/lib/capybara/selenium/driver_specializations/edge_driver.rb +124 -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 +76 -0
  110. data/lib/capybara/selenium/logger_suppressor.rb +40 -0
  111. data/lib/capybara/selenium/node.rb +436 -166
  112. data/lib/capybara/selenium/nodes/chrome_node.rb +137 -0
  113. data/lib/capybara/selenium/nodes/edge_node.rb +104 -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/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 +45 -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/animation_disabler.rb +69 -0
  124. data/lib/capybara/server/checker.rb +44 -0
  125. data/lib/capybara/server/middleware.rb +71 -0
  126. data/lib/capybara/server.rb +58 -67
  127. data/lib/capybara/session/config.rb +38 -6
  128. data/lib/capybara/session/matchers.rb +26 -19
  129. data/lib/capybara/session.rb +258 -190
  130. data/lib/capybara/spec/public/jquery.js +5 -5
  131. data/lib/capybara/spec/public/offset.js +6 -0
  132. data/lib/capybara/spec/public/test.js +122 -8
  133. data/lib/capybara/spec/session/accept_alert_spec.rb +11 -11
  134. data/lib/capybara/spec/session/accept_confirm_spec.rb +3 -3
  135. data/lib/capybara/spec/session/accept_prompt_spec.rb +9 -10
  136. data/lib/capybara/spec/session/active_element_spec.rb +31 -0
  137. data/lib/capybara/spec/session/all_spec.rb +135 -42
  138. data/lib/capybara/spec/session/ancestor_spec.rb +24 -19
  139. data/lib/capybara/spec/session/assert_all_of_selectors_spec.rb +67 -38
  140. data/lib/capybara/spec/session/{assert_current_path.rb → assert_current_path_spec.rb} +20 -18
  141. data/lib/capybara/spec/session/assert_selector_spec.rb +143 -0
  142. data/lib/capybara/spec/session/assert_style_spec.rb +26 -0
  143. data/lib/capybara/spec/session/{assert_text.rb → assert_text_spec.rb} +62 -38
  144. data/lib/capybara/spec/session/{assert_title.rb → assert_title_spec.rb} +12 -12
  145. data/lib/capybara/spec/session/attach_file_spec.rb +120 -72
  146. data/lib/capybara/spec/session/body_spec.rb +11 -13
  147. data/lib/capybara/spec/session/check_spec.rb +111 -51
  148. data/lib/capybara/spec/session/choose_spec.rb +62 -30
  149. data/lib/capybara/spec/session/click_button_spec.rb +227 -161
  150. data/lib/capybara/spec/session/click_link_or_button_spec.rb +49 -30
  151. data/lib/capybara/spec/session/click_link_spec.rb +78 -55
  152. data/lib/capybara/spec/session/current_scope_spec.rb +7 -7
  153. data/lib/capybara/spec/session/current_url_spec.rb +44 -37
  154. data/lib/capybara/spec/session/dismiss_confirm_spec.rb +3 -3
  155. data/lib/capybara/spec/session/dismiss_prompt_spec.rb +2 -2
  156. data/lib/capybara/spec/session/element/{assert_match_selector.rb → assert_match_selector_spec.rb} +11 -9
  157. data/lib/capybara/spec/session/element/match_css_spec.rb +18 -10
  158. data/lib/capybara/spec/session/element/match_xpath_spec.rb +8 -6
  159. data/lib/capybara/spec/session/element/matches_selector_spec.rb +70 -56
  160. data/lib/capybara/spec/session/evaluate_async_script_spec.rb +7 -7
  161. data/lib/capybara/spec/session/evaluate_script_spec.rb +28 -8
  162. data/lib/capybara/spec/session/execute_script_spec.rb +8 -7
  163. data/lib/capybara/spec/session/fill_in_spec.rb +104 -44
  164. data/lib/capybara/spec/session/find_button_spec.rb +23 -23
  165. data/lib/capybara/spec/session/find_by_id_spec.rb +8 -8
  166. data/lib/capybara/spec/session/find_field_spec.rb +33 -31
  167. data/lib/capybara/spec/session/find_link_spec.rb +32 -14
  168. data/lib/capybara/spec/session/find_spec.rb +236 -141
  169. data/lib/capybara/spec/session/first_spec.rb +44 -43
  170. data/lib/capybara/spec/session/frame/frame_title_spec.rb +6 -6
  171. data/lib/capybara/spec/session/frame/frame_url_spec.rb +6 -6
  172. data/lib/capybara/spec/session/frame/switch_to_frame_spec.rb +32 -20
  173. data/lib/capybara/spec/session/frame/within_frame_spec.rb +44 -19
  174. data/lib/capybara/spec/session/go_back_spec.rb +1 -1
  175. data/lib/capybara/spec/session/go_forward_spec.rb +1 -1
  176. data/lib/capybara/spec/session/has_all_selectors_spec.rb +18 -18
  177. data/lib/capybara/spec/session/has_ancestor_spec.rb +46 -0
  178. data/lib/capybara/spec/session/has_any_selectors_spec.rb +29 -0
  179. data/lib/capybara/spec/session/has_button_spec.rb +92 -12
  180. data/lib/capybara/spec/session/has_css_spec.rb +271 -137
  181. data/lib/capybara/spec/session/has_current_path_spec.rb +48 -33
  182. data/lib/capybara/spec/session/has_field_spec.rb +137 -58
  183. data/lib/capybara/spec/session/has_link_spec.rb +30 -6
  184. data/lib/capybara/spec/session/has_none_selectors_spec.rb +26 -24
  185. data/lib/capybara/spec/session/has_select_spec.rb +75 -47
  186. data/lib/capybara/spec/session/has_selector_spec.rb +102 -69
  187. data/lib/capybara/spec/session/has_sibling_spec.rb +50 -0
  188. data/lib/capybara/spec/session/has_table_spec.rb +170 -4
  189. data/lib/capybara/spec/session/has_text_spec.rb +108 -52
  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 +35 -0
  195. data/lib/capybara/spec/session/node_spec.rb +871 -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 +52 -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 +117 -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 +40 -21
  212. data/lib/capybara/spec/session/unselect_spec.rb +37 -37
  213. data/lib/capybara/spec/session/visit_spec.rb +59 -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 +10 -7
  221. data/lib/capybara/spec/session/window/within_window_spec.rb +17 -16
  222. data/lib/capybara/spec/session/within_spec.rb +69 -44
  223. data/lib/capybara/spec/spec_helper.rb +41 -53
  224. data/lib/capybara/spec/test_app.rb +79 -40
  225. data/lib/capybara/spec/views/animated.erb +49 -0
  226. data/lib/capybara/spec/views/form.erb +134 -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 +43 -10
  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_other.erb +6 -0
  255. data/lib/capybara/spec/views/with_slow_unload.erb +2 -1
  256. data/lib/capybara/spec/views/with_sortable_js.erb +21 -0
  257. data/lib/capybara/spec/views/with_unload_alert.erb +1 -0
  258. data/lib/capybara/spec/views/with_windows.erb +1 -1
  259. data/lib/capybara/spec/views/within_frames.erb +1 -1
  260. data/lib/capybara/version.rb +1 -1
  261. data/lib/capybara/window.rb +31 -25
  262. data/lib/capybara.rb +120 -100
  263. data/spec/basic_node_spec.rb +59 -34
  264. data/spec/capybara_spec.rb +54 -52
  265. data/spec/css_builder_spec.rb +101 -0
  266. data/spec/css_splitter_spec.rb +38 -0
  267. data/spec/dsl_spec.rb +80 -53
  268. data/spec/filter_set_spec.rb +24 -7
  269. data/spec/fixtures/certificate.pem +25 -0
  270. data/spec/fixtures/key.pem +27 -0
  271. data/spec/fixtures/selenium_driver_rspec_failure.rb +4 -4
  272. data/spec/fixtures/selenium_driver_rspec_success.rb +4 -4
  273. data/spec/minitest_spec.rb +38 -5
  274. data/spec/minitest_spec_spec.rb +88 -62
  275. data/spec/per_session_config_spec.rb +5 -5
  276. data/spec/rack_test_spec.rb +169 -115
  277. data/spec/regexp_dissassembler_spec.rb +250 -0
  278. data/spec/result_spec.rb +86 -33
  279. data/spec/rspec/features_spec.rb +26 -23
  280. data/spec/rspec/scenarios_spec.rb +8 -4
  281. data/spec/rspec/shared_spec_matchers.rb +393 -363
  282. data/spec/rspec/views_spec.rb +4 -3
  283. data/spec/rspec_matchers_spec.rb +10 -10
  284. data/spec/rspec_spec.rb +109 -85
  285. data/spec/sauce_spec_chrome.rb +43 -0
  286. data/spec/selector_spec.rb +391 -61
  287. data/spec/selenium_spec_chrome.rb +180 -41
  288. data/spec/selenium_spec_chrome_remote.rb +101 -0
  289. data/spec/selenium_spec_edge.rb +28 -8
  290. data/spec/selenium_spec_firefox.rb +211 -0
  291. data/spec/selenium_spec_firefox_remote.rb +80 -0
  292. data/spec/selenium_spec_ie.rb +127 -11
  293. data/spec/selenium_spec_safari.rb +156 -0
  294. data/spec/server_spec.rb +177 -78
  295. data/spec/session_spec.rb +52 -16
  296. data/spec/shared_selenium_node.rb +79 -0
  297. data/spec/shared_selenium_session.rb +455 -123
  298. data/spec/spec_helper.rb +91 -2
  299. data/spec/xpath_builder_spec.rb +93 -0
  300. metadata +343 -42
  301. data/.yard/templates_custom/default/class/html/selectors.erb +0 -38
  302. data/.yard/templates_custom/default/class/html/setup.rb +0 -17
  303. data/.yard/yard_extensions.rb +0 -78
  304. data/lib/capybara/rspec/compound.rb +0 -90
  305. data/lib/capybara/spec/session/assert_selector.rb +0 -149
  306. data/lib/capybara/spec/session/source_spec.rb +0 -0
  307. data/lib/capybara/spec/views/with_title.erb +0 -5
  308. data/spec/selenium_spec_marionette.rb +0 -143
@@ -5,73 +5,73 @@ Capybara::SpecHelper.spec '#has_current_path?' do
5
5
  @session.visit('/with_js')
6
6
  end
7
7
 
8
- it "should be true if the page has the given current path" do
8
+ it 'should be true if the page has the given current path' do
9
9
  expect(@session).to have_current_path('/with_js')
10
10
  end
11
11
 
12
- it "should allow regexp matches" do
12
+ it 'should allow regexp matches' do
13
13
  expect(@session).to have_current_path(/w[a-z]{3}_js/)
14
14
  expect(@session).not_to have_current_path(/monkey/)
15
15
  end
16
16
 
17
- it "should not raise an error when non-http" do
17
+ it 'should not raise an error when non-http' do
18
18
  @session.reset_session!
19
19
  expect(@session.has_current_path?(/monkey/)).to eq false
20
- expect(@session.has_current_path?("/with_js")).to eq false
20
+ expect(@session.has_current_path?('/with_js')).to eq false
21
21
  end
22
22
 
23
- it "should handle non-escaped query options" do
24
- @session.click_link("Non-escaped query options")
25
- expect(@session).to have_current_path("/with_html?options[]=things")
23
+ it 'should handle non-escaped query options' do
24
+ @session.click_link('Non-escaped query options')
25
+ expect(@session).to have_current_path('/with_html?options[]=things')
26
26
  end
27
27
 
28
- it "should handle escaped query options" do
29
- @session.click_link("Escaped query options")
30
- expect(@session).to have_current_path("/with_html?options%5B%5D=things")
28
+ it 'should handle escaped query options' do
29
+ @session.click_link('Escaped query options')
30
+ expect(@session).to have_current_path('/with_html?options%5B%5D=things')
31
31
  end
32
32
 
33
- it "should wait for current_path", requires: [:js] do
34
- @session.click_link("Change page")
35
- expect(@session).to have_current_path("/with_html", wait: 3)
33
+ it 'should wait for current_path', requires: [:js] do
34
+ @session.click_link('Change page')
35
+ expect(@session).to have_current_path('/with_html', wait: 3)
36
36
  end
37
37
 
38
- it "should be false if the page has not the given current_path" do
38
+ it 'should be false if the page has not the given current_path' do
39
39
  expect(@session).not_to have_current_path('/with_html')
40
40
  end
41
41
 
42
- it "should check query options" do
42
+ it 'should check query options' do
43
43
  @session.visit('/with_js?test=test')
44
44
  expect(@session).to have_current_path('/with_js?test=test')
45
45
  end
46
46
 
47
- it "should compare the full url if url: true is used" do
47
+ it 'should compare the full url if url: true is used' do
48
48
  expect(@session).to have_current_path(%r{\Ahttp://[^/]*/with_js\Z}, url: true)
49
49
  domain_port = if @session.respond_to?(:server) && @session.server
50
50
  "#{@session.server.host}:#{@session.server.port}"
51
51
  else
52
- "www.example.com"
52
+ 'www.example.com'
53
53
  end
54
54
  expect(@session).to have_current_path("http://#{domain_port}/with_js", url: true)
55
55
  end
56
56
 
57
- it "should not compare the full url if url: true is not passed" do
57
+ it 'should not compare the full url if url: true is not passed' do
58
58
  expect(@session).to have_current_path(%r{^/with_js\Z})
59
59
  expect(@session).to have_current_path('/with_js')
60
60
  end
61
61
 
62
- it "should not compare the full url if url: false is passed" do
62
+ it 'should not compare the full url if url: false is passed' do
63
63
  expect(@session).to have_current_path(%r{^/with_js\Z}, url: false)
64
64
  expect(@session).to have_current_path('/with_js', url: false)
65
65
  end
66
66
 
67
- it "should default to full url if value is a url" do
67
+ it 'should default to full url if value is a url' do
68
68
  url = @session.current_url
69
69
  expect(url).to match(/with_js$/)
70
70
  expect(@session).to have_current_path(url)
71
- expect(@session).not_to have_current_path("http://www.not_example.com/with_js")
71
+ expect(@session).not_to have_current_path('http://www.not_example.com/with_js')
72
72
  end
73
73
 
74
- it "should ignore the query" do
74
+ it 'should ignore the query' do
75
75
  @session.visit('/with_js?test=test')
76
76
  expect(@session).to have_current_path('/with_js?test=test')
77
77
  expect(@session).to have_current_path('/with_js', ignore_query: true)
@@ -80,8 +80,9 @@ Capybara::SpecHelper.spec '#has_current_path?' do
80
80
  expect(@session).to have_current_path(uri.to_s, ignore_query: true)
81
81
  end
82
82
 
83
- it "should not raise an exception if the current_url is nil" do
84
- allow_any_instance_of(Capybara::Session).to receive(:current_url) { nil }
83
+ it 'should not raise an exception if the current_url is nil' do
84
+ allow(@session).to receive(:current_url).and_return(nil)
85
+ allow(@session.page).to receive(:current_url).and_return(nil) if @session.respond_to? :page
85
86
 
86
87
  # Without ignore_query option
87
88
  expect do
@@ -93,6 +94,13 @@ Capybara::SpecHelper.spec '#has_current_path?' do
93
94
  expect(@session).to have_current_path(nil, ignore_query: true)
94
95
  end.not_to raise_exception
95
96
  end
97
+
98
+ it 'should accept a filter block that receives Addressable::URL' do
99
+ @session.visit('/with_js?a=3&b=defgh')
100
+ expect(@session).to have_current_path('/with_js', ignore_query: true) { |url|
101
+ url.query_values.keys == %w[a b]
102
+ }
103
+ end
96
104
  end
97
105
 
98
106
  Capybara::SpecHelper.spec '#has_no_current_path?' do
@@ -100,37 +108,44 @@ Capybara::SpecHelper.spec '#has_no_current_path?' do
100
108
  @session.visit('/with_js')
101
109
  end
102
110
 
103
- it "should be false if the page has the given current_path" do
111
+ it 'should be false if the page has the given current_path' do
104
112
  expect(@session).not_to have_no_current_path('/with_js')
105
113
  end
106
114
 
107
- it "should allow regexp matches" do
115
+ it 'should allow regexp matches' do
108
116
  expect(@session).not_to have_no_current_path(/w[a-z]{3}_js/)
109
117
  expect(@session).to have_no_current_path(/monkey/)
110
118
  end
111
119
 
112
- it "should wait for current_path to disappear", requires: [:js] do
120
+ it 'should wait for current_path to disappear', requires: [:js] do
113
121
  Capybara.using_wait_time(3) do
114
- @session.click_link("Change page")
122
+ @session.click_link('Change page')
115
123
  expect(@session).to have_no_current_path('/with_js')
116
124
  end
117
125
  end
118
126
 
119
- it "should be true if the page has not the given current_path" do
127
+ it 'should be true if the page has not the given current_path' do
120
128
  expect(@session).to have_no_current_path('/with_html')
121
129
  end
122
130
 
123
- it "should not raise an exception if the current_url is nil" do
124
- allow_any_instance_of(Capybara::Session).to receive(:current_url) { nil }
131
+ it 'should not raise an exception if the current_url is nil' do
132
+ allow(@session).to receive(:current_url).and_return(nil)
133
+ allow(@session.page).to receive(:current_url).and_return(nil) if @session.respond_to? :page
125
134
 
126
135
  # Without ignore_query option
127
136
  expect do
128
137
  expect(@session).not_to have_current_path('/with_js')
129
- end. not_to raise_exception
138
+ end.not_to raise_exception
130
139
 
131
140
  # With ignore_query option
132
141
  expect do
133
142
  expect(@session).not_to have_current_path('/with_js', ignore_query: true)
134
- end. not_to raise_exception
143
+ end.not_to raise_exception
144
+ end
145
+
146
+ it 'should accept a filter block that receives Addressable::URL' do
147
+ expect(@session).to have_no_current_path('/with_js', ignore_query: true) { |url|
148
+ !url.query.nil?
149
+ }
135
150
  end
136
151
  end
@@ -3,19 +3,19 @@
3
3
  Capybara::SpecHelper.spec '#has_field' do
4
4
  before { @session.visit('/form') }
5
5
 
6
- it "should be true if the field is on the page" do
6
+ it 'should be true if the field is on the page' do
7
7
  expect(@session).to have_field('Dog')
8
8
  expect(@session).to have_field('form_description')
9
9
  expect(@session).to have_field('Region')
10
10
  expect(@session).to have_field(:Region)
11
11
  end
12
12
 
13
- it "should be false if the field is not on the page" do
13
+ it 'should be false if the field is not on the page' do
14
14
  expect(@session).not_to have_field('Monkey')
15
15
  end
16
16
 
17
17
  context 'with value' do
18
- it "should be true if a field with the given value is on the page" do
18
+ it 'should be true if a field with the given value is on the page' do
19
19
  expect(@session).to have_field('First Name', with: 'John')
20
20
  expect(@session).to have_field('First Name', with: /^Joh/)
21
21
  expect(@session).to have_field('Phone', with: '+1 555 7021')
@@ -23,28 +23,61 @@ Capybara::SpecHelper.spec '#has_field' do
23
23
  expect(@session).to have_field('Description', with: 'Descriptive text goes here')
24
24
  end
25
25
 
26
- it "should be false if the given field is not on the page" do
26
+ it 'should be false if the given field is not on the page' do
27
27
  expect(@session).not_to have_field('First Name', with: 'Peter')
28
28
  expect(@session).not_to have_field('First Name', with: /eter$/)
29
29
  expect(@session).not_to have_field('Wrong Name', with: 'John')
30
30
  expect(@session).not_to have_field('Description', with: 'Monkey')
31
31
  end
32
32
 
33
- it "should be true after the field has been filled in with the given value" do
33
+ it 'should be true after the field has been filled in with the given value' do
34
34
  @session.fill_in('First Name', with: 'Jonas')
35
35
  expect(@session).to have_field('First Name', with: 'Jonas')
36
36
  expect(@session).to have_field('First Name', with: /ona/)
37
37
  end
38
38
 
39
- it "should be false after the field has been filled in with a different value" do
39
+ it 'should be false after the field has been filled in with a different value' do
40
40
  @session.fill_in('First Name', with: 'Jonas')
41
41
  expect(@session).not_to have_field('First Name', with: 'John')
42
42
  expect(@session).not_to have_field('First Name', with: /John|Paul|George|Ringo/)
43
43
  end
44
+
45
+ it 'should output filter errors if only one element matched the selector but failed the filters' do
46
+ @session.fill_in('First Name', with: 'Thomas')
47
+ expect do
48
+ expect(@session).to have_field('First Name', with: 'Jonas')
49
+ end.to raise_exception(RSpec::Expectations::ExpectationNotMetError, /Expected value to be "Jonas" but was "Thomas"/)
50
+
51
+ # native boolean node filter
52
+ expect do
53
+ expect(@session).to have_field('First Name', readonly: true)
54
+ end.to raise_exception(RSpec::Expectations::ExpectationNotMetError, /Expected readonly true but it wasn't/)
55
+
56
+ # inherited boolean node filter
57
+ expect do
58
+ expect(@session).to have_field('form_pets_cat', checked: true)
59
+ end.to raise_exception(RSpec::Expectations::ExpectationNotMetError, /Expected checked true but it wasn't/)
60
+ end
61
+ end
62
+
63
+ context 'with validation message', requires: [:html_validation] do
64
+ it 'should accept a regexp' do
65
+ @session.fill_in('form_zipcode', with: '1234')
66
+ expect(@session).to have_field('form_zipcode', validation_message: /match the requested format/)
67
+ expect(@session).not_to have_field('form_zipcode', validation_message: /random/)
68
+ end
69
+
70
+ it 'should accept a string' do
71
+ @session.fill_in('form_zipcode', with: '1234')
72
+ expect(@session).to have_field('form_zipcode', validation_message: 'Please match the requested format.')
73
+ expect(@session).not_to have_field('form_zipcode', validation_message: 'match the requested format.')
74
+ @session.fill_in('form_zipcode', with: '12345')
75
+ expect(@session).to have_field('form_zipcode', validation_message: '')
76
+ end
44
77
  end
45
78
 
46
79
  context 'with type' do
47
- it "should be true if a field with the given type is on the page" do
80
+ it 'should be true if a field with the given type is on the page' do
48
81
  expect(@session).to have_field('First Name', type: 'text')
49
82
  expect(@session).to have_field('Html5 Email', type: 'email')
50
83
  expect(@session).to have_field('Html5 Multiple Email', type: 'email')
@@ -53,7 +86,7 @@ Capybara::SpecHelper.spec '#has_field' do
53
86
  expect(@session).to have_field('Languages', type: 'select')
54
87
  end
55
88
 
56
- it "should be false if the given field is not on the page" do
89
+ it 'should be false if the given field is not on the page' do
57
90
  expect(@session).not_to have_field('First Name', type: 'textarea')
58
91
  expect(@session).not_to have_field('Html5 Email', type: 'tel')
59
92
  expect(@session).not_to have_field('Html5 Multiple Email', type: 'tel')
@@ -61,59 +94,93 @@ Capybara::SpecHelper.spec '#has_field' do
61
94
  expect(@session).not_to have_field('Description', type: 'email')
62
95
  expect(@session).not_to have_field('Languages', type: 'textarea')
63
96
  end
97
+
98
+ it 'it can find type="hidden" elements if explicity specified' do
99
+ expect(@session).to have_field('form[data]', with: 'TWTW', type: 'hidden')
100
+ end
64
101
  end
65
102
 
66
103
  context 'with multiple' do
67
- it "should be true if a field with the multiple attribute is on the page" do
104
+ it 'should be true if a field with the multiple attribute is on the page' do
68
105
  expect(@session).to have_field('Html5 Multiple Email', multiple: true)
69
106
  end
70
107
 
71
- it "should be false if a field without the multiple attribute is not on the page" do
108
+ it 'should be false if a field without the multiple attribute is not on the page' do
72
109
  expect(@session).not_to have_field('Html5 Multiple Email', multiple: false)
73
110
  end
74
111
  end
112
+
113
+ context 'with focused:', requires: [:active_element] do
114
+ it 'should be true if a field has focus' do
115
+ 2.times { @session.send_keys(:tab) }
116
+
117
+ expect(@session).to have_field('An Input', focused: true)
118
+ end
119
+
120
+ it 'should be false if a field does not have focus' do
121
+ expect(@session).to have_field('An Input', focused: false)
122
+ end
123
+ end
124
+
125
+ context 'with valid', requires: [:js] do
126
+ it 'should be true if field is valid' do
127
+ @session.fill_in 'required', with: 'something'
128
+ @session.fill_in 'length', with: 'abcd'
129
+
130
+ expect(@session).to have_field('required', valid: true)
131
+ expect(@session).to have_field('length', valid: true)
132
+ end
133
+
134
+ it 'should be false if field is invalid' do
135
+ expect(@session).not_to have_field('required', valid: true)
136
+ expect(@session).to have_field('required', valid: false)
137
+
138
+ @session.fill_in 'length', with: 'abc'
139
+ expect(@session).not_to have_field('length', valid: true)
140
+ end
141
+ end
75
142
  end
76
143
 
77
144
  Capybara::SpecHelper.spec '#has_no_field' do
78
145
  before { @session.visit('/form') }
79
146
 
80
- it "should be false if the field is on the page" do
147
+ it 'should be false if the field is on the page' do
81
148
  expect(@session).not_to have_no_field('Dog')
82
149
  expect(@session).not_to have_no_field('form_description')
83
150
  expect(@session).not_to have_no_field('Region')
84
151
  end
85
152
 
86
- it "should be true if the field is not on the page" do
153
+ it 'should be true if the field is not on the page' do
87
154
  expect(@session).to have_no_field('Monkey')
88
155
  end
89
156
 
90
157
  context 'with value' do
91
- it "should be false if a field with the given value is on the page" do
158
+ it 'should be false if a field with the given value is on the page' do
92
159
  expect(@session).not_to have_no_field('First Name', with: 'John')
93
160
  expect(@session).not_to have_no_field('Phone', with: '+1 555 7021')
94
161
  expect(@session).not_to have_no_field('Street', with: 'Sesame street 66')
95
162
  expect(@session).not_to have_no_field('Description', with: 'Descriptive text goes here')
96
163
  end
97
164
 
98
- it "should be true if the given field is not on the page" do
165
+ it 'should be true if the given field is not on the page' do
99
166
  expect(@session).to have_no_field('First Name', with: 'Peter')
100
167
  expect(@session).to have_no_field('Wrong Name', with: 'John')
101
168
  expect(@session).to have_no_field('Description', with: 'Monkey')
102
169
  end
103
170
 
104
- it "should be false after the field has been filled in with the given value" do
171
+ it 'should be false after the field has been filled in with the given value' do
105
172
  @session.fill_in('First Name', with: 'Jonas')
106
173
  expect(@session).not_to have_no_field('First Name', with: 'Jonas')
107
174
  end
108
175
 
109
- it "should be true after the field has been filled in with a different value" do
176
+ it 'should be true after the field has been filled in with a different value' do
110
177
  @session.fill_in('First Name', with: 'Jonas')
111
178
  expect(@session).to have_no_field('First Name', with: 'John')
112
179
  end
113
180
  end
114
181
 
115
182
  context 'with type' do
116
- it "should be false if a field with the given type is on the page" do
183
+ it 'should be false if a field with the given type is on the page' do
117
184
  expect(@session).not_to have_no_field('First Name', type: 'text')
118
185
  expect(@session).not_to have_no_field('Html5 Email', type: 'email')
119
186
  expect(@session).not_to have_no_field('Html5 Tel', type: 'tel')
@@ -121,7 +188,7 @@ Capybara::SpecHelper.spec '#has_no_field' do
121
188
  expect(@session).not_to have_no_field('Languages', type: 'select')
122
189
  end
123
190
 
124
- it "should be true if the given field is not on the page" do
191
+ it 'should be true if the given field is not on the page' do
125
192
  expect(@session).to have_no_field('First Name', type: 'textarea')
126
193
  expect(@session).to have_no_field('Html5 Email', type: 'tel')
127
194
  expect(@session).to have_no_field('Description', type: '')
@@ -129,61 +196,73 @@ Capybara::SpecHelper.spec '#has_no_field' do
129
196
  expect(@session).to have_no_field('Languages', type: 'textarea')
130
197
  end
131
198
  end
199
+
200
+ context 'with focused:', requires: [:active_element] do
201
+ it 'should be true if a field does not have focus when focused: true' do
202
+ expect(@session).to have_no_field('An Input', focused: true)
203
+ end
204
+
205
+ it 'should be false if a field has focus when focused: true' do
206
+ 2.times { @session.send_keys(:tab) }
207
+
208
+ expect(@session).not_to have_no_field('An Input', focused: true)
209
+ end
210
+ end
132
211
  end
133
212
 
134
213
  Capybara::SpecHelper.spec '#has_checked_field?' do
135
214
  before { @session.visit('/form') }
136
215
 
137
- it "should be true if a checked field is on the page" do
216
+ it 'should be true if a checked field is on the page' do
138
217
  expect(@session).to have_checked_field('gender_female')
139
218
  expect(@session).to have_checked_field('Hamster')
140
219
  end
141
220
 
142
- it "should be true for disabled checkboxes if disabled: true" do
221
+ it 'should be true for disabled checkboxes if disabled: true' do
143
222
  expect(@session).to have_checked_field('Disabled Checkbox', disabled: true)
144
223
  end
145
224
 
146
- it "should be false if an unchecked field is on the page" do
225
+ it 'should be false if an unchecked field is on the page' do
147
226
  expect(@session).not_to have_checked_field('form_pets_cat')
148
227
  expect(@session).not_to have_checked_field('Male')
149
228
  end
150
229
 
151
- it "should be false if no field is on the page" do
230
+ it 'should be false if no field is on the page' do
152
231
  expect(@session).not_to have_checked_field('Does Not Exist')
153
232
  end
154
233
 
155
- it "should be false for disabled checkboxes by default" do
234
+ it 'should be false for disabled checkboxes by default' do
156
235
  expect(@session).not_to have_checked_field('Disabled Checkbox')
157
236
  end
158
237
 
159
- it "should be false for disabled checkboxes if disabled: false" do
238
+ it 'should be false for disabled checkboxes if disabled: false' do
160
239
  expect(@session).not_to have_checked_field('Disabled Checkbox', disabled: false)
161
240
  end
162
241
 
163
- it "should be true for disabled checkboxes if disabled: :all" do
242
+ it 'should be true for disabled checkboxes if disabled: :all' do
164
243
  expect(@session).to have_checked_field('Disabled Checkbox', disabled: :all)
165
244
  end
166
245
 
167
- it "should be true for enabled checkboxes if disabled: :all" do
246
+ it 'should be true for enabled checkboxes if disabled: :all' do
168
247
  expect(@session).to have_checked_field('gender_female', disabled: :all)
169
248
  end
170
249
 
171
- it "should be true after an unchecked checkbox is checked" do
250
+ it 'should be true after an unchecked checkbox is checked' do
172
251
  @session.check('form_pets_cat')
173
252
  expect(@session).to have_checked_field('form_pets_cat')
174
253
  end
175
254
 
176
- it "should be false after a checked checkbox is unchecked" do
255
+ it 'should be false after a checked checkbox is unchecked' do
177
256
  @session.uncheck('form_pets_dog')
178
257
  expect(@session).not_to have_checked_field('form_pets_dog')
179
258
  end
180
259
 
181
- it "should be true after an unchecked radio button is chosen" do
260
+ it 'should be true after an unchecked radio button is chosen' do
182
261
  @session.choose('gender_male')
183
262
  expect(@session).to have_checked_field('gender_male')
184
263
  end
185
264
 
186
- it "should be false after another radio button in the group is chosen" do
265
+ it 'should be false after another radio button in the group is chosen' do
187
266
  @session.choose('gender_male')
188
267
  expect(@session).not_to have_checked_field('gender_female')
189
268
  end
@@ -192,29 +271,29 @@ end
192
271
  Capybara::SpecHelper.spec '#has_no_checked_field?' do
193
272
  before { @session.visit('/form') }
194
273
 
195
- it "should be false if a checked field is on the page" do
274
+ it 'should be false if a checked field is on the page' do
196
275
  expect(@session).not_to have_no_checked_field('gender_female')
197
276
  expect(@session).not_to have_no_checked_field('Hamster')
198
277
  end
199
278
 
200
- it "should be false for disabled checkboxes if disabled: true" do
279
+ it 'should be false for disabled checkboxes if disabled: true' do
201
280
  expect(@session).not_to have_no_checked_field('Disabled Checkbox', disabled: true)
202
281
  end
203
282
 
204
- it "should be true if an unchecked field is on the page" do
283
+ it 'should be true if an unchecked field is on the page' do
205
284
  expect(@session).to have_no_checked_field('form_pets_cat')
206
285
  expect(@session).to have_no_checked_field('Male')
207
286
  end
208
287
 
209
- it "should be true if no field is on the page" do
288
+ it 'should be true if no field is on the page' do
210
289
  expect(@session).to have_no_checked_field('Does Not Exist')
211
290
  end
212
291
 
213
- it "should be true for disabled checkboxes by default" do
292
+ it 'should be true for disabled checkboxes by default' do
214
293
  expect(@session).to have_no_checked_field('Disabled Checkbox')
215
294
  end
216
295
 
217
- it "should be true for disabled checkboxes if disabled: false" do
296
+ it 'should be true for disabled checkboxes if disabled: false' do
218
297
  expect(@session).to have_no_checked_field('Disabled Checkbox', disabled: false)
219
298
  end
220
299
  end
@@ -222,89 +301,89 @@ end
222
301
  Capybara::SpecHelper.spec '#has_unchecked_field?' do
223
302
  before { @session.visit('/form') }
224
303
 
225
- it "should be false if a checked field is on the page" do
304
+ it 'should be false if a checked field is on the page' do
226
305
  expect(@session).not_to have_unchecked_field('gender_female')
227
306
  expect(@session).not_to have_unchecked_field('Hamster')
228
307
  end
229
308
 
230
- it "should be true if an unchecked field is on the page" do
309
+ it 'should be true if an unchecked field is on the page' do
231
310
  expect(@session).to have_unchecked_field('form_pets_cat')
232
311
  expect(@session).to have_unchecked_field('Male')
233
312
  end
234
313
 
235
- it "should be true for disabled unchecked fields if disabled: true" do
314
+ it 'should be true for disabled unchecked fields if disabled: true' do
236
315
  expect(@session).to have_unchecked_field('Disabled Unchecked Checkbox', disabled: true)
237
316
  end
238
317
 
239
- it "should be false if no field is on the page" do
318
+ it 'should be false if no field is on the page' do
240
319
  expect(@session).not_to have_unchecked_field('Does Not Exist')
241
320
  end
242
321
 
243
- it "should be false for disabled unchecked fields by default" do
322
+ it 'should be false for disabled unchecked fields by default' do
244
323
  expect(@session).not_to have_unchecked_field('Disabled Unchecked Checkbox')
245
324
  end
246
325
 
247
- it "should be false for disabled unchecked fields if disabled: false" do
326
+ it 'should be false for disabled unchecked fields if disabled: false' do
248
327
  expect(@session).not_to have_unchecked_field('Disabled Unchecked Checkbox', disabled: false)
249
328
  end
250
329
 
251
- it "should be false after an unchecked checkbox is checked" do
330
+ it 'should be false after an unchecked checkbox is checked' do
252
331
  @session.check('form_pets_cat')
253
332
  expect(@session).not_to have_unchecked_field('form_pets_cat')
254
333
  end
255
334
 
256
- it "should be true after a checked checkbox is unchecked" do
335
+ it 'should be true after a checked checkbox is unchecked' do
257
336
  @session.uncheck('form_pets_dog')
258
337
  expect(@session).to have_unchecked_field('form_pets_dog')
259
338
  end
260
339
 
261
- it "should be false after an unchecked radio button is chosen" do
340
+ it 'should be false after an unchecked radio button is chosen' do
262
341
  @session.choose('gender_male')
263
342
  expect(@session).not_to have_unchecked_field('gender_male')
264
343
  end
265
344
 
266
- it "should be true after another radio button in the group is chosen" do
345
+ it 'should be true after another radio button in the group is chosen' do
267
346
  @session.choose('gender_male')
268
347
  expect(@session).to have_unchecked_field('gender_female')
269
348
  end
270
349
 
271
- it "should support locator-less usage" do
272
- expect(@session.has_unchecked_field?(disabled: true, id: "form_disabled_unchecked_checkbox"))
273
- expect(@session).to have_unchecked_field(disabled: true, id: "form_disabled_unchecked_checkbox")
350
+ it 'should support locator-less usage' do
351
+ expect(@session.has_unchecked_field?(disabled: true, id: 'form_disabled_unchecked_checkbox')).to be true
352
+ expect(@session).to have_unchecked_field(disabled: true, id: 'form_disabled_unchecked_checkbox')
274
353
  end
275
354
  end
276
355
 
277
356
  Capybara::SpecHelper.spec '#has_no_unchecked_field?' do
278
357
  before { @session.visit('/form') }
279
358
 
280
- it "should be true if a checked field is on the page" do
359
+ it 'should be true if a checked field is on the page' do
281
360
  expect(@session).to have_no_unchecked_field('gender_female')
282
361
  expect(@session).to have_no_unchecked_field('Hamster')
283
362
  end
284
363
 
285
- it "should be false if an unchecked field is on the page" do
364
+ it 'should be false if an unchecked field is on the page' do
286
365
  expect(@session).not_to have_no_unchecked_field('form_pets_cat')
287
366
  expect(@session).not_to have_no_unchecked_field('Male')
288
367
  end
289
368
 
290
- it "should be false for disabled unchecked fields if disabled: true" do
369
+ it 'should be false for disabled unchecked fields if disabled: true' do
291
370
  expect(@session).not_to have_no_unchecked_field('Disabled Unchecked Checkbox', disabled: true)
292
371
  end
293
372
 
294
- it "should be true if no field is on the page" do
373
+ it 'should be true if no field is on the page' do
295
374
  expect(@session).to have_no_unchecked_field('Does Not Exist')
296
375
  end
297
376
 
298
- it "should be true for disabled unchecked fields by default" do
377
+ it 'should be true for disabled unchecked fields by default' do
299
378
  expect(@session).to have_no_unchecked_field('Disabled Unchecked Checkbox')
300
379
  end
301
380
 
302
- it "should be true for disabled unchecked fields if disabled: false" do
381
+ it 'should be true for disabled unchecked fields if disabled: false' do
303
382
  expect(@session).to have_no_unchecked_field('Disabled Unchecked Checkbox', disabled: false)
304
383
  end
305
384
 
306
- it "should support locator-less usage" do
307
- expect(@session.has_no_unchecked_field?(disabled: false, id: "form_disabled_unchecked_checkbox")).to eq true
308
- expect(@session).to have_no_unchecked_field(disabled: false, id: "form_disabled_unchecked_checkbox")
385
+ it 'should support locator-less usage' do
386
+ expect(@session.has_no_unchecked_field?(disabled: false, id: 'form_disabled_unchecked_checkbox')).to eq true
387
+ expect(@session).to have_no_unchecked_field(disabled: false, id: 'form_disabled_unchecked_checkbox')
309
388
  end
310
389
  end