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,180 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'watirspec_helper'
4
+
5
+ module Watir
6
+ describe Anchor do
7
+ before do
8
+ browser.goto(WatirSpec.url_for('non_control_elements.html'))
9
+ end
10
+
11
+ # Exists method
12
+ describe '#exist?' do
13
+ it 'returns true if the link exists' do
14
+ expect(browser.link(id: 'link_2')).to exist
15
+ expect(browser.link(id: /link_2/)).to exist
16
+ expect(browser.link(title: 'link_title_2')).to exist
17
+ expect(browser.link(title: /link_title_2/)).to exist
18
+ expect(browser.link(text: 'Link 2')).to exist
19
+ expect(browser.link(text: /Link 2/i)).to exist
20
+ expect(browser.link(href: 'non_control_elements.html')).to exist
21
+ expect(browser.link(href: /non_control_elements.html/)).to exist
22
+ expect(browser.link(index: 1)).to exist
23
+ expect(browser.link(xpath: "//a[@id='link_2']")).to exist
24
+ end
25
+
26
+ it 'returns the first link if given no args' do
27
+ expect(browser.link).to exist
28
+ end
29
+
30
+ it 'strips spaces from href attribute when locating elements' do
31
+ expect(browser.link(href: /strip_space$/)).to exist
32
+ end
33
+
34
+ it "returns false if the link doesn't exist" do
35
+ expect(browser.link(id: 'no_such_id')).not_to exist
36
+ expect(browser.link(id: /no_such_id/)).not_to exist
37
+ expect(browser.link(title: 'no_such_title')).not_to exist
38
+ expect(browser.link(title: /no_such_title/)).not_to exist
39
+ expect(browser.link(text: 'no_such_text')).not_to exist
40
+ expect(browser.link(text: /no_such_text/i)).not_to exist
41
+ expect(browser.link(href: 'no_such_href')).not_to exist
42
+ expect(browser.link(href: /no_such_href/)).not_to exist
43
+ expect(browser.link(index: 1337)).not_to exist
44
+ expect(browser.link(xpath: "//a[@id='no_such_id']")).not_to exist
45
+ end
46
+
47
+ it "raises TypeError when 'what' argument is invalid" do
48
+ expect { browser.link(id: 3.14).exists? }.to raise_error(TypeError)
49
+ end
50
+ end
51
+
52
+ # Attribute methods
53
+ describe '#href' do
54
+ it 'returns the href attribute if the link exists' do
55
+ expect(browser.link(index: 1).href).to match(/non_control_elements/)
56
+ end
57
+
58
+ it "returns an empty string if the link exists and the attribute doesn't" do
59
+ expect(browser.link(index: 0).href).to eq ''
60
+ end
61
+
62
+ it "raises an UnknownObjectException if the link doesn't exist" do
63
+ expect { browser.link(index: 1337).href }.to raise_unknown_object_exception
64
+ end
65
+ end
66
+
67
+ describe '#id' do
68
+ it 'returns the id attribute if the link exists' do
69
+ expect(browser.link(index: 1).id).to eq 'link_2'
70
+ end
71
+
72
+ it "returns an empty string if the link exists and the attribute doesn't" do
73
+ expect(browser.link(index: 0).id).to eq ''
74
+ end
75
+
76
+ it "raises an UnknownObjectException if the link doesn't exist" do
77
+ expect { browser.link(index: 1337).id }.to raise_unknown_object_exception
78
+ end
79
+ end
80
+
81
+ describe '#text' do
82
+ it 'returns the link text' do
83
+ expect(browser.link(index: 1).text).to eq 'Link 2'
84
+ end
85
+
86
+ it 'returns an empty string if the link exists and contains no text' do
87
+ expect(browser.link(index: 0).text).to eq ''
88
+ end
89
+
90
+ it "raises an UnknownObjectException if the link doesn't exist" do
91
+ expect { browser.link(index: 1337).text }.to raise_unknown_object_exception
92
+ end
93
+ end
94
+
95
+ describe '#title' do
96
+ it 'returns the type attribute if the link exists' do
97
+ expect(browser.link(index: 1).title).to eq 'link_title_2'
98
+ end
99
+
100
+ it "returns an empty string if the link exists and the attribute doesn't" do
101
+ expect(browser.link(index: 0).title).to eq ''
102
+ end
103
+
104
+ it "raises an UnknownObjectException if the link doesn't exist" do
105
+ expect { browser.link(index: 1337).title }.to raise_unknown_object_exception
106
+ end
107
+ end
108
+
109
+ describe '#respond_to?' do
110
+ it 'returns true for all attribute methods' do
111
+ expect(browser.link(index: 0)).to respond_to(:class_name)
112
+ expect(browser.link(index: 0)).to respond_to(:href)
113
+ expect(browser.link(index: 0)).to respond_to(:id)
114
+ expect(browser.link(index: 0)).to respond_to(:style)
115
+ expect(browser.link(index: 0)).to respond_to(:text)
116
+ expect(browser.link(index: 0)).to respond_to(:title)
117
+ end
118
+ end
119
+
120
+ # Manipulation methods
121
+ # Note: the #wait_until calls are hacks for Safari specifically
122
+ describe '#click' do
123
+ it 'finds an existing link by (text: String) and clicks it' do
124
+ element = browser.link(text: 'Link 3')
125
+ element.wait_until { |link| !link.exist? || link.click }
126
+ expect(browser.h1(text: 'User administration')).to exist
127
+ end
128
+
129
+ it 'finds an existing link by (text: Regexp) and clicks it' do
130
+ element = browser.link(href: /forms_with_input_elements/)
131
+ element.wait_until { |link| !link.exist? || link.click }
132
+ expect(browser.h1(text: 'User administration')).to exist
133
+ end
134
+
135
+ it 'finds an existing link by (index: Integer) and clicks it' do
136
+ element = browser.link(index: 2)
137
+ element.wait_until { |link| !link.exist? || link.click }
138
+ expect(browser.h1(text: 'User administration')).to exist
139
+ end
140
+
141
+ it "raises an UnknownObjectException if the link doesn't exist" do
142
+ expect { browser.link(index: 1337).click }.to raise_unknown_object_exception
143
+ end
144
+
145
+ it 'clicks a link with no text content but an img child' do
146
+ browser.goto WatirSpec.url_for('images.html')
147
+ browser.link(href: /definition_lists.html/).click
148
+ browser.wait_while(title: /^(Images|)$/)
149
+ expect(browser.title).to eq 'definition_lists'
150
+ end
151
+ end
152
+
153
+ describe 'visible text' do
154
+ it 'finds links by visible text' do
155
+ browser.goto WatirSpec.url_for('non_control_elements.html')
156
+
157
+ expect(browser.link(visible_text: 'all visible')).to exist
158
+ expect(browser.link(visible_text: /all visible/)).to exist
159
+ expect(browser.link(visible_text: /some visible/)).to exist
160
+
161
+ expect(browser.link(visible_text: 'Link 2', class: 'external')).to exist
162
+ expect(browser.link(visible_text: /Link 2/, class: 'external')).to exist
163
+ end
164
+
165
+ it 'finds links in spite of hidden text' do
166
+ browser.goto WatirSpec.url_for('non_control_elements.html')
167
+
168
+ expect(browser.link(visible_text: 'some visible')).to exist
169
+ expect(browser.link(visible_text: 'none visible')).not_to exist
170
+ expect(browser.link(visible_text: /none visible/)).not_to exist
171
+ end
172
+
173
+ it 'raises exception unless value is a String or a RegExp' do
174
+ browser.goto WatirSpec.url_for('non_control_elements.html')
175
+ msg = /expected one of \[String, Regexp\], got 7:Integer/
176
+ expect { browser.link(visible_text: 7).exists? }.to raise_exception(TypeError, msg)
177
+ end
178
+ end
179
+ end
180
+ end
@@ -0,0 +1,66 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'watirspec_helper'
4
+
5
+ module Watir
6
+ describe AnchorCollection do
7
+ before do
8
+ browser.goto(WatirSpec.url_for('non_control_elements.html'))
9
+ end
10
+
11
+ describe 'with selectors' do
12
+ it 'returns the matching elements' do
13
+ expect(browser.links(title: 'link_title_2').to_a).to eq [browser.link(title: 'link_title_2')]
14
+ end
15
+ end
16
+
17
+ describe '#length' do
18
+ it 'returns the number of links' do
19
+ expect(browser.links.length).to eq 7
20
+ end
21
+ end
22
+
23
+ describe '#[]' do
24
+ it 'returns the link at the given index' do
25
+ expect(browser.links[2].id).to eq 'link_3'
26
+ end
27
+
28
+ it 'returns a Link object also when the index is out of bounds' do
29
+ expect(browser.links[2000]).not_to be_nil
30
+ end
31
+ end
32
+
33
+ describe '#each' do
34
+ it 'iterates through links correctly' do
35
+ count = 0
36
+
37
+ browser.links.each_with_index do |c, index|
38
+ expect(c.id).to eq browser.link(index: index).id
39
+ count += 1
40
+ end
41
+
42
+ expect(count).to be > 0
43
+ end
44
+ end
45
+
46
+ describe 'visible text' do
47
+ it 'finds links by visible text' do
48
+ browser.goto WatirSpec.url_for('non_control_elements.html')
49
+ container = browser.div(id: 'visible_link')
50
+ expect(container.links(visible_text: 'all visible').count).to eq(1)
51
+ expect(container.links(visible_text: /all visible/).count).to eq(1)
52
+ expect(container.links(visible_text: /some visible/).count).to eq(1)
53
+ end
54
+
55
+ it 'finds links in spite of hidden text',
56
+ except: {browser: :safari, reason: 'Safari is not filtering out hidden text'} do
57
+ browser.goto WatirSpec.url_for('non_control_elements.html')
58
+ container = browser.div(id: 'visible_text')
59
+
60
+ expect(container.divs(visible_text: 'some visible').count).to eq(1)
61
+ expect(container.divs(visible_text: 'none visible').count).to eq(0)
62
+ expect(container.divs(visible_text: /none visible/).count).to eq(0)
63
+ end
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'watirspec_helper'
4
+
5
+ module Watir
6
+ describe LICollection do
7
+ before do
8
+ browser.goto(WatirSpec.url_for('non_control_elements.html'))
9
+ end
10
+
11
+ describe 'with selectors' do
12
+ it 'returns the matching elements' do
13
+ expect(browser.lis(class: 'nonlink').to_a).to eq [browser.li(class: 'nonlink')]
14
+ end
15
+ end
16
+
17
+ describe '#length' do
18
+ it 'returns the number of lis' do
19
+ expect(browser.lis.length).to eq 18
20
+ end
21
+ end
22
+
23
+ describe '#[]' do
24
+ it 'returns the li at the given index' do
25
+ expect(browser.lis[4].id).to eq 'non_link_1'
26
+ end
27
+ end
28
+
29
+ describe '#each' do
30
+ it 'iterates through lis correctly' do
31
+ count = 0
32
+
33
+ browser.lis.each_with_index do |l, index|
34
+ expect(l.id).to eq browser.li(index: index).id
35
+ expect(l.value).to eq browser.li(index: index).value
36
+
37
+ count += 1
38
+ end
39
+
40
+ expect(count).to be > 0
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,50 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'watirspec_helper'
4
+
5
+ module Watir
6
+ describe List do
7
+ before do
8
+ browser.goto(WatirSpec.url_for('non_control_elements.html'))
9
+ end
10
+
11
+ it 'returns the list items assocaited with an Ol' do
12
+ items = browser.ol(id: 'favorite_compounds').list_items
13
+ expect(items).to be_a Watir::LICollection
14
+ expect(items).to all(be_a Watir::LI)
15
+ end
16
+
17
+ it 'returns the list items assocaited with an Ul' do
18
+ items = browser.ul(id: 'navbar').list_items
19
+ expect(items).to be_a Watir::LICollection
20
+ expect(items).to all(be_a Watir::LI)
21
+ end
22
+
23
+ it 'gets the size of a list' do
24
+ ul = browser.ul(id: 'navbar')
25
+ expect(ul.size).to eq 7
26
+ end
27
+
28
+ it 'iterates over a list' do
29
+ ul = browser.ul(id: 'navbar')
30
+ expect(ul.map(&:tag_name)).to eq Array.new(7, 'li')
31
+ end
32
+
33
+ it 'gets a list item at the specified index' do
34
+ ul = browser.ul(id: 'navbar')
35
+ expect(ul[4].text).to eq 'Non-link 1'
36
+ end
37
+
38
+ it 'returns the list item size' do
39
+ items = browser.ol(id: 'favorite_compounds').list_items
40
+ expect(items.size).to eq 5
41
+ end
42
+
43
+ it 'returns list item at an index' do
44
+ items = browser.ol(id: 'favorite_compounds').list_items
45
+ third = browser.ol(id: 'favorite_compounds').li(index: 2)
46
+
47
+ expect(items[2]).to eq third
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,78 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'watirspec_helper'
4
+
5
+ module Watir
6
+ describe Map do
7
+ before do
8
+ browser.goto(WatirSpec.url_for('images.html'))
9
+ end
10
+
11
+ # Exists method
12
+ describe '#exist?' do
13
+ it "returns true if the 'map' exists" do
14
+ expect(browser.map(id: 'triangle_map')).to exist
15
+ expect(browser.map(id: /triangle_map/)).to exist
16
+ expect(browser.map(name: 'triangle_map')).to exist
17
+ expect(browser.map(name: /triangle_map/)).to exist
18
+ expect(browser.map(index: 0)).to exist
19
+ expect(browser.map(xpath: "//map[@id='triangle_map']")).to exist
20
+ end
21
+
22
+ it 'returns the first map if given no args' do
23
+ expect(browser.map).to exist
24
+ end
25
+
26
+ it "returns false if the 'map' doesn't exist" do
27
+ expect(browser.map(id: 'no_such_id')).not_to exist
28
+ expect(browser.map(id: /no_such_id/)).not_to exist
29
+ expect(browser.map(name: 'no_such_id')).not_to exist
30
+ expect(browser.map(name: /no_such_id/)).not_to exist
31
+ expect(browser.map(index: 1337)).not_to exist
32
+ expect(browser.map(xpath: "//map[@id='no_such_id']")).not_to exist
33
+ end
34
+
35
+ it "raises TypeError when 'what' argument is invalid" do
36
+ expect { browser.map(id: 3.14).exists? }.to raise_error(TypeError)
37
+ end
38
+ end
39
+
40
+ # Attribute methods
41
+ describe '#id' do
42
+ it 'returns the id attribute' do
43
+ expect(browser.map(index: 0).id).to eq 'triangle_map'
44
+ end
45
+
46
+ it "returns an empty string if the element exists and the attribute doesn't" do
47
+ expect(browser.map(index: 1).id).to eq ''
48
+ end
49
+
50
+ it "raises UnknownObjectException if the p doesn't exist" do
51
+ expect { browser.map(id: 'no_such_id').id }.to raise_unknown_object_exception
52
+ expect { browser.map(index: 1337).id }.to raise_unknown_object_exception
53
+ end
54
+ end
55
+
56
+ describe '#name' do
57
+ it 'returns the name attribute' do
58
+ expect(browser.map(index: 0).name).to eq 'triangle_map'
59
+ end
60
+
61
+ it "returns an empty string if the element exists and the attribute doesn't" do
62
+ expect(browser.map(index: 1).name).to eq ''
63
+ end
64
+
65
+ it "raises UnknownObjectException if the map doesn't exist" do
66
+ expect { browser.map(id: 'no_such_id').name }.to raise_unknown_object_exception
67
+ expect { browser.map(index: 1337).name }.to raise_unknown_object_exception
68
+ end
69
+ end
70
+
71
+ describe '#respond_to?' do
72
+ it 'returns true for all attribute methods' do
73
+ expect(browser.map(index: 0)).to respond_to(:id)
74
+ expect(browser.map(index: 0)).to respond_to(:name)
75
+ end
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'watirspec_helper'
4
+
5
+ module Watir
6
+ describe MapCollection do
7
+ before do
8
+ browser.goto(WatirSpec.url_for('images.html'))
9
+ end
10
+
11
+ describe 'with selectors' do
12
+ it 'returns the matching elements' do
13
+ expect(browser.maps(name: 'triangle_map').to_a).to eq [browser.map(name: 'triangle_map')]
14
+ end
15
+ end
16
+
17
+ describe '#length' do
18
+ it 'returns the number of maps' do
19
+ expect(browser.maps.length).to eq 2
20
+ end
21
+ end
22
+
23
+ describe '#[]' do
24
+ it 'returns the p at the given index' do
25
+ expect(browser.maps[0].id).to eq 'triangle_map'
26
+ end
27
+ end
28
+
29
+ describe '#each' do
30
+ it 'iterates through maps correctly' do
31
+ count = 0
32
+
33
+ browser.maps.each_with_index do |m, index|
34
+ expect(m.name).to eq browser.map(index: index).name
35
+ expect(m.id).to eq browser.map(index: index).id
36
+ count += 1
37
+ end
38
+
39
+ expect(count).to be > 0
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'watirspec_helper'
4
+
5
+ module Watir
6
+ describe Meta do
7
+ before do
8
+ browser.goto(WatirSpec.url_for('forms_with_input_elements.html'))
9
+ end
10
+
11
+ describe '#exist?' do
12
+ it 'returns true if the meta tag exists' do
13
+ expect(browser.meta(http_equiv: 'Content-Type')).to exist
14
+ end
15
+
16
+ it 'returns the first meta if given no args' do
17
+ expect(browser.meta).to exist
18
+ end
19
+ end
20
+
21
+ describe 'content' do
22
+ it 'returns the content attribute of the tag' do
23
+ expect(browser.meta(http_equiv: 'Content-Type').content).to eq 'text/html; charset=utf-8'
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'watirspec_helper'
4
+
5
+ module Watir
6
+ describe MetaCollection do
7
+ before do
8
+ browser.goto(WatirSpec.url_for('forms_with_input_elements.html'))
9
+ end
10
+
11
+ describe 'with selectors' do
12
+ it 'returns the matching elements' do
13
+ expect(browser.metas(name: 'description').to_a).to eq [browser.meta(name: 'description')]
14
+ end
15
+ end
16
+
17
+ describe '#length' do
18
+ it 'returns the number of meta elements' do
19
+ expect(browser.metas.length).to eq 2
20
+ end
21
+ end
22
+
23
+ describe '#[]' do
24
+ it 'returns the meta element at the given index' do
25
+ expect(browser.metas[1].name).to eq 'description'
26
+ end
27
+ end
28
+
29
+ describe '#each' do
30
+ it 'iterates through meta elements correctly' do
31
+ count = 0
32
+
33
+ browser.metas.each_with_index do |m, index|
34
+ expect(m.content).to eq browser.meta(index: index).content
35
+ count += 1
36
+ end
37
+
38
+ expect(count).to be > 0
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,63 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'watirspec_helper'
4
+
5
+ module Watir
6
+ describe OList do
7
+ before do
8
+ browser.goto(WatirSpec.url_for('non_control_elements.html'))
9
+ end
10
+
11
+ # Exists method
12
+ describe '#exist?' do
13
+ it "returns true if the 'ol' exists" do
14
+ expect(browser.ol(id: 'favorite_compounds')).to exist
15
+ expect(browser.ol(id: /favorite_compounds/)).to exist
16
+ expect(browser.ol(index: 0)).to exist
17
+ expect(browser.ol(xpath: "//ol[@id='favorite_compounds']")).to exist
18
+ end
19
+
20
+ it 'returns the first ol if given no args' do
21
+ expect(browser.ol).to exist
22
+ end
23
+
24
+ it "returns false if the 'ol' doesn't exist" do
25
+ expect(browser.ol(id: 'no_such_id')).not_to exist
26
+ expect(browser.ol(id: /no_such_id/)).not_to exist
27
+ expect(browser.ol(text: 'no_such_text')).not_to exist
28
+ expect(browser.ol(text: /no_such_text/)).not_to exist
29
+ expect(browser.ol(class: 'no_such_class')).not_to exist
30
+ expect(browser.ol(class: /no_such_class/)).not_to exist
31
+ expect(browser.ol(index: 1337)).not_to exist
32
+ expect(browser.ol(xpath: "//ol[@id='no_such_id']")).not_to exist
33
+ end
34
+
35
+ it "raises TypeError when 'what' argument is invalid" do
36
+ expect { browser.ol(id: 3.14).exists? }.to raise_error(TypeError)
37
+ end
38
+ end
39
+
40
+ # Attribute methods
41
+ describe '#id' do
42
+ it 'returns the id attribute' do
43
+ expect(browser.ol(class: 'chemistry').id).to eq 'favorite_compounds'
44
+ end
45
+
46
+ it "returns an empty string if the element exists and the attribute doesn't" do
47
+ expect(browser.ol(index: 1).id).to eq ''
48
+ end
49
+
50
+ it "raises UnknownObjectException if the ol doesn't exist" do
51
+ expect { browser.ol(id: 'no_such_id').id }.to raise_unknown_object_exception
52
+ expect { browser.ol(index: 1337).id }.to raise_unknown_object_exception
53
+ end
54
+ end
55
+
56
+ describe '#respond_to?' do
57
+ it 'returns true for all attribute methods' do
58
+ expect(browser.ol(index: 0)).to respond_to(:class_name)
59
+ expect(browser.ol(index: 0)).to respond_to(:id)
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'watirspec_helper'
4
+
5
+ module Watir
6
+ describe OListCollection do
7
+ before do
8
+ browser.goto(WatirSpec.url_for('non_control_elements.html'))
9
+ end
10
+
11
+ describe 'with selectors' do
12
+ it 'returns the matching elements' do
13
+ expect(browser.ols(class: 'chemistry').to_a).to eq [browser.ol(class: 'chemistry')]
14
+ end
15
+ end
16
+
17
+ describe '#length' do
18
+ it 'returns the number of ols' do
19
+ expect(browser.ols.length).to eq 2
20
+ end
21
+ end
22
+
23
+ describe '#[]' do
24
+ it 'returns the ol at the given index' do
25
+ expect(browser.ols[0].id).to eq 'favorite_compounds'
26
+ end
27
+ end
28
+
29
+ describe '#each' do
30
+ it 'iterates through ols correctly' do
31
+ count = 0
32
+
33
+ browser.ols.each_with_index do |ol, index|
34
+ expect(ol.id).to eq browser.ol(index: index).id
35
+ count += 1
36
+ end
37
+
38
+ expect(count).to be > 0
39
+ end
40
+ end
41
+ end
42
+ end