watir 1.4.1 → 7.3.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 (422) hide show
  1. checksums.yaml +7 -0
  2. data/.document +4 -0
  3. data/.github/ISSUE_TEMPLATE.md +16 -0
  4. data/.github/workflows/chrome.yml +55 -0
  5. data/.github/workflows/edge.yml +44 -0
  6. data/.github/workflows/firefox.yml +55 -0
  7. data/.github/workflows/ie.yml +30 -0
  8. data/.github/workflows/safari.yml +38 -0
  9. data/.github/workflows/unit.yml +60 -0
  10. data/.gitignore +21 -0
  11. data/.rubocop.yml +114 -0
  12. data/.rubocop_todo.yml +17 -0
  13. data/CHANGES.md +2212 -0
  14. data/Gemfile +15 -0
  15. data/LICENSE +24 -0
  16. data/README.md +113 -0
  17. data/Rakefile +173 -0
  18. data/lib/watir/adjacent.rb +128 -0
  19. data/lib/watir/after_hooks.rb +135 -0
  20. data/lib/watir/alert.rb +113 -0
  21. data/lib/watir/aliases.rb +8 -0
  22. data/lib/watir/attribute_helper.rb +97 -0
  23. data/lib/watir/browser.rb +323 -0
  24. data/lib/watir/capabilities.rb +179 -0
  25. data/lib/watir/cell_container.rb +25 -0
  26. data/lib/watir/container.rb +33 -0
  27. data/lib/watir/cookies.rb +130 -0
  28. data/lib/watir/element_collection.rb +223 -0
  29. data/lib/watir/elements/button.rb +28 -0
  30. data/lib/watir/elements/cell.rb +18 -0
  31. data/lib/watir/elements/checkbox.rb +56 -0
  32. data/lib/watir/elements/date_field.rb +42 -0
  33. data/lib/watir/elements/date_time_field.rb +42 -0
  34. data/lib/watir/elements/dlist.rb +12 -0
  35. data/lib/watir/elements/element.rb +807 -0
  36. data/lib/watir/elements/file_field.rb +43 -0
  37. data/lib/watir/elements/font.rb +26 -0
  38. data/lib/watir/elements/form.rb +16 -0
  39. data/lib/watir/elements/hidden.rb +26 -0
  40. data/lib/watir/elements/html_elements.rb +1981 -0
  41. data/lib/watir/elements/iframe.rb +156 -0
  42. data/lib/watir/elements/image.rb +22 -0
  43. data/lib/watir/elements/input.rb +15 -0
  44. data/lib/watir/elements/link.rb +8 -0
  45. data/lib/watir/elements/list.rb +51 -0
  46. data/lib/watir/elements/option.rb +60 -0
  47. data/lib/watir/elements/radio.rb +65 -0
  48. data/lib/watir/elements/row.rb +18 -0
  49. data/lib/watir/elements/select.rb +214 -0
  50. data/lib/watir/elements/svg_elements.rb +497 -0
  51. data/lib/watir/elements/table.rb +77 -0
  52. data/lib/watir/elements/table_cell.rb +32 -0
  53. data/lib/watir/elements/table_row.rb +34 -0
  54. data/lib/watir/elements/table_section.rb +17 -0
  55. data/lib/watir/elements/text_area.rb +7 -0
  56. data/lib/watir/elements/text_field.rb +39 -0
  57. data/lib/watir/exception.rb +16 -0
  58. data/lib/watir/extensions/nokogiri.rb +14 -0
  59. data/lib/watir/generator/base/generator.rb +114 -0
  60. data/lib/watir/generator/base/idl_sorter.rb +51 -0
  61. data/lib/watir/generator/base/spec_extractor.rb +158 -0
  62. data/lib/watir/generator/base/util.rb +21 -0
  63. data/lib/watir/generator/base/visitor.rb +133 -0
  64. data/lib/watir/generator/base.rb +12 -0
  65. data/lib/watir/generator/html/generator.rb +36 -0
  66. data/lib/watir/generator/html/spec_extractor.rb +52 -0
  67. data/lib/watir/generator/html/visitor.rb +23 -0
  68. data/lib/watir/generator/html.rb +17 -0
  69. data/lib/watir/generator/svg/generator.rb +38 -0
  70. data/lib/watir/generator/svg/spec_extractor.rb +55 -0
  71. data/lib/watir/generator/svg/visitor.rb +23 -0
  72. data/lib/watir/generator/svg.rb +9 -0
  73. data/lib/watir/generator.rb +5 -0
  74. data/lib/watir/has_window.rb +72 -0
  75. data/lib/watir/http_client.rb +11 -0
  76. data/lib/watir/js_execution.rb +165 -0
  77. data/lib/watir/js_snippets/attributeValues.js +11 -0
  78. data/lib/watir/js_snippets/backgroundColor.js +7 -0
  79. data/lib/watir/js_snippets/elementObscured.js +14 -0
  80. data/lib/watir/js_snippets/fireEvent.js +31 -0
  81. data/lib/watir/js_snippets/focus.js +3 -0
  82. data/lib/watir/js_snippets/getElementTags.js +3 -0
  83. data/lib/watir/js_snippets/getInnerHtml.js +19 -0
  84. data/lib/watir/js_snippets/getInnerText.js +19 -0
  85. data/lib/watir/js_snippets/getOuterHtml.js +20 -0
  86. data/lib/watir/js_snippets/getTextContent.js +19 -0
  87. data/lib/watir/js_snippets/isElementInViewport.js +20 -0
  88. data/lib/watir/js_snippets/isImageLoaded.js +3 -0
  89. data/lib/watir/js_snippets/selectOptionsLabel.js +10 -0
  90. data/lib/watir/js_snippets/selectOptionsText.js +10 -0
  91. data/lib/watir/js_snippets/selectOptionsValue.js +10 -0
  92. data/lib/watir/js_snippets/selectText.js +64 -0
  93. data/lib/watir/js_snippets/selectedOptions.js +11 -0
  94. data/lib/watir/js_snippets/selectedText.js +17 -0
  95. data/lib/watir/js_snippets/setText.js +3 -0
  96. data/lib/watir/js_snippets/setValue.js +3 -0
  97. data/lib/watir/js_snippets.rb +18 -0
  98. data/lib/watir/locators/anchor/selector_builder.rb +43 -0
  99. data/lib/watir/locators/button/matcher.rb +19 -0
  100. data/lib/watir/locators/button/selector_builder/xpath.rb +69 -0
  101. data/lib/watir/locators/button/selector_builder.rb +10 -0
  102. data/lib/watir/locators/cell/selector_builder/xpath.rb +23 -0
  103. data/lib/watir/locators/cell/selector_builder.rb +13 -0
  104. data/lib/watir/locators/element/locator.rb +81 -0
  105. data/lib/watir/locators/element/matcher.rb +118 -0
  106. data/lib/watir/locators/element/selector_builder/regexp_disassembler.rb +69 -0
  107. data/lib/watir/locators/element/selector_builder/xpath.rb +268 -0
  108. data/lib/watir/locators/element/selector_builder/xpath_support.rb +29 -0
  109. data/lib/watir/locators/element/selector_builder.rb +164 -0
  110. data/lib/watir/locators/option/matcher.rb +26 -0
  111. data/lib/watir/locators/option/selector_builder/xpath.rb +39 -0
  112. data/lib/watir/locators/option/selector_builder.rb +10 -0
  113. data/lib/watir/locators/row/selector_builder/xpath.rb +53 -0
  114. data/lib/watir/locators/row/selector_builder.rb +18 -0
  115. data/lib/watir/locators/text_area/selector_builder/xpath.rb +21 -0
  116. data/lib/watir/locators/text_area/selector_builder.rb +10 -0
  117. data/lib/watir/locators/text_field/matcher.rb +37 -0
  118. data/lib/watir/locators/text_field/selector_builder/xpath.rb +50 -0
  119. data/lib/watir/locators/text_field/selector_builder.rb +10 -0
  120. data/lib/watir/locators.rb +77 -0
  121. data/lib/watir/logger.rb +30 -0
  122. data/lib/watir/navigation.rb +51 -0
  123. data/lib/watir/radio_set.rb +230 -0
  124. data/lib/watir/row_container.rb +36 -0
  125. data/lib/watir/screenshot.rb +51 -0
  126. data/lib/watir/scroll.rb +95 -0
  127. data/lib/watir/search_context.rb +96 -0
  128. data/lib/watir/shadow_root.rb +60 -0
  129. data/lib/watir/user_editable.rb +85 -0
  130. data/lib/watir/version.rb +5 -0
  131. data/lib/watir/wait/timer.rb +52 -0
  132. data/lib/watir/wait.rb +171 -0
  133. data/lib/watir/window.rb +276 -0
  134. data/lib/watir/window_collection.rb +82 -0
  135. data/lib/watir.rb +108 -0
  136. data/lib/watirspec/guards.rb +65 -0
  137. data/lib/watirspec/implementation.rb +56 -0
  138. data/lib/watirspec/rake_tasks.rb +118 -0
  139. data/lib/watirspec/remote_server.rb +39 -0
  140. data/lib/watirspec/runner.rb +64 -0
  141. data/lib/watirspec/server/app.rb +86 -0
  142. data/lib/watirspec/server.rb +104 -0
  143. data/lib/watirspec.rb +93 -0
  144. data/spec/locator_spec_helper.rb +88 -0
  145. data/spec/spec_helper.rb +24 -0
  146. data/spec/unit/capabilities_spec.rb +670 -0
  147. data/spec/unit/element_locator_spec.rb +97 -0
  148. data/spec/unit/match_elements/button_spec.rb +76 -0
  149. data/spec/unit/match_elements/element_spec.rb +424 -0
  150. data/spec/unit/match_elements/text_field_spec.rb +84 -0
  151. data/spec/unit/selector_builder/anchor_spec.rb +59 -0
  152. data/spec/unit/selector_builder/button_spec.rb +217 -0
  153. data/spec/unit/selector_builder/cell_spec.rb +71 -0
  154. data/spec/unit/selector_builder/element_spec.rb +804 -0
  155. data/spec/unit/selector_builder/row_spec.rb +128 -0
  156. data/spec/unit/selector_builder/text_field_spec.rb +203 -0
  157. data/spec/unit/selector_builder/textarea_spec.rb +35 -0
  158. data/spec/unit/unit_helper.rb +4 -0
  159. data/spec/unit/wait_spec.rb +99 -0
  160. data/spec/watirspec/adjacent_spec.rb +256 -0
  161. data/spec/watirspec/after_hooks_spec.rb +204 -0
  162. data/spec/watirspec/alert_spec.rb +89 -0
  163. data/spec/watirspec/browser_spec.rb +536 -0
  164. data/spec/watirspec/capabilities_spec.rb +556 -0
  165. data/spec/watirspec/cookies_spec.rb +196 -0
  166. data/spec/watirspec/drag_and_drop_spec.rb +38 -0
  167. data/spec/watirspec/element_hidden_spec.rb +86 -0
  168. data/spec/watirspec/elements/area_spec.rb +69 -0
  169. data/spec/watirspec/elements/areas_spec.rb +44 -0
  170. data/spec/watirspec/elements/button_spec.rb +265 -0
  171. data/spec/watirspec/elements/buttons_spec.rb +57 -0
  172. data/spec/watirspec/elements/checkbox_spec.rb +290 -0
  173. data/spec/watirspec/elements/checkboxes_spec.rb +46 -0
  174. data/spec/watirspec/elements/collections_spec.rb +132 -0
  175. data/spec/watirspec/elements/date_field_spec.rb +209 -0
  176. data/spec/watirspec/elements/date_fields_spec.rb +46 -0
  177. data/spec/watirspec/elements/date_time_field_spec.rb +223 -0
  178. data/spec/watirspec/elements/date_time_fields_spec.rb +47 -0
  179. data/spec/watirspec/elements/dd_spec.rb +108 -0
  180. data/spec/watirspec/elements/dds_spec.rb +44 -0
  181. data/spec/watirspec/elements/del_spec.rb +113 -0
  182. data/spec/watirspec/elements/dels_spec.rb +42 -0
  183. data/spec/watirspec/elements/div_spec.rb +232 -0
  184. data/spec/watirspec/elements/divs_spec.rb +56 -0
  185. data/spec/watirspec/elements/dl_spec.rb +117 -0
  186. data/spec/watirspec/elements/dls_spec.rb +45 -0
  187. data/spec/watirspec/elements/dt_spec.rb +107 -0
  188. data/spec/watirspec/elements/dts_spec.rb +44 -0
  189. data/spec/watirspec/elements/element_spec.rb +1069 -0
  190. data/spec/watirspec/elements/elements_spec.rb +60 -0
  191. data/spec/watirspec/elements/em_spec.rb +85 -0
  192. data/spec/watirspec/elements/ems_spec.rb +45 -0
  193. data/spec/watirspec/elements/filefield_spec.rb +135 -0
  194. data/spec/watirspec/elements/filefields_spec.rb +45 -0
  195. data/spec/watirspec/elements/font_spec.rb +31 -0
  196. data/spec/watirspec/elements/form_spec.rb +70 -0
  197. data/spec/watirspec/elements/forms_spec.rb +46 -0
  198. data/spec/watirspec/elements/frame_spec.rb +117 -0
  199. data/spec/watirspec/elements/frames_spec.rb +43 -0
  200. data/spec/watirspec/elements/hidden_spec.rb +106 -0
  201. data/spec/watirspec/elements/hiddens_spec.rb +45 -0
  202. data/spec/watirspec/elements/hn_spec.rb +80 -0
  203. data/spec/watirspec/elements/hns_spec.rb +42 -0
  204. data/spec/watirspec/elements/iframe_spec.rb +244 -0
  205. data/spec/watirspec/elements/iframes_spec.rb +49 -0
  206. data/spec/watirspec/elements/image_spec.rb +160 -0
  207. data/spec/watirspec/elements/images_spec.rb +42 -0
  208. data/spec/watirspec/elements/input_spec.rb +17 -0
  209. data/spec/watirspec/elements/ins_spec.rb +113 -0
  210. data/spec/watirspec/elements/inses_spec.rb +42 -0
  211. data/spec/watirspec/elements/label_spec.rb +77 -0
  212. data/spec/watirspec/elements/labels_spec.rb +42 -0
  213. data/spec/watirspec/elements/li_spec.rb +99 -0
  214. data/spec/watirspec/elements/link_spec.rb +180 -0
  215. data/spec/watirspec/elements/links_spec.rb +66 -0
  216. data/spec/watirspec/elements/lis_spec.rb +44 -0
  217. data/spec/watirspec/elements/list_spec.rb +50 -0
  218. data/spec/watirspec/elements/map_spec.rb +78 -0
  219. data/spec/watirspec/elements/maps_spec.rb +43 -0
  220. data/spec/watirspec/elements/meta_spec.rb +27 -0
  221. data/spec/watirspec/elements/metas_spec.rb +42 -0
  222. data/spec/watirspec/elements/ol_spec.rb +63 -0
  223. data/spec/watirspec/elements/ols_spec.rb +42 -0
  224. data/spec/watirspec/elements/option_spec.rb +113 -0
  225. data/spec/watirspec/elements/p_spec.rb +102 -0
  226. data/spec/watirspec/elements/pre_spec.rb +100 -0
  227. data/spec/watirspec/elements/pres_spec.rb +42 -0
  228. data/spec/watirspec/elements/ps_spec.rb +42 -0
  229. data/spec/watirspec/elements/radio_spec.rb +259 -0
  230. data/spec/watirspec/elements/radios_spec.rb +45 -0
  231. data/spec/watirspec/elements/select_list_spec.rb +701 -0
  232. data/spec/watirspec/elements/select_lists_spec.rb +49 -0
  233. data/spec/watirspec/elements/span_spec.rb +119 -0
  234. data/spec/watirspec/elements/spans_spec.rb +42 -0
  235. data/spec/watirspec/elements/strong_spec.rb +78 -0
  236. data/spec/watirspec/elements/strongs_spec.rb +45 -0
  237. data/spec/watirspec/elements/table_spec.rb +210 -0
  238. data/spec/watirspec/elements/tables_spec.rb +44 -0
  239. data/spec/watirspec/elements/tbody_spec.rb +94 -0
  240. data/spec/watirspec/elements/tbodys_spec.rb +64 -0
  241. data/spec/watirspec/elements/td_spec.rb +92 -0
  242. data/spec/watirspec/elements/tds_spec.rb +55 -0
  243. data/spec/watirspec/elements/text_field_spec.rb +223 -0
  244. data/spec/watirspec/elements/text_fields_spec.rb +47 -0
  245. data/spec/watirspec/elements/textarea_spec.rb +30 -0
  246. data/spec/watirspec/elements/textareas_spec.rb +28 -0
  247. data/spec/watirspec/elements/tfoot_spec.rb +89 -0
  248. data/spec/watirspec/elements/tfoots_spec.rb +72 -0
  249. data/spec/watirspec/elements/thead_spec.rb +88 -0
  250. data/spec/watirspec/elements/theads_spec.rb +72 -0
  251. data/spec/watirspec/elements/tr_spec.rb +69 -0
  252. data/spec/watirspec/elements/trs_spec.rb +63 -0
  253. data/spec/watirspec/elements/ul_spec.rb +63 -0
  254. data/spec/watirspec/elements/uls_spec.rb +42 -0
  255. data/spec/watirspec/html/alerts.html +12 -0
  256. data/spec/watirspec/html/aria_attributes.html +9 -0
  257. data/spec/watirspec/html/child_frame.html +29 -0
  258. data/spec/watirspec/html/class_locator.html +11 -0
  259. data/spec/watirspec/html/clicks.html +19 -0
  260. data/spec/watirspec/html/closeable.html +21 -0
  261. data/spec/watirspec/html/collections.html +15 -0
  262. data/spec/watirspec/html/css/jquery-ui-1.8.17.custom.css +287 -0
  263. data/spec/watirspec/html/data_attributes.html +10 -0
  264. data/spec/watirspec/html/definition_lists.html +48 -0
  265. data/spec/watirspec/html/drag_and_drop.html +106 -0
  266. data/spec/watirspec/html/font.html +10 -0
  267. data/spec/watirspec/html/forms_with_input_elements.html +194 -0
  268. data/spec/watirspec/html/frame_1.html +22 -0
  269. data/spec/watirspec/html/frame_2.html +16 -0
  270. data/spec/watirspec/html/frames.html +11 -0
  271. data/spec/watirspec/html/iframe_1.html +22 -0
  272. data/spec/watirspec/html/iframes.html +15 -0
  273. data/spec/watirspec/html/images/button.png +0 -0
  274. data/spec/watirspec/html/images/circle.png +0 -0
  275. data/spec/watirspec/html/images/map.gif +0 -0
  276. data/spec/watirspec/html/images/map2.gif +0 -0
  277. data/spec/watirspec/html/images/originaltriangle.png +0 -0
  278. data/spec/watirspec/html/images/square.png +0 -0
  279. data/spec/watirspec/html/images/triangle.png +0 -0
  280. data/spec/watirspec/html/images.html +28 -0
  281. data/spec/watirspec/html/inner_outer.html +5 -0
  282. data/spec/watirspec/html/javascript/angular.min.js +332 -0
  283. data/spec/watirspec/html/javascript/helpers.js +16 -0
  284. data/spec/watirspec/html/javascript/jquery-1.7.1.min.js +4 -0
  285. data/spec/watirspec/html/javascript/jquery-ui-1.8.17.custom.min.js +68 -0
  286. data/spec/watirspec/html/keylogger.html +15 -0
  287. data/spec/watirspec/html/modal_dialog.html +9 -0
  288. data/spec/watirspec/html/multiple_ids.html +15 -0
  289. data/spec/watirspec/html/nested_elements.html +44 -0
  290. data/spec/watirspec/html/nested_frame_1.html +1 -0
  291. data/spec/watirspec/html/nested_frame_2.html +9 -0
  292. data/spec/watirspec/html/nested_frame_3.html +14 -0
  293. data/spec/watirspec/html/nested_frames.html +10 -0
  294. data/spec/watirspec/html/nested_iframe_2.html +12 -0
  295. data/spec/watirspec/html/nested_iframes.html +13 -0
  296. data/spec/watirspec/html/nested_tables.html +203 -0
  297. data/spec/watirspec/html/non_control_elements.html +145 -0
  298. data/spec/watirspec/html/obscured.html +36 -0
  299. data/spec/watirspec/html/removed_element.html +24 -0
  300. data/spec/watirspec/html/right_click.html +23 -0
  301. data/spec/watirspec/html/scroll.html +15 -0
  302. data/spec/watirspec/html/scroll_nested.html +17 -0
  303. data/spec/watirspec/html/scroll_nested_offscreen.html +18 -0
  304. data/spec/watirspec/html/shadow_dom.html +28 -0
  305. data/spec/watirspec/html/special_chars.html +15 -0
  306. data/spec/watirspec/html/sticky_elements.html +10 -0
  307. data/spec/watirspec/html/tables.html +121 -0
  308. data/spec/watirspec/html/timeout_window_location.html +19 -0
  309. data/spec/watirspec/html/uneven_table.html +20 -0
  310. data/spec/watirspec/html/wait.html +99 -0
  311. data/spec/watirspec/html/watirspec.css +0 -0
  312. data/spec/watirspec/html/window_switching.html +22 -0
  313. data/spec/watirspec/radio_set_spec.rb +346 -0
  314. data/spec/watirspec/screenshot_spec.rb +33 -0
  315. data/spec/watirspec/scroll_spec.rb +208 -0
  316. data/spec/watirspec/shadow_root_spec.rb +108 -0
  317. data/spec/watirspec/support/rspec_matchers.rb +161 -0
  318. data/spec/watirspec/user_editable_spec.rb +207 -0
  319. data/spec/watirspec/wait_spec.rb +345 -0
  320. data/spec/watirspec/window_switching_spec.rb +580 -0
  321. data/spec/watirspec_helper.rb +163 -0
  322. data/support/doctest_helper.rb +101 -0
  323. data/support/version_differ.rb +60 -0
  324. data/watir.gemspec +50 -0
  325. metadata +652 -148
  326. data/readme.rb +0 -211
  327. data/unittests/WindowLogonExample.rb +0 -30
  328. data/unittests/WindowLogonExtra.rb +0 -7
  329. data/unittests/all_tests.rb +0 -10
  330. data/unittests/all_tests_concurrent.rb +0 -57
  331. data/unittests/attachToExistingWindow_test.rb +0 -40
  332. data/unittests/buttons_test.rb +0 -131
  333. data/unittests/checkbox_test.rb +0 -149
  334. data/unittests/core_tests.rb +0 -9
  335. data/unittests/css_test.rb +0 -60
  336. data/unittests/div_test.rb +0 -179
  337. data/unittests/errorchecker_test.rb +0 -29
  338. data/unittests/filefield_test.rb +0 -35
  339. data/unittests/form_test.rb +0 -279
  340. data/unittests/frame_test.rb +0 -141
  341. data/unittests/html/blankpage.html +0 -12
  342. data/unittests/html/buttons1.html +0 -40
  343. data/unittests/html/checkboxes1.html +0 -69
  344. data/unittests/html/complex_table.html +0 -36
  345. data/unittests/html/cssTest.html +0 -42
  346. data/unittests/html/div.html +0 -105
  347. data/unittests/html/fileupload.html +0 -45
  348. data/unittests/html/formTest1.html +0 -39
  349. data/unittests/html/forms2.html +0 -45
  350. data/unittests/html/forms3.html +0 -132
  351. data/unittests/html/forms4.html +0 -27
  352. data/unittests/html/frame_buttons.html +0 -4
  353. data/unittests/html/frame_links.html +0 -4
  354. data/unittests/html/frame_multi.html +0 -5
  355. data/unittests/html/iframeTest.html +0 -13
  356. data/unittests/html/iframeTest1.html +0 -7
  357. data/unittests/html/iframeTest2.html +0 -6
  358. data/unittests/html/images/button.jpg +0 -0
  359. data/unittests/html/images/circle.jpg +0 -0
  360. data/unittests/html/images/originaltriangle.jpg +0 -0
  361. data/unittests/html/images/square.jpg +0 -0
  362. data/unittests/html/images/triangle.jpg +0 -0
  363. data/unittests/html/images1.html +0 -52
  364. data/unittests/html/javascriptevents.html +0 -39
  365. data/unittests/html/link_pass.html +0 -11
  366. data/unittests/html/links1.html +0 -37
  367. data/unittests/html/links2.html +0 -11
  368. data/unittests/html/nestedFrames.html +0 -6
  369. data/unittests/html/pass.html +0 -10
  370. data/unittests/html/popups1.html +0 -60
  371. data/unittests/html/radioButtons1.html +0 -71
  372. data/unittests/html/select_tealeaf.html +0 -54
  373. data/unittests/html/selectboxes1.html +0 -55
  374. data/unittests/html/simple_table.html +0 -26
  375. data/unittests/html/simple_table_buttons.html +0 -104
  376. data/unittests/html/simple_table_columns.html +0 -76
  377. data/unittests/html/table1.html +0 -142
  378. data/unittests/html/textarea.html +0 -30
  379. data/unittests/html/textfields1.html +0 -87
  380. data/unittests/html/textsearch.html +0 -44
  381. data/unittests/ie_mock.rb +0 -93
  382. data/unittests/ie_test.rb +0 -50
  383. data/unittests/images_test.rb +0 -179
  384. data/unittests/iostring.rb +0 -30
  385. data/unittests/iostring_test.rb +0 -48
  386. data/unittests/js_events_test.rb +0 -77
  387. data/unittests/jscriptExtraAlert.rb +0 -6
  388. data/unittests/jscriptExtraConfirmCancel.rb +0 -7
  389. data/unittests/jscriptExtraConfirmOk.rb +0 -7
  390. data/unittests/jscriptPushButton.rb +0 -5
  391. data/unittests/jscript_test.rb +0 -57
  392. data/unittests/links_test.rb +0 -169
  393. data/unittests/minmax_test.rb +0 -31
  394. data/unittests/navigate_test.rb +0 -56
  395. data/unittests/non_core_tests.rb +0 -9
  396. data/unittests/pagecontainstext_test.rb +0 -49
  397. data/unittests/popups_test.rb +0 -44
  398. data/unittests/radios_test.rb +0 -164
  399. data/unittests/screen_capture_test.rb +0 -53
  400. data/unittests/selectbox_test.rb +0 -197
  401. data/unittests/send_keys_test.rb +0 -29
  402. data/unittests/setup.rb +0 -47
  403. data/unittests/table_test.rb +0 -306
  404. data/unittests/textAreafields_test.rb +0 -81
  405. data/unittests/textfields_test.rb +0 -239
  406. data/watir/AutoItX3.dll +0 -0
  407. data/watir/WindowHelper.rb +0 -47
  408. data/watir/camel_case.rb +0 -37
  409. data/watir/clickJSDialog.rb +0 -19
  410. data/watir/cookiemanager.rb +0 -53
  411. data/watir/exceptions.rb +0 -60
  412. data/watir/screen_capture.rb +0 -115
  413. data/watir/setFileDialog.rb +0 -16
  414. data/watir/testUnitAddons.rb +0 -47
  415. data/watir/watir_simple.rb +0 -475
  416. data/watir/winClicker.rb +0 -505
  417. data/watir.rb +0 -3744
  418. /data/{unittests → spec/watirspec}/html/images/1.gif +0 -0
  419. /data/{unittests/html/images/2.GIF → spec/watirspec/html/images/2.gif} +0 -0
  420. /data/{unittests/html/images/3.GIF → spec/watirspec/html/images/3.gif} +0 -0
  421. /data/{unittests/html/images/minus.GIF → spec/watirspec/html/images/minus.gif} +0 -0
  422. /data/{unittests → spec/watirspec}/html/images/plus.gif +0 -0
@@ -0,0 +1,256 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'watirspec_helper'
4
+
5
+ module Watir
6
+ describe Element do
7
+ before(:all) do
8
+ browser.goto(WatirSpec.url_for('nested_elements.html'))
9
+ end
10
+
11
+ describe '#parent' do
12
+ it 'gets immediate parent of an element by default' do
13
+ expect(browser.div(id: 'first_sibling').parent.id).to eq 'parent'
14
+ expect(browser.div(id: 'first_sibling').parent).to be_a Watir::HTMLElement
15
+ end
16
+
17
+ it 'accepts index argument' do
18
+ expect(browser.div(id: 'first_sibling').parent(index: 2).id).to eq 'grandparent'
19
+ expect(browser.div(id: 'first_sibling').parent(index: 2)).to be_a Watir::HTMLElement
20
+ end
21
+
22
+ it 'accepts tag_name argument' do
23
+ expect(browser.div(id: 'first_sibling').parent(tag_name: 'div').id).to eq 'parent'
24
+ expect(browser.div(id: 'first_sibling').parent(tag_name: 'div')).to be_a Watir::Div
25
+ end
26
+
27
+ it 'accepts custom tag_name argument' do
28
+ expect(browser.div(id: 'regular_child').parent(tag_name: 'grandelement').id).to eq 'custom_grandparent'
29
+ expect(browser.div(id: 'regular_child').parent(tag_name: 'grandelement')).to be_a Watir::HTMLElement
30
+ end
31
+
32
+ it 'accepts class_name argument' do
33
+ expect(browser.div(id: 'first_sibling').parent(class_name: 'parent').id).to eq 'parent_span'
34
+ end
35
+
36
+ it 'accepts index and tag_name arguments' do
37
+ expect(browser.div(id: 'first_sibling').parent(tag_name: 'div', index: 1).id).to eq 'grandparent'
38
+ expect(browser.div(id: 'first_sibling').parent(tag_name: 'div', index: 1)).to be_a Watir::Div
39
+ end
40
+
41
+ it 'does not error when no parent element of an index exists' do
42
+ expect(browser.body.parent(index: 2)).not_to exist
43
+ end
44
+
45
+ it 'does not error when no parent element of a tag_name exists' do
46
+ expect(browser.div(id: 'first_sibling').parent(tag_name: 'table')).not_to exist
47
+ end
48
+ end
49
+
50
+ describe '#siblings' do
51
+ it 'gets collection of all siblings of an element' do
52
+ expect(browser.div(id: 'second_sibling').siblings).to be_a Watir::HTMLElementCollection
53
+ expect(browser.div(id: 'second_sibling').siblings.size).to eq 5
54
+ end
55
+
56
+ it 'accepts a tag name argument' do
57
+ siblings = browser.div(id: 'second_sibling').siblings(tag_name: 'div')
58
+ expect(siblings.size).to eq 3
59
+ expect(siblings.all?(Watir::Div)).to be true
60
+ end
61
+
62
+ it 'accepts custom tag name argument' do
63
+ siblings = browser.div(id: 'regular_child').siblings(tag_name: 'childelement')
64
+ expect(siblings.size).to eq 3
65
+ expect(siblings.all?(Watir::HTMLElement)).to be true
66
+ end
67
+
68
+ it 'accepts a class_name argument' do
69
+ siblings = browser.div(id: 'second_sibling').siblings(class_name: 'b')
70
+ expect(siblings.first).to be_a Watir::Div
71
+ expect(siblings[0]).to be_a Watir::Div
72
+ expect(siblings.size).to eq 2
73
+ expect(siblings.all?(Watir::Div)).to be true
74
+ end
75
+ end
76
+
77
+ describe '#following_sibling' do
78
+ it 'gets immediate following sibling of an element by default' do
79
+ expect(browser.div(id: 'first_sibling').following_sibling.id).to eq 'between_siblings1'
80
+ expect(browser.div(id: 'first_sibling').following_sibling).to be_a Watir::HTMLElement
81
+ end
82
+
83
+ it 'accepts index argument' do
84
+ expect(browser.div(id: 'first_sibling').following_sibling(index: 2).id).to eq 'between_siblings2'
85
+ expect(browser.div(id: 'first_sibling').following_sibling(index: 2)).to be_a Watir::HTMLElement
86
+ end
87
+
88
+ it 'accepts tag_name argument' do
89
+ expect(browser.div(id: 'first_sibling').following_sibling(tag_name: 'div').id).to eq 'second_sibling'
90
+ expect(browser.div(id: 'first_sibling').following_sibling(tag_name: 'div')).to be_a Watir::Div
91
+ end
92
+
93
+ it 'accepts class_name argument' do
94
+ expect(browser.div(id: 'first_sibling').following_sibling(class_name: 'b').id).to eq 'second_sibling'
95
+ end
96
+
97
+ it 'accepts index and tag_name arguments' do
98
+ expect(browser.div(id: 'first_sibling').following_sibling(tag_name: 'div', index: 1).id).to eq 'third_sibling'
99
+ expect(browser.div(id: 'first_sibling').following_sibling(tag_name: 'div', index: 1)).to be_a Watir::Div
100
+ end
101
+
102
+ it 'accepts text as Regexp' do
103
+ expect(browser.div(id: 'first_sibling').following_sibling(text: /T/).id).to eq 'third_sibling'
104
+ end
105
+
106
+ it 'accepts text as String' do
107
+ expect(browser.div(id: 'first_sibling').following_sibling(text: 'Third').id).to eq 'third_sibling'
108
+ end
109
+
110
+ it 'does not error when no next sibling of an index exists' do
111
+ expect(browser.body.following_sibling(index: 1)).not_to exist
112
+ end
113
+
114
+ it 'does not error when no next sibling of a tag_name exists' do
115
+ expect(browser.div(id: 'first_sibling').following_sibling(tag_name: 'table')).not_to exist
116
+ end
117
+ end
118
+
119
+ describe '#following_siblings' do
120
+ it 'gets collection of subsequent siblings of an element by default' do
121
+ expect(browser.div(id: 'second_sibling').following_siblings).to be_a Watir::HTMLElementCollection
122
+ expect(browser.div(id: 'second_sibling').following_siblings.size).to eq 2
123
+ end
124
+
125
+ it 'accepts tag_name argument' do
126
+ expect(browser.div(id: 'second_sibling').following_siblings(tag_name: 'div').size).to eq 1
127
+ expect(browser.div(id: 'second_sibling').following_siblings(tag_name: 'div').first).to be_a Watir::Div
128
+ end
129
+
130
+ it 'accepts class_name argument for single class' do
131
+ expect(browser.div(id: 'second_sibling').following_siblings(class_name: 'b').size).to eq 1
132
+ expect(browser.div(id: 'second_sibling').following_siblings(class_name: 'b').first).to be_a Watir::Div
133
+ end
134
+
135
+ it 'accepts class_name argument for multiple classes' do
136
+ expect(browser.div(id: 'second_sibling').following_siblings(class_name: %w[a b]).size).to eq 1
137
+ expect(browser.div(id: 'second_sibling').following_siblings(class_name: %w[a b]).first).to be_a Watir::Div
138
+ end
139
+ end
140
+
141
+ describe '#previous_sibling' do
142
+ it 'gets immediate preceeding sibling of an element by default' do
143
+ expect(browser.div(id: 'third_sibling').previous_sibling.id).to eq 'between_siblings2'
144
+ expect(browser.div(id: 'third_sibling').previous_sibling).to be_a Watir::HTMLElement
145
+ end
146
+
147
+ it 'accepts index argument' do
148
+ expect(browser.div(id: 'third_sibling').previous_sibling(index: 2).id).to eq 'between_siblings1'
149
+ expect(browser.div(id: 'third_sibling').previous_sibling(index: 2)).to be_a Watir::HTMLElement
150
+ end
151
+
152
+ it 'accepts tag_name argument' do
153
+ expect(browser.div(id: 'third_sibling').previous_sibling(tag_name: 'div').id).to eq 'second_sibling'
154
+ expect(browser.div(id: 'third_sibling').previous_sibling(tag_name: 'div')).to be_a Watir::Div
155
+ end
156
+
157
+ it 'accepts class_name argument' do
158
+ expect(browser.div(id: 'third_sibling').previous_sibling(class_name: 'a').id).to eq 'between_siblings2'
159
+ end
160
+
161
+ it 'accepts index and tag_name arguments' do
162
+ expect(browser.div(id: 'third_sibling').previous_sibling(tag_name: 'div', index: 1).id).to eq 'first_sibling'
163
+ expect(browser.div(id: 'third_sibling').previous_sibling(tag_name: 'div', index: 1)).to be_a Watir::Div
164
+ end
165
+
166
+ it 'does not error when no next sibling of an index exists' do
167
+ expect(browser.body.previous_sibling(index: 1)).not_to exist
168
+ end
169
+
170
+ it 'does not error when no next sibling of a tag_name exists' do
171
+ expect(browser.div(id: 'third_sibling').previous_sibling(tag_name: 'table')).not_to exist
172
+ end
173
+ end
174
+
175
+ describe '#previous_siblings' do
176
+ it 'gets collection of previous siblings of an element by default' do
177
+ expect(browser.div(id: 'second_sibling').previous_siblings).to be_a Watir::HTMLElementCollection
178
+ expect(browser.div(id: 'second_sibling').previous_siblings.size).to eq 2
179
+ end
180
+
181
+ it 'accepts tag_name argument' do
182
+ expect(browser.div(id: 'second_sibling').previous_siblings(tag_name: 'div').size).to eq 1
183
+ expect(browser.div(id: 'second_sibling').previous_siblings(tag_name: 'div').first).to be_a Watir::Div
184
+ end
185
+
186
+ it 'accepts class_name argument' do
187
+ expect(browser.div(id: 'second_sibling').previous_siblings(class_name: 'a').size).to eq 1
188
+ expect(browser.div(id: 'second_sibling').previous_siblings(class_name: 'a').first.id).to eq 'between_siblings1'
189
+ end
190
+ end
191
+
192
+ describe '#child' do
193
+ it 'gets immediate child of an element by default' do
194
+ expect(browser.div(id: 'parent').child.id).to eq 'first_sibling'
195
+ expect(browser.div(id: 'parent').child).to be_a Watir::HTMLElement
196
+ end
197
+
198
+ it 'accepts index argument' do
199
+ expect(browser.div(id: 'parent').child(index: 2).id).to eq 'second_sibling'
200
+ expect(browser.div(id: 'parent').child(index: 2)).to be_a Watir::HTMLElement
201
+ end
202
+
203
+ it 'accepts tag_name argument' do
204
+ expect(browser.div(id: 'parent').child(tag_name: 'span').id).to eq 'between_siblings1'
205
+ expect(browser.div(id: 'parent').child(tag_name: 'span')).to be_a Watir::Span
206
+ end
207
+
208
+ it 'accepts custom tag_name argument' do
209
+ expect(browser.element(id: 'custom_parent').child(tag_name: 'childelement').id).to eq 'custom_child'
210
+ expect(browser.element(id: 'custom_parent').child(tag_name: 'childelement')).to be_a Watir::HTMLElement
211
+ end
212
+
213
+ it 'accepts class_name argument' do
214
+ expect(browser.div(id: 'parent').child(class_name: 'b').id).to eq 'second_sibling'
215
+ end
216
+
217
+ it 'accepts index and tag_name arguments' do
218
+ expect(browser.div(id: 'parent').child(tag_name: 'div', index: 1).id).to eq 'second_sibling'
219
+ expect(browser.div(id: 'parent').child(tag_name: 'div', index: 1)).to be_a Watir::Div
220
+ end
221
+
222
+ it 'does not error when no next sibling of an index exists' do
223
+ expect(browser.div(id: 'second_sibling').child(index: 1)).not_to exist
224
+ end
225
+
226
+ it 'does not error when no next sibling of a tag_name exists' do
227
+ expect(browser.div(id: 'parent').child(tag_name: 'table')).not_to exist
228
+ end
229
+ end
230
+
231
+ describe '#children' do
232
+ it 'gets collection of children of an element by default' do
233
+ expect(browser.div(id: 'parent').children).to be_a Watir::HTMLElementCollection
234
+ expect(browser.div(id: 'parent').children.size).to eq 5
235
+ end
236
+
237
+ it 'accepts tag_name argument' do
238
+ children = browser.div(id: 'parent').children(tag_name: 'div')
239
+ expect(children.size).to eq 3
240
+ expect(children.all?(Watir::Div)).to be true
241
+ end
242
+
243
+ it 'accepts custom tag_name argument' do
244
+ children = browser.element(id: 'custom_parent').children(tag_name: 'childelement')
245
+ expect(children.size).to eq 3
246
+ expect(children.all?(Watir::HTMLElement)).to be true
247
+ end
248
+
249
+ it 'accepts a class_name argument' do
250
+ children = browser.div(id: 'parent').children(class_name: 'b')
251
+ expect(children.size).to eq 2
252
+ expect(children.all?(Watir::Div)).to be true
253
+ end
254
+ end
255
+ end
256
+ end
@@ -0,0 +1,204 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'watirspec_helper'
4
+
5
+ module Watir
6
+ describe AfterHooks do
7
+ describe '#add' do
8
+ it 'raises ArgumentError when not given any arguments' do
9
+ expect { browser.after_hooks.add }.to raise_error(ArgumentError)
10
+ end
11
+
12
+ it 'runs the given proc on each page load' do
13
+ proc = proc { |browser| @output = browser.text }
14
+
15
+ begin
16
+ browser.alert.dismiss if browser.alert.exists?
17
+ browser.after_hooks.add(proc)
18
+ browser.goto(WatirSpec.url_for('non_control_elements.html'))
19
+
20
+ expect(@output).to include('Dubito, ergo cogito, ergo sum')
21
+ ensure
22
+ browser.after_hooks.delete(proc)
23
+ end
24
+ end
25
+
26
+ it 'runs the given block on each page load' do
27
+ browser.after_hooks.add { |browser| @output = browser.text }
28
+ browser.goto(WatirSpec.url_for('non_control_elements.html'))
29
+
30
+ expect(@output).to include('Dubito, ergo cogito, ergo sum')
31
+ ensure
32
+ browser.after_hooks.delete browser.after_hooks[0]
33
+ end
34
+ end
35
+
36
+ describe '#delete' do
37
+ it 'removes a previously added after_hook' do
38
+ after_hook = ->(browser) { @output = browser.text }
39
+
40
+ browser.after_hooks.add(after_hook)
41
+ browser.goto(WatirSpec.url_for('non_control_elements.html'))
42
+ expect(@output).to include('Dubito, ergo cogito, ergo sum')
43
+
44
+ browser.after_hooks.delete(after_hook)
45
+ browser.goto(WatirSpec.url_for('definition_lists.html'))
46
+ expect(@output).not_to include('definition_lists')
47
+ end
48
+ end
49
+
50
+ describe '#run' do
51
+ before { @yield = nil }
52
+
53
+ after do
54
+ browser.after_hooks.delete @page_after_hook
55
+ end
56
+
57
+ it 'runs after_hooks after Browser#goto' do
58
+ @page_after_hook = proc { @yield = browser.title == 'The font element' }
59
+ browser.after_hooks.add @page_after_hook
60
+ browser.goto WatirSpec.url_for('font.html')
61
+ expect(@yield).to be true
62
+ end
63
+
64
+ it 'runs after_hooks after Browser#refresh' do
65
+ browser.goto WatirSpec.url_for('font.html')
66
+ @page_after_hook = proc do
67
+ @yield = browser.title == 'The font element'
68
+ end
69
+ browser.after_hooks.add @page_after_hook
70
+ browser.refresh
71
+ expect(@yield).to be true
72
+ end
73
+
74
+ it 'runs after_hooks after Element#click' do
75
+ browser.goto(WatirSpec.url_for('non_control_elements.html'))
76
+ @page_after_hook = proc do
77
+ browser.wait_until { |b| b.title == 'Forms with input elements' }
78
+ @yield = true
79
+ end
80
+ browser.after_hooks.add @page_after_hook
81
+ browser.link(index: 2).click
82
+ expect(@yield).to be true
83
+ end
84
+
85
+ it 'runs after_hooks after Element#submit' do
86
+ browser.goto(WatirSpec.url_for('forms_with_input_elements.html'))
87
+ @page_after_hook = proc { @yield = browser.div(id: 'messages').text == 'submit' }
88
+ browser.after_hooks.add @page_after_hook
89
+ browser.form(id: 'new_user').submit
90
+ expect(@yield).to be true
91
+ end
92
+
93
+ it 'runs after_hooks after Element#double_click' do
94
+ browser.goto(WatirSpec.url_for('non_control_elements.html'))
95
+ @page_after_hook = proc { @yield = browser.title == 'Non-control elements' }
96
+ browser.after_hooks.add @page_after_hook
97
+ div = browser.div(id: 'html_test')
98
+ div.double_click
99
+ expect(@yield).to be true
100
+ end
101
+
102
+ it 'runs after_hooks after Element#right_click' do
103
+ browser.goto(WatirSpec.url_for('right_click.html'))
104
+ @page_after_hook = proc { @yield = browser.title == 'Right Click Test' }
105
+ browser.after_hooks.add @page_after_hook
106
+ div = browser.div(id: 'click')
107
+ div.right_click
108
+ expect(@yield).to be true
109
+ end
110
+
111
+ it 'runs after_hooks after Alert#ok' do
112
+ browser.goto(WatirSpec.url_for('alerts.html'))
113
+ @page_after_hook = proc { @yield = browser.title == 'Alerts' }
114
+ browser.after_hooks.add @page_after_hook
115
+ browser.after_hooks.without { browser.button(id: 'alert').click }
116
+ browser.alert.ok
117
+ expect(@yield).to be true
118
+ end
119
+
120
+ it 'runs after_hooks after Alert#close' do
121
+ browser.goto(WatirSpec.url_for('alerts.html'))
122
+ @page_after_hook = proc { @yield = browser.title == 'Alerts' }
123
+ browser.after_hooks.add @page_after_hook
124
+ browser.after_hooks.without { browser.button(id: 'alert').click }
125
+ browser.alert.close
126
+ expect(@yield).to be true
127
+ end
128
+
129
+ it 'does not run error checks with alert present' do
130
+ browser.goto WatirSpec.url_for('alerts.html')
131
+
132
+ @page_after_hook = proc { @yield = browser.title == 'Alerts' }
133
+ browser.after_hooks.add @page_after_hook
134
+
135
+ browser.button(id: 'alert').click
136
+ expect(@yield).to be_nil
137
+
138
+ browser.alert.ok
139
+ expect(@yield).to be true
140
+ end
141
+
142
+ it 'does not raise error when running error checks using #after_hooks#without with alert present' do
143
+ url = WatirSpec.url_for('alerts.html')
144
+ @page_after_hook = proc { browser.url }
145
+ browser.after_hooks.add @page_after_hook
146
+ browser.goto url
147
+ expect { browser.after_hooks.without { browser.button(id: 'alert').click } }.not_to raise_error
148
+ browser.alert.ok
149
+ end
150
+
151
+ it 'does not raise error if no error checks are defined with alert present' do
152
+ url = WatirSpec.url_for('alerts.html')
153
+ @page_after_hook = proc { browser.url }
154
+ browser.after_hooks.add @page_after_hook
155
+ browser.goto url
156
+ browser.after_hooks.delete @page_after_hook
157
+ expect { browser.button(id: 'alert').click }.not_to raise_error
158
+ browser.alert.ok
159
+ end
160
+
161
+ it 'does not raise error when running error checks on closed window',
162
+ exclude: [{browser: :safari,
163
+ reason: 'Clicking an Element that Closes a Window is returning NoMatchingWindowFoundException'},
164
+ {browser: :firefox,
165
+ platform: :windows,
166
+ reason: 'https://github.com/mozilla/geckodriver/issues/1847'},
167
+ {browser: :ie,
168
+ reason: 'IE and windows do not play well together'}] do
169
+ url = WatirSpec.url_for('window_switching.html')
170
+ @page_after_hook = proc { browser.url }
171
+ browser.after_hooks.add @page_after_hook
172
+ browser.goto url
173
+ browser.a(id: 'open').click
174
+
175
+ window = browser.window(title: 'closeable window')
176
+ window.use
177
+ expect { browser.a(id: 'close').click }.not_to raise_error
178
+ browser.original_window.use
179
+ end
180
+ end
181
+
182
+ describe '#length' do
183
+ it 'provides the number of after hooks' do
184
+ hook = proc { true }
185
+ begin
186
+ 4.times { browser.after_hooks.add(hook) }
187
+ expect(browser.after_hooks.length).to eq 4
188
+ ensure
189
+ 4.times { browser.after_hooks.delete(hook) }
190
+ end
191
+ end
192
+ end
193
+
194
+ describe '#[]' do
195
+ it 'returns the after hook at the provided index' do
196
+ hook1 = proc { true }
197
+ hook2 = proc { false }
198
+ browser.after_hooks.add(hook1)
199
+ browser.after_hooks.add(hook2)
200
+ expect(browser.after_hooks[1]).to eq hook2
201
+ end
202
+ end
203
+ end
204
+ end
@@ -0,0 +1,89 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'watirspec_helper'
4
+
5
+ module Watir
6
+ describe Alert do
7
+ before do
8
+ browser.goto WatirSpec.url_for('alerts.html')
9
+ end
10
+
11
+ after do
12
+ browser.alert.ok if browser.alert.exists?
13
+ end
14
+
15
+ describe 'Waits' do
16
+ context 'when acting on an alert' do
17
+ it 'raises exception after timing out' do
18
+ expect { browser.alert.text }.to wait_and_raise_unknown_object_exception
19
+ end
20
+ end
21
+ end
22
+
23
+ describe 'alert' do
24
+ describe '#text' do
25
+ it 'returns text of alert' do
26
+ browser.button(id: 'alert').click
27
+ expect(browser.alert.text).to include('ok')
28
+ end
29
+ end
30
+
31
+ describe '#exists?' do
32
+ it 'returns false if alert is not present' do
33
+ expect(browser.alert).not_to exist
34
+ end
35
+
36
+ it 'returns true if alert is present' do
37
+ browser.button(id: 'alert').click
38
+ browser.wait_until(timeout: 10) { browser.alert.exists? }
39
+ expect(browser.alert.exist?).to be true
40
+ end
41
+ end
42
+
43
+ describe '#ok' do
44
+ it 'closes alert' do
45
+ browser.button(id: 'alert').click
46
+ browser.alert.ok
47
+ expect(browser.alert).not_to exist
48
+ end
49
+ end
50
+
51
+ describe '#close' do
52
+ it 'closes alert' do
53
+ browser.button(id: 'alert').click
54
+ browser.alert.close
55
+ expect(browser.alert).not_to exist
56
+ end
57
+ end
58
+ end
59
+
60
+ describe 'confirm' do
61
+ describe '#ok' do
62
+ it 'accepts confirm' do
63
+ browser.button(id: 'confirm').click
64
+ browser.alert.ok
65
+ expect(browser.button(id: 'confirm').value).to eq 'true'
66
+ end
67
+ end
68
+
69
+ describe '#close' do
70
+ it 'cancels confirm' do
71
+ browser.button(id: 'confirm').click
72
+ browser.alert.close
73
+ expect(browser.button(id: 'confirm').value).to eq 'false'
74
+ end
75
+ end
76
+ end
77
+
78
+ describe 'prompt' do
79
+ describe '#set' do
80
+ it 'enters text to prompt' do
81
+ browser.button(id: 'prompt').click
82
+ browser.alert.set 'My Name'
83
+ browser.alert.ok
84
+ expect(browser.button(id: 'prompt').value).to eq 'My Name'
85
+ end
86
+ end
87
+ end
88
+ end
89
+ end