@sap_oss/wdio-qmate-service 1.0.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 (625) hide show
  1. package/.eslintignore +3 -0
  2. package/.eslintrc.yml +33 -0
  3. package/.reuse/dep5 +29 -0
  4. package/LICENSE +201 -0
  5. package/LICENSES/Apache-2.0.txt +73 -0
  6. package/README.md +20 -0
  7. package/docs/contact.md +10 -0
  8. package/docs/doc.md +5188 -0
  9. package/docs/gettingStarted/selectors.md +168 -0
  10. package/docs/gettingStarted/setup.md +8 -0
  11. package/docs/index.md +14 -0
  12. package/docs/style/custom.css +24 -0
  13. package/lib/index.d.ts +1 -0
  14. package/lib/index.js +171 -0
  15. package/lib/index.js.map +1 -0
  16. package/lib/reuse/authenticator/authConfig.d.ts +54 -0
  17. package/lib/reuse/authenticator/authConfig.js +55 -0
  18. package/lib/reuse/authenticator/authConfig.js.map +1 -0
  19. package/lib/reuse/authenticator/authHandler.d.ts +6 -0
  20. package/lib/reuse/authenticator/authHandler.js +37 -0
  21. package/lib/reuse/authenticator/authHandler.js.map +1 -0
  22. package/lib/reuse/authenticator/basicUrlAuthenticator.d.ts +2 -0
  23. package/lib/reuse/authenticator/basicUrlAuthenticator.js +36 -0
  24. package/lib/reuse/authenticator/basicUrlAuthenticator.js.map +1 -0
  25. package/lib/reuse/authenticator/customAuthenticator.d.ts +2 -0
  26. package/lib/reuse/authenticator/customAuthenticator.js +60 -0
  27. package/lib/reuse/authenticator/customAuthenticator.js.map +1 -0
  28. package/lib/reuse/authenticator/formAuthenticator.d.ts +2 -0
  29. package/lib/reuse/authenticator/formAuthenticator.js +57 -0
  30. package/lib/reuse/authenticator/formAuthenticator.js.map +1 -0
  31. package/lib/reuse/authenticator/plainAuthenticator.d.ts +2 -0
  32. package/lib/reuse/authenticator/plainAuthenticator.js +20 -0
  33. package/lib/reuse/authenticator/plainAuthenticator.js.map +1 -0
  34. package/lib/reuse/data/authenticators.json +16 -0
  35. package/lib/reuse/helper/clientsideUI5scripts.d.ts +1 -0
  36. package/lib/reuse/helper/clientsideUI5scripts.js +388 -0
  37. package/lib/reuse/helper/clientsideUI5scripts.js.map +1 -0
  38. package/lib/reuse/helper/jsDocGen.d.ts +1 -0
  39. package/lib/reuse/helper/jsDocGen.js +45 -0
  40. package/lib/reuse/helper/jsDocGen.js.map +1 -0
  41. package/lib/reuse/index.d.ts +5 -0
  42. package/lib/reuse/index.js +89 -0
  43. package/lib/reuse/index.js.map +1 -0
  44. package/lib/reuse/modules/common/Common.d.ts +12 -0
  45. package/lib/reuse/modules/common/Common.js +21 -0
  46. package/lib/reuse/modules/common/Common.js.map +1 -0
  47. package/lib/reuse/modules/common/assertion.d.ts +65 -0
  48. package/lib/reuse/modules/common/assertion.js +91 -0
  49. package/lib/reuse/modules/common/assertion.js.map +1 -0
  50. package/lib/reuse/modules/common/constants/date.constants.d.ts +8 -0
  51. package/lib/reuse/modules/common/constants/date.constants.js +13 -0
  52. package/lib/reuse/modules/common/constants/date.constants.js.map +1 -0
  53. package/lib/reuse/modules/common/constants/userInteraction.constants.d.ts +9 -0
  54. package/lib/reuse/modules/common/constants/userInteraction.constants.js +14 -0
  55. package/lib/reuse/modules/common/constants/userInteraction.constants.js.map +1 -0
  56. package/lib/reuse/modules/common/date.d.ts +84 -0
  57. package/lib/reuse/modules/common/date.js +164 -0
  58. package/lib/reuse/modules/common/date.js.map +1 -0
  59. package/lib/reuse/modules/common/navigation.d.ts +26 -0
  60. package/lib/reuse/modules/common/navigation.js +56 -0
  61. package/lib/reuse/modules/common/navigation.js.map +1 -0
  62. package/lib/reuse/modules/common/types/date.types.d.ts +2 -0
  63. package/lib/reuse/modules/common/types/date.types.js +3 -0
  64. package/lib/reuse/modules/common/types/date.types.js.map +1 -0
  65. package/lib/reuse/modules/common/userInteraction.d.ts +104 -0
  66. package/lib/reuse/modules/common/userInteraction.js +199 -0
  67. package/lib/reuse/modules/common/userInteraction.js.map +1 -0
  68. package/lib/reuse/modules/nonUi5/NonUi5.d.ts +12 -0
  69. package/lib/reuse/modules/nonUi5/NonUi5.js +21 -0
  70. package/lib/reuse/modules/nonUi5/NonUi5.js.map +1 -0
  71. package/lib/reuse/modules/nonUi5/assertion.d.ts +62 -0
  72. package/lib/reuse/modules/nonUi5/assertion.js +127 -0
  73. package/lib/reuse/modules/nonUi5/assertion.js.map +1 -0
  74. package/lib/reuse/modules/nonUi5/constants/userInteraction.constants.d.ts +6 -0
  75. package/lib/reuse/modules/nonUi5/constants/userInteraction.constants.js +11 -0
  76. package/lib/reuse/modules/nonUi5/constants/userInteraction.constants.js.map +1 -0
  77. package/lib/reuse/modules/nonUi5/element.d.ts +286 -0
  78. package/lib/reuse/modules/nonUi5/element.js +639 -0
  79. package/lib/reuse/modules/nonUi5/element.js.map +1 -0
  80. package/lib/reuse/modules/nonUi5/navigation.d.ts +17 -0
  81. package/lib/reuse/modules/nonUi5/navigation.js +44 -0
  82. package/lib/reuse/modules/nonUi5/navigation.js.map +1 -0
  83. package/lib/reuse/modules/nonUi5/userInteraction.d.ts +170 -0
  84. package/lib/reuse/modules/nonUi5/userInteraction.js +415 -0
  85. package/lib/reuse/modules/nonUi5/userInteraction.js.map +1 -0
  86. package/lib/reuse/modules/service/Service.d.ts +8 -0
  87. package/lib/reuse/modules/service/Service.js +17 -0
  88. package/lib/reuse/modules/service/Service.js.map +1 -0
  89. package/lib/reuse/modules/service/odata.d.ts +177 -0
  90. package/lib/reuse/modules/service/odata.js +347 -0
  91. package/lib/reuse/modules/service/odata.js.map +1 -0
  92. package/lib/reuse/modules/service/rest.d.ts +66 -0
  93. package/lib/reuse/modules/service/rest.js +168 -0
  94. package/lib/reuse/modules/service/rest.js.map +1 -0
  95. package/lib/reuse/modules/service/soap.d.ts +0 -0
  96. package/lib/reuse/modules/service/soap.js +2 -0
  97. package/lib/reuse/modules/service/soap.js.map +1 -0
  98. package/lib/reuse/modules/ui5/Ui5.d.ts +34 -0
  99. package/lib/reuse/modules/ui5/Ui5.js +41 -0
  100. package/lib/reuse/modules/ui5/Ui5.js.map +1 -0
  101. package/lib/reuse/modules/ui5/assertion.d.ts +183 -0
  102. package/lib/reuse/modules/ui5/assertion.js +493 -0
  103. package/lib/reuse/modules/ui5/assertion.js.map +1 -0
  104. package/lib/reuse/modules/ui5/confirmationDialog.d.ts +86 -0
  105. package/lib/reuse/modules/ui5/confirmationDialog.js +145 -0
  106. package/lib/reuse/modules/ui5/confirmationDialog.js.map +1 -0
  107. package/lib/reuse/modules/ui5/constants/mockserver.constants.d.ts +4 -0
  108. package/lib/reuse/modules/ui5/constants/mockserver.constants.js +9 -0
  109. package/lib/reuse/modules/ui5/constants/mockserver.constants.js.map +1 -0
  110. package/lib/reuse/modules/ui5/control.d.ts +84 -0
  111. package/lib/reuse/modules/ui5/control.js +132 -0
  112. package/lib/reuse/modules/ui5/control.js.map +1 -0
  113. package/lib/reuse/modules/ui5/date.d.ts +48 -0
  114. package/lib/reuse/modules/ui5/date.js +153 -0
  115. package/lib/reuse/modules/ui5/date.js.map +1 -0
  116. package/lib/reuse/modules/ui5/element.d.ts +160 -0
  117. package/lib/reuse/modules/ui5/element.js +349 -0
  118. package/lib/reuse/modules/ui5/element.js.map +1 -0
  119. package/lib/reuse/modules/ui5/errorDialog.d.ts +39 -0
  120. package/lib/reuse/modules/ui5/errorDialog.js +65 -0
  121. package/lib/reuse/modules/ui5/errorDialog.js.map +1 -0
  122. package/lib/reuse/modules/ui5/footerBar.d.ts +153 -0
  123. package/lib/reuse/modules/ui5/footerBar.js +240 -0
  124. package/lib/reuse/modules/ui5/footerBar.js.map +1 -0
  125. package/lib/reuse/modules/ui5/mockserver.d.ts +154 -0
  126. package/lib/reuse/modules/ui5/mockserver.js +665 -0
  127. package/lib/reuse/modules/ui5/mockserver.js.map +1 -0
  128. package/lib/reuse/modules/ui5/navigation.d.ts +103 -0
  129. package/lib/reuse/modules/ui5/navigation.js +275 -0
  130. package/lib/reuse/modules/ui5/navigation.js.map +1 -0
  131. package/lib/reuse/modules/ui5/navigationBar.d.ts +48 -0
  132. package/lib/reuse/modules/ui5/navigationBar.js +141 -0
  133. package/lib/reuse/modules/ui5/navigationBar.js.map +1 -0
  134. package/lib/reuse/modules/ui5/qunit.d.ts +17 -0
  135. package/lib/reuse/modules/ui5/qunit.js +52 -0
  136. package/lib/reuse/modules/ui5/qunit.js.map +1 -0
  137. package/lib/reuse/modules/ui5/session.d.ts +117 -0
  138. package/lib/reuse/modules/ui5/session.js +374 -0
  139. package/lib/reuse/modules/ui5/session.js.map +1 -0
  140. package/lib/reuse/modules/ui5/table.d.ts +61 -0
  141. package/lib/reuse/modules/ui5/table.js +188 -0
  142. package/lib/reuse/modules/ui5/table.js.map +1 -0
  143. package/lib/reuse/modules/ui5/types/mockserver.types.d.ts +2 -0
  144. package/lib/reuse/modules/ui5/types/mockserver.types.js +3 -0
  145. package/lib/reuse/modules/ui5/types/mockserver.types.js.map +1 -0
  146. package/lib/reuse/modules/ui5/userInteraction.d.ts +304 -0
  147. package/lib/reuse/modules/ui5/userInteraction.js +690 -0
  148. package/lib/reuse/modules/ui5/userInteraction.js.map +1 -0
  149. package/lib/reuse/modules/util/Util.d.ts +22 -0
  150. package/lib/reuse/modules/util/Util.js +27 -0
  151. package/lib/reuse/modules/util/Util.js.map +1 -0
  152. package/lib/reuse/modules/util/browser.d.ts +167 -0
  153. package/lib/reuse/modules/util/browser.js +367 -0
  154. package/lib/reuse/modules/util/browser.js.map +1 -0
  155. package/lib/reuse/modules/util/console.d.ts +56 -0
  156. package/lib/reuse/modules/util/console.js +152 -0
  157. package/lib/reuse/modules/util/console.js.map +1 -0
  158. package/lib/reuse/modules/util/constants/formatter.constants.d.ts +11 -0
  159. package/lib/reuse/modules/util/constants/formatter.constants.js +16 -0
  160. package/lib/reuse/modules/util/constants/formatter.constants.js.map +1 -0
  161. package/lib/reuse/modules/util/data.d.ts +36 -0
  162. package/lib/reuse/modules/util/data.js +87 -0
  163. package/lib/reuse/modules/util/data.js.map +1 -0
  164. package/lib/reuse/modules/util/file.d.ts +55 -0
  165. package/lib/reuse/modules/util/file.js +159 -0
  166. package/lib/reuse/modules/util/file.js.map +1 -0
  167. package/lib/reuse/modules/util/formatter.d.ts +90 -0
  168. package/lib/reuse/modules/util/formatter.js +210 -0
  169. package/lib/reuse/modules/util/formatter.js.map +1 -0
  170. package/lib/reuse/modules/util/function.d.ts +48 -0
  171. package/lib/reuse/modules/util/function.js +161 -0
  172. package/lib/reuse/modules/util/function.js.map +1 -0
  173. package/lib/reuse/modules/util/system.d.ts +17 -0
  174. package/lib/reuse/modules/util/system.js +58 -0
  175. package/lib/reuse/modules/util/system.js.map +1 -0
  176. package/lib/reuse/modules/util/types/formatter.types.d.ts +2 -0
  177. package/lib/reuse/modules/util/types/formatter.types.js +3 -0
  178. package/lib/reuse/modules/util/types/formatter.types.js.map +1 -0
  179. package/lib/scripts/clientsideUI5scripts.d.ts +1 -0
  180. package/lib/scripts/clientsideUI5scripts.js +315 -0
  181. package/lib/scripts/clientsideUI5scripts.js.map +1 -0
  182. package/lib/scripts/dataExchange/dataExchange.d.ts +1 -0
  183. package/lib/scripts/dataExchange/dataExchange.js +224 -0
  184. package/lib/scripts/dataExchange/dataExchange.js.map +1 -0
  185. package/lib/scripts/dataExchange/dataExchangeUtil.d.ts +63 -0
  186. package/lib/scripts/dataExchange/dataExchangeUtil.js +211 -0
  187. package/lib/scripts/dataExchange/dataExchangeUtil.js.map +1 -0
  188. package/lib/scripts/hooks/after.d.ts +8 -0
  189. package/lib/scripts/hooks/after.js +30 -0
  190. package/lib/scripts/hooks/after.js.map +1 -0
  191. package/lib/scripts/hooks/before.d.ts +8 -0
  192. package/lib/scripts/hooks/before.js +38 -0
  193. package/lib/scripts/hooks/before.js.map +1 -0
  194. package/lib/scripts/hooks/beforeSession.d.ts +8 -0
  195. package/lib/scripts/hooks/beforeSession.js +37 -0
  196. package/lib/scripts/hooks/beforeSession.js.map +1 -0
  197. package/lib/scripts/hooks/onComplete.d.ts +9 -0
  198. package/lib/scripts/hooks/onComplete.js +31 -0
  199. package/lib/scripts/hooks/onComplete.js.map +1 -0
  200. package/lib/scripts/hooks/onPrepare.d.ts +6 -0
  201. package/lib/scripts/hooks/onPrepare.js +36 -0
  202. package/lib/scripts/hooks/onPrepare.js.map +1 -0
  203. package/lib/scripts/hooks/utils/addLocatorCommands.d.ts +2 -0
  204. package/lib/scripts/hooks/utils/addLocatorCommands.js +193 -0
  205. package/lib/scripts/hooks/utils/addLocatorCommands.js.map +1 -0
  206. package/lib/scripts/hooks/utils/browserLog.d.ts +2 -0
  207. package/lib/scripts/hooks/utils/browserLog.js +39 -0
  208. package/lib/scripts/hooks/utils/browserLog.js.map +1 -0
  209. package/lib/scripts/hooks/utils/dataExchangeCommands.d.ts +9 -0
  210. package/lib/scripts/hooks/utils/dataExchangeCommands.js +46 -0
  211. package/lib/scripts/hooks/utils/dataExchangeCommands.js.map +1 -0
  212. package/lib/scripts/hooks/utils/decryption.d.ts +13 -0
  213. package/lib/scripts/hooks/utils/decryption.js +90 -0
  214. package/lib/scripts/hooks/utils/decryption.js.map +1 -0
  215. package/lib/scripts/hooks/utils/lib.d.ts +4 -0
  216. package/lib/scripts/hooks/utils/lib.js +330 -0
  217. package/lib/scripts/hooks/utils/lib.js.map +1 -0
  218. package/lib/scripts/hooks/utils/locatorCommands.d.ts +10 -0
  219. package/lib/scripts/hooks/utils/locatorCommands.js +216 -0
  220. package/lib/scripts/hooks/utils/locatorCommands.js.map +1 -0
  221. package/lib/scripts/locators/qmateLocator.d.ts +1 -0
  222. package/lib/scripts/locators/qmateLocator.js +1384 -0
  223. package/lib/scripts/locators/qmateLocator.js.map +1 -0
  224. package/lib/scripts/locators/uiveri5Locator.d.ts +1 -0
  225. package/lib/scripts/locators/uiveri5Locator.js +21 -0
  226. package/lib/scripts/locators/uiveri5Locator.js.map +1 -0
  227. package/mkdocs.yml +53 -0
  228. package/package.json +152 -0
  229. package/test/.eslintrc.yml +6 -0
  230. package/test/authenticator/package.json +13 -0
  231. package/test/authenticator/staticLogin/configCustom.js +22 -0
  232. package/test/authenticator/staticLogin/configCustomViaConfig.js +20 -0
  233. package/test/authenticator/staticLogin/configFiori.js +19 -0
  234. package/test/authenticator/staticLogin/configPlain.js +17 -0
  235. package/test/authenticator/staticLogin/configSapCloud.js +18 -0
  236. package/test/authenticator/staticLogin/html/custom.html +10 -0
  237. package/test/authenticator/staticLogin/html/fiori.html +10 -0
  238. package/test/authenticator/staticLogin/html/home.html +7 -0
  239. package/test/authenticator/staticLogin/html/sapCloud.html +10 -0
  240. package/test/authenticator/staticLogin/specs/custom.spec.js +6 -0
  241. package/test/authenticator/staticLogin/specs/customViaConfig.spec.js +10 -0
  242. package/test/authenticator/staticLogin/specs/fiori.spec.js +6 -0
  243. package/test/authenticator/staticLogin/specs/plain.spec.js +64 -0
  244. package/test/authenticator/staticLogin/specs/sapCloud.spec.js +6 -0
  245. package/test/authenticator/staticLogin/staticServerConfig.js +20 -0
  246. package/test/authenticator/systemLogin/configCustom.js +26 -0
  247. package/test/authenticator/systemLogin/configFiori.js +24 -0
  248. package/test/authenticator/systemLogin/configPlain.js +22 -0
  249. package/test/authenticator/systemLogin/configSapCloud.js +24 -0
  250. package/test/authenticator/systemLogin/specs/custom.spec.js +13 -0
  251. package/test/authenticator/systemLogin/specs/fiori.spec.js +12 -0
  252. package/test/authenticator/systemLogin/specs/plain.spec.js +21 -0
  253. package/test/authenticator/systemLogin/specs/sapCloud.spec.js +13 -0
  254. package/test/core/README.md +17 -0
  255. package/test/core/dataExchange/config.export.js +56 -0
  256. package/test/core/dataExchange/config.import.js +47 -0
  257. package/test/core/dataExchange/config.js +52 -0
  258. package/test/core/dataExchange/config.parallel.group.js +61 -0
  259. package/test/core/dataExchange/config.parallel.js +58 -0
  260. package/test/core/dataExchange/data/another/folder/data/anotherFolder/dummy1.txt +0 -0
  261. package/test/core/dataExchange/data/another/folder/data/anotherFolder/purchase-orders/Limit-Purchase-Order.json +29 -0
  262. package/test/core/dataExchange/data/another/folder/data/anotherFolder/purchase-orders/ServicePurchaseOrder.2Items.json +67 -0
  263. package/test/core/dataExchange/data/another/folder/data/anotherFolder/purchaseRequisition_HI.json +31 -0
  264. package/test/core/dataExchange/data/another/folder/data/anotherFolder/subfolder/LimitPurchaseOrder.json +29 -0
  265. package/test/core/dataExchange/data/another/folder/data/anotherFolder/subfolder/PurchaseOrderItems.json +58 -0
  266. package/test/core/dataExchange/data/another/folder/data/anotherFolder/subfolder/PurchaseOrderWithScheduline.json +27 -0
  267. package/test/core/dataExchange/data/another/folder/data/anotherFolder/subfolder/ServiceAndMaterialPurchaseOrder.json +65 -0
  268. package/test/core/dataExchange/data/another/folder/data/anotherFolder/subfolder/ServicePurchaseOrder.json +39 -0
  269. package/test/core/dataExchange/data/another/folder/data/anotherFolder/subfolder/ServicePurchaseOrder2Items.json +67 -0
  270. package/test/core/dataExchange/data/my/folder/data/qs9/data.json +5 -0
  271. package/test/core/dataExchange/data/my/folder/data/qs9/dummy1.txt +0 -0
  272. package/test/core/dataExchange/data/my/folder/data/qs9/dummy2.txt +0 -0
  273. package/test/core/dataExchange/data/my/folder/data/qs9/empty.json +0 -0
  274. package/test/core/dataExchange/data/my/folder/data/qs9/purchaseRequisition.json +31 -0
  275. package/test/core/dataExchange/data/my/folder/data/qs9/supplierInvoice.json +17 -0
  276. package/test/core/dataExchange/data/my/folder/data/qs9/webUser.json +6 -0
  277. package/test/core/dataExchange/data/ui/moreDataFolder/anotherUser.json +6 -0
  278. package/test/core/dataExchange/data/ui/user.json +6 -0
  279. package/test/core/dataExchange/data/ui/webUser.json +6 -0
  280. package/test/core/dataExchange/specs/export.fast.spec.js +48 -0
  281. package/test/core/dataExchange/specs/export.slow.spec.js +50 -0
  282. package/test/core/dataExchange/specs/export.spec.js +103 -0
  283. package/test/core/dataExchange/specs/import.spec.js +144 -0
  284. package/test/core/dataExchange/specs/importExport.spec.js +196 -0
  285. package/test/core/dataExchange/utils.js +160 -0
  286. package/test/core/functional/README.md +30 -0
  287. package/test/core/functional/chaining/chaining.test.js +137 -0
  288. package/test/core/functional/chaining/test.conf.js +31 -0
  289. package/test/core/functional/locators/ancestorProperties.test.js +99 -0
  290. package/test/core/functional/locators/childProperties.test.js +40 -0
  291. package/test/core/functional/locators/descendantProperties.test.js +107 -0
  292. package/test/core/functional/locators/domProperties.test.js +60 -0
  293. package/test/core/functional/locators/elementProperties.test.js +114 -0
  294. package/test/core/functional/locators/mixedProperties.test.js +170 -0
  295. package/test/core/functional/locators/parentProperties.test.js +47 -0
  296. package/test/core/functional/locators/siblingProperties.test.js +120 -0
  297. package/test/core/functional/locators/test.locator.conf.js +38 -0
  298. package/test/core/functional/locators/utils.js +6 -0
  299. package/test/core/functional/nativeBrowser/runInBrowser.test.js +111 -0
  300. package/test/core/functional/nativeBrowser/test.conf.js +31 -0
  301. package/test/core/functional/nonUi5/basic.test.js +10 -0
  302. package/test/core/functional/nonUi5/getWithDomElement.test.js +51 -0
  303. package/test/core/functional/nonUi5/getWithDomElements.test.js +141 -0
  304. package/test/core/functional/nonUi5/test.conf.js +32 -0
  305. package/test/core/functional/ui5Properties/getAggregations.test.js +102 -0
  306. package/test/core/functional/ui5Properties/getAssociations.test.js +24 -0
  307. package/test/core/functional/ui5Properties/getBindingInfos.test.js +71 -0
  308. package/test/core/functional/ui5Properties/getProperties.test.js +226 -0
  309. package/test/core/functional/ui5Properties/test.conf.js +16 -0
  310. package/test/core/functional/uiveri5/sample.test.js +61 -0
  311. package/test/core/functional/uiveri5/test.conf.js +31 -0
  312. package/test/core/package-lock.json +0 -0
  313. package/test/core/package.json +12 -0
  314. package/test/core/testIntegration/config.js +17 -0
  315. package/test/core/testIntegration/configMultiCombo.js +17 -0
  316. package/test/core/testIntegration/configTable.js +18 -0
  317. package/test/core/testIntegration/filters1.spec.js +1849 -0
  318. package/test/core/testIntegration/multicombobox.spec.js +134 -0
  319. package/test/core/testIntegration/table.spec.js +80 -0
  320. package/test/helper/configurations/base.conf.js +43 -0
  321. package/test/helper/configurations/chrome.conf.js +47 -0
  322. package/test/helper/configurations/chrome.headless.conf.js +45 -0
  323. package/test/helper/configurations/sauce.labs.conf.js +37 -0
  324. package/test/helper/configurations/sauce.labs.tunnel.conf.js +39 -0
  325. package/test/helper/sleeper.js +19 -0
  326. package/test/helper/utils.js +15 -0
  327. package/test/helper/website/buttons.html +85 -0
  328. package/test/helper/website/checkBox.html +83 -0
  329. package/test/helper/website/dragAndDropFailing.html +83 -0
  330. package/test/helper/website/dragAndDropWdioExample.html +41 -0
  331. package/test/helper/website/dropdown.html +78 -0
  332. package/test/helper/website/forms.html +82 -0
  333. package/test/helper/website/hiddenAndVisible.html +60 -0
  334. package/test/helper/website/main.css +36 -0
  335. package/test/helper/website/scrollPage.html +261 -0
  336. package/test/helper/website/style.css +52 -0
  337. package/test/helper/website/tables.html +140 -0
  338. package/test/helper/website/waitForElements.html +73 -0
  339. package/test/reuse/common/assertion/expectDefined.spec.js +11 -0
  340. package/test/reuse/common/assertion/expectEqual.spec.js +52 -0
  341. package/test/reuse/common/assertion/expectFalse.spec.js +9 -0
  342. package/test/reuse/common/assertion/expectTrue.spec.js +9 -0
  343. package/test/reuse/common/assertion/expectUndefined.spec.js +11 -0
  344. package/test/reuse/common/assertion/expectUnequal.spec.js +25 -0
  345. package/test/reuse/common/assertion/expectUrlToBe.spec.js +27 -0
  346. package/test/reuse/common/assertion/test.assertion.conf.js +59 -0
  347. package/test/reuse/common/date/calculate.spec.js +163 -0
  348. package/test/reuse/common/date/getNextMonth.spec.js +105 -0
  349. package/test/reuse/common/date/getNextYear.spec.js +72 -0
  350. package/test/reuse/common/date/getPreviousMonth.spec.js +71 -0
  351. package/test/reuse/common/date/getPreviousYear.spec.js +72 -0
  352. package/test/reuse/common/date/getSpecific.spec.js +63 -0
  353. package/test/reuse/common/date/getToday.spec.js +78 -0
  354. package/test/reuse/common/date/getTomorrow.spec.js +72 -0
  355. package/test/reuse/common/date/test.date.conf.js +19 -0
  356. package/test/reuse/common/date/utils.js +6 -0
  357. package/test/reuse/common/navigation/navigateToUrl.spec.js +28 -0
  358. package/test/reuse/common/navigation/navigateToUrlAndRetry.spec.js +27 -0
  359. package/test/reuse/common/navigation/test.navigation.conf.js +25 -0
  360. package/test/reuse/common/userInteraction/clearAndFillActive.spec.js +100 -0
  361. package/test/reuse/common/userInteraction/clearAndFillActiveAndRetry.spec.js +106 -0
  362. package/test/reuse/common/userInteraction/fillActive.spec.js +230 -0
  363. package/test/reuse/common/userInteraction/fillActiveAndRetry.spec.js +172 -0
  364. package/test/reuse/common/userInteraction/pressKey.spec.js +105 -0
  365. package/test/reuse/common/userInteraction/test.userInteraction.conf.js +53 -0
  366. package/test/reuse/nonUi5/assertion/expectAttributeToBe.spec.js +45 -0
  367. package/test/reuse/nonUi5/assertion/expectAttributeToContain.spec.js +43 -0
  368. package/test/reuse/nonUi5/assertion/expectToBeNotVisible.spec.js +37 -0
  369. package/test/reuse/nonUi5/assertion/expectToBeVisible.spec.js +63 -0
  370. package/test/reuse/nonUi5/assertion/expectValueToBe.spec.js +25 -0
  371. package/test/reuse/nonUi5/assertion/test.assertion.conf.js +60 -0
  372. package/test/reuse/nonUi5/assertion/test.assertion.sauceLabs.conf.js +64 -0
  373. package/test/reuse/nonUi5/element/getAllDisplayed.spec.js +39 -0
  374. package/test/reuse/nonUi5/element/getAttributeValue.spec.js +58 -0
  375. package/test/reuse/nonUi5/element/getByChild.spec.js +70 -0
  376. package/test/reuse/nonUi5/element/getByClass.spec.js +64 -0
  377. package/test/reuse/nonUi5/element/getByCss.spec.js +65 -0
  378. package/test/reuse/nonUi5/element/getByCssContainingText.spec.js +83 -0
  379. package/test/reuse/nonUi5/element/getById.spec.js +35 -0
  380. package/test/reuse/nonUi5/element/getByName.spec.js +30 -0
  381. package/test/reuse/nonUi5/element/getByParent.spec.js +71 -0
  382. package/test/reuse/nonUi5/element/getByXPath.spec.js +30 -0
  383. package/test/reuse/nonUi5/element/getValue.spec.js +51 -0
  384. package/test/reuse/nonUi5/element/highlight.spec.js +18 -0
  385. package/test/reuse/nonUi5/element/isPresent.spec.js +39 -0
  386. package/test/reuse/nonUi5/element/isPresentByCss.spec.js +73 -0
  387. package/test/reuse/nonUi5/element/isPresentByXPath.spec.js +31 -0
  388. package/test/reuse/nonUi5/element/setInnerHTML.spec.js +23 -0
  389. package/test/reuse/nonUi5/element/test.element.conf.js +55 -0
  390. package/test/reuse/nonUi5/element/test.element.sauceLabs.conf.js +58 -0
  391. package/test/reuse/nonUi5/element/waitForAll.spec.js +24 -0
  392. package/test/reuse/nonUi5/element/waitToBeClickable.spec.js +24 -0
  393. package/test/reuse/nonUi5/element/waitToBePresent.spec.js +32 -0
  394. package/test/reuse/nonUi5/element/waitToBeVisible.spec.js +36 -0
  395. package/test/reuse/nonUi5/navigation/navigateToApplication.spec.js +13 -0
  396. package/test/reuse/nonUi5/navigation/test.navigation.conf.js +14 -0
  397. package/test/reuse/nonUi5/userInteraction/checkAttributeAndValue.spec.js +135 -0
  398. package/test/reuse/nonUi5/userInteraction/clear.spec.js +43 -0
  399. package/test/reuse/nonUi5/userInteraction/clearAndFill.spec.js +51 -0
  400. package/test/reuse/nonUi5/userInteraction/clearAndFillAndRetry.spec.js +58 -0
  401. package/test/reuse/nonUi5/userInteraction/clearAndRetry.spec.js +43 -0
  402. package/test/reuse/nonUi5/userInteraction/click.spec.js +60 -0
  403. package/test/reuse/nonUi5/userInteraction/clickAndRetry.spec.js +60 -0
  404. package/test/reuse/nonUi5/userInteraction/clickElementInSvg.spec.js +24 -0
  405. package/test/reuse/nonUi5/userInteraction/doubleClick.spec.js +22 -0
  406. package/test/reuse/nonUi5/userInteraction/dragAndDrop.spec.js +40 -0
  407. package/test/reuse/nonUi5/userInteraction/fill.spec.js +37 -0
  408. package/test/reuse/nonUi5/userInteraction/fillAndRetry.spec.js +39 -0
  409. package/test/reuse/nonUi5/userInteraction/mouseOverElement.spec.js +36 -0
  410. package/test/reuse/nonUi5/userInteraction/moveCursorAndClick.spec.js +24 -0
  411. package/test/reuse/nonUi5/userInteraction/rightClick.spec.js +13 -0
  412. package/test/reuse/nonUi5/userInteraction/scrollToElement.spec.js +35 -0
  413. package/test/reuse/nonUi5/userInteraction/test.userInteraction.conf.js +72 -0
  414. package/test/reuse/nonUi5/userInteraction/test.userInteraction.sauceLabs.conf.js +78 -0
  415. package/test/reuse/service/rest/db.json +8 -0
  416. package/test/reuse/service/rest/delete.spec.js +20 -0
  417. package/test/reuse/service/rest/get.spec.js +19 -0
  418. package/test/reuse/service/rest/init.spec.js +35 -0
  419. package/test/reuse/service/rest/patch.spec.js +29 -0
  420. package/test/reuse/service/rest/post.spec.js +37 -0
  421. package/test/reuse/service/rest/test.rest.conf.js +18 -0
  422. package/test/reuse/ui5/assertion/expectAttributeToBe.spec.js +106 -0
  423. package/test/reuse/ui5/assertion/expectAttributeToContain.spec.js +78 -0
  424. package/test/reuse/ui5/assertion/expectBindingContextPathToBe.spec.js +103 -0
  425. package/test/reuse/ui5/assertion/expectBindingPathToBe.spec.js +164 -0
  426. package/test/reuse/ui5/assertion/expectMessageToastTextToBe.spec.js +43 -0
  427. package/test/reuse/ui5/assertion/expectTextToBe.spec.js +39 -0
  428. package/test/reuse/ui5/assertion/expectToBeEnabled.spec.js +90 -0
  429. package/test/reuse/ui5/assertion/expectToBeNotEnabled.spec.js +62 -0
  430. package/test/reuse/ui5/assertion/expectToBeNotVisible.spec.js +52 -0
  431. package/test/reuse/ui5/assertion/expectToBeVisible.spec.js +69 -0
  432. package/test/reuse/ui5/assertion/expectToBeVisibleInViewport.spec.js +49 -0
  433. package/test/reuse/ui5/assertion/expectValidationError.spec.js +54 -0
  434. package/test/reuse/ui5/assertion/expectValidationSuccess.spec.js +53 -0
  435. package/test/reuse/ui5/assertion/expectValueToBe.spec.js +57 -0
  436. package/test/reuse/ui5/assertion/expectValueToBeDefined.spec.js +35 -0
  437. package/test/reuse/ui5/assertion/test.assertion.conf.js +28 -0
  438. package/test/reuse/ui5/assertion/test.assertion.sauceLab.conf.js +37 -0
  439. package/test/reuse/ui5/confirmationDialog/clickCancel.spec.js +88 -0
  440. package/test/reuse/ui5/confirmationDialog/clickCreate.spec.js +3 -0
  441. package/test/reuse/ui5/confirmationDialog/clickDelete.spec.js +89 -0
  442. package/test/reuse/ui5/confirmationDialog/clickNo.spec.js +96 -0
  443. package/test/reuse/ui5/confirmationDialog/clickOk.spec.js +66 -0
  444. package/test/reuse/ui5/confirmationDialog/clickRevokeApproval.spec.js +3 -0
  445. package/test/reuse/ui5/confirmationDialog/clickYes.spec.js +70 -0
  446. package/test/reuse/ui5/confirmationDialog/test.confirmationDialog.conf.js +20 -0
  447. package/test/reuse/ui5/confirmationDialog/test.confirmationDialog.sauceLab.conf.js +29 -0
  448. package/test/reuse/ui5/control/execute.spec.js +29 -0
  449. package/test/reuse/ui5/control/getAggregationProperty.spec.js +29 -0
  450. package/test/reuse/ui5/control/getAssociationProperty.spec.js +1 -0
  451. package/test/reuse/ui5/control/getBindingContextPathProperty.spec.js +30 -0
  452. package/test/reuse/ui5/control/getProperty.spec.js +30 -0
  453. package/test/reuse/ui5/control/getPropertyBinding.spec.js +30 -0
  454. package/test/reuse/ui5/control/test.control.conf.js +19 -0
  455. package/test/reuse/ui5/control/test.control.sauceLab.conf.js +30 -0
  456. package/test/reuse/ui5/date/fillRange.spec.js +53 -0
  457. package/test/reuse/ui5/date/pick.spec.js +136 -0
  458. package/test/reuse/ui5/date/pickRange.spec.js +143 -0
  459. package/test/reuse/ui5/date/test.date.conf.js +14 -0
  460. package/test/reuse/ui5/date/test.date.sauceLab.conf.js +26 -0
  461. package/test/reuse/ui5/element/getAllDisplayed.spec.js +71 -0
  462. package/test/reuse/ui5/element/getBindingValue.spec.js +78 -0
  463. package/test/reuse/ui5/element/getByChild.spec.js +124 -0
  464. package/test/reuse/ui5/element/getByParent.spec.js +134 -0
  465. package/test/reuse/ui5/element/getByText.spec.js +67 -0
  466. package/test/reuse/ui5/element/getDisplayed.spec.js +82 -0
  467. package/test/reuse/ui5/element/getId.spec.js +72 -0
  468. package/test/reuse/ui5/element/getPropertyValue.spec.js +91 -0
  469. package/test/reuse/ui5/element/highlight.spec.js +46 -0
  470. package/test/reuse/ui5/element/isVisible.spec.js +68 -0
  471. package/test/reuse/ui5/element/test.element.conf.js +22 -0
  472. package/test/reuse/ui5/element/test.element.sauceLab.conf.js +33 -0
  473. package/test/reuse/ui5/errorDialog/clickClose.spec.js +31 -0
  474. package/test/reuse/ui5/errorDialog/expectToBeVisible.spec.js +30 -0
  475. package/test/reuse/ui5/errorDialog/test.errorDialog.conf.js +13 -0
  476. package/test/reuse/ui5/errorDialog/test.errorDialog.sauceLab.conf.js +26 -0
  477. package/test/reuse/ui5/formatter/addRemoveLeadingZeros.spec.js +18 -0
  478. package/test/reuse/ui5/formatter/extractNumberFromString.spec.js +34 -0
  479. package/test/reuse/ui5/formatter/formatDate.spec.js +103 -0
  480. package/test/reuse/ui5/formatter/test.formatter.conf.js +14 -0
  481. package/test/reuse/ui5/formatter/test.formatter.sauceLab.conf.js +24 -0
  482. package/test/reuse/ui5/mockserver_qunit/Component.js +23 -0
  483. package/test/reuse/ui5/mockserver_qunit/LICENSE.txt +957 -0
  484. package/test/reuse/ui5/mockserver_qunit/NOTICE.txt +1 -0
  485. package/test/reuse/ui5/mockserver_qunit/controller/App.controller.js +37 -0
  486. package/test/reuse/ui5/mockserver_qunit/controller/BaseController.js +30 -0
  487. package/test/reuse/ui5/mockserver_qunit/controller/Home.controller.js +27 -0
  488. package/test/reuse/ui5/mockserver_qunit/controller/NotFound.controller.js +34 -0
  489. package/test/reuse/ui5/mockserver_qunit/controller/employee/Employee.controller.js +64 -0
  490. package/test/reuse/ui5/mockserver_qunit/controller/employee/EmployeeList.controller.js +22 -0
  491. package/test/reuse/ui5/mockserver_qunit/controller/employee/Resume.controller.js +83 -0
  492. package/test/reuse/ui5/mockserver_qunit/controller/employee/overview/EmployeeOverview.controller.js +11 -0
  493. package/test/reuse/ui5/mockserver_qunit/controller/employee/overview/EmployeeOverviewContent.controller.js +192 -0
  494. package/test/reuse/ui5/mockserver_qunit/i18n/i18n.properties +42 -0
  495. package/test/reuse/ui5/mockserver_qunit/index.html +21 -0
  496. package/test/reuse/ui5/mockserver_qunit/initMockServer.js +16 -0
  497. package/test/reuse/ui5/mockserver_qunit/localService/metadata.xml +61 -0
  498. package/test/reuse/ui5/mockserver_qunit/localService/mockdata/Employees.json +155 -0
  499. package/test/reuse/ui5/mockserver_qunit/localService/mockdata/Resumes.json +65 -0
  500. package/test/reuse/ui5/mockserver_qunit/localService/mockserver.js +146 -0
  501. package/test/reuse/ui5/mockserver_qunit/localService/mockserverLoadAllData.js +75 -0
  502. package/test/reuse/ui5/mockserver_qunit/manifest.json +169 -0
  503. package/test/reuse/ui5/mockserver_qunit/test/flpSandboxMockServer.html +63 -0
  504. package/test/reuse/ui5/mockserver_qunit/test/flpSandboxMockServerAllData.html +68 -0
  505. package/test/reuse/ui5/mockserver_qunit/test/qmate/ui/config.js +92 -0
  506. package/test/reuse/ui5/mockserver_qunit/test/qmate/ui/qunitExecution/specs/runQUnitTests.spec.js +14 -0
  507. package/test/reuse/ui5/mockserver_qunit/test/qmate/ui/testDisplayNotFound/data/setup.json +11 -0
  508. package/test/reuse/ui5/mockserver_qunit/test/qmate/ui/testDisplayNotFound/specs/testDisplayNotFound.spec.js +71 -0
  509. package/test/reuse/ui5/mockserver_qunit/test/qmate/ui/testShowEmployeeList/data/mock/Employees.json +204 -0
  510. package/test/reuse/ui5/mockserver_qunit/test/qmate/ui/testShowEmployeeList/data/mock/Resumes.json +114 -0
  511. package/test/reuse/ui5/mockserver_qunit/test/qmate/ui/testShowEmployeeList/data/setup.json +11 -0
  512. package/test/reuse/ui5/mockserver_qunit/test/qmate/ui/testShowEmployeeList/data/testShowEmployeeList.json +1 -0
  513. package/test/reuse/ui5/mockserver_qunit/test/qmate/ui/testShowEmployeeList/specs/testShowEmployeeList.spec.js +118 -0
  514. package/test/reuse/ui5/mockserver_qunit/test/qmate/ui/utils/constants.js +25 -0
  515. package/test/reuse/ui5/mockserver_qunit/test/qmate/ui/utils/mockDataMapper.js +23 -0
  516. package/test/reuse/ui5/mockserver_qunit/test/qmate/ui/utils/mockHelper.js +222 -0
  517. package/test/reuse/ui5/mockserver_qunit/test/unit/allTests.js +6 -0
  518. package/test/reuse/ui5/mockserver_qunit/test/unit/unitTests.qunit.html +38 -0
  519. package/test/reuse/ui5/mockserver_qunit/test/unit/utils/Conversions.js +13 -0
  520. package/test/reuse/ui5/mockserver_qunit/view/App.view.xml +9 -0
  521. package/test/reuse/ui5/mockserver_qunit/view/Home.view.xml +12 -0
  522. package/test/reuse/ui5/mockserver_qunit/view/NotFound.view.xml +11 -0
  523. package/test/reuse/ui5/mockserver_qunit/view/employee/Employee.view.xml +52 -0
  524. package/test/reuse/ui5/mockserver_qunit/view/employee/EmployeeList.view.xml +24 -0
  525. package/test/reuse/ui5/mockserver_qunit/view/employee/Resume.view.xml +35 -0
  526. package/test/reuse/ui5/mockserver_qunit/view/employee/ResumeHobbies.view.xml +3 -0
  527. package/test/reuse/ui5/mockserver_qunit/view/employee/ResumeNotes.view.xml +3 -0
  528. package/test/reuse/ui5/mockserver_qunit/view/employee/ResumeProjects.view.xml +3 -0
  529. package/test/reuse/ui5/mockserver_qunit/view/employee/overview/EmployeeOverview.view.xml +13 -0
  530. package/test/reuse/ui5/mockserver_qunit/view/employee/overview/EmployeeOverviewContent.view.xml +43 -0
  531. package/test/reuse/ui5/mockserver_qunit/view/employee/overview/EmployeeOverviewTop.view.xml +3 -0
  532. package/test/reuse/ui5/navigation/closePopups.spec.js +16 -0
  533. package/test/reuse/ui5/navigation/expectUnsupportedNavigationPopup.spec.js +81 -0
  534. package/test/reuse/ui5/navigation/navigateToApplication.spec.js +148 -0
  535. package/test/reuse/ui5/navigation/navigateToApplicationAndRetry.spec.js +153 -0
  536. package/test/reuse/ui5/navigation/navigateToApplicationWithQueryParams.spec.js +63 -0
  537. package/test/reuse/ui5/navigation/navigateToApplicationWithQueryParamsAndRetry.spec.js +64 -0
  538. package/test/reuse/ui5/navigation/navigateToSystemAndApplication.spec.js +45 -0
  539. package/test/reuse/ui5/navigation/navigateToSystemAndApplicationAndRetry.spec.js +43 -0
  540. package/test/reuse/ui5/navigation/test.navigation.conf.js +17 -0
  541. package/test/reuse/ui5/navigation/test.navigation.sauceLab.conf.js +33 -0
  542. package/test/reuse/ui5/navigation/test.navigation.static.conf.js +34 -0
  543. package/test/reuse/ui5/navigation/test.navigation.static.sauceLab.conf.js +41 -0
  544. package/test/reuse/ui5/navigation/website/main.css +36 -0
  545. package/test/reuse/ui5/navigation/website/main.html +50 -0
  546. package/test/reuse/ui5/navigationBar/clickBack.spec.js +38 -0
  547. package/test/reuse/ui5/navigationBar/clickUserIcon.spec.js +36 -0
  548. package/test/reuse/ui5/navigationBar/expectPageTitle.spec.js +22 -0
  549. package/test/reuse/ui5/navigationBar/expectShellHeader.spec.js +22 -0
  550. package/test/reuse/ui5/navigationBar/test.navigationBar.conf.js +17 -0
  551. package/test/reuse/ui5/navigationBar/test.navigationBar.sauceLab.conf.js +28 -0
  552. package/test/reuse/ui5/session/login.spec.js +78 -0
  553. package/test/reuse/ui5/session/loginFiori.spec.js +52 -0
  554. package/test/reuse/ui5/session/loginSapCloud.spec.js +51 -0
  555. package/test/reuse/ui5/session/logout.spec.js +48 -0
  556. package/test/reuse/ui5/session/switchUser.spec.js +48 -0
  557. package/test/reuse/ui5/session/test.session.conf.js +20 -0
  558. package/test/reuse/ui5/session/test.session.sauceLab.conf.js +29 -0
  559. package/test/reuse/ui5/table/clickSettingsButton.spec.js +58 -0
  560. package/test/reuse/ui5/table/sortColumnAscending.spec.js +84 -0
  561. package/test/reuse/ui5/table/sortColumnDescending.spec.js +84 -0
  562. package/test/reuse/ui5/table/test.table.conf.js +14 -0
  563. package/test/reuse/ui5/table/test.table.sauceLab.conf.js +25 -0
  564. package/test/reuse/ui5/table/test.table.sauceLab.tunnel.conf.js +25 -0
  565. package/test/reuse/ui5/userInteraction/clear.spec.js +75 -0
  566. package/test/reuse/ui5/userInteraction/clearAndFill.spec.js +157 -0
  567. package/test/reuse/ui5/userInteraction/clearAndFillAndRetry.spec.js +132 -0
  568. package/test/reuse/ui5/userInteraction/clearAndFillSmartFieldInput.spec.js +73 -0
  569. package/test/reuse/ui5/userInteraction/clearAndRetry.spec.js +57 -0
  570. package/test/reuse/ui5/userInteraction/click.spec.js +73 -0
  571. package/test/reuse/ui5/userInteraction/clickAndRetry.spec.js +52 -0
  572. package/test/reuse/ui5/userInteraction/clickSelectArrow.spec.js +87 -0
  573. package/test/reuse/ui5/userInteraction/clickSelectArrowAndRetry.spec.js +147 -0
  574. package/test/reuse/ui5/userInteraction/clickTab.spec.js +59 -0
  575. package/test/reuse/ui5/userInteraction/doubleClick.spec.js +73 -0
  576. package/test/reuse/ui5/userInteraction/dragAndDrop.spec.js +34 -0
  577. package/test/reuse/ui5/userInteraction/fill.spec.js +114 -0
  578. package/test/reuse/ui5/userInteraction/fillAndRetry.spec.js +120 -0
  579. package/test/reuse/ui5/userInteraction/mouseOverElement.spec.js +55 -0
  580. package/test/reuse/ui5/userInteraction/openF4Help.spec.js +56 -0
  581. package/test/reuse/ui5/userInteraction/rightClick.spec.js +72 -0
  582. package/test/reuse/ui5/userInteraction/scrollToElement.spec.js +89 -0
  583. package/test/reuse/ui5/userInteraction/searchFor.spec.js +155 -0
  584. package/test/reuse/ui5/userInteraction/selectBox.spec.js +128 -0
  585. package/test/reuse/ui5/userInteraction/selectCombobox.spec.js +115 -0
  586. package/test/reuse/ui5/userInteraction/selectMultiComboBox.spec.js +155 -0
  587. package/test/reuse/ui5/userInteraction/test.userInteraction.conf.js +35 -0
  588. package/test/reuse/ui5/userInteraction/test.userInteraction.sauceLab.conf.js +46 -0
  589. package/test/reuse/util/browser/back.spec.js +32 -0
  590. package/test/reuse/util/browser/clearBrowser.spec.js +35 -0
  591. package/test/reuse/util/browser/executeScript.spec.js +49 -0
  592. package/test/reuse/util/browser/getBaseUrl.spec.js +13 -0
  593. package/test/reuse/util/browser/getBrowserName.spec.js +18 -0
  594. package/test/reuse/util/browser/getCurrentUrl.spec.js +34 -0
  595. package/test/reuse/util/browser/getCurrentWindow.spec.js +42 -0
  596. package/test/reuse/util/browser/getUI5Version.spec.js +31 -0
  597. package/test/reuse/util/browser/logCurrentUrl.spec.js +23 -0
  598. package/test/reuse/util/browser/refresh.spec.js +52 -0
  599. package/test/reuse/util/browser/setBaseUrl.spec.js +13 -0
  600. package/test/reuse/util/browser/switchToDefaultContent.spec.js +34 -0
  601. package/test/reuse/util/browser/switchToIframe.spec.js +29 -0
  602. package/test/reuse/util/browser/switchToNewWindow.spec.js +142 -0
  603. package/test/reuse/util/browser/switchToWindow.spec.js +57 -0
  604. package/test/reuse/util/browser/test.browser.conf.js +27 -0
  605. package/test/reuse/util/data/data/test.json +3 -0
  606. package/test/reuse/util/data/data/test.secure.json +11 -0
  607. package/test/reuse/util/data/decrypt.spec.js +15 -0
  608. package/test/reuse/util/data/getData.spec.js +15 -0
  609. package/test/reuse/util/data/getSecureData.spec.js +57 -0
  610. package/test/reuse/util/data/test.data.conf.js +22 -0
  611. package/test/reuse/util/file/file.spec.js +90 -0
  612. package/test/reuse/util/file/pdfParser.spec.js +55 -0
  613. package/test/reuse/util/file/test.file.conf.js +15 -0
  614. package/test/reuse/util/file/testFiles/sample.pdf +198 -0
  615. package/test/reuse/util/file/testFiles/test.txt +5 -0
  616. package/test/reuse/util/file/testFiles/test2.txt +2 -0
  617. package/test/reuse/util/formatter/addRemoveLeadingZeros.spec.js +38 -0
  618. package/test/reuse/util/formatter/extractNumberFromString.spec.js +67 -0
  619. package/test/reuse/util/formatter/formatDate.spec.js +150 -0
  620. package/test/reuse/util/formatter/sliceStringAfter.spec.js +62 -0
  621. package/test/reuse/util/formatter/sliceStringAt.spec.js +62 -0
  622. package/test/reuse/util/formatter/stringifyJSON.spec.js +24 -0
  623. package/test/reuse/util/formatter/test.formatter.conf.js +20 -0
  624. package/test/reuse/util/formatter/trimString.spec.js +37 -0
  625. package/tsconfig.json +26 -0
@@ -0,0 +1,690 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.UserInteraction = void 0;
13
+ /**
14
+ * @class userInteraction
15
+ * @memberof ui5
16
+ */
17
+ class UserInteraction {
18
+ // =================================== CLICK ===================================
19
+ /**
20
+ * @function click
21
+ * @memberOf ui5.userInteraction
22
+ * @description Clicks on the element with the given selector.
23
+ * @param {Object} selector - The selector describing the element.
24
+ * @param {Number} [index=0] - The index of the selector (in case there are more than one elements visible at the same time).
25
+ * @param {Number} [timeout=30000] - The timeout to wait (ms).
26
+ * @example await ui5.userInteraction.click(selector);
27
+ */
28
+ click(selector, index = 0, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000) {
29
+ return __awaiter(this, void 0, void 0, function* () {
30
+ let elem = null;
31
+ yield browser.waitUntil(function () {
32
+ return __awaiter(this, void 0, void 0, function* () {
33
+ elem = yield ui5.element.getDisplayed(selector, index, timeout);
34
+ if (!elem)
35
+ return false;
36
+ return elem.isClickable();
37
+ });
38
+ }, {
39
+ timeout,
40
+ timeoutMsg: `Element not clickable after ${+timeout / 1000}s`
41
+ });
42
+ try {
43
+ // @ts-ignore
44
+ yield elem.click();
45
+ }
46
+ catch (error) {
47
+ // @ts-ignore
48
+ if (error.message && error.message.match(new RegExp(/is not clickable at point/))) {
49
+ // @ts-ignore
50
+ const errorMessage = yield util.function.mapWdioErrorToQmateErrorMessage(error, "click");
51
+ throw new Error(errorMessage);
52
+ }
53
+ }
54
+ });
55
+ }
56
+ ;
57
+ /**
58
+ * @function clickAndRetry
59
+ * @memberOf ui5.userInteraction
60
+ * @description Clicks on the element with the given selector and retries the action in case of a failure.
61
+ * @param {Object} selector - The selector describing the element.
62
+ * @param {Number} [index=0] - The index of the selector (in case there are more than one elements visible at the same time).
63
+ * @param {Number} [timeout=30000] - The timeout to wait (ms).
64
+ * @param {Number} [retries=3] - The number of retries, can be set in config for all functions under params stepsRetries.
65
+ * @param {Number} [interval=5000] - The delay between the retries (ms). Can be set in config for all functions under params.stepRetriesIntervals.
66
+ * @example await ui5.userInteraction.clickAndRetry(selector);
67
+ */
68
+ clickAndRetry(selector, index = 0, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000, retries = 3, interval = 5000) {
69
+ return __awaiter(this, void 0, void 0, function* () {
70
+ yield util.function.retry(this.click, [selector, index, timeout], retries, interval, this);
71
+ });
72
+ }
73
+ ;
74
+ /**
75
+ * @function clickTab
76
+ * @memberOf ui5.userInteraction
77
+ * @description Clicks on the tab with the given selector and checks if the tab got selected successfully.
78
+ * The function retries the click for maximal 3 times if the selection of the tab (blue underline) was not successful.
79
+ * @param {Object} selector - The selector describing the element.
80
+ * @param {Number} [index=0] - The index of the selector (in case there are more than one elements visible at the same time).
81
+ * @param {Number} [timeout=30000] - The timeout to wait (ms).
82
+ * @example await ui5.userInteraction.clickTab(selector);
83
+ */
84
+ clickTab(selector, index = 0, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000) {
85
+ return __awaiter(this, void 0, void 0, function* () {
86
+ yield util.function.retry(function (selector, index, timeout) {
87
+ return __awaiter(this, void 0, void 0, function* () {
88
+ yield ui5.userInteraction.click(selector);
89
+ const tab = yield ui5.element.getDisplayed(selector, index, timeout);
90
+ const classList = yield tab.getAttribute("class");
91
+ if (!classList.includes("sapUxAPAnchorBarButtonSelected")) {
92
+ throw new Error();
93
+ }
94
+ });
95
+ }, [selector, index, timeout], 3, 5000, this);
96
+ });
97
+ }
98
+ ;
99
+ /**
100
+ * @function clickListItem
101
+ * @memberOf ui5.userInteraction
102
+ * @description Clicks or opens the list item with the given selector (e.g. ColumnListItem, StandardListItem).
103
+ * In some cases the default click function is not working correctly (clicks an element within the list item).
104
+ * Therefore we recommend to use this function to open a specific list item.
105
+ * @param {Object} selector - The selector describing the element.
106
+ * @param {Number} [index=0] - The index of the selector (in case there are more than one elements visible at the same time).
107
+ * @param {Number} [timeout=30000] - The timeout to wait (ms).
108
+ * @example await ui5.userInteraction.clickListItem(selector);
109
+ */
110
+ clickListItem(selector, index = 0, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000) {
111
+ return __awaiter(this, void 0, void 0, function* () {
112
+ const elem = yield ui5.element.getDisplayed(selector, index, timeout);
113
+ yield ui5.control.execute(function (control, done) {
114
+ control.attachPress(function () {
115
+ done();
116
+ });
117
+ control.firePress();
118
+ }, elem);
119
+ });
120
+ }
121
+ ;
122
+ // =================================== FILL ===================================
123
+ /**
124
+ * @function fill
125
+ * @memberOf ui5.userInteraction
126
+ * @description Fills the input field with the given selector.
127
+ * @param {Object} selector - The selector describing the element.
128
+ * @param {String} value - The value to fill.
129
+ * @param {Number} [index=0] - The index of the selector (in case there are more than one elements visible at the same time).
130
+ * @param {Number} [timeout=30000] - The timeout to wait (ms).
131
+ * @example await ui5.userInteraction.fill(selector, "My Value");
132
+ */
133
+ fill(selector, value, index = 0, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000) {
134
+ return __awaiter(this, void 0, void 0, function* () {
135
+ if (value !== null) {
136
+ const id = yield ui5.element.getId(selector, index, timeout);
137
+ let elem = null;
138
+ if (selector.elementProperties.metadata === "sap.m.TextArea") {
139
+ elem = yield nonUi5.element.getByCss("[id='" + id + "'] textarea", index, timeout);
140
+ }
141
+ else {
142
+ elem = yield nonUi5.element.getByCss("[id='" + id + "'] input", index, timeout);
143
+ }
144
+ yield elem.setValue(value);
145
+ }
146
+ });
147
+ }
148
+ ;
149
+ /**
150
+ * @function fillAndRetry
151
+ * @memberOf ui5.userInteraction
152
+ * @description Fills the input field with the given selector and retries the action in case of a failure.
153
+ * @param {Object} selector - The selector describing the element.
154
+ * @param {String} value - The value to fill.
155
+ * @param {Number} [index=0] - The index of the selector (in case there are more than one elements visible at the same time).
156
+ * @param {Number} [timeout=30000] - The timeout to wait (ms).
157
+ * @param {Number} [retries=3] - The number of retries, can be set in config for all functions under params stepsRetries.
158
+ * @param {Number} [interval=5000] - The delay between the retries (ms). Can be set in config for all functions under params.stepRetriesIntervals.
159
+ * @example await ui5.userInteraction.fillAndRetry(selector, "My Value");
160
+ */
161
+ fillAndRetry(selector, value, index = 0, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000, retries = 3, interval = 5000) {
162
+ return __awaiter(this, void 0, void 0, function* () {
163
+ yield util.function.retry(this.fill, [selector, value, index, timeout], retries, interval, this);
164
+ });
165
+ }
166
+ ;
167
+ // =================================== CLEAR ===================================
168
+ /**
169
+ * @function clear
170
+ * @memberOf ui5.userInteraction
171
+ * @description Clears the input with the given selector.
172
+ * @param {Object} selector - The selector describing the element.
173
+ * @param {Number} [index=0] - The index of the selector (in case there are more than one elements visible at the same time).
174
+ * @param {Number} [timeout=30000] - The timeout to wait (ms).
175
+ * @example await ui5.userInteraction.clear(selector);
176
+ */
177
+ //TODO remove clearHelper and use clear
178
+ clear(selector, index = 0, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000) {
179
+ return __awaiter(this, void 0, void 0, function* () {
180
+ yield this._clearHelper(selector, index, timeout);
181
+ });
182
+ }
183
+ ;
184
+ /**
185
+ * @function clearAndRetry
186
+ * @memberOf ui5.userInteraction
187
+ * @description Clears the input with the given selector and retries the action in case of a failure
188
+ * @param {Object} selector - The selector describing the element.
189
+ * @param {Number} [index=0] - The index of the selector (in case there are more than one elements visible at the same time).
190
+ * @param {Number} [timeout=30000] - The timeout to wait (ms).
191
+ * @param {Number} [retries=3] - The number of retries, can be set in config for all functions under params stepsRetries.
192
+ * @param {Number} [interval=5000] - The delay between the retries (ms). Can be set in config for all functions under params.stepRetriesIntervals.
193
+ * @example await ui5.userInteraction.clearAndRetry(selector);
194
+ */
195
+ clearAndRetry(selector, index = 0, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000, retries = 3, interval = 5000) {
196
+ return __awaiter(this, void 0, void 0, function* () {
197
+ yield util.function.retry(this.clear, [selector, index, timeout], retries, interval, this);
198
+ });
199
+ }
200
+ ;
201
+ /**
202
+ * @function clearAndFill
203
+ * @memberOf ui5.userInteraction
204
+ * @description Clears the input field with the given selector and fills the given value.
205
+ * @param {Object} selector - The selector describing the element.
206
+ * @param {String} value - The value to fill.
207
+ * @param {Number} [index=0] - The index of the selector (in case there are more than one elements visible at the same time).
208
+ * @param {Number} [timeout=30000] - The timeout to wait (ms).
209
+ * @example await ui5.userInteraction.clearAndFill(selector, "My Value");
210
+ */
211
+ clearAndFill(selector, value, index = 0, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000) {
212
+ return __awaiter(this, void 0, void 0, function* () {
213
+ if (value !== null) {
214
+ yield this.clear(selector, index, timeout);
215
+ yield common.userInteraction.fillActive(value);
216
+ }
217
+ else {
218
+ throw new Error("Function 'clearAndFill' failed. Please provide a value as second parameter.");
219
+ }
220
+ });
221
+ }
222
+ ;
223
+ /**
224
+ * @function clearAndFillAndRetry
225
+ * @memberOf ui5.userInteraction
226
+ * @description Clears the input field with the given selector and fills the given value. Retries the action in case of a failure.
227
+ * @param {Object} selector - The selector describing the element.
228
+ * @param {String} value - The value to fill.
229
+ * @param {Number} [index=0] - The index of the selector (in case there are more than one elements visible at the same time).
230
+ * @param {Number} [timeout=30000] - The timeout to wait (ms).
231
+ * @param {Number} [retries=3] - The number of retries, can be set in config for all functions under params stepsRetries.
232
+ * @param {Number} [interval=5000] - The delay between the retries (ms). Can be set in config for all functions under params.stepRetriesIntervals.
233
+ * @param {Boolean} [verify=true] - Specifies if the filled value should be verified.
234
+ * @example await ui5.userInteraction.clearAndFillAndRetry(selector, "My Value");
235
+ */
236
+ clearAndFillAndRetry(selector, value, index = 0, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000, retries = 3, interval = 5000, verify = true) {
237
+ return __awaiter(this, void 0, void 0, function* () {
238
+ yield util.function.retry((selector, value, index, timeout) => __awaiter(this, void 0, void 0, function* () {
239
+ yield this.clearAndFill(selector, value, index, timeout);
240
+ if (verify) {
241
+ const elem = yield ui5.element.getDisplayed(selector);
242
+ let elemValue = yield ui5.element.getValue(selector, index);
243
+ if (elemValue != value) { // IMPORTANT: keep non-strict comparison for format changes after input (10 -> 10.00)
244
+ elemValue = yield ui5.element.getInnerAttribute(elem, "data-" + "value");
245
+ if (elemValue != value) { // IMPORTANT: keep non-strict comparison for format changes after input (10 -> 10.00)
246
+ throw new Error(`Actual value '${elemValue}' not equal to expected value '${value}'`);
247
+ }
248
+ }
249
+ }
250
+ }), [selector, value, index, timeout], retries, interval, this);
251
+ });
252
+ }
253
+ ;
254
+ /**
255
+ * @function clearSmartFieldInput
256
+ * @memberOf ui5.userInteraction
257
+ * @description Clears the smart filed with the given selector.
258
+ * @param {Object} selector - The selector describing the element.
259
+ * @param {Number} [index=0] - The index of the selector (in case there are more than one elements visible at the same time).
260
+ * @param {Number} [timeout=30000] - The timeout to wait (ms).
261
+ * @example await ui5.userInteraction.clearSmartFieldInput(selector);
262
+ */
263
+ clearSmartFieldInput(selector, index = 0, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000) {
264
+ return __awaiter(this, void 0, void 0, function* () {
265
+ yield ui5.userInteraction.clear(selector, index, timeout);
266
+ });
267
+ }
268
+ ;
269
+ /**
270
+ * @function clearAndFillSmartFieldInput
271
+ * @memberOf ui5.userInteraction
272
+ * @description Clears the smart filed with the given selector and fills the given value.
273
+ * @param {Object} selector - The selector describing the element.
274
+ * @param {String} value - The value to fill.
275
+ * @param {Number} [index=0] - The index of the selector (in case there are more than one elements visible at the same time).
276
+ * @param {Number} [timeout=30000] - The timeout to wait (ms).
277
+ * @example await ui5.userInteraction.clearAndFillSmartFieldInput(selector, "My Value");
278
+ */
279
+ clearAndFillSmartFieldInput(selector, value, index = 0, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000) {
280
+ return __awaiter(this, void 0, void 0, function* () {
281
+ const id = yield ui5.element.getId(selector, index, timeout);
282
+ const elem = yield nonUi5.element.getByCss(`input[id*='${id}']`);
283
+ yield elem.click();
284
+ yield ui5.userInteraction.selectAll(selector, index, timeout);
285
+ yield elem.setValue(value);
286
+ });
287
+ }
288
+ ;
289
+ /**
290
+ * @function clearAndFillSmartFieldInputAndRetry
291
+ * @memberOf ui5.userInteraction
292
+ * @description Clears the smart filed with the given selector and fills the given value and retries the action in case of a failure.
293
+ * @param {Object} selector - The selector describing the element.
294
+ * @param {String} value - The value to fill.
295
+ * @param {Number} [index=0] - The index of the selector (in case there are more than one elements visible at the same time).
296
+ * @param {Number} [timeout=30000] - The timeout to wait (ms).
297
+ * @param {Number} [retries=3] - The number of retries, can be set in config for all functions under params stepsRetries.
298
+ * @param {Number} [interval=5000] - The delay between the retries (ms). Can be set in config for all functions under params.stepRetriesIntervals.
299
+ * @example await ui5.userInteraction.clearAndFillSmartFieldInputAndRetry(selector, "My Value");
300
+ */
301
+ clearAndFillSmartFieldInputAndRetry(selector, value, index = 0, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000, retries = 3, interval = 5000) {
302
+ return __awaiter(this, void 0, void 0, function* () {
303
+ yield util.function.retry(this.clearAndFillSmartFieldInput, [selector, value, index, timeout], retries, interval, this);
304
+ });
305
+ }
306
+ ;
307
+ // =================================== SELECT ===================================
308
+ /**
309
+ * @function selectBox
310
+ * @memberOf ui5.userInteraction
311
+ * @description Selects the passed value of the Select box.
312
+ * Please note that the function will only work for the default select Box.
313
+ * In special cases, please use the clickSelectArrow function.
314
+ * @param {Object} selector - The selector describing the element.
315
+ * @param {String} value - The value to select.
316
+ * @param {Number} [index=0] - The index of the selector (in case there are more than one elements visible at the same time).
317
+ * @example await ui5.userInteraction.selectBox(selector, "Germany");
318
+ */
319
+ selectBox(selector, value, index = 0) {
320
+ return __awaiter(this, void 0, void 0, function* () {
321
+ yield this.clickSelectArrow(selector, index);
322
+ if (value) {
323
+ const itemSelector = {
324
+ "elementProperties": {
325
+ "mProperties": {
326
+ "text": value
327
+ },
328
+ "ancestorProperties": selector.elementProperties
329
+ }
330
+ };
331
+ yield this.scrollToElement(itemSelector);
332
+ yield this.click(itemSelector);
333
+ }
334
+ else {
335
+ throw new Error("Function 'selectBox' failed: Please provide a value as second argument.");
336
+ }
337
+ });
338
+ }
339
+ ;
340
+ /**
341
+ * @function selectComboBox
342
+ * @memberOf ui5.userInteraction
343
+ * @description Selects the passed value from the ComboBox with the given selector.
344
+ * Please note that the function will only work for the default ComboBox.
345
+ * In special cases you need to use the 'clickSelectArrow' function.
346
+ * @param {Object} selector - The selector describing the element.
347
+ * @param {String} value - The value to select.
348
+ * @param {Number} [index=0] - The index of the selector (in case there are more than one elements visible at the same time).
349
+ * @example await ui5.userInteraction.selectComboBox(selector, "Germany");
350
+ */
351
+ selectComboBox(selector, value, index = 0) {
352
+ return __awaiter(this, void 0, void 0, function* () {
353
+ yield this.clickSelectArrow(selector, index);
354
+ if (value) {
355
+ const selector = {
356
+ "elementProperties": {
357
+ "metadata": "sap.m.StandardListItem",
358
+ "mProperties": {
359
+ "title": value
360
+ }
361
+ },
362
+ "parentProperties": {
363
+ "metadata": "sap.m.List"
364
+ }
365
+ };
366
+ yield this.scrollToElement(selector);
367
+ yield this.click(selector);
368
+ }
369
+ });
370
+ }
371
+ ;
372
+ /**
373
+ * @function selectMultiComboBox
374
+ * @memberOf ui5.userInteraction
375
+ * @description Selects the passed values of the MultiComboBox with the given selector.
376
+ * Please note that the function will only work for the default MultiComboBox.
377
+ * In special cases, please use the clickSelectArrow function.
378
+ * @param {Object} selector - The selector describing the element.
379
+ * @param {Array} values - The values to select.
380
+ * @param {Number} [index=0] - The index of the selector (in case there are more than one elements visible at the same time).
381
+ * @example await ui5.userInteraction.selectMultiComboBox(selector, ["Option 1", "Option 2"]);
382
+ */
383
+ selectMultiComboBox(selector, values, index = 0) {
384
+ return __awaiter(this, void 0, void 0, function* () {
385
+ yield this.clickSelectArrow(selector, index);
386
+ for (const v in values) {
387
+ const ui5ControlProperties = {
388
+ "elementProperties": {
389
+ "metadata": "sap.m.CheckBox",
390
+ "mProperties": {}
391
+ },
392
+ "parentProperties": {
393
+ "metadata": "sap.m.StandardListItem",
394
+ "mProperties": {
395
+ "title": values[v]
396
+ }
397
+ }
398
+ };
399
+ yield this.scrollToElement(ui5ControlProperties);
400
+ yield this.click(ui5ControlProperties);
401
+ }
402
+ yield common.userInteraction.pressEnter();
403
+ });
404
+ }
405
+ ;
406
+ /**
407
+ * @function clickSelectArrow
408
+ * @memberOf ui5.userInteraction
409
+ * @description Clicks the arrow icon at the passed selector (select box).
410
+ * @param {Object} selector - The selector describing the element.
411
+ * @param {Number} [index=0] - The index of the selector (in case there are more than one elements visible at the same time).
412
+ * @example await ui5.userInteraction.clickSelectArrow(selector);
413
+ */
414
+ clickSelectArrow(selector, index = 0) {
415
+ return __awaiter(this, void 0, void 0, function* () {
416
+ const id = yield ui5.element.getId(selector, index);
417
+ const arrow = yield nonUi5.element.getByCss("[id='" + id + "-arrow']", 0, 3000);
418
+ yield arrow.click();
419
+ });
420
+ }
421
+ ;
422
+ /**
423
+ * @function clickSelectArrowAndRetry
424
+ * @memberOf ui5.userInteraction
425
+ * @description Clicks the arrow icon at the passed selector (select box), and retries in case it fails.
426
+ * @param {Object} selector - The selector describing the element
427
+ * @param {Number} [index=0] - The index of the selector (in case there are more than one elements visible at the same time).
428
+ * @param {Number} [retries=3] - The number of retries, can be set in config for all functions under params stepsRetries.
429
+ * @param {Number} [interval=5000] - The delay between the retries (ms). Can be set in config for all functions under params.stepRetriesIntervals.
430
+ * @example await ui5.userInteraction.clickSelectArrowAndRetry(selector);
431
+ */
432
+ clickSelectArrowAndRetry(selector, index = 0, retries = 3, interval = 5000) {
433
+ return __awaiter(this, void 0, void 0, function* () {
434
+ yield util.function.retry(this.clickSelectArrow, [selector, index], retries, interval, this);
435
+ });
436
+ }
437
+ ;
438
+ // =================================== OTHERS ===================================
439
+ /**
440
+ * @function mouseOverElement
441
+ * @memberOf ui5.userInteraction
442
+ * @description Moves the cursor/focus to the element with the given selector.
443
+ * @param {Object} selector - The selector describing the element.
444
+ * @param {Number} [index=0] - The index of the selector (in case there are more than one elements visible at the same time).
445
+ * @param {Number} [timeout=30000] - The timeout to wait (ms).
446
+ * @example await ui5.userInteraction.mouseOverElement(selector);
447
+ */
448
+ mouseOverElement(selector, index = 0, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000) {
449
+ return __awaiter(this, void 0, void 0, function* () {
450
+ let elem;
451
+ try {
452
+ elem = yield ui5.element.getDisplayed(selector, index, timeout);
453
+ }
454
+ catch (error) {
455
+ throw new Error(`Function: 'mouseOverElement' failed: No element found for selector ${selector}`);
456
+ }
457
+ yield elem.moveTo();
458
+ });
459
+ }
460
+ ;
461
+ /**
462
+ * @function scrollToElement
463
+ * @memberOf ui5.userInteraction
464
+ * @description Scrolls to the element with the given selector to get it into view.
465
+ * @param {Object} selector - The selector describing the element.
466
+ * @param {Number} [index=0] - The index of the selector (in case there are more than one elements visible at the same time).
467
+ * @param {String} [alignment="center"] - Defines vertical/horizontal alignment. One of "start", "center", "end", or "nearest".
468
+ * Affects the alignToTop parameter of scrollIntoView function. By default, it takes 'up'
469
+ * @param {Number} [timeout=30000] - The timeout to wait (ms).
470
+ * @example await ui5.userInteraction.scrollToElement(selector);
471
+ * @example await ui5.userInteraction.scrollToElement(selector, 0, "start", 5000);
472
+ */
473
+ scrollToElement(selector, index = 0, alignment = "center", timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000) {
474
+ return __awaiter(this, void 0, void 0, function* () {
475
+ const elem = yield ui5.element.getDisplayed(selector, index, timeout);
476
+ if (elem) {
477
+ const options = {
478
+ "block": alignment,
479
+ "inline": alignment
480
+ };
481
+ yield elem.scrollIntoView(options);
482
+ }
483
+ });
484
+ }
485
+ ;
486
+ /**
487
+ * @function selectAll
488
+ * @memberOf ui5.userInteraction
489
+ * @description Performs "select all" (ctrl + a) at the element with the given selector.
490
+ * @param {Object} [selector] - The selector describing the element.
491
+ * @param {Number} [index=0] - The index of the selector, in case there are more than one elements visible at the same time.
492
+ * @param {Number} [timeout=30000] - The timeout to wait (ms).
493
+ * @example await ui5.userInteraction.selectAll(selector);
494
+ */
495
+ selectAll(selector, index = 0, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000) {
496
+ return __awaiter(this, void 0, void 0, function* () {
497
+ if (selector !== undefined) {
498
+ yield this.click(selector, index, timeout);
499
+ }
500
+ else {
501
+ util.console.info("Selector properties are undefined. Action will be performed on current element.");
502
+ }
503
+ yield common.userInteraction.pressKey(["\uE051", "a"]);
504
+ });
505
+ }
506
+ ;
507
+ /**
508
+ * @function openF4Help
509
+ * @memberOf ui5.userInteraction
510
+ * @description Opens the F4-help of the element with the given selector.
511
+ * @param {Object} selector - The selector describing the element.
512
+ * @param {Number} [index=0] - The index of the selector (in case there are more than one elements visible at the same time).
513
+ * @param {Number} [timeout=30000] - The timeout to wait (ms).
514
+ * @param {Boolean} useF4Key - Specifies if the help is opened by pressing the F4-key or via the button.
515
+ * The default value is true (triggered by pressing the F4-key). Set "useF4Key" to false, to trigger the search by clicking the button.
516
+ * @example await ui5.userInteraction.openF4Help(selector, 0, 30000, false);
517
+ */
518
+ openF4Help(selector, index = 0, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000, useF4Key = true) {
519
+ return __awaiter(this, void 0, void 0, function* () {
520
+ yield ui5.userInteraction.click(selector, index, timeout);
521
+ if (useF4Key === true) {
522
+ yield common.userInteraction.pressF4();
523
+ }
524
+ else {
525
+ const id = yield ui5.element.getId(selector);
526
+ const button = yield nonUi5.element.getByCss("[id='" + id + "-vhi']", 0, timeout);
527
+ yield button.click();
528
+ }
529
+ });
530
+ }
531
+ ;
532
+ /**
533
+ * @function searchFor
534
+ * @memberOf ui5.userInteraction
535
+ * @description Searches for the passed value and executes the search.
536
+ * In case that the search is already filled, it will reset the field first.
537
+ * @param {Object} selector - The selector describing the element.
538
+ * @param {Number} [index=0] - The index of the selector (in case there are more than one elements visible at the same time).
539
+ * @param {Number} [timeout=30000] - The timeout to wait (ms).
540
+ * @param {Boolean} useEnter - Specifies if the search is triggered by pressing the Enter-key or via the search button.
541
+ * The default value is true (triggered by pressing the Enter-key). Set "useEnter" to false, to trigger the search by clicking the search button.
542
+ * @example await ui5.userInteraction.searchFor(selector, "My Value", 0, 30000, false);
543
+ */
544
+ searchFor(selector, value, index = 0, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000, useEnter = true) {
545
+ return __awaiter(this, void 0, void 0, function* () {
546
+ yield ui5.userInteraction.clearAndFillAndRetry(selector, value, index, timeout);
547
+ if (useEnter === true) {
548
+ yield common.userInteraction.pressEnter();
549
+ }
550
+ else {
551
+ const id = yield ui5.element.getId(selector, index, timeout);
552
+ const searchButton = yield nonUi5.element.getByCss("[id='" + id + "-search']", 0, timeout);
553
+ yield searchButton.click();
554
+ }
555
+ });
556
+ }
557
+ ;
558
+ /**
559
+ * @function resetSearch
560
+ * @memberOf ui5.userInteraction
561
+ * @description Resets the search field.
562
+ * @param {Object} selector - The selector describing the element.
563
+ * @param {Number} [index=0] - The index of the selector (in case there are more than one elements visible at the same time).
564
+ * @param {Number} [timeout=30000] - The timeout to wait (ms).
565
+ * @example await ui5.userInteraction.resetSearch(selector);
566
+ */
567
+ resetSearch(selector, index = 0, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000) {
568
+ return __awaiter(this, void 0, void 0, function* () {
569
+ const id = yield ui5.element.getId(selector, index, timeout);
570
+ const resetButton = yield nonUi5.element.getByCss("[id='" + id + "-reset']", 0, timeout);
571
+ yield resetButton.click();
572
+ });
573
+ }
574
+ ;
575
+ // =================================== HELPER ===================================
576
+ //TODO: rework function in its whole. Why don't we use the clear function from native wdio here?
577
+ _clearHelper(selector, index = 0, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000) {
578
+ return __awaiter(this, void 0, void 0, function* () {
579
+ let id, elem;
580
+ if (selector) {
581
+ yield ui5.userInteraction.click(selector, index, timeout);
582
+ id = yield ui5.element.getId(selector, index, timeout);
583
+ elem = yield browser.getActiveElement();
584
+ }
585
+ else {
586
+ elem = yield browser.getActiveElement();
587
+ yield elem.click();
588
+ // @ts-ignore
589
+ id = yield util.function.getAttribute(elem, "id");
590
+ }
591
+ const tokenizers = yield browser.execute(function (id) {
592
+ // @ts-ignore
593
+ const t = document.getElementById(id).querySelectorAll(".sapMTokenizer");
594
+ // @ts-ignore
595
+ const inputs = document.getElementById(id).getElementsByTagName("input");
596
+ // @ts-ignore
597
+ const textareas = document.getElementById(id).getElementsByTagName("textarea");
598
+ if (inputs.length) {
599
+ inputs[0].value = "";
600
+ inputs[0].focus();
601
+ }
602
+ if (textareas.length) {
603
+ textareas[0].value = "";
604
+ }
605
+ return t;
606
+ }, id);
607
+ if ((yield tokenizers) && (yield tokenizers.length)) {
608
+ yield ui5.userInteraction.selectAll(selector, index, timeout);
609
+ yield common.userInteraction.pressBackspace();
610
+ }
611
+ });
612
+ }
613
+ /**
614
+ * @function doubleClick
615
+ * @memberOf ui5.userInteraction
616
+ * @description Double Clicks on the passed element.
617
+ * @param {Object} selector - The selector describing the element.
618
+ * @param {Number} [index=0] - The index of the selector (in case there are more than one elements visible at the same time).
619
+ * @param {Number} [timeout=30000] - The timeout to wait (ms).
620
+ * @example await ui5.userInteraction.doubleClick(selector);
621
+ */
622
+ doubleClick(selector, index = 0, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000) {
623
+ return __awaiter(this, void 0, void 0, function* () {
624
+ let elem = null;
625
+ yield browser.waitUntil(function () {
626
+ return __awaiter(this, void 0, void 0, function* () {
627
+ elem = yield ui5.element.getDisplayed(selector, index, timeout);
628
+ if (!elem)
629
+ return false;
630
+ return elem.isClickable();
631
+ });
632
+ }, {
633
+ timeout,
634
+ timeoutMsg: `Element not clickable after ${+timeout / 1000}s`
635
+ });
636
+ try {
637
+ // @ts-ignore
638
+ yield elem.doubleClick();
639
+ }
640
+ catch (error) {
641
+ // @ts-ignore
642
+ const errorMessage = yield util.function.mapWdioErrorToQmateErrorMessage(error, "doubleClick");
643
+ throw new Error(errorMessage);
644
+ }
645
+ });
646
+ }
647
+ ;
648
+ /**
649
+ * @function rightClick
650
+ * @memberOf ui5.userInteraction
651
+ * @description Right Clicks on the passed element.
652
+ * @param {Object} selector - The selector describing the element.
653
+ * @param {Number} [index=0] - The index of the selector (in case there are more than one elements visible at the same time).
654
+ * @param {Number} [timeout=30000] - The timeout to wait (ms).
655
+ * @example const elem = await nonUi5.element.getById("button01");
656
+ * await ui5.userInteraction.rightClick(elem);
657
+ */
658
+ rightClick(selector, index = 0, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000) {
659
+ return __awaiter(this, void 0, void 0, function* () {
660
+ let elem = null;
661
+ yield browser.waitUntil(function () {
662
+ return __awaiter(this, void 0, void 0, function* () {
663
+ elem = yield ui5.element.getDisplayed(selector, index, timeout);
664
+ if (!elem)
665
+ return false;
666
+ return elem.isClickable();
667
+ });
668
+ }, {
669
+ timeout,
670
+ timeoutMsg: `Element not clickable after ${+timeout / 1000}s`
671
+ });
672
+ try {
673
+ // @ts-ignore
674
+ yield elem.click({
675
+ button: "right"
676
+ });
677
+ }
678
+ catch (error) {
679
+ // @ts-ignore
680
+ const errorMessage = yield util.function.mapWdioErrorToQmateErrorMessage(error, "rightClick");
681
+ throw new Error(errorMessage);
682
+ }
683
+ });
684
+ }
685
+ ;
686
+ }
687
+ exports.UserInteraction = UserInteraction;
688
+ ;
689
+ exports.default = new UserInteraction();
690
+ //# sourceMappingURL=userInteraction.js.map