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,196 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'watirspec_helper'
4
+
5
+ module Watir
6
+ describe Cookies do
7
+ after { browser.cookies.clear }
8
+
9
+ it 'gets an empty list of cookies' do
10
+ browser.goto WatirSpec.url_for 'index.html'
11
+ expect(browser.cookies.to_a).to eq []
12
+ end
13
+
14
+ it 'gets any cookies set' do
15
+ browser.goto set_cookie_url
16
+
17
+ verify_cookies_count 1
18
+
19
+ cookie = browser.cookies.to_a.first
20
+ expect(cookie[:name]).to eq 'monster'
21
+ expect(cookie[:value]).to eq '1'
22
+ end
23
+
24
+ describe '#[]' do
25
+ before do
26
+ browser.goto set_cookie_url
27
+ verify_cookies_count 1
28
+ end
29
+
30
+ it 'returns cookie by symbol name' do
31
+ cookie = browser.cookies[:monster]
32
+ expect(cookie[:name]).to eq('monster')
33
+ expect(cookie[:value]).to eq('1')
34
+ end
35
+
36
+ it 'returns cookie by string name' do
37
+ cookie = browser.cookies['monster']
38
+ expect(cookie[:name]).to eq('monster')
39
+ expect(cookie[:value]).to eq('1')
40
+ end
41
+
42
+ it 'returns nil if there is no cookie with such name' do
43
+ expect(browser.cookies[:non_monster]).to be_nil
44
+ end
45
+ end
46
+
47
+ it 'adds a cookie without options' do
48
+ browser.goto WatirSpec.url_for 'index.html'
49
+ verify_cookies_count 0
50
+
51
+ browser.cookies.add 'foo', 'bar'
52
+ verify_cookies_count 1
53
+ end
54
+
55
+ it 'adds a cookie with a string expires value' do
56
+ browser.goto WatirSpec.url_for 'index.html'
57
+
58
+ expire_time = ::Time.now + 10_000
59
+
60
+ browser.cookies.add 'foo', 'bar', expires: expire_time.to_s
61
+
62
+ cookie = browser.cookies[:foo]
63
+ expect(cookie[:expires]).to be_a(::Time)
64
+ end
65
+
66
+ it 'adds a cookie with path',
67
+ except: {browser: :ie, reason: 'path contains two slashes'} do
68
+ browser.goto WatirSpec.url_for 'index.html'
69
+
70
+ options = {path: '/set_cookie'}
71
+ browser.cookies.add 'path', 'b', options
72
+
73
+ expect(browser.cookies.to_a).to be_empty
74
+
75
+ browser.goto set_cookie_url
76
+ cookie = browser.cookies.to_a.find { |e| e[:name] == 'path' }
77
+
78
+ expect(cookie[:name]).to eq 'path'
79
+ expect(cookie[:value]).to eq 'b'
80
+ expect(cookie[:path]).to eq '/set_cookie'
81
+ end
82
+
83
+ it 'adds a cookie with samesite value' do
84
+ browser.goto WatirSpec.url_for 'index.html'
85
+
86
+ options = {same_site: 'Strict'}
87
+ browser.cookies.add 'samesite', 'strict', options
88
+
89
+ cookie = browser.cookies.to_a.find { |e| e[:name] == 'samesite' }
90
+
91
+ expect(cookie[:name]).to eq 'samesite'
92
+ expect(cookie[:value]).to eq 'strict'
93
+ expect(cookie[:same_site]).to eq 'Strict'
94
+ end
95
+
96
+ it 'adds a cookie with httponly value' do
97
+ browser.goto WatirSpec.url_for 'index.html'
98
+
99
+ options = {http_only: true}
100
+ browser.cookies.add 'httponly', 'true', options
101
+
102
+ cookie = browser.cookies.to_a.find { |e| e[:name] == 'httponly' }
103
+
104
+ expect(cookie[:name]).to eq 'httponly'
105
+ expect(cookie[:value]).to eq 'true'
106
+ expect(cookie[:http_only]).to be true
107
+ expect(browser.execute_script('return document.cookie')).to be_empty
108
+ end
109
+
110
+ it 'adds a cookie with expiration' do
111
+ browser.goto WatirSpec.url_for 'index.html'
112
+
113
+ expires = ::Time.now + 10_000
114
+ options = {expires: expires}
115
+
116
+ browser.cookies.add 'expiration', 'b', options
117
+ cookie = browser.cookies.to_a.first
118
+
119
+ expect(cookie[:name]).to eq 'expiration'
120
+ expect(cookie[:value]).to eq 'b'
121
+
122
+ expect((cookie[:expires]).to_i).to be_within(2).of(expires.to_i)
123
+ end
124
+
125
+ # Pending resolution of https://github.com/w3c/webdriver/issues/1571
126
+ it 'adding cookie with security does not raise exception but can not be retrieved',
127
+ except: [{browser: :firefox,
128
+ reason: 'https://github.com/mozilla/geckodriver/issues/1840'},
129
+ {browser: %i[chrome edge], platform: :windows}] do
130
+ browser.goto WatirSpec.url_for 'index.html'
131
+
132
+ options = {secure: true}
133
+
134
+ browser.cookies.add 'secure', 'b', options
135
+ cookie = browser.cookies.to_a.find { |e| e[:name] == 'secure' }
136
+ expect(cookie).to be_nil
137
+ end
138
+
139
+ it 'removes a cookie' do
140
+ browser.goto set_cookie_url
141
+ verify_cookies_count 1
142
+
143
+ browser.cookies.delete 'monster'
144
+ verify_cookies_count 0
145
+ end
146
+
147
+ it 'clears all cookies' do
148
+ browser.goto set_cookie_url
149
+ browser.cookies.add 'foo', 'bar'
150
+ verify_cookies_count 2
151
+
152
+ browser.cookies.clear
153
+ verify_cookies_count 0
154
+ end
155
+
156
+ context 'when using file' do
157
+ let(:file) { "#{Dir.tmpdir}/cookies" }
158
+
159
+ before do
160
+ browser.goto set_cookie_url
161
+ browser.cookies.save file
162
+ end
163
+
164
+ describe '#save' do
165
+ it 'saves cookies to file' do
166
+ expect(File.read(file)).to eq(browser.cookies.to_a.to_yaml)
167
+ end
168
+ end
169
+
170
+ describe '#load', except: {browser: :ie} do
171
+ it 'loads cookies from file' do
172
+ browser.cookies.clear
173
+ browser.cookies.load file
174
+ expected = browser.cookies.to_a
175
+ actual = YAML.safe_load_file(file, permitted_classes: [::Symbol])
176
+
177
+ expected.each { |cookie| cookie.delete(:expires) }
178
+ actual.each { |cookie| cookie.delete(:expires) }
179
+
180
+ expect(actual).to eq(expected)
181
+ end
182
+ end
183
+ end
184
+
185
+ def set_cookie_url
186
+ # add timestamp to url to avoid caching in IE8
187
+ WatirSpec.url_for('set_cookie/index.html') + "?t=#{::Time.now.to_i + ::Time.now.usec}"
188
+ end
189
+
190
+ def verify_cookies_count(expected_size)
191
+ cookies = browser.cookies.to_a
192
+ msg = "expected #{expected_size} cookies, got #{cookies.size}: #{cookies.inspect}"
193
+ expect(cookies.size).to eq(expected_size), msg
194
+ end
195
+ end
196
+ end
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'watirspec_helper'
4
+
5
+ module Watir
6
+ describe Element do
7
+ describe 'using drag and drop', except: {browser: :ie} do
8
+ before { browser.goto WatirSpec.url_for('drag_and_drop.html') }
9
+
10
+ let(:draggable) { browser.div id: 'draggable' }
11
+ let(:droppable) { browser.div id: 'droppable' }
12
+
13
+ it 'can drag and drop an element onto another' do
14
+ expect(droppable.text).to include 'Drop here'
15
+ draggable.drag_and_drop_on droppable
16
+ expect(droppable.text).to include 'Dropped!'
17
+ end
18
+
19
+ it 'can drag and drop an element onto another with specified scroll position' do
20
+ expect(droppable.text).to include 'Drop here'
21
+ draggable.drag_and_drop_on droppable, scroll_to: :center
22
+ expect(droppable.text).to include 'Dropped!'
23
+ end
24
+
25
+ it 'can drag an element by the given offset' do
26
+ expect(droppable.text).to include 'Drop here'
27
+ draggable.drag_and_drop_by 200, 50
28
+ expect(droppable.text).to include 'Dropped!'
29
+ end
30
+
31
+ it 'can drag an element by the given offset with specified scroll position' do
32
+ expect(droppable.text).to include 'Drop here'
33
+ draggable.drag_and_drop_by 200, 50, scroll_to: :center
34
+ expect(droppable.text).to include 'Dropped!'
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,86 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'watirspec_helper'
4
+
5
+ module Watir
6
+ module Locators
7
+ class Element
8
+ describe Locator do
9
+ describe 'Visible Elements' do
10
+ before do
11
+ browser.goto(WatirSpec.url_for('wait.html'))
12
+ end
13
+
14
+ context 'when true' do
15
+ it 'finds single element' do
16
+ element = browser.body.element(visible: true)
17
+ expect(element.id).to eq 'foo'
18
+ end
19
+
20
+ it 'handles tag_name and index' do
21
+ element = browser.div(visible: true, index: 1)
22
+ expect(element.id).to eq 'buttons'
23
+ end
24
+
25
+ it 'handles :tag_name and a single regexp attribute' do
26
+ element = browser.div(visible: true, id: /ons/)
27
+ expect(element.id).to eq 'buttons'
28
+ end
29
+
30
+ it 'handles :xpath' do
31
+ element = browser.element(visible: true, xpath: './/div[@id="foo"]')
32
+ expect(element.id).to eq 'foo'
33
+ end
34
+
35
+ it 'handles :css' do
36
+ element = browser.element(visible: true, css: 'div#foo')
37
+ expect(element.id).to eq 'foo'
38
+ end
39
+
40
+ it 'handles in collections' do
41
+ elements = browser.divs(visible: true)
42
+ expect(elements.size).to eq 3
43
+ end
44
+ end
45
+
46
+ context 'when false' do
47
+ it 'finds single element' do
48
+ element = browser.body.element(visible: false)
49
+ expect(element.id).to eq 'bar'
50
+ end
51
+
52
+ it 'handles tag_name and index' do
53
+ element = browser.div(visible: false, index: 1)
54
+ expect(element.id).to eq 'also_hidden'
55
+ end
56
+
57
+ it 'handles :tag_name and a single regexp attribute' do
58
+ element = browser.div(visible: false, id: /_/)
59
+ expect(element.id).to eq 'also_hidden'
60
+ end
61
+
62
+ it 'handles :xpath' do
63
+ element = browser.element(visible: false, xpath: './/div[@id="bar"]')
64
+ expect(element.id).to eq 'bar'
65
+ end
66
+
67
+ it 'handles :css' do
68
+ element = browser.element(visible: false, css: 'div#bar')
69
+ expect(element.id).to eq 'bar'
70
+ end
71
+
72
+ it 'handles in collections' do
73
+ elements = browser.divs(visible: false)
74
+ expect(elements.size).to eq 3
75
+ end
76
+ end
77
+
78
+ it 'raises exception when value is not Boolean' do
79
+ msg = 'expected one of [TrueClass, FalseClass], got "true":String'
80
+ expect { browser.body.element(visible: 'true') }.to raise_exception(TypeError, msg)
81
+ end
82
+ end
83
+ end
84
+ end
85
+ end
86
+ end
@@ -0,0 +1,69 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'watirspec_helper'
4
+
5
+ module Watir
6
+ describe Area 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 area exists' do
14
+ expect(browser.area(id: 'NCE')).to exist
15
+ expect(browser.area(id: /NCE/)).to exist
16
+ expect(browser.area(title: 'Tables')).to exist
17
+ expect(browser.area(title: /Tables/)).to exist
18
+ expect(browser.area(href: 'tables.html')).to exist
19
+ expect(browser.area(href: /tables/)).to exist
20
+
21
+ expect(browser.area(index: 0)).to exist
22
+ expect(browser.area(xpath: "//area[@id='NCE']")).to exist
23
+ end
24
+
25
+ it 'returns the first area if given no args' do
26
+ expect(browser.area).to exist
27
+ end
28
+
29
+ it "returns false if the area doesn't exist" do
30
+ expect(browser.area(id: 'no_such_id')).not_to exist
31
+ expect(browser.area(id: /no_such_id/)).not_to exist
32
+ expect(browser.area(title: 'no_such_title')).not_to exist
33
+ expect(browser.area(title: /no_such_title/)).not_to exist
34
+
35
+ expect(browser.area(href: 'no-tables.html')).not_to exist
36
+ expect(browser.area(href: /no-tables/)).not_to exist
37
+
38
+ expect(browser.area(index: 1337)).not_to exist
39
+ expect(browser.area(xpath: "//area[@id='no_such_id']")).not_to exist
40
+ end
41
+
42
+ it "raises TypeError when 'what' argument is invalid" do
43
+ expect { browser.area(id: 3.14).exists? }.to raise_error(TypeError)
44
+ end
45
+ end
46
+
47
+ # Attribute methods
48
+ describe '#id' do
49
+ it 'returns the id attribute' do
50
+ expect(browser.area(index: 0).id).to eq 'NCE'
51
+ end
52
+
53
+ it "returns an empty string if the element exists and the attribute doesn't" do
54
+ expect(browser.area(index: 2).id).to eq ''
55
+ end
56
+
57
+ it "raises UnknownObjectException if the area doesn't exist" do
58
+ expect { browser.area(id: 'no_such_id').id }.to raise_unknown_object_exception
59
+ expect { browser.area(index: 1337).id }.to raise_unknown_object_exception
60
+ end
61
+ end
62
+
63
+ describe '#respond_to?' do
64
+ it 'returns true for all attribute methods' do
65
+ expect(browser.area(index: 0)).to respond_to(:id)
66
+ end
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'watirspec_helper'
4
+
5
+ module Watir
6
+ describe AreaCollection 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.areas(alt: 'Tables').to_a).to eq [browser.area(alt: 'Tables')]
14
+ end
15
+ end
16
+
17
+ describe '#length' do
18
+ it 'returns the number of areas' do
19
+ expect(browser.areas.length).to eq 3
20
+ end
21
+ end
22
+
23
+ describe '#[]' do
24
+ it 'returns the area at the given index' do
25
+ expect(browser.areas[0].id).to eq('NCE')
26
+ end
27
+ end
28
+
29
+ describe '#each' do
30
+ it 'iterates through areas correctly' do
31
+ count = 0
32
+
33
+ browser.areas.each_with_index do |a, index|
34
+ expect(a.id).to eq browser.area(index: index).id
35
+ expect(a.title).to eq browser.area(index: index).title
36
+
37
+ count += 1
38
+ end
39
+
40
+ expect(count).to be > 0
41
+ end
42
+ end
43
+ end
44
+ end