@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,17 @@
1
+ /**
2
+ * @class navigation
3
+ * @memberof nonUi5
4
+ */
5
+ export declare class Navigation {
6
+ /**
7
+ * @function navigateToApplication
8
+ * @memberOf nonUi5.navigation
9
+ * @description Navigates to the application via the passed relative reference. The path will be added to the baseUrl maintained in the config.
10
+ * @param {String} relativeReference - Relative reference of an application (path, query and fragment)
11
+ * @param {Boolean} [refresh=true] - Refresh the page after navigation.
12
+ * @example await nonUi5.navigation.navigateToApplication("categories");
13
+ */
14
+ navigateToApplication(relativeReference: string, refresh?: boolean): Promise<void>;
15
+ }
16
+ declare const _default: Navigation;
17
+ export default _default;
@@ -0,0 +1,44 @@
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.Navigation = void 0;
13
+ /**
14
+ * @class navigation
15
+ * @memberof nonUi5
16
+ */
17
+ class Navigation {
18
+ /**
19
+ * @function navigateToApplication
20
+ * @memberOf nonUi5.navigation
21
+ * @description Navigates to the application via the passed relative reference. The path will be added to the baseUrl maintained in the config.
22
+ * @param {String} relativeReference - Relative reference of an application (path, query and fragment)
23
+ * @param {Boolean} [refresh=true] - Refresh the page after navigation.
24
+ * @example await nonUi5.navigation.navigateToApplication("categories");
25
+ */
26
+ navigateToApplication(relativeReference, refresh = true) {
27
+ return __awaiter(this, void 0, void 0, function* () {
28
+ try {
29
+ yield browser.navigateTo(`${browser.config.baseUrl}/${relativeReference}`);
30
+ yield util.browser.logCurrentUrl();
31
+ if (refresh) {
32
+ yield util.browser.refresh();
33
+ }
34
+ }
35
+ catch (error) {
36
+ throw new Error("Function navigateToApplication failed: " + error);
37
+ }
38
+ });
39
+ }
40
+ ;
41
+ }
42
+ exports.Navigation = Navigation;
43
+ exports.default = new Navigation();
44
+ //# sourceMappingURL=navigation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigation.js","sourceRoot":"","sources":["../../../../src/reuse/modules/nonUi5/navigation.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;;;;;;;;AAEb;;;GAGG;AACH,MAAa,UAAU;IAErB;;;;;;;OAOG;IACI,qBAAqB,CAAC,iBAAyB,EAAE,OAAO,GAAG,IAAI;;YACpE,IAAI;gBACF,MAAM,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,iBAAiB,EAAE,CAAC,CAAC;gBAC3E,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;gBACnC,IAAI,OAAO,EAAE;oBACX,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;iBAC9B;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,MAAM,IAAI,KAAK,CAAC,yCAAyC,GAAG,KAAK,CAAC,CAAC;aACpE;QACH,CAAC;KAAA;IAAA,CAAC;CACH;AArBD,gCAqBC;AACD,kBAAe,IAAI,UAAU,EAAE,CAAC"}
@@ -0,0 +1,170 @@
1
+ import { Element } from "../../../../@types/wdio";
2
+ import { AlignmentValues } from "./constants/userInteraction.constants";
3
+ /**
4
+ * @class userInteraction
5
+ * @memberof nonUi5
6
+ */
7
+ export declare class UserInteraction {
8
+ /**
9
+ * @function click
10
+ * @memberOf nonUi5.userInteraction
11
+ * @description Clicks on the passed element.
12
+ * @param {Object} element - The element.
13
+ * @param {Number} [timeout=30000] - The timeout to wait (ms).
14
+ * @example const elem = await nonUi5.element.getById("button01");
15
+ * await nonUi5.userInteraction.click(elem);
16
+ */
17
+ click(element: Element, timeout?: string | number): Promise<void>;
18
+ /**
19
+ * @function clickAndRetry
20
+ * @memberOf nonUi5.userInteraction
21
+ * @description Clicks on the passed element, retries in case it fails.
22
+ * @param {Object} element - The element.
23
+ * @param {Number} [timeout=30000] - The timeout to wait (ms).
24
+ * @param {Number} [retries=3] - The number of retries, can be set in config for all functions under params stepsRetries.
25
+ * @param {Number} [interval=5000] - The delay between the retries (ms). Can be set in config for all functions under params.stepRetriesIntervals.
26
+ * @example const elem = await nonUi5.element.getById("button01");
27
+ * await nonUi5.userInteraction.clickAndRetry(elem);
28
+ */
29
+ clickAndRetry(element: Element, timeout?: string | number, retries?: number, interval?: number): Promise<void>;
30
+ /**
31
+ * @function doubleClick
32
+ * @memberOf nonUi5.userInteraction
33
+ * @description Double Clicks on the passed element.
34
+ * @param {Object} element - The element.
35
+ * @param {Number} [timeout=30000] - The timeout to wait (ms).
36
+ * @example const elem = await nonUi5.element.getById("button01");
37
+ * await nonUi5.userInteraction.doubleClick(elem);
38
+ */
39
+ doubleClick(element: Element, timeout?: string | number): Promise<void>;
40
+ /**
41
+ * @function rightClick
42
+ * @memberOf nonUi5.userInteraction
43
+ * @description Right Clicks on the passed element.
44
+ * @param {Object} element - The element.
45
+ * @param {Number} [timeout=30000] - The timeout to wait (ms).
46
+ * @example const elem = await nonUi5.element.getById("button01");
47
+ * await nonUi5.userInteraction.rightClick(elem);
48
+ */
49
+ rightClick(element: Element, timeout?: string | number): Promise<void>;
50
+ /**
51
+ * @function fill
52
+ * @memberOf nonUi5.userInteraction
53
+ * @description Fills the given value into the passed input.
54
+ * @param {Object} element - The element.
55
+ * @param {String} value - The value to be filled.
56
+ * @example const elem = await nonUi5.element.getById("input01");
57
+ * await nonUi5.userInteraction.fill(elem, "Service 01");
58
+ */
59
+ fill(element: Element, value: string): Promise<void>;
60
+ /**
61
+ * @function fillAndRetry
62
+ * @memberOf nonUi5.userInteraction
63
+ * @description Fills the given value into the passed input, retries in case of a failure.
64
+ * @param {Object} element - The element.
65
+ * @param {String} value - The value to be filled.
66
+ * @param {Number} [retries=3] - The number of retries, can be set in config for all functions under params stepsRetries.
67
+ * @param {Number} [interval=5000] - The delay between the retries (ms). Can be set in config for all functions under params.stepRetriesIntervals.
68
+ * @example const elem = await nonUi5.element.getById("input01");
69
+ * await nonUi5.userInteraction.fillAndRetry(elem, "Service 01");
70
+ */
71
+ fillAndRetry(element: Element, value: string, retries?: number, interval?: number): Promise<void>;
72
+ /**
73
+ * @function clear
74
+ * @memberOf nonUi5.userInteraction
75
+ * @description Clears the passed input element.
76
+ * @param {Object} element - The element.
77
+ * @example const elem = await nonUi5.element.getById("input01");
78
+ * await nonUi5.userInteraction.clear(elem);
79
+ */
80
+ clear(element: Element): Promise<void>;
81
+ /**
82
+ * @function clearAndRetry
83
+ * @memberOf nonUi5.userInteraction
84
+ * @description Clears the passed input element, retries in case of a failure.
85
+ * @param {Object} element - The element.
86
+ * @param {Number} [retries=3] - The number of retries, can be set in config for all functions under params stepsRetries.
87
+ * @param {Number} [interval=5000] - The delay between the retries (ms). Can be set in config for all functions under params.stepRetriesIntervals.
88
+ * @example const elem = await nonUi5.element.getById("input01", 10000);
89
+ * await nonUi5.userInteraction.clearAndRetry(elem);
90
+ */
91
+ clearAndRetry(element: Element, retries?: number, interval?: number): Promise<void>;
92
+ /**
93
+ * @function clearAndFill
94
+ * @memberOf nonUi5.userInteraction
95
+ * @description Clears and fills the passed input element.
96
+ * @param {Object} element - The element.
97
+ * @param {String} value - The value to be filled in.
98
+ * @example const elem = await nonUi5.element.getById("input01");
99
+ * await nonUi5.userInteraction.clearAndFill(elem, "Service 01");
100
+ */
101
+ clearAndFill(element: Element, value: string): Promise<void>;
102
+ /**
103
+ * @function clearAndFillAndRetry
104
+ * @memberOf nonUi5.userInteraction
105
+ * @description Clears and fills the passed input, retries in case it fails.
106
+ * @param {Object} element - The element.
107
+ * @param {String} value - The value to be filled in.
108
+ * @param {Number} [retries=3] - The number of retries, can be set in config for all functions under params stepsRetries.
109
+ * @param {Number} [interval=5000] - The delay between the retries (ms). Can be set in config for all functions under params.stepRetriesIntervals.
110
+ * @param {Boolean} [verify=true] - Specifies if the filled value should be verified.
111
+ * @example const elem = await nonUi5.element.getById("input01");
112
+ * await nonUi5.userInteraction.clearAndFillAndRetry(elem, "Service 01");
113
+ */
114
+ clearAndFillAndRetry(element: Element, value: string, retries?: number, interval?: number, verify?: boolean): Promise<void>;
115
+ /**
116
+ * @function mouseOverElement
117
+ * @memberOf nonUi5.userInteraction
118
+ * @description Moves the cursor/focus to the passed element.
119
+ * @param {Object} element - The selector describing the element.
120
+ * @param {Number} [xOffset] - X offset to move to, relative to the top-left corner of the element. If not specified, the mouse will move to the middle of the element.
121
+ * @param {Number} [yOffset] - Y offset to move to, relative to the top-left corner of the element. If not specified, the mouse will move to the middle of the element.
122
+ * @example const elem = await nonUi5.element.getById("dropdown42");
123
+ * await nonUi5.userInteraction.mouseOverElement(elem);
124
+ */
125
+ mouseOverElement(elem: Element, xOffset: number, yOffset: number): Promise<void>;
126
+ /**
127
+ * @function scrollToElement
128
+ * @memberOf nonUi5.userInteraction
129
+ * @description Scrolls to the passed element to get it into view.
130
+ * @param {Object} elem - The element.
131
+ * @param {String} alignment="center" - Defines vertical/horizontal alignment. One of "start", "center", "end", or "nearest".
132
+ * Affects the alignToTop parameter of scrollIntoView function. By default, it takes 'up'
133
+ * @example const elem = await nonUi5.userInteraction.getElementById("footer01");
134
+ * await nonUi5.userInteraction.scrollToElement(elem);
135
+ */
136
+ scrollToElement(elem: Element, alignment?: AlignmentValues): Promise<void>;
137
+ /**
138
+ * @function dragAndDrop
139
+ * @memberOf nonUi5.userInteraction
140
+ * @description Drags and drops the given element to the given target element.
141
+ * @param {Object} element - The element to drag.
142
+ * @param {Object} targetElem - The target element to drop the element.
143
+ * @example const elem = await nonUi5.element.getById("drag01");
144
+ * @example const targetElem = await nonUi5.element.getById("drop02");
145
+ * await nonUi5.userInteraction.dragAndDrop(elem, targetElem);
146
+ */
147
+ dragAndDrop(element: Element, targetElem: Element): Promise<void>;
148
+ /**
149
+ * @function moveCursorAndClick
150
+ * @memberOf nonUi5.userInteraction
151
+ * @description Moves the cursor to the target element and clicks on it. Can be used for charts.
152
+ * @param {Object} element - The element to be clicked.
153
+ * @example const elem = await nonUi5.element.getById("chartPartToClick");
154
+ * await nonUi5.userInteraction.moveCursorAndClick(elem);
155
+ */
156
+ moveCursorAndClick(element: Element): Promise<void>;
157
+ /**
158
+ * @function clickElementInSvg
159
+ * @memberOf nonUi5.userInteraction
160
+ * @description Clicks on an inner element within a SVG element.
161
+ * @param {Object} svgElem - The SVG element.
162
+ * @param {String} innerSelector - The CSS selector describing the inner element to be clicked.
163
+ * @example const svgElem = await nonUi5.element.getByCss("svg");
164
+ * const innerSelector = "circle:nth-child(6)";
165
+ * await nonUi5.userInteraction.clickElementInSvg(svgElem, innerSelector);
166
+ */
167
+ clickElementInSvg(svgElem: Element, innerSelector: string): Promise<void>;
168
+ }
169
+ declare const _default: UserInteraction;
170
+ export default _default;
@@ -0,0 +1,415 @@
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
+ const userInteraction_constants_1 = require("./constants/userInteraction.constants");
14
+ /**
15
+ * @class userInteraction
16
+ * @memberof nonUi5
17
+ */
18
+ class UserInteraction {
19
+ // =================================== CLICK ===================================
20
+ /**
21
+ * @function click
22
+ * @memberOf nonUi5.userInteraction
23
+ * @description Clicks on the passed element.
24
+ * @param {Object} element - The element.
25
+ * @param {Number} [timeout=30000] - The timeout to wait (ms).
26
+ * @example const elem = await nonUi5.element.getById("button01");
27
+ * await nonUi5.userInteraction.click(elem);
28
+ */
29
+ click(element, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000) {
30
+ return __awaiter(this, void 0, void 0, function* () {
31
+ yield Promise.all([
32
+ expect(element).toBeDisplayed({
33
+ wait: timeout,
34
+ interval: 100,
35
+ message: `Timeout '${+timeout / 1000}s' by waiting for element is displayed.`
36
+ }),
37
+ expect(element).toBeEnabled({
38
+ wait: timeout,
39
+ interval: 100,
40
+ message: `Timeout '${+timeout / 1000}s' by waiting for element is enabled.`
41
+ })
42
+ ]);
43
+ try {
44
+ yield element.click();
45
+ }
46
+ catch (error) {
47
+ const errorMessage = yield util.function.mapWdioErrorToQmateErrorMessage(error, "click");
48
+ throw new Error(errorMessage);
49
+ }
50
+ });
51
+ }
52
+ ;
53
+ /**
54
+ * @function clickAndRetry
55
+ * @memberOf nonUi5.userInteraction
56
+ * @description Clicks on the passed element, retries in case it fails.
57
+ * @param {Object} element - The element.
58
+ * @param {Number} [timeout=30000] - The timeout to wait (ms).
59
+ * @param {Number} [retries=3] - The number of retries, can be set in config for all functions under params stepsRetries.
60
+ * @param {Number} [interval=5000] - The delay between the retries (ms). Can be set in config for all functions under params.stepRetriesIntervals.
61
+ * @example const elem = await nonUi5.element.getById("button01");
62
+ * await nonUi5.userInteraction.clickAndRetry(elem);
63
+ */
64
+ clickAndRetry(element, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000, retries = 3, interval = 5000) {
65
+ return __awaiter(this, void 0, void 0, function* () {
66
+ if (!element) {
67
+ throw new Error("Function 'clearAndRetry' failed. Please provide an element as first argument.");
68
+ }
69
+ return util.function.retry(this.click, [element, timeout], retries, interval, this);
70
+ });
71
+ }
72
+ ;
73
+ /**
74
+ * @function doubleClick
75
+ * @memberOf nonUi5.userInteraction
76
+ * @description Double Clicks on the passed element.
77
+ * @param {Object} element - The element.
78
+ * @param {Number} [timeout=30000] - The timeout to wait (ms).
79
+ * @example const elem = await nonUi5.element.getById("button01");
80
+ * await nonUi5.userInteraction.doubleClick(elem);
81
+ */
82
+ doubleClick(element, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000) {
83
+ return __awaiter(this, void 0, void 0, function* () {
84
+ yield Promise.all([
85
+ expect(element).toBeDisplayed({
86
+ wait: timeout,
87
+ interval: 100,
88
+ message: `Timeout '${+timeout / 1000}s' by waiting for element is displayed.`
89
+ }),
90
+ expect(element).toBeEnabled({
91
+ wait: timeout,
92
+ interval: 100,
93
+ message: `Timeout '${+timeout / 1000}s' by waiting for element is enabled.`
94
+ })
95
+ ]);
96
+ try {
97
+ yield element.doubleClick();
98
+ }
99
+ catch (error) {
100
+ const errorMessage = yield util.function.mapWdioErrorToQmateErrorMessage(error, "doubleClick");
101
+ throw new Error(errorMessage);
102
+ }
103
+ });
104
+ }
105
+ ;
106
+ /**
107
+ * @function rightClick
108
+ * @memberOf nonUi5.userInteraction
109
+ * @description Right Clicks on the passed element.
110
+ * @param {Object} element - The element.
111
+ * @param {Number} [timeout=30000] - The timeout to wait (ms).
112
+ * @example const elem = await nonUi5.element.getById("button01");
113
+ * await nonUi5.userInteraction.rightClick(elem);
114
+ */
115
+ rightClick(element, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000) {
116
+ return __awaiter(this, void 0, void 0, function* () {
117
+ yield Promise.all([
118
+ expect(element).toBeDisplayed({
119
+ wait: timeout,
120
+ interval: 100,
121
+ message: `Timeout '${+timeout / 1000}s' by waiting for element is displayed.`
122
+ }),
123
+ expect(element).toBeEnabled({
124
+ wait: timeout,
125
+ interval: 100,
126
+ message: `Timeout '${+timeout / 1000}s' by waiting for element is enabled.`
127
+ })
128
+ ]);
129
+ try {
130
+ yield element.click({
131
+ button: "right"
132
+ });
133
+ }
134
+ catch (error) {
135
+ const errorMessage = yield util.function.mapWdioErrorToQmateErrorMessage(error, "rightClick");
136
+ throw new Error(errorMessage);
137
+ }
138
+ });
139
+ }
140
+ ;
141
+ // =================================== FILL ===================================
142
+ /**
143
+ * @function fill
144
+ * @memberOf nonUi5.userInteraction
145
+ * @description Fills the given value into the passed input.
146
+ * @param {Object} element - The element.
147
+ * @param {String} value - The value to be filled.
148
+ * @example const elem = await nonUi5.element.getById("input01");
149
+ * await nonUi5.userInteraction.fill(elem, "Service 01");
150
+ */
151
+ fill(element, value) {
152
+ return __awaiter(this, void 0, void 0, function* () {
153
+ try {
154
+ yield element.setValue(value);
155
+ }
156
+ catch (error) {
157
+ // @ts-ignore
158
+ if (error.message && error.message.match(new RegExp(/(invalid element state|element not interactable)/))) {
159
+ const errorMessage = yield util.function.mapWdioErrorToQmateErrorMessage(error, "fill");
160
+ throw new Error(errorMessage);
161
+ }
162
+ else {
163
+ if (!value) {
164
+ throw new Error("Function 'fill' failed: Please provide a value as second argument: " + error);
165
+ }
166
+ else {
167
+ throw error;
168
+ }
169
+ }
170
+ }
171
+ });
172
+ }
173
+ ;
174
+ /**
175
+ * @function fillAndRetry
176
+ * @memberOf nonUi5.userInteraction
177
+ * @description Fills the given value into the passed input, retries in case of a failure.
178
+ * @param {Object} element - The element.
179
+ * @param {String} value - The value to be filled.
180
+ * @param {Number} [retries=3] - The number of retries, can be set in config for all functions under params stepsRetries.
181
+ * @param {Number} [interval=5000] - The delay between the retries (ms). Can be set in config for all functions under params.stepRetriesIntervals.
182
+ * @example const elem = await nonUi5.element.getById("input01");
183
+ * await nonUi5.userInteraction.fillAndRetry(elem, "Service 01");
184
+ */
185
+ fillAndRetry(element, value, retries = 3, interval = 5000) {
186
+ return __awaiter(this, void 0, void 0, function* () {
187
+ if (!element || (value === null || value === undefined || value === "")) {
188
+ throw new Error("Function 'fillAndRetry' failed: Please provide an element and value as arguments.");
189
+ }
190
+ else {
191
+ return util.function.retry(this.fill, [element, value], retries, interval, this);
192
+ }
193
+ });
194
+ }
195
+ ;
196
+ // =================================== CLEAR ===================================
197
+ /**
198
+ * @function clear
199
+ * @memberOf nonUi5.userInteraction
200
+ * @description Clears the passed input element.
201
+ * @param {Object} element - The element.
202
+ * @example const elem = await nonUi5.element.getById("input01");
203
+ * await nonUi5.userInteraction.clear(elem);
204
+ */
205
+ clear(element) {
206
+ return __awaiter(this, void 0, void 0, function* () {
207
+ if (!element) {
208
+ throw new Error("Function 'clear' failed: Please provide an element as first argument.");
209
+ }
210
+ return element.clearValue();
211
+ });
212
+ }
213
+ ;
214
+ /**
215
+ * @function clearAndRetry
216
+ * @memberOf nonUi5.userInteraction
217
+ * @description Clears the passed input element, retries in case of a failure.
218
+ * @param {Object} element - The element.
219
+ * @param {Number} [retries=3] - The number of retries, can be set in config for all functions under params stepsRetries.
220
+ * @param {Number} [interval=5000] - The delay between the retries (ms). Can be set in config for all functions under params.stepRetriesIntervals.
221
+ * @example const elem = await nonUi5.element.getById("input01", 10000);
222
+ * await nonUi5.userInteraction.clearAndRetry(elem);
223
+ */
224
+ clearAndRetry(element, retries = 3, interval = 5000) {
225
+ return __awaiter(this, void 0, void 0, function* () {
226
+ if (!element) {
227
+ throw new Error("Function 'clearAndRetry' failed: Please provide an element as first argument.");
228
+ }
229
+ return util.function.retry(this.clear, [element], retries, interval, this);
230
+ });
231
+ }
232
+ ;
233
+ /**
234
+ * @function clearAndFill
235
+ * @memberOf nonUi5.userInteraction
236
+ * @description Clears and fills the passed input element.
237
+ * @param {Object} element - The element.
238
+ * @param {String} value - The value to be filled in.
239
+ * @example const elem = await nonUi5.element.getById("input01");
240
+ * await nonUi5.userInteraction.clearAndFill(elem, "Service 01");
241
+ */
242
+ clearAndFill(element, value) {
243
+ return __awaiter(this, void 0, void 0, function* () {
244
+ //arg. 'value' needs to be checked in case of numeric values. E.g.: 0 or 1 will be handled as boolean value in if.
245
+ if (!element || (value === null || value === undefined || value === "")) {
246
+ throw new Error("Function 'clearAndFill' failed: Please provide an element and value as arguments.");
247
+ }
248
+ else {
249
+ try {
250
+ yield this.clear(element);
251
+ yield element.setValue(value);
252
+ }
253
+ catch (error) {
254
+ throw new Error(`Function 'clearAndFill' failed: ${error}`);
255
+ }
256
+ }
257
+ });
258
+ }
259
+ ;
260
+ /**
261
+ * @function clearAndFillAndRetry
262
+ * @memberOf nonUi5.userInteraction
263
+ * @description Clears and fills the passed input, retries in case it fails.
264
+ * @param {Object} element - The element.
265
+ * @param {String} value - The value to be filled in.
266
+ * @param {Number} [retries=3] - The number of retries, can be set in config for all functions under params stepsRetries.
267
+ * @param {Number} [interval=5000] - The delay between the retries (ms). Can be set in config for all functions under params.stepRetriesIntervals.
268
+ * @param {Boolean} [verify=true] - Specifies if the filled value should be verified.
269
+ * @example const elem = await nonUi5.element.getById("input01");
270
+ * await nonUi5.userInteraction.clearAndFillAndRetry(elem, "Service 01");
271
+ */
272
+ clearAndFillAndRetry(element, value, retries = 3, interval = 5000, verify = true) {
273
+ return __awaiter(this, void 0, void 0, function* () {
274
+ return util.function.retry((elem, value) => __awaiter(this, void 0, void 0, function* () {
275
+ yield this.clearAndFill(elem, value);
276
+ if (verify) {
277
+ const elemValue = yield elem.getValue();
278
+ if (elemValue != value)
279
+ throw new Error("Function 'clearAndFillAndRetry' failed. Verification of value failed.");
280
+ }
281
+ }), [element, value], retries, interval, this);
282
+ });
283
+ }
284
+ ;
285
+ // =================================== OTHERS ===================================
286
+ /**
287
+ * @function mouseOverElement
288
+ * @memberOf nonUi5.userInteraction
289
+ * @description Moves the cursor/focus to the passed element.
290
+ * @param {Object} element - The selector describing the element.
291
+ * @param {Number} [xOffset] - X offset to move to, relative to the top-left corner of the element. If not specified, the mouse will move to the middle of the element.
292
+ * @param {Number} [yOffset] - Y offset to move to, relative to the top-left corner of the element. If not specified, the mouse will move to the middle of the element.
293
+ * @example const elem = await nonUi5.element.getById("dropdown42");
294
+ * await nonUi5.userInteraction.mouseOverElement(elem);
295
+ */
296
+ mouseOverElement(elem, xOffset, yOffset) {
297
+ return __awaiter(this, void 0, void 0, function* () {
298
+ try {
299
+ yield elem.moveTo({ xOffset, yOffset });
300
+ }
301
+ catch (error) {
302
+ // @ts-ignore
303
+ throw new Error("Function: 'mouseOverElement' failed: ", error);
304
+ }
305
+ });
306
+ }
307
+ ;
308
+ /**
309
+ * @function scrollToElement
310
+ * @memberOf nonUi5.userInteraction
311
+ * @description Scrolls to the passed element to get it into view.
312
+ * @param {Object} elem - The element.
313
+ * @param {String} alignment="center" - Defines vertical/horizontal alignment. One of "start", "center", "end", or "nearest".
314
+ * Affects the alignToTop parameter of scrollIntoView function. By default, it takes 'up'
315
+ * @example const elem = await nonUi5.userInteraction.getElementById("footer01");
316
+ * await nonUi5.userInteraction.scrollToElement(elem);
317
+ */
318
+ scrollToElement(elem, alignment = userInteraction_constants_1.AlignmentValues.CENTER) {
319
+ return __awaiter(this, void 0, void 0, function* () {
320
+ const options = {
321
+ "block": alignment,
322
+ "inline": alignment
323
+ };
324
+ yield elem.scrollIntoView(options);
325
+ });
326
+ }
327
+ ;
328
+ /**
329
+ * @function dragAndDrop
330
+ * @memberOf nonUi5.userInteraction
331
+ * @description Drags and drops the given element to the given target element.
332
+ * @param {Object} element - The element to drag.
333
+ * @param {Object} targetElem - The target element to drop the element.
334
+ * @example const elem = await nonUi5.element.getById("drag01");
335
+ * @example const targetElem = await nonUi5.element.getById("drop02");
336
+ * await nonUi5.userInteraction.dragAndDrop(elem, targetElem);
337
+ */
338
+ dragAndDrop(element, targetElem) {
339
+ return __awaiter(this, void 0, void 0, function* () {
340
+ // await element.dragAndDrop(targetElem);
341
+ const sourceSize = yield element.getSize();
342
+ const targetSize = yield targetElem.getSize();
343
+ const sourceLocation = yield element.getLocation();
344
+ const targetLocation = yield targetElem.getLocation();
345
+ // Get centers of elements to move from center to center (e.g. to avoid errors in rounded elements)
346
+ const sourceCenterLocation = {
347
+ x: +Number(sourceSize.width / 2).toFixed(0) + +Number(sourceLocation.x).toFixed(0) + 1,
348
+ y: +Number(sourceSize.height / 2).toFixed(0) + +Number(sourceLocation.y).toFixed(0) + 1
349
+ };
350
+ const targetCenterLocation = {
351
+ x: +Number(targetSize.width / 2).toFixed(0) + +Number(targetLocation.x).toFixed(0) + 1,
352
+ y: +Number(targetSize.height / 2).toFixed(0) + +Number(targetLocation.y).toFixed(0) + 1
353
+ };
354
+ yield browser.performActions([
355
+ {
356
+ type: "pointer",
357
+ id: "finger1",
358
+ parameters: { pointerType: "mouse" },
359
+ actions: [
360
+ { type: "pointerMove", duration: 0, x: sourceCenterLocation.x, y: sourceCenterLocation.y },
361
+ { type: "pointerDown", button: 0 },
362
+ { type: "pointerMove", duration: 0, x: targetCenterLocation.x, y: targetCenterLocation.y },
363
+ { type: "pointerUp", button: 0 },
364
+ ],
365
+ },
366
+ ]);
367
+ });
368
+ }
369
+ ;
370
+ /**
371
+ * @function moveCursorAndClick
372
+ * @memberOf nonUi5.userInteraction
373
+ * @description Moves the cursor to the target element and clicks on it. Can be used for charts.
374
+ * @param {Object} element - The element to be clicked.
375
+ * @example const elem = await nonUi5.element.getById("chartPartToClick");
376
+ * await nonUi5.userInteraction.moveCursorAndClick(elem);
377
+ */
378
+ moveCursorAndClick(element) {
379
+ return __awaiter(this, void 0, void 0, function* () {
380
+ yield element.moveTo();
381
+ yield element.click();
382
+ });
383
+ }
384
+ ;
385
+ /**
386
+ * @function clickElementInSvg
387
+ * @memberOf nonUi5.userInteraction
388
+ * @description Clicks on an inner element within a SVG element.
389
+ * @param {Object} svgElem - The SVG element.
390
+ * @param {String} innerSelector - The CSS selector describing the inner element to be clicked.
391
+ * @example const svgElem = await nonUi5.element.getByCss("svg");
392
+ * const innerSelector = "circle:nth-child(6)";
393
+ * await nonUi5.userInteraction.clickElementInSvg(svgElem, innerSelector);
394
+ */
395
+ clickElementInSvg(svgElem, innerSelector) {
396
+ return __awaiter(this, void 0, void 0, function* () {
397
+ const innerElem = yield $(innerSelector);
398
+ const svgPos = yield svgElem.getLocation();
399
+ const innerPos = yield innerElem.getLocation();
400
+ const svgSize = yield svgElem.getSize();
401
+ const innerSize = yield innerElem.getSize();
402
+ const diffX = innerPos.x - svgPos.x;
403
+ const diffY = innerPos.y - svgPos.y;
404
+ const centerOffsetX = -(svgSize.width / 2) + diffX + (innerSize.width / 2);
405
+ const centerOffsetY = -(svgSize.height / 2) + diffY + (innerSize.height / 2);
406
+ // @ts-ignore
407
+ yield svgElem.click({ x: parseInt(centerOffsetX), y: parseInt(centerOffsetY) });
408
+ });
409
+ }
410
+ ;
411
+ }
412
+ exports.UserInteraction = UserInteraction;
413
+ ;
414
+ exports.default = new UserInteraction();
415
+ //# sourceMappingURL=userInteraction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"userInteraction.js","sourceRoot":"","sources":["../../../../src/reuse/modules/nonUi5/userInteraction.ts"],"names":[],"mappings":"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"}