@oracle/oraclejet-webdriver 10.0.8

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 (667) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +16 -0
  3. package/bin/generate +509 -0
  4. package/bin/generate-jet +163 -0
  5. package/bin/templates/baseclass.ts-template +13 -0
  6. package/bin/templates/class.ts-template +12 -0
  7. package/bin/templates/element-test.spec.ts-template +28 -0
  8. package/bin/templates/index.ts-template +27 -0
  9. package/bin/templates/jetcomponents.json +71 -0
  10. package/bin/templates/package.json-template +15 -0
  11. package/bin/templates/tsconfig.json-template +19 -0
  12. package/elements/OjWebElement.js +233 -0
  13. package/elements/OjWebElement.js.map +1 -0
  14. package/elements/OjWebElement.ts +675 -0
  15. package/elements/index.js +214 -0
  16. package/elements/index.js.map +1 -0
  17. package/elements/index.ts +75 -0
  18. package/elements/oj-accordion/OjAccordion.js +8 -0
  19. package/elements/oj-accordion/OjAccordion.js.map +1 -0
  20. package/elements/oj-accordion/OjAccordion.ts +12 -0
  21. package/elements/oj-accordion/OjAccordionBase.js +20 -0
  22. package/elements/oj-accordion/OjAccordionBase.js.map +1 -0
  23. package/elements/oj-accordion/OjAccordionBase.ts +48 -0
  24. package/elements/oj-accordion/index.js +17 -0
  25. package/elements/oj-accordion/index.js.map +1 -0
  26. package/elements/oj-accordion/index.ts +27 -0
  27. package/elements/oj-button/OjButton.js +20 -0
  28. package/elements/oj-button/OjButton.js.map +1 -0
  29. package/elements/oj-button/OjButton.ts +35 -0
  30. package/elements/oj-button/OjButtonBase.js +23 -0
  31. package/elements/oj-button/OjButtonBase.js.map +1 -0
  32. package/elements/oj-button/OjButtonBase.ts +57 -0
  33. package/elements/oj-button/index.js +17 -0
  34. package/elements/oj-button/index.js.map +1 -0
  35. package/elements/oj-button/index.ts +27 -0
  36. package/elements/oj-buttonset-many/OjButtonsetMany.js +8 -0
  37. package/elements/oj-buttonset-many/OjButtonsetMany.js.map +1 -0
  38. package/elements/oj-buttonset-many/OjButtonsetMany.ts +11 -0
  39. package/elements/oj-buttonset-many/OjButtonsetManyBase.js +35 -0
  40. package/elements/oj-buttonset-many/OjButtonsetManyBase.js.map +1 -0
  41. package/elements/oj-buttonset-many/OjButtonsetManyBase.ts +93 -0
  42. package/elements/oj-buttonset-many/index.js +17 -0
  43. package/elements/oj-buttonset-many/index.js.map +1 -0
  44. package/elements/oj-buttonset-many/index.ts +27 -0
  45. package/elements/oj-buttonset-one/OjButtonsetOne.js +8 -0
  46. package/elements/oj-buttonset-one/OjButtonsetOne.js.map +1 -0
  47. package/elements/oj-buttonset-one/OjButtonsetOne.ts +11 -0
  48. package/elements/oj-buttonset-one/OjButtonsetOneBase.js +35 -0
  49. package/elements/oj-buttonset-one/OjButtonsetOneBase.js.map +1 -0
  50. package/elements/oj-buttonset-one/OjButtonsetOneBase.ts +93 -0
  51. package/elements/oj-buttonset-one/index.js +17 -0
  52. package/elements/oj-buttonset-one/index.js.map +1 -0
  53. package/elements/oj-buttonset-one/index.ts +27 -0
  54. package/elements/oj-chart/OjChart.js +8 -0
  55. package/elements/oj-chart/OjChart.js.map +1 -0
  56. package/elements/oj-chart/OjChart.ts +12 -0
  57. package/elements/oj-chart/OjChartBase.js +170 -0
  58. package/elements/oj-chart/OjChartBase.js.map +1 -0
  59. package/elements/oj-chart/OjChartBase.ts +2468 -0
  60. package/elements/oj-chart/index.js +17 -0
  61. package/elements/oj-chart/index.js.map +1 -0
  62. package/elements/oj-chart/index.ts +27 -0
  63. package/elements/oj-checkboxset/OjCheckboxset.js +39 -0
  64. package/elements/oj-checkboxset/OjCheckboxset.js.map +1 -0
  65. package/elements/oj-checkboxset/OjCheckboxset.ts +74 -0
  66. package/elements/oj-checkboxset/OjCheckboxsetBase.js +68 -0
  67. package/elements/oj-checkboxset/OjCheckboxsetBase.js.map +1 -0
  68. package/elements/oj-checkboxset/OjCheckboxsetBase.ts +262 -0
  69. package/elements/oj-checkboxset/index.js +17 -0
  70. package/elements/oj-checkboxset/index.js.map +1 -0
  71. package/elements/oj-checkboxset/index.ts +27 -0
  72. package/elements/oj-collapsible/OjCollapsible.js +23 -0
  73. package/elements/oj-collapsible/OjCollapsible.js.map +1 -0
  74. package/elements/oj-collapsible/OjCollapsible.ts +36 -0
  75. package/elements/oj-collapsible/OjCollapsibleBase.js +23 -0
  76. package/elements/oj-collapsible/OjCollapsibleBase.js.map +1 -0
  77. package/elements/oj-collapsible/OjCollapsibleBase.ts +57 -0
  78. package/elements/oj-collapsible/index.js +17 -0
  79. package/elements/oj-collapsible/index.js.map +1 -0
  80. package/elements/oj-collapsible/index.ts +27 -0
  81. package/elements/oj-color-palette/OjColorPalette.js +8 -0
  82. package/elements/oj-color-palette/OjColorPalette.js.map +1 -0
  83. package/elements/oj-color-palette/OjColorPalette.ts +12 -0
  84. package/elements/oj-color-palette/OjColorPaletteBase.js +65 -0
  85. package/elements/oj-color-palette/OjColorPaletteBase.js.map +1 -0
  86. package/elements/oj-color-palette/OjColorPaletteBase.ts +235 -0
  87. package/elements/oj-color-palette/index.js +17 -0
  88. package/elements/oj-color-palette/index.js.map +1 -0
  89. package/elements/oj-color-palette/index.ts +27 -0
  90. package/elements/oj-color-spectrum/OjColorSpectrum.js +8 -0
  91. package/elements/oj-color-spectrum/OjColorSpectrum.js.map +1 -0
  92. package/elements/oj-color-spectrum/OjColorSpectrum.ts +12 -0
  93. package/elements/oj-color-spectrum/OjColorSpectrumBase.js +56 -0
  94. package/elements/oj-color-spectrum/OjColorSpectrumBase.js.map +1 -0
  95. package/elements/oj-color-spectrum/OjColorSpectrumBase.ts +210 -0
  96. package/elements/oj-color-spectrum/index.js +17 -0
  97. package/elements/oj-color-spectrum/index.js.map +1 -0
  98. package/elements/oj-color-spectrum/index.ts +27 -0
  99. package/elements/oj-combobox-many/OjComboboxMany.js +51 -0
  100. package/elements/oj-combobox-many/OjComboboxMany.js.map +1 -0
  101. package/elements/oj-combobox-many/OjComboboxMany.ts +80 -0
  102. package/elements/oj-combobox-many/OjComboboxManyBase.js +98 -0
  103. package/elements/oj-combobox-many/OjComboboxManyBase.js.map +1 -0
  104. package/elements/oj-combobox-many/OjComboboxManyBase.ts +428 -0
  105. package/elements/oj-combobox-many/index.js +17 -0
  106. package/elements/oj-combobox-many/index.js.map +1 -0
  107. package/elements/oj-combobox-many/index.ts +27 -0
  108. package/elements/oj-combobox-one/OjComboboxOne.js +49 -0
  109. package/elements/oj-combobox-one/OjComboboxOne.js.map +1 -0
  110. package/elements/oj-combobox-one/OjComboboxOne.ts +74 -0
  111. package/elements/oj-combobox-one/OjComboboxOneBase.js +101 -0
  112. package/elements/oj-combobox-one/OjComboboxOneBase.js.map +1 -0
  113. package/elements/oj-combobox-one/OjComboboxOneBase.ts +437 -0
  114. package/elements/oj-combobox-one/index.js +17 -0
  115. package/elements/oj-combobox-one/index.js.map +1 -0
  116. package/elements/oj-combobox-one/index.ts +27 -0
  117. package/elements/oj-conveyor-belt/OjConveyorBelt.js +16 -0
  118. package/elements/oj-conveyor-belt/OjConveyorBelt.js.map +1 -0
  119. package/elements/oj-conveyor-belt/OjConveyorBelt.ts +30 -0
  120. package/elements/oj-conveyor-belt/OjConveyorBeltBase.js +29 -0
  121. package/elements/oj-conveyor-belt/OjConveyorBeltBase.js.map +1 -0
  122. package/elements/oj-conveyor-belt/OjConveyorBeltBase.ts +87 -0
  123. package/elements/oj-conveyor-belt/index.js +17 -0
  124. package/elements/oj-conveyor-belt/index.js.map +1 -0
  125. package/elements/oj-conveyor-belt/index.ts +27 -0
  126. package/elements/oj-data-grid/OjDataGrid.js +198 -0
  127. package/elements/oj-data-grid/OjDataGrid.js.map +1 -0
  128. package/elements/oj-data-grid/OjDataGrid.ts +279 -0
  129. package/elements/oj-data-grid/OjDataGridBase.js +65 -0
  130. package/elements/oj-data-grid/OjDataGridBase.js.map +1 -0
  131. package/elements/oj-data-grid/OjDataGridBase.ts +705 -0
  132. package/elements/oj-data-grid/index.js +17 -0
  133. package/elements/oj-data-grid/index.js.map +1 -0
  134. package/elements/oj-data-grid/index.ts +27 -0
  135. package/elements/oj-date-picker/OjDatePicker.js +8 -0
  136. package/elements/oj-date-picker/OjDatePicker.js.map +1 -0
  137. package/elements/oj-date-picker/OjDatePicker.ts +12 -0
  138. package/elements/oj-date-picker/OjDatePickerBase.js +104 -0
  139. package/elements/oj-date-picker/OjDatePickerBase.js.map +1 -0
  140. package/elements/oj-date-picker/OjDatePickerBase.ts +536 -0
  141. package/elements/oj-date-picker/index.js +17 -0
  142. package/elements/oj-date-picker/index.js.map +1 -0
  143. package/elements/oj-date-picker/index.ts +27 -0
  144. package/elements/oj-date-time-picker/OjDateTimePicker.js +8 -0
  145. package/elements/oj-date-time-picker/OjDateTimePicker.js.map +1 -0
  146. package/elements/oj-date-time-picker/OjDateTimePicker.ts +32 -0
  147. package/elements/oj-date-time-picker/OjDateTimePickerBase.js +107 -0
  148. package/elements/oj-date-time-picker/OjDateTimePickerBase.js.map +1 -0
  149. package/elements/oj-date-time-picker/OjDateTimePickerBase.ts +567 -0
  150. package/elements/oj-date-time-picker/index.js +17 -0
  151. package/elements/oj-date-time-picker/index.js.map +1 -0
  152. package/elements/oj-date-time-picker/index.ts +27 -0
  153. package/elements/oj-diagram/OjDiagram.js +8 -0
  154. package/elements/oj-diagram/OjDiagram.js.map +1 -0
  155. package/elements/oj-diagram/OjDiagram.ts +12 -0
  156. package/elements/oj-diagram/OjDiagramBase.js +128 -0
  157. package/elements/oj-diagram/OjDiagramBase.js.map +1 -0
  158. package/elements/oj-diagram/OjDiagramBase.ts +740 -0
  159. package/elements/oj-diagram/index.js +17 -0
  160. package/elements/oj-diagram/index.js.map +1 -0
  161. package/elements/oj-diagram/index.ts +27 -0
  162. package/elements/oj-dialog/OjDialog.js +13 -0
  163. package/elements/oj-dialog/OjDialog.js.map +1 -0
  164. package/elements/oj-dialog/OjDialog.ts +21 -0
  165. package/elements/oj-dialog/OjDialogBase.js +32 -0
  166. package/elements/oj-dialog/OjDialogBase.js.map +1 -0
  167. package/elements/oj-dialog/OjDialogBase.ts +144 -0
  168. package/elements/oj-dialog/index.js +17 -0
  169. package/elements/oj-dialog/index.js.map +1 -0
  170. package/elements/oj-dialog/index.ts +27 -0
  171. package/elements/oj-file-picker/OjFilePicker.js +35 -0
  172. package/elements/oj-file-picker/OjFilePicker.js.map +1 -0
  173. package/elements/oj-file-picker/OjFilePicker.ts +46 -0
  174. package/elements/oj-file-picker/OjFilePickerBase.js +29 -0
  175. package/elements/oj-file-picker/OjFilePickerBase.js.map +1 -0
  176. package/elements/oj-file-picker/OjFilePickerBase.ts +75 -0
  177. package/elements/oj-file-picker/index.js +17 -0
  178. package/elements/oj-file-picker/index.js.map +1 -0
  179. package/elements/oj-file-picker/index.ts +27 -0
  180. package/elements/oj-film-strip/OjFilmStrip.js +8 -0
  181. package/elements/oj-film-strip/OjFilmStrip.js.map +1 -0
  182. package/elements/oj-film-strip/OjFilmStrip.ts +12 -0
  183. package/elements/oj-film-strip/OjFilmStripBase.js +32 -0
  184. package/elements/oj-film-strip/OjFilmStripBase.js.map +1 -0
  185. package/elements/oj-film-strip/OjFilmStripBase.ts +118 -0
  186. package/elements/oj-film-strip/index.js +17 -0
  187. package/elements/oj-film-strip/index.js.map +1 -0
  188. package/elements/oj-film-strip/index.ts +27 -0
  189. package/elements/oj-gantt/OjGantt.js +8 -0
  190. package/elements/oj-gantt/OjGantt.js.map +1 -0
  191. package/elements/oj-gantt/OjGantt.ts +12 -0
  192. package/elements/oj-gantt/OjGanttBase.js +98 -0
  193. package/elements/oj-gantt/OjGanttBase.js.map +1 -0
  194. package/elements/oj-gantt/OjGanttBase.ts +996 -0
  195. package/elements/oj-gantt/index.js +17 -0
  196. package/elements/oj-gantt/index.js.map +1 -0
  197. package/elements/oj-gantt/index.ts +27 -0
  198. package/elements/oj-indexer/OjIndexer.js +8 -0
  199. package/elements/oj-indexer/OjIndexer.js.map +1 -0
  200. package/elements/oj-indexer/OjIndexer.ts +12 -0
  201. package/elements/oj-indexer/OjIndexerBase.js +14 -0
  202. package/elements/oj-indexer/OjIndexerBase.js.map +1 -0
  203. package/elements/oj-indexer/OjIndexerBase.ts +62 -0
  204. package/elements/oj-indexer/index.js +17 -0
  205. package/elements/oj-indexer/index.js.map +1 -0
  206. package/elements/oj-indexer/index.ts +27 -0
  207. package/elements/oj-input-date/OjInputDate.js +10 -0
  208. package/elements/oj-input-date/OjInputDate.js.map +1 -0
  209. package/elements/oj-input-date/OjInputDate.ts +14 -0
  210. package/elements/oj-input-date/OjInputDateBase.js +107 -0
  211. package/elements/oj-input-date/OjInputDateBase.js.map +1 -0
  212. package/elements/oj-input-date/OjInputDateBase.ts +545 -0
  213. package/elements/oj-input-date/index.js +17 -0
  214. package/elements/oj-input-date/index.js.map +1 -0
  215. package/elements/oj-input-date/index.ts +27 -0
  216. package/elements/oj-input-date-time/OjInputDateTime.js +10 -0
  217. package/elements/oj-input-date-time/OjInputDateTime.js.map +1 -0
  218. package/elements/oj-input-date-time/OjInputDateTime.ts +14 -0
  219. package/elements/oj-input-date-time/OjInputDateTimeBase.js +110 -0
  220. package/elements/oj-input-date-time/OjInputDateTimeBase.js.map +1 -0
  221. package/elements/oj-input-date-time/OjInputDateTimeBase.ts +576 -0
  222. package/elements/oj-input-date-time/index.js +17 -0
  223. package/elements/oj-input-date-time/index.js.map +1 -0
  224. package/elements/oj-input-date-time/index.ts +27 -0
  225. package/elements/oj-input-number/OjInputNumber.js +10 -0
  226. package/elements/oj-input-number/OjInputNumber.js.map +1 -0
  227. package/elements/oj-input-number/OjInputNumber.ts +14 -0
  228. package/elements/oj-input-number/OjInputNumberBase.js +98 -0
  229. package/elements/oj-input-number/OjInputNumberBase.js.map +1 -0
  230. package/elements/oj-input-number/OjInputNumberBase.ts +406 -0
  231. package/elements/oj-input-number/index.js +17 -0
  232. package/elements/oj-input-number/index.js.map +1 -0
  233. package/elements/oj-input-number/index.ts +27 -0
  234. package/elements/oj-input-password/OjInputPassword.js +10 -0
  235. package/elements/oj-input-password/OjInputPassword.js.map +1 -0
  236. package/elements/oj-input-password/OjInputPassword.ts +14 -0
  237. package/elements/oj-input-password/OjInputPasswordBase.js +83 -0
  238. package/elements/oj-input-password/OjInputPasswordBase.js.map +1 -0
  239. package/elements/oj-input-password/OjInputPasswordBase.ts +323 -0
  240. package/elements/oj-input-password/index.js +17 -0
  241. package/elements/oj-input-password/index.js.map +1 -0
  242. package/elements/oj-input-password/index.ts +27 -0
  243. package/elements/oj-input-search/OjInputSearch.js +41 -0
  244. package/elements/oj-input-search/OjInputSearch.js.map +1 -0
  245. package/elements/oj-input-search/OjInputSearch.ts +64 -0
  246. package/elements/oj-input-search/OjInputSearchBase.js +26 -0
  247. package/elements/oj-input-search/OjInputSearchBase.js.map +1 -0
  248. package/elements/oj-input-search/OjInputSearchBase.ts +66 -0
  249. package/elements/oj-input-search/index.js +17 -0
  250. package/elements/oj-input-search/index.js.map +1 -0
  251. package/elements/oj-input-search/index.ts +27 -0
  252. package/elements/oj-input-text/OjInputText.js +10 -0
  253. package/elements/oj-input-text/OjInputText.js.map +1 -0
  254. package/elements/oj-input-text/OjInputText.ts +15 -0
  255. package/elements/oj-input-text/OjInputTextBase.js +95 -0
  256. package/elements/oj-input-text/OjInputTextBase.js.map +1 -0
  257. package/elements/oj-input-text/OjInputTextBase.ts +361 -0
  258. package/elements/oj-input-text/index.js +17 -0
  259. package/elements/oj-input-text/index.js.map +1 -0
  260. package/elements/oj-input-text/index.ts +27 -0
  261. package/elements/oj-input-time/OjInputTime.js +10 -0
  262. package/elements/oj-input-time/OjInputTime.js.map +1 -0
  263. package/elements/oj-input-time/OjInputTime.ts +14 -0
  264. package/elements/oj-input-time/OjInputTimeBase.js +101 -0
  265. package/elements/oj-input-time/OjInputTimeBase.js.map +1 -0
  266. package/elements/oj-input-time/OjInputTimeBase.ts +477 -0
  267. package/elements/oj-input-time/index.js +17 -0
  268. package/elements/oj-input-time/index.js.map +1 -0
  269. package/elements/oj-input-time/index.ts +27 -0
  270. package/elements/oj-label/OjLabel.js +8 -0
  271. package/elements/oj-label/OjLabel.js.map +1 -0
  272. package/elements/oj-label/OjLabel.ts +12 -0
  273. package/elements/oj-label/OjLabelBase.js +23 -0
  274. package/elements/oj-label/OjLabelBase.js.map +1 -0
  275. package/elements/oj-label/OjLabelBase.ts +79 -0
  276. package/elements/oj-label/index.js +17 -0
  277. package/elements/oj-label/index.js.map +1 -0
  278. package/elements/oj-label/index.ts +27 -0
  279. package/elements/oj-led-gauge/OjLedGauge.js +8 -0
  280. package/elements/oj-led-gauge/OjLedGauge.js.map +1 -0
  281. package/elements/oj-led-gauge/OjLedGauge.ts +12 -0
  282. package/elements/oj-led-gauge/OjLedGaugeBase.js +62 -0
  283. package/elements/oj-led-gauge/OjLedGaugeBase.js.map +1 -0
  284. package/elements/oj-led-gauge/OjLedGaugeBase.ts +302 -0
  285. package/elements/oj-led-gauge/index.js +17 -0
  286. package/elements/oj-led-gauge/index.js.map +1 -0
  287. package/elements/oj-led-gauge/index.ts +27 -0
  288. package/elements/oj-legend/OjLegend.js +8 -0
  289. package/elements/oj-legend/OjLegend.js.map +1 -0
  290. package/elements/oj-legend/OjLegend.ts +12 -0
  291. package/elements/oj-legend/OjLegendBase.js +74 -0
  292. package/elements/oj-legend/OjLegendBase.js.map +1 -0
  293. package/elements/oj-legend/OjLegendBase.ts +324 -0
  294. package/elements/oj-legend/index.js +17 -0
  295. package/elements/oj-legend/index.js.map +1 -0
  296. package/elements/oj-legend/index.ts +27 -0
  297. package/elements/oj-list-view/OjListView.js +25 -0
  298. package/elements/oj-list-view/OjListView.js.map +1 -0
  299. package/elements/oj-list-view/OjListView.ts +36 -0
  300. package/elements/oj-list-view/OjListViewBase.js +71 -0
  301. package/elements/oj-list-view/OjListViewBase.js.map +1 -0
  302. package/elements/oj-list-view/OjListViewBase.ts +355 -0
  303. package/elements/oj-list-view/index.js +17 -0
  304. package/elements/oj-list-view/index.js.map +1 -0
  305. package/elements/oj-list-view/index.ts +27 -0
  306. package/elements/oj-masonry-layout/OjMasonryLayout.js +8 -0
  307. package/elements/oj-masonry-layout/OjMasonryLayout.js.map +1 -0
  308. package/elements/oj-masonry-layout/OjMasonryLayout.ts +12 -0
  309. package/elements/oj-masonry-layout/OjMasonryLayoutBase.js +14 -0
  310. package/elements/oj-masonry-layout/OjMasonryLayoutBase.js.map +1 -0
  311. package/elements/oj-masonry-layout/OjMasonryLayoutBase.ts +46 -0
  312. package/elements/oj-masonry-layout/index.js +17 -0
  313. package/elements/oj-masonry-layout/index.js.map +1 -0
  314. package/elements/oj-masonry-layout/index.ts +27 -0
  315. package/elements/oj-menu/OjMenu.js +28 -0
  316. package/elements/oj-menu/OjMenu.js.map +1 -0
  317. package/elements/oj-menu/OjMenu.ts +42 -0
  318. package/elements/oj-menu/OjMenuBase.js +17 -0
  319. package/elements/oj-menu/OjMenuBase.js.map +1 -0
  320. package/elements/oj-menu/OjMenuBase.ts +121 -0
  321. package/elements/oj-menu/index.js +17 -0
  322. package/elements/oj-menu/index.js.map +1 -0
  323. package/elements/oj-menu/index.ts +27 -0
  324. package/elements/oj-menu-button/OjMenuButton.js +14 -0
  325. package/elements/oj-menu-button/OjMenuButton.js.map +1 -0
  326. package/elements/oj-menu-button/OjMenuButton.ts +20 -0
  327. package/elements/oj-menu-button/OjMenuButtonBase.js +20 -0
  328. package/elements/oj-menu-button/OjMenuButtonBase.js.map +1 -0
  329. package/elements/oj-menu-button/OjMenuButtonBase.ts +48 -0
  330. package/elements/oj-menu-button/index.js +17 -0
  331. package/elements/oj-menu-button/index.js.map +1 -0
  332. package/elements/oj-menu-button/index.ts +27 -0
  333. package/elements/oj-message/OjMessage.js +13 -0
  334. package/elements/oj-message/OjMessage.js.map +1 -0
  335. package/elements/oj-message/OjMessage.ts +19 -0
  336. package/elements/oj-message/OjMessageBase.js +17 -0
  337. package/elements/oj-message/OjMessageBase.js.map +1 -0
  338. package/elements/oj-message/OjMessageBase.ts +113 -0
  339. package/elements/oj-message/index.js +17 -0
  340. package/elements/oj-message/index.js.map +1 -0
  341. package/elements/oj-message/index.ts +27 -0
  342. package/elements/oj-n-box/OjNBox.js +8 -0
  343. package/elements/oj-n-box/OjNBox.js.map +1 -0
  344. package/elements/oj-n-box/OjNBox.ts +12 -0
  345. package/elements/oj-n-box/OjNBoxBase.js +116 -0
  346. package/elements/oj-n-box/OjNBoxBase.js.map +1 -0
  347. package/elements/oj-n-box/OjNBoxBase.ts +880 -0
  348. package/elements/oj-n-box/index.js +17 -0
  349. package/elements/oj-n-box/index.js.map +1 -0
  350. package/elements/oj-n-box/index.ts +27 -0
  351. package/elements/oj-navigation-list/OjNavigationList.js +186 -0
  352. package/elements/oj-navigation-list/OjNavigationList.js.map +1 -0
  353. package/elements/oj-navigation-list/OjNavigationList.ts +250 -0
  354. package/elements/oj-navigation-list/OjNavigationListBase.js +50 -0
  355. package/elements/oj-navigation-list/OjNavigationListBase.js.map +1 -0
  356. package/elements/oj-navigation-list/OjNavigationListBase.ts +164 -0
  357. package/elements/oj-navigation-list/index.js +17 -0
  358. package/elements/oj-navigation-list/index.js.map +1 -0
  359. package/elements/oj-navigation-list/index.ts +27 -0
  360. package/elements/oj-paging-control/OjPagingControl.js +13 -0
  361. package/elements/oj-paging-control/OjPagingControl.js.map +1 -0
  362. package/elements/oj-paging-control/OjPagingControl.ts +26 -0
  363. package/elements/oj-paging-control/OjPagingControlBase.js +29 -0
  364. package/elements/oj-paging-control/OjPagingControlBase.js.map +1 -0
  365. package/elements/oj-paging-control/OjPagingControlBase.ts +235 -0
  366. package/elements/oj-paging-control/index.js +17 -0
  367. package/elements/oj-paging-control/index.js.map +1 -0
  368. package/elements/oj-paging-control/index.ts +27 -0
  369. package/elements/oj-picto-chart/OjPictoChart.js +8 -0
  370. package/elements/oj-picto-chart/OjPictoChart.js.map +1 -0
  371. package/elements/oj-picto-chart/OjPictoChart.ts +12 -0
  372. package/elements/oj-picto-chart/OjPictoChartBase.js +86 -0
  373. package/elements/oj-picto-chart/OjPictoChartBase.js.map +1 -0
  374. package/elements/oj-picto-chart/OjPictoChartBase.ts +394 -0
  375. package/elements/oj-picto-chart/index.js +17 -0
  376. package/elements/oj-picto-chart/index.js.map +1 -0
  377. package/elements/oj-picto-chart/index.ts +27 -0
  378. package/elements/oj-popup/OjPopup.js +8 -0
  379. package/elements/oj-popup/OjPopup.js.map +1 -0
  380. package/elements/oj-popup/OjPopup.ts +11 -0
  381. package/elements/oj-popup/OjPopupBase.js +29 -0
  382. package/elements/oj-popup/OjPopupBase.js.map +1 -0
  383. package/elements/oj-popup/OjPopupBase.ts +155 -0
  384. package/elements/oj-popup/index.js +17 -0
  385. package/elements/oj-popup/index.js.map +1 -0
  386. package/elements/oj-popup/index.ts +27 -0
  387. package/elements/oj-progress/OjProgress.js +8 -0
  388. package/elements/oj-progress/OjProgress.js.map +1 -0
  389. package/elements/oj-progress/OjProgress.ts +12 -0
  390. package/elements/oj-progress/OjProgressBase.js +23 -0
  391. package/elements/oj-progress/OjProgressBase.js.map +1 -0
  392. package/elements/oj-progress/OjProgressBase.ts +65 -0
  393. package/elements/oj-progress/index.js +17 -0
  394. package/elements/oj-progress/index.js.map +1 -0
  395. package/elements/oj-progress/index.ts +27 -0
  396. package/elements/oj-progress-list/OjProgressList.js +8 -0
  397. package/elements/oj-progress-list/OjProgressList.js.map +1 -0
  398. package/elements/oj-progress-list/OjProgressList.ts +12 -0
  399. package/elements/oj-progress-list/OjProgressListBase.js +11 -0
  400. package/elements/oj-progress-list/OjProgressListBase.js.map +1 -0
  401. package/elements/oj-progress-list/OjProgressListBase.ts +21 -0
  402. package/elements/oj-progress-list/index.js +17 -0
  403. package/elements/oj-progress-list/index.js.map +1 -0
  404. package/elements/oj-progress-list/index.ts +27 -0
  405. package/elements/oj-radioset/OjRadioset.js +32 -0
  406. package/elements/oj-radioset/OjRadioset.js.map +1 -0
  407. package/elements/oj-radioset/OjRadioset.ts +63 -0
  408. package/elements/oj-radioset/OjRadiosetBase.js +68 -0
  409. package/elements/oj-radioset/OjRadiosetBase.js.map +1 -0
  410. package/elements/oj-radioset/OjRadiosetBase.ts +262 -0
  411. package/elements/oj-radioset/index.js +17 -0
  412. package/elements/oj-radioset/index.js.map +1 -0
  413. package/elements/oj-radioset/index.ts +27 -0
  414. package/elements/oj-rating-gauge/OjRatingGauge.js +8 -0
  415. package/elements/oj-rating-gauge/OjRatingGauge.js.map +1 -0
  416. package/elements/oj-rating-gauge/OjRatingGauge.ts +12 -0
  417. package/elements/oj-rating-gauge/OjRatingGaugeBase.js +80 -0
  418. package/elements/oj-rating-gauge/OjRatingGaugeBase.js.map +1 -0
  419. package/elements/oj-rating-gauge/OjRatingGaugeBase.ts +424 -0
  420. package/elements/oj-rating-gauge/index.js +17 -0
  421. package/elements/oj-rating-gauge/index.js.map +1 -0
  422. package/elements/oj-rating-gauge/index.ts +27 -0
  423. package/elements/oj-refresher/OjRefresher.js +8 -0
  424. package/elements/oj-refresher/OjRefresher.js.map +1 -0
  425. package/elements/oj-refresher/OjRefresher.ts +12 -0
  426. package/elements/oj-refresher/OjRefresherBase.js +20 -0
  427. package/elements/oj-refresher/OjRefresherBase.js.map +1 -0
  428. package/elements/oj-refresher/OjRefresherBase.ts +64 -0
  429. package/elements/oj-refresher/index.js +17 -0
  430. package/elements/oj-refresher/index.js.map +1 -0
  431. package/elements/oj-refresher/index.ts +27 -0
  432. package/elements/oj-row-expander/OjRowExpander.js +8 -0
  433. package/elements/oj-row-expander/OjRowExpander.js.map +1 -0
  434. package/elements/oj-row-expander/OjRowExpander.ts +12 -0
  435. package/elements/oj-row-expander/OjRowExpanderBase.js +20 -0
  436. package/elements/oj-row-expander/OjRowExpanderBase.js.map +1 -0
  437. package/elements/oj-row-expander/OjRowExpanderBase.ts +76 -0
  438. package/elements/oj-row-expander/index.js +17 -0
  439. package/elements/oj-row-expander/index.js.map +1 -0
  440. package/elements/oj-row-expander/index.ts +27 -0
  441. package/elements/oj-select-many/OjSelectMany.js +51 -0
  442. package/elements/oj-select-many/OjSelectMany.js.map +1 -0
  443. package/elements/oj-select-many/OjSelectMany.ts +80 -0
  444. package/elements/oj-select-many/OjSelectManyBase.js +89 -0
  445. package/elements/oj-select-many/OjSelectManyBase.js.map +1 -0
  446. package/elements/oj-select-many/OjSelectManyBase.ts +387 -0
  447. package/elements/oj-select-many/index.js +17 -0
  448. package/elements/oj-select-many/index.js.map +1 -0
  449. package/elements/oj-select-many/index.ts +27 -0
  450. package/elements/oj-select-one/OjSelectOne.js +45 -0
  451. package/elements/oj-select-one/OjSelectOne.js.map +1 -0
  452. package/elements/oj-select-one/OjSelectOne.ts +70 -0
  453. package/elements/oj-select-one/OjSelectOneBase.js +89 -0
  454. package/elements/oj-select-one/OjSelectOneBase.js.map +1 -0
  455. package/elements/oj-select-one/OjSelectOneBase.ts +387 -0
  456. package/elements/oj-select-one/index.js +17 -0
  457. package/elements/oj-select-one/index.js.map +1 -0
  458. package/elements/oj-select-one/index.ts +27 -0
  459. package/elements/oj-select-single/OjSelectSingle.js +35 -0
  460. package/elements/oj-select-single/OjSelectSingle.js.map +1 -0
  461. package/elements/oj-select-single/OjSelectSingle.ts +51 -0
  462. package/elements/oj-select-single/OjSelectSingleBase.js +77 -0
  463. package/elements/oj-select-single/OjSelectSingleBase.js.map +1 -0
  464. package/elements/oj-select-single/OjSelectSingleBase.ts +303 -0
  465. package/elements/oj-select-single/index.js +17 -0
  466. package/elements/oj-select-single/index.js.map +1 -0
  467. package/elements/oj-select-single/index.ts +27 -0
  468. package/elements/oj-selector/OjSelector.js +13 -0
  469. package/elements/oj-selector/OjSelector.js.map +1 -0
  470. package/elements/oj-selector/OjSelector.ts +20 -0
  471. package/elements/oj-selector/OjSelectorBase.js +26 -0
  472. package/elements/oj-selector/OjSelectorBase.js.map +1 -0
  473. package/elements/oj-selector/OjSelectorBase.ts +66 -0
  474. package/elements/oj-selector/index.js +17 -0
  475. package/elements/oj-selector/index.js.map +1 -0
  476. package/elements/oj-selector/index.ts +27 -0
  477. package/elements/oj-slider/OjSlider.js +15 -0
  478. package/elements/oj-slider/OjSlider.js.map +1 -0
  479. package/elements/oj-slider/OjSlider.ts +25 -0
  480. package/elements/oj-slider/OjSliderBase.js +71 -0
  481. package/elements/oj-slider/OjSliderBase.js.map +1 -0
  482. package/elements/oj-slider/OjSliderBase.ts +259 -0
  483. package/elements/oj-slider/index.js +17 -0
  484. package/elements/oj-slider/index.js.map +1 -0
  485. package/elements/oj-slider/index.ts +27 -0
  486. package/elements/oj-spark-chart/OjSparkChart.js +8 -0
  487. package/elements/oj-spark-chart/OjSparkChart.js.map +1 -0
  488. package/elements/oj-spark-chart/OjSparkChart.ts +12 -0
  489. package/elements/oj-spark-chart/OjSparkChartBase.js +95 -0
  490. package/elements/oj-spark-chart/OjSparkChartBase.js.map +1 -0
  491. package/elements/oj-spark-chart/OjSparkChartBase.ts +431 -0
  492. package/elements/oj-spark-chart/index.js +17 -0
  493. package/elements/oj-spark-chart/index.js.map +1 -0
  494. package/elements/oj-spark-chart/index.ts +27 -0
  495. package/elements/oj-status-meter-gauge/OjStatusMeterGauge.js +8 -0
  496. package/elements/oj-status-meter-gauge/OjStatusMeterGauge.js.map +1 -0
  497. package/elements/oj-status-meter-gauge/OjStatusMeterGauge.ts +12 -0
  498. package/elements/oj-status-meter-gauge/OjStatusMeterGaugeBase.js +107 -0
  499. package/elements/oj-status-meter-gauge/OjStatusMeterGaugeBase.js.map +1 -0
  500. package/elements/oj-status-meter-gauge/OjStatusMeterGaugeBase.ts +491 -0
  501. package/elements/oj-status-meter-gauge/index.js +17 -0
  502. package/elements/oj-status-meter-gauge/index.js.map +1 -0
  503. package/elements/oj-status-meter-gauge/index.ts +27 -0
  504. package/elements/oj-stream-list/OjStreamList.js +70 -0
  505. package/elements/oj-stream-list/OjStreamList.js.map +1 -0
  506. package/elements/oj-stream-list/OjStreamList.ts +79 -0
  507. package/elements/oj-stream-list/OjStreamListBase.js +29 -0
  508. package/elements/oj-stream-list/OjStreamListBase.js.map +1 -0
  509. package/elements/oj-stream-list/OjStreamListBase.ts +109 -0
  510. package/elements/oj-stream-list/index.js +17 -0
  511. package/elements/oj-stream-list/index.js.map +1 -0
  512. package/elements/oj-stream-list/index.ts +27 -0
  513. package/elements/oj-sunburst/OjSunburst.js +8 -0
  514. package/elements/oj-sunburst/OjSunburst.js.map +1 -0
  515. package/elements/oj-sunburst/OjSunburst.ts +12 -0
  516. package/elements/oj-sunburst/OjSunburstBase.js +104 -0
  517. package/elements/oj-sunburst/OjSunburstBase.js.map +1 -0
  518. package/elements/oj-sunburst/OjSunburstBase.ts +512 -0
  519. package/elements/oj-sunburst/index.js +17 -0
  520. package/elements/oj-sunburst/index.js.map +1 -0
  521. package/elements/oj-sunburst/index.ts +27 -0
  522. package/elements/oj-swipe-actions/OjSwipeActions.js +19 -0
  523. package/elements/oj-swipe-actions/OjSwipeActions.js.map +1 -0
  524. package/elements/oj-swipe-actions/OjSwipeActions.ts +30 -0
  525. package/elements/oj-swipe-actions/OjSwipeActionsBase.js +11 -0
  526. package/elements/oj-swipe-actions/OjSwipeActionsBase.js.map +1 -0
  527. package/elements/oj-swipe-actions/OjSwipeActionsBase.ts +37 -0
  528. package/elements/oj-swipe-actions/index.js +17 -0
  529. package/elements/oj-swipe-actions/index.js.map +1 -0
  530. package/elements/oj-swipe-actions/index.ts +27 -0
  531. package/elements/oj-switch/OjSwitch.js +16 -0
  532. package/elements/oj-switch/OjSwitch.js.map +1 -0
  533. package/elements/oj-switch/OjSwitch.ts +26 -0
  534. package/elements/oj-switch/OjSwitchBase.js +56 -0
  535. package/elements/oj-switch/OjSwitchBase.js.map +1 -0
  536. package/elements/oj-switch/OjSwitchBase.ts +192 -0
  537. package/elements/oj-switch/index.js +17 -0
  538. package/elements/oj-switch/index.js.map +1 -0
  539. package/elements/oj-switch/index.ts +27 -0
  540. package/elements/oj-tab-bar/OjTabBar.js +8 -0
  541. package/elements/oj-tab-bar/OjTabBar.js.map +1 -0
  542. package/elements/oj-tab-bar/OjTabBar.ts +12 -0
  543. package/elements/oj-tab-bar/OjTabBarBase.js +50 -0
  544. package/elements/oj-tab-bar/OjTabBarBase.js.map +1 -0
  545. package/elements/oj-tab-bar/OjTabBarBase.ts +200 -0
  546. package/elements/oj-tab-bar/index.js +17 -0
  547. package/elements/oj-tab-bar/index.js.map +1 -0
  548. package/elements/oj-tab-bar/index.ts +27 -0
  549. package/elements/oj-table/OjTable.js +8 -0
  550. package/elements/oj-table/OjTable.js.map +1 -0
  551. package/elements/oj-table/OjTable.ts +12 -0
  552. package/elements/oj-table/OjTableBase.js +98 -0
  553. package/elements/oj-table/OjTableBase.js.map +1 -0
  554. package/elements/oj-table/OjTableBase.ts +702 -0
  555. package/elements/oj-table/index.js +17 -0
  556. package/elements/oj-table/index.js.map +1 -0
  557. package/elements/oj-table/index.ts +27 -0
  558. package/elements/oj-tag-cloud/OjTagCloud.js +8 -0
  559. package/elements/oj-tag-cloud/OjTagCloud.js.map +1 -0
  560. package/elements/oj-tag-cloud/OjTagCloud.ts +12 -0
  561. package/elements/oj-tag-cloud/OjTagCloudBase.js +68 -0
  562. package/elements/oj-tag-cloud/OjTagCloudBase.js.map +1 -0
  563. package/elements/oj-tag-cloud/OjTagCloudBase.ts +318 -0
  564. package/elements/oj-tag-cloud/index.js +17 -0
  565. package/elements/oj-tag-cloud/index.js.map +1 -0
  566. package/elements/oj-tag-cloud/index.ts +27 -0
  567. package/elements/oj-text-area/OjTextArea.js +10 -0
  568. package/elements/oj-text-area/OjTextArea.js.map +1 -0
  569. package/elements/oj-text-area/OjTextArea.ts +14 -0
  570. package/elements/oj-text-area/OjTextAreaBase.js +95 -0
  571. package/elements/oj-text-area/OjTextAreaBase.js.map +1 -0
  572. package/elements/oj-text-area/OjTextAreaBase.ts +365 -0
  573. package/elements/oj-text-area/index.js +17 -0
  574. package/elements/oj-text-area/index.js.map +1 -0
  575. package/elements/oj-text-area/index.ts +27 -0
  576. package/elements/oj-thematic-map/OjThematicMap.js +8 -0
  577. package/elements/oj-thematic-map/OjThematicMap.js.map +1 -0
  578. package/elements/oj-thematic-map/OjThematicMap.ts +12 -0
  579. package/elements/oj-thematic-map/OjThematicMapBase.js +119 -0
  580. package/elements/oj-thematic-map/OjThematicMapBase.js.map +1 -0
  581. package/elements/oj-thematic-map/OjThematicMapBase.ts +777 -0
  582. package/elements/oj-thematic-map/index.js +17 -0
  583. package/elements/oj-thematic-map/index.js.map +1 -0
  584. package/elements/oj-thematic-map/index.ts +27 -0
  585. package/elements/oj-time-axis/OjTimeAxis.js +8 -0
  586. package/elements/oj-time-axis/OjTimeAxis.js.map +1 -0
  587. package/elements/oj-time-axis/OjTimeAxis.ts +12 -0
  588. package/elements/oj-time-axis/OjTimeAxisBase.js +26 -0
  589. package/elements/oj-time-axis/OjTimeAxisBase.js.map +1 -0
  590. package/elements/oj-time-axis/OjTimeAxisBase.ts +176 -0
  591. package/elements/oj-time-axis/index.js +17 -0
  592. package/elements/oj-time-axis/index.js.map +1 -0
  593. package/elements/oj-time-axis/index.ts +27 -0
  594. package/elements/oj-timeline/OjTimeline.js +8 -0
  595. package/elements/oj-timeline/OjTimeline.js.map +1 -0
  596. package/elements/oj-timeline/OjTimeline.ts +12 -0
  597. package/elements/oj-timeline/OjTimelineBase.js +71 -0
  598. package/elements/oj-timeline/OjTimelineBase.js.map +1 -0
  599. package/elements/oj-timeline/OjTimelineBase.ts +715 -0
  600. package/elements/oj-timeline/index.js +17 -0
  601. package/elements/oj-timeline/index.js.map +1 -0
  602. package/elements/oj-timeline/index.ts +27 -0
  603. package/elements/oj-train/OjTrain.js +8 -0
  604. package/elements/oj-train/OjTrain.js.map +1 -0
  605. package/elements/oj-train/OjTrain.ts +12 -0
  606. package/elements/oj-train/OjTrainBase.js +20 -0
  607. package/elements/oj-train/OjTrainBase.js.map +1 -0
  608. package/elements/oj-train/OjTrainBase.ts +72 -0
  609. package/elements/oj-train/index.js +17 -0
  610. package/elements/oj-train/index.js.map +1 -0
  611. package/elements/oj-train/index.ts +27 -0
  612. package/elements/oj-tree-view/OjTreeView.js +80 -0
  613. package/elements/oj-tree-view/OjTreeView.js.map +1 -0
  614. package/elements/oj-tree-view/OjTreeView.ts +117 -0
  615. package/elements/oj-tree-view/OjTreeViewBase.js +35 -0
  616. package/elements/oj-tree-view/OjTreeViewBase.js.map +1 -0
  617. package/elements/oj-tree-view/OjTreeViewBase.ts +131 -0
  618. package/elements/oj-tree-view/index.js +17 -0
  619. package/elements/oj-tree-view/index.js.map +1 -0
  620. package/elements/oj-tree-view/index.ts +27 -0
  621. package/elements/oj-treemap/OjTreemap.js +8 -0
  622. package/elements/oj-treemap/OjTreemap.js.map +1 -0
  623. package/elements/oj-treemap/OjTreemap.ts +12 -0
  624. package/elements/oj-treemap/OjTreemapBase.js +110 -0
  625. package/elements/oj-treemap/OjTreemapBase.js.map +1 -0
  626. package/elements/oj-treemap/OjTreemapBase.ts +594 -0
  627. package/elements/oj-treemap/index.js +17 -0
  628. package/elements/oj-treemap/index.js.map +1 -0
  629. package/elements/oj-treemap/index.ts +27 -0
  630. package/elements/oj-waterfall-layout/OjWaterfallLayout.js +8 -0
  631. package/elements/oj-waterfall-layout/OjWaterfallLayout.js.map +1 -0
  632. package/elements/oj-waterfall-layout/OjWaterfallLayout.ts +12 -0
  633. package/elements/oj-waterfall-layout/OjWaterfallLayoutBase.js +23 -0
  634. package/elements/oj-waterfall-layout/OjWaterfallLayoutBase.js.map +1 -0
  635. package/elements/oj-waterfall-layout/OjWaterfallLayoutBase.ts +87 -0
  636. package/elements/oj-waterfall-layout/index.js +17 -0
  637. package/elements/oj-waterfall-layout/index.js.map +1 -0
  638. package/elements/oj-waterfall-layout/index.ts +27 -0
  639. package/index.js +171 -0
  640. package/index.js.map +1 -0
  641. package/index.ts +449 -0
  642. package/lib/Expectation.js +189 -0
  643. package/lib/Expectation.js.map +1 -0
  644. package/lib/Expectation.ts +272 -0
  645. package/lib/OjFetch.js +83 -0
  646. package/lib/OjFetch.js.map +1 -0
  647. package/lib/OjFetch.ts +158 -0
  648. package/lib/ScreenshotManager.js +113 -0
  649. package/lib/ScreenshotManager.js.map +1 -0
  650. package/lib/ScreenshotManager.ts +195 -0
  651. package/lib/driver-manager.js +89 -0
  652. package/lib/driver-manager.js.map +1 -0
  653. package/lib/driver-manager.ts +330 -0
  654. package/lib/driver-override.js +116 -0
  655. package/lib/driver-override.js.map +1 -0
  656. package/lib/driver-override.ts +270 -0
  657. package/lib/input-utils.js +24 -0
  658. package/lib/input-utils.js.map +1 -0
  659. package/lib/input-utils.ts +50 -0
  660. package/lib/slot-proxy.js +25 -0
  661. package/lib/slot-proxy.js.map +1 -0
  662. package/lib/slot-proxy.ts +61 -0
  663. package/lib/stale-element.js +26 -0
  664. package/lib/stale-element.js.map +1 -0
  665. package/lib/stale-element.ts +40 -0
  666. package/package.json +19 -0
  667. package/tsconfig.json +10 -0
@@ -0,0 +1,675 @@
1
+ import {
2
+ Browser,
3
+ By,
4
+ Capabilities,
5
+ Capability,
6
+ Condition,
7
+ error,
8
+ ILocation,
9
+ IRectangle,
10
+ ISize,
11
+ Locator,
12
+ WebElement,
13
+ WebElementPromise
14
+ } from "selenium-webdriver";
15
+ import ojwd, { DriverLike, ScreenshotManager as sm } from "../";
16
+ import { requeryElement } from "../lib/stale-element";
17
+
18
+ /**
19
+ * The base WebElement class from which all cusom WebElements should extend.
20
+ * This class can also be used (instantiated) directly if no component-specific
21
+ * WebElement exists for a custom component.
22
+ * All WebElement commands which call remote operations on the browser are
23
+ * overidden to first:
24
+ * <ul>
25
+ * <li>
26
+ * Capture screenshots prior to command execution. This aids in debugging if
27
+ * the command should fail.
28
+ * </li>
29
+ * <li>
30
+ * Wait for the page-level BusyContext to clear. This ensures any asynchronous
31
+ * activity in the application is complete before the test continues. Note
32
+ * that commands which interact with the DOM (such as click, sendKeys, etc)
33
+ * will also wait for the element to be present and have a size in the DOM
34
+ * (whenReady), while other "read" methods (getAttribute, isEnabled, etc) only
35
+ * wait for the BusyContext to clear (whenBusyContextReady).
36
+ * </li>
37
+ * <li>
38
+ * Trap StaleElementException and retry. This automatic trapping and retrying
39
+ * for StaleElementExceptions allow tests to be more resilient against UI
40
+ * activities which may move/recreate DOM nodes, typically resulting in failed
41
+ * old references from WebElements to DOM nodes. If a StaleElementException is
42
+ * encountered for any remote command, OjWebElement will requery the DOM node
43
+ * and try the command again. <i>This is implemented for all remote commands
44
+ * except <code>getTagName</code> because, interally, WebDriver uses that
45
+ * command in its <code>until.stalenessOf</code> test condition.</i>
46
+ * </li>
47
+ * </ul>
48
+ */
49
+ export class OjWebElement extends WebElement {
50
+ /**
51
+ * The ElementLocators object, used when trapping for Stale Element exceptions
52
+ */
53
+ private _locators: ElementLocators;
54
+ /**
55
+ * Used by whenReady to avoid whenBusyContextReady being repeatedly called
56
+ */
57
+ private _skipBusyContext: boolean;
58
+ /**
59
+ * Cached browser name
60
+ */
61
+ private static _BROWSER_NAME: string;
62
+
63
+ /**
64
+ * Constructor. Pass an instance of WebDriver's WebElement that
65
+ * represents the DOM node on which we"ll perform operations.
66
+ * @param el The basic WebElement with which this WebElement will
67
+ * work.
68
+ */
69
+ constructor(el: WebElement, locators: ElementLocators) {
70
+ super(el.getDriver(), el.getId());
71
+ this._locators = locators;
72
+ }
73
+
74
+ /**
75
+ * @inheritdoc
76
+ */
77
+ public async clear(): Promise<void> {
78
+ //get the active screenshotManager instance to take and save screenshot before action
79
+ const screenshotManager = sm.get();
80
+ await screenshotManager.takeAndSaveScreenShot(
81
+ this.getDriver(),
82
+ "before_clear"
83
+ );
84
+
85
+ await this.whenReady();
86
+ await OjWebElement.trapStaleElement<void, [void]>(
87
+ this,
88
+ super.clear,
89
+ undefined
90
+ );
91
+
92
+ // JET-41358
93
+ // When input components embedded within oj-table, they can lose focus
94
+ // after clear().
95
+ return this.getDriver().executeScript("arguments[0].focus()", this);
96
+ }
97
+ /**
98
+ * @inheritdoc
99
+ */
100
+ public async click(): Promise<void> {
101
+ //get the active screenshotManager instance to take and save screenshot before action
102
+ const screenshotManager = sm.get();
103
+ await screenshotManager.takeAndSaveScreenShot(
104
+ this.getDriver(),
105
+ "before_click"
106
+ );
107
+
108
+ await this.whenReady();
109
+ await this.getDriver().executeScript('arguments[0].focus()', this);
110
+ return OjWebElement.trapStaleElement<void, [void]>(
111
+ this,
112
+ super.click,
113
+ undefined
114
+ );
115
+ }
116
+ /**
117
+ * @inheritdoc
118
+ */
119
+ public async getAttribute(attributeName: string): Promise<string> {
120
+ await this.whenBusyContextReady();
121
+ return OjWebElement.trapStaleElement<string, [string]>(
122
+ this,
123
+ super.getAttribute,
124
+ attributeName
125
+ );
126
+ }
127
+ /**
128
+ * @inheritdoc
129
+ */
130
+ public async getCssValue(cssStyleProperty: string): Promise<string> {
131
+ //get the active screenshotManager instance to take and save screenshot before action
132
+ const screenshotManager = sm.get();
133
+ await screenshotManager.takeAndSaveScreenShot(
134
+ this.getDriver(),
135
+ "before_getCssValue"
136
+ );
137
+
138
+ await this.whenBusyContextReady();
139
+ return OjWebElement.trapStaleElement<string, [string]>(
140
+ this,
141
+ super.getCssValue,
142
+ cssStyleProperty
143
+ );
144
+ }
145
+ /**
146
+ * @inheritdoc
147
+ */
148
+ public async getLocation(): Promise<ILocation> {
149
+ //get the active screenshotManager instance to take and save screenshot before action
150
+ const screenshotManager = sm.get();
151
+ await screenshotManager.takeAndSaveScreenShot(
152
+ this.getDriver(),
153
+ "before_getLocation"
154
+ );
155
+
156
+ await this.whenBusyContextReady();
157
+ return OjWebElement.trapStaleElement<ILocation, [void]>(
158
+ this,
159
+ super.getLocation,
160
+ undefined
161
+ );
162
+ }
163
+ /**
164
+ * @inheritdoc
165
+ */
166
+ public async getRect(): Promise<IRectangle> {
167
+ //get the active screenshotManager instance to take and save screenshot before action
168
+ const screenshotManager = sm.get();
169
+ await screenshotManager.takeAndSaveScreenShot(
170
+ this.getDriver(),
171
+ "before_getRect"
172
+ );
173
+
174
+ await this.whenBusyContextReady();
175
+ return OjWebElement.trapStaleElement<IRectangle, [void]>(
176
+ this,
177
+ super.getRect,
178
+ undefined
179
+ );
180
+ }
181
+ /**
182
+ * @inheritdoc
183
+ */
184
+ public async getSize(): Promise<ISize> {
185
+ //get the active screenshotManager instance to take and save screenshot before action
186
+ const screenshotManager = sm.get();
187
+ await screenshotManager.takeAndSaveScreenShot(
188
+ this.getDriver(),
189
+ "before_getSize"
190
+ );
191
+
192
+ await this.whenBusyContextReady();
193
+ return OjWebElement.trapStaleElement<ISize, [void]>(
194
+ this,
195
+ super.getSize,
196
+ undefined
197
+ );
198
+ }
199
+ /**
200
+ * @inheritdoc
201
+ */
202
+ public async getText(): Promise<string> {
203
+ //get the active screenshotManager instance to take and save screenshot before action
204
+ const screenshotManager = sm.get();
205
+ await screenshotManager.takeAndSaveScreenShot(
206
+ this.getDriver(),
207
+ "before_getText"
208
+ );
209
+
210
+ await this.whenBusyContextReady();
211
+ return OjWebElement.trapStaleElement<string, [void]>(
212
+ this,
213
+ super.getText,
214
+ undefined
215
+ );
216
+ }
217
+ /**
218
+ * @inheritdoc
219
+ */
220
+ public async isDisplayed(): Promise<boolean> {
221
+ await this.whenBusyContextReady();
222
+ return OjWebElement.trapStaleElement<boolean, [void]>(
223
+ this,
224
+ super.isDisplayed,
225
+ undefined
226
+ );
227
+ }
228
+ /**
229
+ * @inheritdoc
230
+ */
231
+ public async isEnabled(): Promise<boolean> {
232
+ //get the active screenshotManager instance to take and save screenshot before action
233
+ const screenshotManager = sm.get();
234
+ await screenshotManager.takeAndSaveScreenShot(
235
+ this.getDriver(),
236
+ "before_isEnabled"
237
+ );
238
+
239
+ await this.whenBusyContextReady();
240
+ // See if component has a "disabled" property to test if it's disabled.
241
+ let disabled = await this.getProperty<boolean>("disabled");
242
+ if (typeof disabled === "boolean") {
243
+ return !disabled;
244
+ }
245
+ // If component doesn't have a "disabled" property, defer to WebDriver to
246
+ // test if the element is disabled.
247
+ return await OjWebElement.trapStaleElement<boolean, [void]>(
248
+ this,
249
+ super.isEnabled,
250
+ undefined
251
+ );
252
+ }
253
+ /**
254
+ * @inheritdoc
255
+ */
256
+ public async isSelected(): Promise<boolean> {
257
+ //get the active screenshotManager instance to take and save screenshot before action
258
+ const screenshotManager = sm.get();
259
+ await screenshotManager.takeAndSaveScreenShot(
260
+ this.getDriver(),
261
+ "before_isSelected"
262
+ );
263
+
264
+ await this.whenBusyContextReady();
265
+ return OjWebElement.trapStaleElement<boolean, [void]>(
266
+ this,
267
+ super.isSelected,
268
+ undefined
269
+ );
270
+ }
271
+ /**
272
+ * @inheritdoc
273
+ */
274
+ public async sendKeys(
275
+ ...varArgs: Array<string | number | Promise<string | number>>
276
+ ): Promise<void> {
277
+ //get the active screenshotManager instance to take and save screenshot before action
278
+ const screenshotManager = sm.get();
279
+ await screenshotManager.takeAndSaveScreenShot(
280
+ this.getDriver(),
281
+ "before_sendKeys"
282
+ );
283
+
284
+ await this.whenReady();
285
+ return OjWebElement.trapStaleElement<
286
+ void,
287
+ Array<string | number | Promise<string | number>>
288
+ >(this, super.sendKeys, ...varArgs);
289
+ }
290
+ /**
291
+ * @inheritdoc
292
+ */
293
+ public async submit(): Promise<void> {
294
+ //get the active screenshotManager instance to take and save screenshot before action
295
+ const screenshotManager = sm.get();
296
+ await screenshotManager.takeAndSaveScreenShot(
297
+ this.getDriver(),
298
+ "before_submit"
299
+ );
300
+
301
+ await this.whenReady();
302
+ return OjWebElement.trapStaleElement<void, [void]>(
303
+ this,
304
+ super.submit,
305
+ undefined
306
+ );
307
+ }
308
+
309
+ /**
310
+ * @inheritdoc
311
+ */
312
+ public findElement(locator: Locator): WebElementPromise {
313
+ // Note that this function isn't declared async because the superclass
314
+ // signature returns a WebElementPromise, but TS requires that all
315
+ // async functions return Promise<T>.
316
+ // Instead, we get the Promise from calling the superclass method, then return
317
+ // that in a new WebElementPromise
318
+ const p = this.whenReady().then(() =>
319
+ OjWebElement.trapStaleElement<WebElement, [Locator]>(
320
+ this,
321
+ super.findElement,
322
+ locator
323
+ )
324
+ );
325
+ return new WebElementPromise(this.getDriver(), p);
326
+ }
327
+
328
+ /**
329
+ * @inheritdoc
330
+ */
331
+ public async findElements(locator: Locator): Promise<WebElement[]> {
332
+ //get the active screenshotManager instance to take and save screenshot before action
333
+ const screenshotManager = sm.get();
334
+ await screenshotManager.takeAndSaveScreenShot(
335
+ this.getDriver(),
336
+ "before_findElements"
337
+ );
338
+
339
+ await this.whenReady();
340
+ const el = OjWebElement.trapStaleElement<WebElement[], [Locator]>(
341
+ this,
342
+ super.findElements,
343
+ locator
344
+ );
345
+ return el;
346
+ }
347
+
348
+ /**
349
+ * @inheritdoc
350
+ */
351
+ public async takeScreenshot(optScroll?: boolean): Promise<string> {
352
+ const ss = OjWebElement.trapStaleElement<string, [boolean]>(
353
+ this,
354
+ super.takeScreenshot,
355
+ optScroll
356
+ );
357
+ return ss;
358
+ }
359
+
360
+ /**
361
+ * Returns a Promise that is resolved when the element is ready
362
+ * for interaction--it is visible, has a size, and the app's
363
+ * busy context is ready. Operations on the DOM which rely on its physical
364
+ * location and size to be in a "ready" state should use this command, such as
365
+ * clicking, sending keys, locating child elements, and so on.
366
+ * @return A Promise that's resolved when all conditions
367
+ * are met.
368
+ */
369
+ public async whenReady(): Promise<void> {
370
+ const driver = this.getDriver();
371
+ const timeout = 15000;
372
+ const tag = `<${this._locators.tagName}>`;
373
+
374
+ await this.whenBusyContextReady();
375
+ // Tell whenBusyContextReady to skip its check for these methods, which will
376
+ // continually be called by driver.wait()
377
+ this._skipBusyContext = true;
378
+ try {
379
+ await driver.wait(
380
+ () => this.isDisplayed(),
381
+ timeout,
382
+ `waiting for ${tag} to be visible`
383
+ );
384
+ return driver.wait<void>(
385
+ async () => {
386
+ const size = await this.getSize();
387
+ return size.height > 0 && size.width > 0;
388
+ },
389
+ timeout,
390
+ `waiting for ${tag} to have non-zero size`
391
+ );
392
+ } finally {
393
+ this._skipBusyContext = false;
394
+ }
395
+ }
396
+
397
+ /**
398
+ * Returns a Promise that is resolved when the application's busy
399
+ * state reports ready. This method checks only that the application's busy
400
+ * context is ready, and not that the DOM element is actually displayed or has
401
+ * a physical size, such as is the case with {@link #whenReady}. Operations
402
+ * which are read-only in nature should call this method prior to execution.
403
+ * @return A Promise which is resolved when the
404
+ * page's busy state is ready.
405
+ */
406
+ public async whenBusyContextReady(): Promise<void> {
407
+ if (this._skipBusyContext) {
408
+ return;
409
+ }
410
+ const remoteScript = `
411
+ var done=arguments[0];
412
+ if (typeof require === 'function') {
413
+ require(['ojs/ojcontext'], function(Context) {
414
+ if (Context) {
415
+ Context.getPageContext().getBusyContext().whenReady()
416
+ .then(function() { done() })
417
+ .catch(function(ex) { done(ex.message) });
418
+ } else {
419
+ done('ojs/ojcontext not found');
420
+ }
421
+ }, function(ex) { done(ex.message) });
422
+ } else {
423
+ done('RequireJS not found');
424
+ }
425
+ `;
426
+ const ret = await this.getDriver()
427
+ .executeAsyncScript(remoteScript)
428
+ .catch(async (ex) => {
429
+ const openStates = await this.getDriver().executeScript(`
430
+ let Context = require('ojs/ojcontext');
431
+ let desc = Context.getPageContext().getBusyContext().getBusyStates()
432
+ .map((state) => state.description);
433
+ return JSON.stringify(desc);
434
+ `).catch(ex => ex.message);
435
+ console.warn(`${ex.message}\nopen busy states: ${openStates}`);
436
+ throw Error(`BusyContext.whenReady() timed out: ${ex.message}`);
437
+ });
438
+
439
+ if (ret) {
440
+ // If error during require call, log warning
441
+ console.warn(`Cannot wait on BusyContext: ${ret}`);
442
+ }
443
+ }
444
+
445
+ /**
446
+ * Get a named property value from this component. This function
447
+ * will wait for the application's busy context to complete before
448
+ * attempting to get the property value.
449
+ * @param {string} propertyName The name of the property
450
+ * @return A Promise that yields a value for the named property.
451
+ */
452
+ public async getProperty<T = string>(propertyName: string): Promise<T> {
453
+ await this.whenBusyContextReady();
454
+ return OjWebElement.trapStaleElement<T, [string]>(
455
+ this,
456
+ this._getProperty,
457
+ propertyName
458
+ );
459
+ }
460
+
461
+ /**
462
+ * Set a property value on the remote element. This function first waits for
463
+ * the BusyContext to clear before setting the property, then after setting,
464
+ * waits again to ensure that no additional busy states were created due to
465
+ * the property setting.
466
+ * @param {string} propertyName The property name to set
467
+ * @param {T} value The value to set for the property
468
+ * @return A Promise which resolves when the remote
469
+ * property has been set to the value. Any value returned from
470
+ * the call to set the remote property is returned in the Promise.
471
+ */
472
+ protected async setProperty<T = string>(
473
+ propertyName: string,
474
+ value: T
475
+ ): Promise<void> {
476
+ await this.whenReady();
477
+ await OjWebElement.trapStaleElement<void, [string, T]>(
478
+ this,
479
+ this._setProperty,
480
+ propertyName,
481
+ value
482
+ );
483
+ }
484
+
485
+ /**
486
+ * Create a wait condition that is satisfied when the element's
487
+ * DOM has a non-zero size.
488
+ * @return The Condition to be used with driver.wait()
489
+ * that's satisfied when the element's DOM has a non-zero size.
490
+ */
491
+ protected hasSize(): Condition<Promise<boolean>> {
492
+ return new Condition<Promise<boolean>>(
493
+ `<${this._locators.tagName}> has a non-zero size`,
494
+ async driver => {
495
+ const rect = await this.getSize();
496
+ return rect.height > 0 && rect.width > 0;
497
+ }
498
+ );
499
+ }
500
+
501
+ /**
502
+ * Create a wait condition that is satisfid when the element is
503
+ * visible. The condition is satisfied when the element is displayed,
504
+ * as reported by {@link #isDisplayed}, and is scrolled into view.
505
+ * This is method is deprecated. Use {@link WebElement.isDisplayed} instead to
506
+ * test the display of the element, and scroll it into view if necessary.
507
+ * @deprecated
508
+ */
509
+ protected hasVisibility(): Condition<Promise<boolean>> {
510
+ return new Condition<Promise<boolean>>(
511
+ `<${this._locators.tagName}> is displayed and scrolled into view`,
512
+ async driver => {
513
+ const displayed = await this.isDisplayed();
514
+ if (displayed) {
515
+ // Scroll the DOM into view and return true to fulfill
516
+ // the Condition
517
+ await driver.executeScript("arguments[0].scrollIntoView()", this);
518
+ return true;
519
+ }
520
+ return displayed;
521
+ }
522
+ );
523
+ }
524
+
525
+ /**
526
+ * Private accessor to get the component property value. This is for
527
+ * trapStaleElement to call and handle the stale element exception when calling
528
+ * getProperty.
529
+ * @param propertyName The name of the property
530
+ * @return A Promise that yields a value for the named property.
531
+ * @typeparam T The value type of the property
532
+ */
533
+ private async _getProperty<T>(propertyName: string): Promise<T> {
534
+ if (!OjWebElement._BROWSER_NAME) {
535
+ const caps = await this.getDriver().getCapabilities();
536
+ OjWebElement._BROWSER_NAME = caps.get(Capability.BROWSER_NAME);
537
+ }
538
+ if (OjWebElement._BROWSER_NAME === Browser.FIREFOX) {
539
+ return this._getPropertyFirefox<T>(propertyName);
540
+ }
541
+ return this.getDriver().executeAsyncScript<T>(
542
+ `let el = arguments[0], prop = arguments[1], done = arguments[2];
543
+ require(['ojs/ojcustomelement-utils'], function(utils) {
544
+ done(utils.CustomElementUtils.getElementProperty(el, prop));
545
+ }, done);
546
+ `,
547
+ this,
548
+ propertyName
549
+ );
550
+ }
551
+
552
+ /**
553
+ * Get a DOM property. This method is for Firefox to work around the Geckodriver
554
+ * issue identified by JET-42751.
555
+ * @param propertyName The property name
556
+ * @return The property value
557
+ */
558
+ private async _getPropertyFirefox<T>(propertyName: string): Promise<T> {
559
+ const driver = this.getDriver();
560
+ // Ensure ojs/ojcustomelement-utils module is loaded, then do a synchronous
561
+ // executeScript call to retrieve the property
562
+ await driver.executeAsyncScript(`require(['ojs/ojcustomelement-utils'], arguments[0])`);
563
+ return driver.executeScript<T>(
564
+ `let el = arguments[0], prop = arguments[1];
565
+ return require('ojs/ojcustomelement-utils').CustomElementUtils.getElementProperty(el, prop);`,
566
+ this,
567
+ propertyName
568
+ );
569
+ }
570
+
571
+ /**
572
+ * Private mutator to set the component property value. This is trapStaleElement
573
+ * to call and handle the stale element exception when calling setProperty.
574
+ * @param propertyName The name of the property
575
+ * @param value The value to set for the property
576
+ * @typeparam T The value type of the property
577
+ */
578
+ private async _setProperty<T>(propertyName: string, value: T): Promise<void> {
579
+ await this.getDriver().executeScript(
580
+ // Call setProperty on the component if it exists, otherwise, set the
581
+ // property value directly.
582
+ `return arguments[0].setProperty ?
583
+ arguments[0].setProperty(arguments[1], arguments[2])
584
+ : arguments[0][arguments[1]] = arguments[2]`,
585
+ this,
586
+ propertyName,
587
+ value
588
+ );
589
+ }
590
+
591
+ /**
592
+ * Trap commands against OjWebElement and look for stale element exceptions. If
593
+ * found, re-query the element and try the command again.
594
+ * @private
595
+ * @typeparam T The type of value returned from the command.
596
+ * @typeparam P The type of parameters passed to the command.
597
+ * @param el The OjWebElement instance on which the command will work
598
+ * @param cmd The command on the OjWebElement to execute
599
+ * @param cmdParams Any parameters to pass to the command
600
+ * @return A Promise with the results of the command, if any.
601
+ */
602
+ private static async trapStaleElement<T, P extends unknown[]>(
603
+ el: OjWebElement,
604
+ cmd: (...p: P) => Promise<T>,
605
+ ...cmdParams: P
606
+ ): Promise<T> {
607
+ let result: T;
608
+ try {
609
+ result = await cmd.apply(el, cmdParams);
610
+ } catch (ex) {
611
+ // Only requery if elLocator exists on the WebElement. This will be present
612
+ // most of the time, except for when an element is returned through
613
+ // driver.wait(until.elementLocated). That method doesn't allow access to
614
+ // the original locator.
615
+ if (ex instanceof error.StaleElementReferenceError && el._locators.elLocator) {
616
+ console.warn(`Trapped stale element calling '${cmd.name}' on ${el._locators.elLocator}`);
617
+ const newEl = await requeryElement(el);
618
+ result = await cmd.apply(newEl, cmdParams);
619
+ } else {
620
+ throw ex;
621
+ }
622
+ }
623
+ return result;
624
+ }
625
+ }
626
+
627
+ /**
628
+ * An interface defining the element location criteria for the original OjWebElement.
629
+ * The properties are used by OjWebElement when trapping for stale element references
630
+ * so that it can requery the original DOM element.
631
+ * These values are typically set by the OjWebElement creation process and not
632
+ * called directly by other WebElement or test code.
633
+ * @private
634
+ */
635
+ export interface ElementLocators {
636
+ /**
637
+ * The original locator for the WebElement. This can be an absolute locator
638
+ * (used by WebDriver.findElement) or relative to the parent element (used by
639
+ * WebElement.findElement). If absolute, a parentEl should not be specified;
640
+ * if relative, a parentEl must be specified.
641
+ */
642
+ readonly elLocator: Locator;
643
+ /**
644
+ * The parent OjWebElement from which the elLocator was queried. This should
645
+ * only be specified if the elLocator was used by WebElement.findElement.
646
+ */
647
+ readonly parentEl?: OjWebElement;
648
+ /**
649
+ * The original index within the array of elements returned from findElements.
650
+ * This value should only be set when the element was queried using findElements.
651
+ * All other rules regarding setting elLocator and parentEl still apply when
652
+ * setting this index.
653
+ */
654
+ readonly elementsIndex?: number;
655
+ /**
656
+ * The original tag name of the element. This is used to compare the original
657
+ * tag name against the tag name of the re-queried element.
658
+ */
659
+ readonly tagName: string;
660
+ }
661
+
662
+ /**
663
+ * Create an instance of [[OjWebElement]]. This function will first wait for
664
+ * the element to appear in the DOM before trying to locate it.
665
+ * @param driver A WebDriver/WebElement instance used to locate the component
666
+ * element.
667
+ * @param by The By locator with which to find the element
668
+ */
669
+ export async function ojWebElement(
670
+ driver: DriverLike,
671
+ by: By
672
+ ): Promise<OjWebElement> {
673
+ const el = await ojwd.waitAndFindElement(driver, by);
674
+ return el as OjWebElement;
675
+ }