@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,639 @@
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.ElementModule = void 0;
13
+ /**
14
+ * @class element
15
+ * @memberof nonUi5
16
+ */
17
+ class ElementModule {
18
+ // =================================== WAIT ===================================
19
+ /**
20
+ * @function waitForAll
21
+ * @memberOf nonUi5.element
22
+ * @description Waits until all elements with the given selector are rendered. Will fail if no element is found.
23
+ * @param {Object} selector - The CSS selector describing the element.
24
+ * @param {Number} [timeout=30000] - The timeout to wait (ms).
25
+ * @example await nonUi5.element.waitForAll(".inputField");
26
+ */
27
+ waitForAll(selector, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000, includeHidden = false) {
28
+ return __awaiter(this, void 0, void 0, function* () {
29
+ try {
30
+ yield this._waitForStabilization(selector, timeout, includeHidden);
31
+ }
32
+ catch (error) {
33
+ throw new Error(`Function 'waitForAll' failed: ${error}`);
34
+ }
35
+ });
36
+ }
37
+ /**
38
+ * @function waitToBePresent
39
+ * @memberOf nonUi5.element
40
+ * @description Waits until the element with the given selector is present.
41
+ * @param {Object} selector - The CSS selector describing the element.
42
+ * @param {Number} [timeout=30000] - The timeout to wait (ms).
43
+ * @example await nonUi5.element.waitToBePresent(".input01");
44
+ * @example await nonUi5.element.waitToBePresent("#button12");
45
+ * @example await nonUi5.element.waitToBePresent("p:first-child");
46
+ */
47
+ waitToBePresent(selector, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000) {
48
+ return __awaiter(this, void 0, void 0, function* () {
49
+ try {
50
+ yield $(selector).waitForExist({ timeout: timeout });
51
+ }
52
+ catch (error) {
53
+ throw new Error(`Function 'waitToBePresent' failed: ${error}`);
54
+ }
55
+ });
56
+ }
57
+ /**
58
+ * @function waitToBeVisible
59
+ * @memberOf nonUi5.element
60
+ * @description Waits until the element with the given selector is visible.
61
+ * @param {Object} selector - The CSS selector describing the element.
62
+ * @param {Number} [timeout=30000] - The timeout to wait (ms).
63
+ * @example await nonUi5.element.waitToBeVisible(".input01");
64
+ * @example await nonUi5.element.waitToBeVisible("#button12");
65
+ * @example await nonUi5.element.waitToBeVisible("p:first-child");
66
+ */
67
+ waitToBeVisible(selector, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000) {
68
+ return __awaiter(this, void 0, void 0, function* () {
69
+ try {
70
+ yield $(selector).waitForDisplayed({ timeout: timeout });
71
+ }
72
+ catch (error) {
73
+ throw new Error(`Function 'waitToBeVisible' failed: ${error}`);
74
+ }
75
+ });
76
+ }
77
+ /**
78
+ * @function waitToBeClickable
79
+ * @memberOf nonUi5.element
80
+ * @description Waits until the element with the given selector is clickable.
81
+ * @param {Object} selector - The CSS selector describing the element.
82
+ * @param {Number} [timeout=30000] - The timeout to wait (ms).
83
+ * @example await nonUi5.element.waitToBeClickable(".input01");
84
+ * @example await nonUi5.element.waitToBeClickable("#button12");
85
+ * @example await nonUi5.element.waitToBeClickable("p:first-child");
86
+ */
87
+ waitToBeClickable(selector, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000) {
88
+ return __awaiter(this, void 0, void 0, function* () {
89
+ try {
90
+ yield $(selector).waitForClickable({ timeout: timeout });
91
+ }
92
+ catch (error) {
93
+ throw new Error(`Function 'waitToBeClickable' failed: ${error}`);
94
+ }
95
+ });
96
+ }
97
+ // =================================== GET ELEMENTS ===================================
98
+ /**
99
+ * @function getAllDisplayed
100
+ * @memberOf nonUi5.element
101
+ * @description Gets all visible elements with the passed selector.
102
+ * @param {Object} selector - The CSS selector describing the element.
103
+ * @param {Number} [timeout=30000] - The timeout to wait (ms).
104
+ * @returns {Object[]} The array of elements.
105
+ * @example await nonUi5.element.getAllDisplayed(".inputField");
106
+ */
107
+ getAllDisplayed(selector, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000) {
108
+ return __awaiter(this, void 0, void 0, function* () {
109
+ try {
110
+ yield this.waitForAll(selector, timeout);
111
+ const elems = yield $$(selector);
112
+ return yield this._filterDisplayed(elems);
113
+ }
114
+ catch (error) {
115
+ throw new Error(`Function 'getAllDisplayed' failed. No visible element(s) found for selector '${selector}' after ${+timeout / 1000}s. ` + error);
116
+ }
117
+ });
118
+ }
119
+ /**
120
+ * @function getAll
121
+ * @memberOf nonUi5.element
122
+ * @description Returns all elements found by the given selector despite visible or not.
123
+ * @param {Object} selector - The CSS selector describing the element.
124
+ * @param {Number} [timeout=30000] - The timeout to wait (ms).
125
+ * @example const hiddenElements = await nonUi5.element.getAll(".sapUiInvisibleText");
126
+ * const isPresent = await nonUi5.element.isPresent(hiddenElements[0]);
127
+ * await common.assertion.expectTrue(isPresent);
128
+ */
129
+ getAll(selector, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000) {
130
+ return __awaiter(this, void 0, void 0, function* () {
131
+ try {
132
+ yield this.waitForAll(selector, timeout, true);
133
+ return yield $$(selector);
134
+ }
135
+ catch (error) {
136
+ throw new Error(`Function 'getAll' failed. No element(s) found for selector '${selector}' after ${+timeout / 1000}s. ` + error);
137
+ }
138
+ });
139
+ }
140
+ /**
141
+ * @function getByCss
142
+ * @memberOf nonUi5.element
143
+ * @description Gets the element with the given CSS selector.
144
+ * @param {Object} selector - The CSS selector describing the element.
145
+ * @param {Number} [index=0] - The index of the element (in case there are more than one elements visible at the same time).
146
+ * @param {Number} [timeout=30000] - The timeout to wait (ms).
147
+ * @param {Boolean} [includeHidden=false] - Specifies if hidden elements are also considered. By default it checks only for visible ones.
148
+ * @returns {Object} The found element.
149
+ * @example const elem = await nonUi5.element.getByCss(".button01");
150
+ */
151
+ getByCss(selector, index = 0, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000, includeHidden = false) {
152
+ return __awaiter(this, void 0, void 0, function* () {
153
+ try {
154
+ return yield this._getAndFilterElementBySelector(selector, index, timeout, includeHidden);
155
+ }
156
+ catch (error) {
157
+ throw new Error(`Function 'getByCss' failed. Element with CSS '${selector}' not found. ${error}`);
158
+ }
159
+ });
160
+ }
161
+ /**
162
+ * @function getByCssContainingText
163
+ * @memberOf nonUi5.element
164
+ * @description Gets the element with the given CSS selector containing the given text value.
165
+ * @param {Object} selector - The CSS selector describing the element.
166
+ * @param {String} [text=""] - The containing text value of the element.
167
+ * @param {Number} [index=0] - The index of the element (in case there are more than one elements visible at the same time).
168
+ * @param {Number} [timeout=30000] - The timeout to wait (ms).
169
+ * @param {Boolean} [includeHidden=false] - Specifies if hidden elements are also considered. By default it checks only for visible ones.
170
+ * @param {Boolean} [strict=false] - Specifies if the values match should be exact
171
+ * @returns {Object} The found element.
172
+ * @example const elem = await nonUi5.element.getByCssContainingText(".input01", "Jack Jackson");
173
+ */
174
+ getByCssContainingText(selector, text = "", index = 0, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000, includeHidden = false, strict = false) {
175
+ return __awaiter(this, void 0, void 0, function* () {
176
+ try {
177
+ yield this.waitForAll(selector, timeout);
178
+ const elems = yield $$(selector);
179
+ const filteredElems = yield this._filterByText(elems, text, strict);
180
+ if (includeHidden) {
181
+ return filteredElems[index];
182
+ }
183
+ else {
184
+ const visibleElems = yield this._filterDisplayed(filteredElems);
185
+ return visibleElems[index];
186
+ }
187
+ }
188
+ catch (error) {
189
+ throw new Error(`Function 'getByCssContainingText' failed. Element with CSS '${selector}' and text '${text}' not found. ${error}`);
190
+ }
191
+ });
192
+ }
193
+ /**
194
+ * @function getById
195
+ * @memberOf nonUi5.element
196
+ * @description Gets the element with the given ID.
197
+ * @param {String} id - The id of the element.
198
+ * @param {Number} [timeout=30000] - The timeout to wait (ms).
199
+ * @param {Boolean} [includeHidden=false] - Specifies if the function will check for the elements visibility.
200
+ * @returns {Object} The found element.
201
+ * @example const elem = await nonUi5.element.getById("button01");
202
+ */
203
+ getById(id, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000, includeHidden = false) {
204
+ return __awaiter(this, void 0, void 0, function* () {
205
+ try {
206
+ const selector = `[id='${id}']`;
207
+ if (includeHidden) {
208
+ yield this.waitToBePresent(selector, timeout);
209
+ return yield $(selector);
210
+ }
211
+ else {
212
+ yield this.waitToBeVisible(selector, timeout);
213
+ return yield $(selector);
214
+ }
215
+ }
216
+ catch (error) {
217
+ throw new Error(`Function 'getById' failed. Element with id '${id}' not found. ${error}`);
218
+ }
219
+ });
220
+ }
221
+ /**
222
+ * @function getByClass
223
+ * @memberOf nonUi5.element
224
+ * @description Gets the element with the given class.
225
+ * @param {String} elemClass - The class describing the element
226
+ * @param {Number} [index=0] - The index of the element (in case there are more than one elements visible at the same time).
227
+ * @param {Number} [timeout=30000] - The timeout to wait (ms).
228
+ * @param {Boolean} [includeHidden=false] - Specifies if hidden elements are also considered. By default it checks only for visible ones.
229
+ * @returns {Object} The found element.
230
+ * @example const elem = await nonUi5.element.getByClass("button01");
231
+ * const elem = await nonUi5.element.getByClass("sapMIBar sapMTB sapMTBNewFlex sapContrastPlus");
232
+ */
233
+ getByClass(elemClass, index = 0, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000, includeHidden = false) {
234
+ return __awaiter(this, void 0, void 0, function* () {
235
+ try {
236
+ const selector = `[class*='${elemClass}']`;
237
+ return yield this._getAndFilterElementBySelector(selector, index, timeout, includeHidden);
238
+ }
239
+ catch (error) {
240
+ throw new Error(`Function 'getByClass' failed. Element with id '${elemClass}' not found. ${error}`);
241
+ }
242
+ });
243
+ }
244
+ /**
245
+ * @function getByName
246
+ * @memberOf nonUi5.element
247
+ * @description Gets the element with the given name.
248
+ * @param {String} name - The name attribute of the element.
249
+ * @param {Number} [index=0] - The index of the element (in case there are more than one elements visible at the same time).
250
+ * @param {Number} [timeout=30000] - The timeout to wait (ms).
251
+ * @param {Boolean} [includeHidden=false] - Specifies if hidden elements are also considered. By default it checks only for visible ones.
252
+ * @returns {Object} The found element.
253
+ * @example const elem = await nonUi5.element.getByName(".button01");
254
+ */
255
+ getByName(name, index = 0, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000, includeHidden = false) {
256
+ return __awaiter(this, void 0, void 0, function* () {
257
+ try {
258
+ const selector = `[name='${name}']`;
259
+ return yield this._getAndFilterElementBySelector(selector, index, timeout, includeHidden);
260
+ }
261
+ catch (error) {
262
+ throw new Error(`Function 'getByName' failed. Element with name '${name}' not found. ${error}`);
263
+ }
264
+ });
265
+ }
266
+ /**
267
+ * @function getByXPath
268
+ * @memberOf nonUi5.element
269
+ * @description Gets the element with the given XPath.
270
+ * @param {String} xpath - The XPath describing the element.
271
+ * @param {Number} [index=0] - The index of the element (in case there are more than one elements visible at the same time).
272
+ * @param {Number} [timeout=30000] - The timeout to wait (ms).
273
+ * @param {Boolean} [includeHidden=false] - Specifies if hidden elements are also considered. By default it checks only for visible ones.
274
+ * @returns {Object} The found element.
275
+ * @example const elem = await nonUi5.element.getByXPath("//ul/li/a");
276
+ */
277
+ getByXPath(xpath, index = 0, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000, includeHidden = false) {
278
+ return __awaiter(this, void 0, void 0, function* () {
279
+ try {
280
+ return yield this.getByCss(xpath, index, timeout, includeHidden);
281
+ }
282
+ catch (error) {
283
+ throw new Error(`Function 'getByXPath' failed. Element with XPath '${xpath}' not found. ${error}`);
284
+ }
285
+ });
286
+ }
287
+ /**
288
+ * @function getByChild
289
+ * @memberOf nonUi5.element
290
+ * @description Gets an element by its selector and child selector. Can be used when multiple elements have the same properties.
291
+ * @param {String} elementSelector - The CSS selector describing the element.
292
+ * @param {String} childSelector - The CSS selector describing the child element.
293
+ * @param {Number} [index=0] - The index of the element (in case there are more than one elements visible at the same time).
294
+ * @param {Number} [timeout=30000] - The timeout to wait (ms).
295
+ * @param {Boolean} [includeHidden=false] - Specifies if hidden elements are also considered. By default it checks only for visible ones.
296
+ * @returns {Object} The found element.
297
+ * @example const elem = await nonUi5.element.getByChild(".form01", ".input01");
298
+ */
299
+ getByChild(elementSelector, childSelector, index = 0, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000, includeHidden = false) {
300
+ return __awaiter(this, void 0, void 0, function* () {
301
+ let elems;
302
+ try {
303
+ elems = includeHidden ? yield this.getAll(elementSelector, timeout) : yield this.getAllDisplayed(elementSelector, timeout);
304
+ }
305
+ catch (error) {
306
+ throw new Error(`Function 'getByChild' failed. No element found for selector: "${elementSelector}".`);
307
+ }
308
+ const elementsWithChild = [];
309
+ for (const element of elems) {
310
+ const elem = yield element.$(childSelector);
311
+ const toBeIncluded = includeHidden ? yield elem.isExisting() : yield elem.isDisplayed();
312
+ if (toBeIncluded) {
313
+ elementsWithChild.push(element);
314
+ }
315
+ }
316
+ if (elementsWithChild.length === 0) {
317
+ throw new Error(`Function 'getByChild' failed. The found element(s) with the given selector do(es) not have any child with selector ${childSelector}.`);
318
+ }
319
+ else {
320
+ return elementsWithChild[index];
321
+ }
322
+ });
323
+ }
324
+ /**
325
+ * @function getByParent
326
+ * @memberOf nonUi5.element
327
+ * @description Gets an element by its selector and parent selector. Can be used when multiple elements have the same properties.
328
+ * @param {String} elementSelector - The CSS selector describing the element.
329
+ * @param {String} parentSelector - The CSS selector describing the parent element.
330
+ * @param {Number} [index=0] - The index of the element (in case there are more than one elements visible at the same time).
331
+ * @param {Number} [timeout=30000] - The timeout to wait (ms).
332
+ * @param {Boolean} [includeHidden=false] - Specifies if hidden elements are also considered. By default it checks only for visible ones.
333
+ * @returns {Object} The found element.
334
+ * @example const elem = await nonUi5.element.getByParent(".form01", ".input01");
335
+ */
336
+ getByParent(elementSelector, parentSelector, index = 0, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000, includeHidden = false) {
337
+ return __awaiter(this, void 0, void 0, function* () {
338
+ let parentElems = [];
339
+ try {
340
+ parentElems = includeHidden ? yield this.getAll(parentSelector, timeout) : yield this.getAllDisplayed(parentSelector, timeout);
341
+ }
342
+ catch (error) {
343
+ throw new Error(`Function 'getByParent' failed. No parent element found for selector: ${parentSelector}: ${error}`);
344
+ }
345
+ const elementsWithParent = [];
346
+ for (const parentElement of parentElems) {
347
+ const elem = yield parentElement.$(elementSelector);
348
+ const toBeIncluded = includeHidden ? yield elem.isExisting() : yield elem.isDisplayed();
349
+ if (toBeIncluded) {
350
+ elementsWithParent.push(elem);
351
+ }
352
+ }
353
+ if (elementsWithParent.length === 0) {
354
+ throw new Error(`Function 'getByParent' failed. No visible elements found for selector '${elementSelector}' and parent selector '${parentSelector}'`);
355
+ }
356
+ else {
357
+ return elementsWithParent[index];
358
+ }
359
+ });
360
+ }
361
+ // =================================== GET VALUES ===================================
362
+ /**
363
+ * @function isVisible
364
+ * @memberOf nonUi5.element
365
+ * @description Returns a boolean if the element is visible to the user.
366
+ * @param {Object} element - The element.
367
+ * @param {Boolean} [strict=true] - If strict mode is enabled it will only return "true" if the element is visible on the page and within the viewport.
368
+ * If disabled, it will be sufficient if the element is visible on the page but not inside the current viewport.
369
+ * @returns {Boolean} Returns true or false.
370
+ * @example const elem = await nonUi5.element.getById("button01");
371
+ * await nonUi5.element.isVisible(elem);
372
+ */
373
+ isVisible(element, strict = true) {
374
+ return __awaiter(this, void 0, void 0, function* () {
375
+ try {
376
+ if (strict) {
377
+ return element.isDisplayedInViewport();
378
+ }
379
+ else {
380
+ return element.isDisplayed();
381
+ }
382
+ }
383
+ catch (error) {
384
+ throw new Error(`Function 'isVisible' failed: ${error}`);
385
+ }
386
+ });
387
+ }
388
+ /**
389
+ * @function isPresent
390
+ * @memberOf nonUi5.element
391
+ * @description Returns a boolean if the element is present at the DOM or not. It might be hidden.
392
+ * @param {Object} elem - The element.
393
+ * @returns {Boolean} Returns true or false.
394
+ * @example const elem = await nonUi5.element.getById("button01");
395
+ * await nonUi5.element.isPresent(elem);
396
+ */
397
+ isPresent(elem) {
398
+ return __awaiter(this, void 0, void 0, function* () {
399
+ return elem.isExisting();
400
+ });
401
+ }
402
+ /**
403
+ * @function isPresentByCss
404
+ * @memberOf nonUi5.element
405
+ * @description Returns a boolean if the element is present at the DOM or not.
406
+ * @param {String} css - The CSS selector describing the element.
407
+ * @param {Number} [index=0] - The index of the element (in case there are more than one elements visible at the same time).
408
+ * @param {Number} [timeout=30000] - The timeout to wait (ms).
409
+ * @returns {boolean} Returns true or false.
410
+ * @example await nonUi5.element.isPresentByCss(".button01");
411
+ */
412
+ isPresentByCss(css, index = 0, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000) {
413
+ return __awaiter(this, void 0, void 0, function* () {
414
+ try {
415
+ const elems = yield this.getAll(css, timeout);
416
+ return elems[index].isExisting();
417
+ }
418
+ catch (error) {
419
+ return false;
420
+ }
421
+ });
422
+ }
423
+ /**
424
+ * @function isPresentByXPath
425
+ * @memberOf nonUi5.element
426
+ * @description returns a boolean if the element is present at the DOM or not.
427
+ * @param {String} xpath - The XPath describing the element.
428
+ * @param {Number} [index=0] - The index of the element (in case there are more than one elements visible at the same time).
429
+ * @param {Number} [timeout=30000] - The timeout to wait (ms).
430
+ * @returns {boolean}
431
+ * @example await nonUi5.element.isPresentByXPath(".//*[text()='Create']");
432
+ */
433
+ isPresentByXPath(xpath, index = 0, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000) {
434
+ return __awaiter(this, void 0, void 0, function* () {
435
+ return this.isPresentByCss(xpath, index, timeout);
436
+ });
437
+ }
438
+ /**
439
+ * @function getAttributeValue
440
+ * @memberOf nonUi5.element
441
+ * @description Returns the attributes value of the passed element.
442
+ * @param {Object} elem - The element.
443
+ * @param {String} [attribute] - The attribute of the element. Leave empty to return the inner HTML value of the element.
444
+ * @returns {String} The attributes value of the element.
445
+ * @example const elem = await nonUi5.element.getById("elem01");
446
+ * const text = await nonUi5.element.getAttributeValue(elem, "text");
447
+ * @example const elem = await nonUi5.element.getById("elem02");
448
+ * const innerHTML = await nonUi5.element.getAttributeValue(elem);
449
+ */
450
+ getAttributeValue(elem, attribute) {
451
+ return __awaiter(this, void 0, void 0, function* () {
452
+ if (typeof elem === "object" && elem !== null) {
453
+ const tagName = yield elem.getTagName();
454
+ if (attribute === "value" && (tagName === "input" || tagName === "textarea")) {
455
+ return elem.getValue();
456
+ }
457
+ else if (attribute && attribute !== "textContent") {
458
+ return elem.getAttribute(attribute);
459
+ }
460
+ else {
461
+ if (attribute === "textContent") {
462
+ const attributeValue = yield elem.getAttribute(attribute);
463
+ if (attributeValue !== null)
464
+ return attributeValue;
465
+ }
466
+ const [value, text] = yield Promise.all([elem.getValue(), elem.getText()]);
467
+ return value || text;
468
+ }
469
+ }
470
+ else {
471
+ throw new Error(`Function 'getAttributeValue' failed. Please provide an element as first argument (must be of type 'object').`);
472
+ }
473
+ });
474
+ }
475
+ /**
476
+ * @function getValue
477
+ * @memberOf nonUi5.element
478
+ * @description Returns the value of the passed element.
479
+ * @param {Object} elem - The element.
480
+ * @returns {String} The value of the element.
481
+ * @example const elem = await nonUi5.element.getById("elem02");
482
+ * const innerHTML = await nonUi5.element.getValue(elem);
483
+ */
484
+ getValue(elem) {
485
+ return __awaiter(this, void 0, void 0, function* () {
486
+ try {
487
+ const [value, text] = yield Promise.all([elem.getValue(), elem.getText()]);
488
+ return value || text;
489
+ }
490
+ catch (error) {
491
+ throw new Error(`Function 'getValue' failed: ${error}`);
492
+ }
493
+ });
494
+ }
495
+ // =================================== SET VALUES ===================================
496
+ /**
497
+ * @function setInnerHTML
498
+ * @memberOf nonUi5.element
499
+ * @description Sets the innerHTML value of the given element.
500
+ * CAUTION: Only use this if filling the value in the normal way is not working and if it is unavoidable. Keep in mind, that a user is not able to perform such actions.
501
+ * @param {Object} elem - The element.
502
+ * @returns {String} The value to set.
503
+ * @example const elem = await nonUi5.element.getById("text-editor");
504
+ * await nonUi5.element.setInnerHTML(elem, "Hello World!");
505
+ */
506
+ setInnerHTML(elem, value) {
507
+ return __awaiter(this, void 0, void 0, function* () {
508
+ yield browser.executeScript(`arguments[0].innerHTML = '${value}'`, [elem]);
509
+ });
510
+ }
511
+ // =================================== ACTIONS ===================================
512
+ /**
513
+ * @function highlight
514
+ * @memberOf nonUi5.element
515
+ * @description Highlights the passed element.
516
+ * @param {Object} elem - The element.
517
+ * @param {Integer} [duration=2000] - The duration of the highlighting (ms).
518
+ * @param {String} [color="red"] - The color of the highlighting (CSS value).
519
+ * @example const elem = await nonUi5.element.getById("text01");
520
+ * await nonUi5.element.highlight(elem);
521
+ * @example const elem = await nonUi5.element.getById("text01");
522
+ * await nonUi5.element.highlight(elem, 3000, "green");
523
+ */
524
+ highlight(elem, duration = 2000, color = "red") {
525
+ return __awaiter(this, void 0, void 0, function* () {
526
+ yield browser.executeScript(`arguments[0].style.boxShadow = 'inset 0px 0px 0px 2px ${color}'`, [elem]);
527
+ yield browser.pause(duration);
528
+ return browser.executeScript("arguments[0].style.boxShadow = 'inherit'", [elem]);
529
+ });
530
+ }
531
+ // =================================== FRAMES (Deprecated) ===================================
532
+ /**
533
+ * @function switchToIframe
534
+ * @memberOf nonUi5.element
535
+ * @description Switches to the passed iframe.
536
+ * @param {String} selector - The CSS selector describing the iframe element.
537
+ * @example await nonUi5.element.switchToIframe("iframe[id='frame01']");
538
+ * @deprecated please use util.browser.switchToIframe
539
+ * @see [util.browser.switchToIframe]{@link util.browser.switchToIframe}
540
+ */
541
+ switchToIframe(selector) {
542
+ return __awaiter(this, void 0, void 0, function* () {
543
+ util.console.warn(`⚠ "nonUi5.element.switchToIframe" is deprecated. Please use "util.browser.switchToIframe" instead.`);
544
+ yield util.browser.switchToIframe(selector);
545
+ });
546
+ }
547
+ /**
548
+ * @function switchToDefaultContent
549
+ * @memberOf nonUi5.element
550
+ * @description Switches to the default content of the HTML page.
551
+ * @example await nonUi5.element.switchToDefaultContent();
552
+ * @deprecated please use util.browser.switchToDefaultContent
553
+ * @see [util.browser.switchToDefaultContent]{@link util.browser.switchToDefaultContent}
554
+ */
555
+ switchToDefaultContent() {
556
+ return __awaiter(this, void 0, void 0, function* () {
557
+ util.console.warn(`⚠ "nonUi5.element.switchToDefaultContent" is deprecated. Please use "util.browser.switchToDefaultContent" instead.`);
558
+ yield util.browser.switchToDefaultContent();
559
+ });
560
+ }
561
+ // =================================== HELPER ===================================
562
+ _waitForStabilization(selector, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000, includeHidden = false, stableIterationsRequired = 3) {
563
+ return __awaiter(this, void 0, void 0, function* () {
564
+ let elemsCount = 0;
565
+ let stableIterations = 0;
566
+ yield browser.waitUntil(() => __awaiter(this, void 0, void 0, function* () {
567
+ let currentElems = yield $$(selector);
568
+ if (!includeHidden) {
569
+ currentElems = yield this._filterDisplayed(currentElems);
570
+ }
571
+ const currentElemsCount = currentElems.length;
572
+ if (currentElemsCount === elemsCount) {
573
+ stableIterations++;
574
+ }
575
+ else {
576
+ stableIterations = 0;
577
+ }
578
+ elemsCount = currentElemsCount;
579
+ if (elemsCount !== 0 && stableIterations === stableIterationsRequired) {
580
+ return true;
581
+ }
582
+ }), {
583
+ timeout: timeout,
584
+ timeoutMsg: elemsCount === 0 ? `Timeout reached. No element with passed selector found after ${+timeout / 1000}s.` : `Timeout reached. Page is still loading after ${+timeout / 1000}s.`,
585
+ });
586
+ });
587
+ }
588
+ _getAndFilterElementBySelector(selector, index = 0, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000, includeHidden = false) {
589
+ return __awaiter(this, void 0, void 0, function* () {
590
+ yield this.waitForAll(selector, timeout, includeHidden);
591
+ const elems = yield $$(selector);
592
+ if (includeHidden) {
593
+ return elems[index];
594
+ }
595
+ else {
596
+ const visibleElems = yield this._filterDisplayed(elems);
597
+ return visibleElems[index];
598
+ }
599
+ });
600
+ }
601
+ _filterByText(elems, text, strict = false) {
602
+ return __awaiter(this, void 0, void 0, function* () {
603
+ const filteredElems = [];
604
+ for (const elem of elems) {
605
+ const elementText = yield elem.getText();
606
+ const strictEquasion = strict && elementText === text;
607
+ const nonStrictEquasion = !strict && elementText.includes(text.trim());
608
+ if (strictEquasion || nonStrictEquasion) {
609
+ filteredElems.push(elem);
610
+ }
611
+ }
612
+ if (filteredElems.length > 0) {
613
+ return filteredElems;
614
+ }
615
+ else {
616
+ throw new Error(`No element with text ${text} found.`);
617
+ }
618
+ });
619
+ }
620
+ _filterDisplayed(elems) {
621
+ return __awaiter(this, void 0, void 0, function* () {
622
+ const filteredElems = [];
623
+ for (const elem of elems) {
624
+ if (yield elem.isDisplayed()) {
625
+ filteredElems.push(elem);
626
+ }
627
+ }
628
+ if (filteredElems.length > 0) {
629
+ return filteredElems;
630
+ }
631
+ else {
632
+ throw new Error(`No displayed element found.`);
633
+ }
634
+ });
635
+ }
636
+ }
637
+ exports.ElementModule = ElementModule;
638
+ exports.default = new ElementModule();
639
+ //# sourceMappingURL=element.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"element.js","sourceRoot":"","sources":["../../../../src/reuse/modules/nonUi5/element.ts"],"names":[],"mappings":"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"}