@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,120 @@
1
+ /* eslint-disable no-unused-expressions */
2
+ describe("webdriver.io page locator test", function () {
3
+
4
+ this.beforeAll(async () => {
5
+ await browser.url("#/categories");
6
+ });
7
+
8
+ it("should access element by elementProperties and inner siblingProperties", async function () {
9
+ // Use nested ancestorProperties
10
+ const ui5ControlProperties = {
11
+ "elementProperties": {
12
+ "viewName": "sap.ui.demo.cart.view.Home",
13
+ "metadata": "sap.m.Bar",
14
+ "id": "*page-intHeader",
15
+ "siblingProperties": {
16
+ "viewName": "sap.ui.demo.cart.view.Home",
17
+ "metadata": "sap.m.Toolbar",
18
+ "id": "*searchBar33343"
19
+ }
20
+ }
21
+ };
22
+ const elem = await browser.uiControl(ui5ControlProperties);
23
+ await expect(elem).toBeDisplayedInViewport();
24
+ expect(elem).toBeInstanceOf(Object);
25
+ expect(elem).toHaveAttribute("elementId");
26
+ });
27
+
28
+ it("should access element by elementProperties and nextSiblingProperties", async function () {
29
+ const ui5ControlProperties = {
30
+ "elementProperties": {
31
+ "viewName": "sap.ui.demo.cart.view.Home",
32
+ "metadata": "sap.m.Bar",
33
+ "id": "*page-intHeader"
34
+ },
35
+ "nextSiblingProperties": {
36
+ "viewName": "sap.ui.demo.cart.view.Home",
37
+ "metadata": "sap.m.Toolbar",
38
+ "id": "*searchBar33343"
39
+ }
40
+ };
41
+ const elem = await browser.uiControl(ui5ControlProperties);
42
+ await expect(elem).toBeDisplayedInViewport();
43
+ expect(elem).toBeInstanceOf(Object);
44
+ expect(elem).toHaveAttribute("elementId");
45
+ });
46
+
47
+ it("should access element by elementProperties and previousSiblingProperties", async function () {
48
+ const ui5ControlProperties = {
49
+ "elementProperties": {
50
+ "viewName": "sap.ui.demo.cart.view.Home",
51
+ "metadata": "sap.m.Toolbar",
52
+ "id": "*searchBar33343"
53
+ },
54
+ "prevSiblingProperties": {
55
+ "viewName": "sap.ui.demo.cart.view.Home",
56
+ "metadata": "sap.m.Bar",
57
+ "id": "*page-intHeader"
58
+ }
59
+ };
60
+ const elem = await browser.uiControl(ui5ControlProperties);
61
+ await expect(elem).toBeDisplayedInViewport();
62
+ expect(elem).toBeInstanceOf(Object);
63
+ expect(elem).toHaveAttribute("elementId");
64
+ });
65
+
66
+ it("should access elements only by siblingProperties and fail (unhappy case)", async function () {
67
+ const selectorWithoutElementProperties = {
68
+ "siblingProperties": {
69
+ "viewName": "sap.ui.demo.cart.view.Home",
70
+ "metadata": "sap.m.StandardListItem",
71
+ "bindingContextPath": "/ProductCategories*'CSA')"
72
+ }
73
+ };
74
+ await expect(browser.uiControl(selectorWithoutElementProperties))
75
+ .rejects.toThrowError(/uiControlExecuteLocator\(\): No visible elements found/);
76
+ });
77
+
78
+ it("should access element by elementProperties and siblingProperties", async function () {
79
+ const ui5ControlProperties = {
80
+ "elementProperties": {
81
+ "id": "*categoryList-0",
82
+ "metadata": "sap.m.StandardListItem",
83
+ "bindingContextPath": "/ProductCategories*'AC')"
84
+ },
85
+ "siblingProperties": {
86
+ "viewName": "sap.ui.demo.cart.view.Home",
87
+ "metadata": "sap.m.StandardListItem",
88
+ "bindingContextPath": "/ProductCategories*'CSA')"
89
+ }
90
+ };
91
+ const elem = await browser.uiControl(ui5ControlProperties);
92
+
93
+ await expect(elem).toBeDisplayedInViewport();
94
+ await expect(elem).toBeDisplayed();
95
+ await expect(elem).toBeClickable();
96
+ expect(elem).toBeInstanceOf(Object);
97
+ expect(elem).toHaveAttribute("elementId");
98
+ });
99
+
100
+ it("try access element by elementProperties and siblingProperties and throw error", async function () {
101
+ const wrongProperties = {
102
+ "elementProperties": {
103
+ "id": "*categoryList-0",
104
+ "metadata": "sap.m.StandardListItem",
105
+ "bindingContextPath": "/ProductCategories*'AC')"
106
+ },
107
+ "siblingProperties": {
108
+ "viewName": "view.Home",
109
+ "metadata": "sap.m.ListItem",
110
+ "bindingContextPath": "/ProductCategories*'CSA')"
111
+ }
112
+ };
113
+ await expect(browser.uiControl(wrongProperties)).rejects.toThrowError(/uiControlExecuteLocator\(\): No visible elements found/);
114
+ });
115
+ });
116
+
117
+
118
+
119
+
120
+
@@ -0,0 +1,38 @@
1
+ var path = require("path");
2
+ var merge = require("deepmerge");
3
+ var profile = require("../../../helper/configurations/chrome.headless.conf");
4
+
5
+ exports.config = merge(profile.config, {
6
+ maxInstances: 8,
7
+ bail: 1,
8
+
9
+ //
10
+ // ==================
11
+ // Specify Test Files
12
+ // ==================
13
+ // Define which test specs should run. The pattern is relative to the directory
14
+ // from which `wdio` was called. Notice that, if you are calling `wdio` from an
15
+ // NPM script (see https://docs.npmjs.com/cli/run-script) then the current working
16
+ // directory is where your package.json resides, so `wdio` will be called from there.
17
+ //
18
+ specs: [
19
+ path.resolve(__dirname, "elementProperties.test.js"),
20
+ path.resolve(__dirname, "ancestorProperties.test.js"),
21
+ path.resolve(__dirname, "descendantProperties.test.js"),
22
+ path.resolve(__dirname, "siblingProperties.test.js"),
23
+ path.resolve(__dirname, "domProperties.test.js"),
24
+ path.resolve(__dirname, "parentProperties.test.js"),
25
+ path.resolve(__dirname, "childProperties.test.js"),
26
+ path.resolve(__dirname, "mixedProperties.test.js")
27
+ ],
28
+ // Patterns to exclude.
29
+ exclude: [
30
+ // 'path/to/excluded/files'
31
+ ],
32
+ //
33
+ // Set a base URL in order to shorten url command calls. If your `url` parameter starts
34
+ // with `/`, the base url gets prepended, not including the path portion of your baseUrl.
35
+ // If your `url` parameter starts without a scheme or `/` (like `some/path`), the base url
36
+ // gets prepended directly.
37
+ baseUrl: "https://sapui5.hana.ondemand.com/1.99.0/test-resources/sap/m/demokit/cart/webapp/index.html"
38
+ });
@@ -0,0 +1,6 @@
1
+ function checkIfAnElementIsUnique(element, elements) {
2
+ expect(elements.length).toBe(1);
3
+ expect(element.elementId).toEqual(elements[0].elementId);
4
+ }
5
+
6
+ module.exports = { checkIfAnElementIsUnique };
@@ -0,0 +1,111 @@
1
+ describe("Test for ", function () {
2
+ this.beforeAll(async () => {
3
+ await browser.url("#/categories");
4
+ });
5
+
6
+ it("should fail with 'javascript error: circular reference/Converting circular structure to JSON'", async function () {
7
+ const ui5ControlProperties = {
8
+ "elementProperties": {
9
+ "metadata": "sap.m.StandardListItem", "mProperties": {
10
+ "viewId": "container-cart---app",
11
+ "title": [{ "path": "CategoryName" }],
12
+ "bindingContextPath": "/ProductCategories*"
13
+ }
14
+ }
15
+ };
16
+
17
+ const elem = await browser.uiControl(ui5ControlProperties);
18
+ await expect(elem.controlActionInBrowser(function (control, done) {
19
+ done(control.getBindingContext());
20
+ })).rejects.toThrow("javascript error: circular reference");
21
+
22
+ await expect(elem.controlActionInBrowser(function (control, done) {
23
+ done(JSON.stringify(control.getBindingContext()));
24
+ })).rejects.toThrow(/Converting circular structure to JSON/);
25
+ });
26
+
27
+ it("should access wrong element", async function () {
28
+ const ui5ControlProperties = {
29
+ "elementProperties": {
30
+ "metadata": "sap.m.StandardListItem",
31
+ "id": "*categoryList-79",
32
+ "bindingContextPath": "/ProductCategories('LT')"
33
+ }
34
+ };
35
+ const newText = "master";
36
+ // const elem = await browser.uiControl(ui5ControlProperties);
37
+ const selectorParams = { selector: ui5ControlProperties, index: 0, timeout: 3000 };
38
+ await expect(browser.controlActionInBrowser(function (control, txt, done) {
39
+ control.setTitle(txt);
40
+ done(control.getTitle());
41
+ }, selectorParams, newText)).rejects.toThrow(/uiControlExecuteLocator\(\): No visible elements found/);
42
+ });
43
+
44
+ it("should use UI5 Control binding properties command on element level", async function () {
45
+ await browser.navigateTo("https://sapui5.hana.ondemand.com/1.99.0/test-resources/sap/m/demokit/cart/webapp/index.html#/categories");
46
+ const ui5ControlProperties = {
47
+ "elementProperties": {
48
+ "metadata": "sap.m.StandardListItem", "mProperties": {
49
+ "viewId": "container-cart---app",
50
+ "title": [{ "path": "CategoryName" }],
51
+ "bindingContextPath": "/ProductCategories*"
52
+ }
53
+ }
54
+ };
55
+ const elem = await browser.uiControl(ui5ControlProperties);
56
+ await expect(elem.controlActionInBrowser(function (control, done) {
57
+ done(control.getBindingContext().getPath());
58
+ })).resolves.toEqual("/ProductCategories('AC')");
59
+ });
60
+
61
+ it("should fire press (controlActionInBrowser on element level)", async function () {
62
+ const ui5ControlProperties = {
63
+ "elementProperties": {
64
+ "metadata": "sap.m.StandardListItem",
65
+ "id": "*categoryList-7",
66
+ "bindingContextPath": "/ProductCategories('LT')"
67
+ }
68
+ };
69
+
70
+ const elem = await browser.uiControl(ui5ControlProperties);
71
+
72
+ const newText = "test";
73
+ await expect(elem.controlActionInBrowser(function (control, txt, done) {
74
+ control.setTitle(txt);
75
+ done(control.getTitle());
76
+ }, newText)).resolves.toEqual(newText);
77
+
78
+ await expect(elem.controlActionInBrowser(function (control, done) {
79
+ const data = { title: control.getTitle() };
80
+ control.attachPress(data, function () {
81
+ done(data.title);
82
+ });
83
+ control.firePress();
84
+ })).resolves.toEqual(newText);
85
+ });
86
+
87
+ // ?
88
+ it.skip("should fire press (controlActionInBrowser on browser level)", async function () {
89
+ const ui5ControlProperties = {
90
+ "elementProperties": {
91
+ "metadata": "sap.m.StandardListItem",
92
+ "id": "*categoryList-7",
93
+ "bindingContextPath": "/ProductCategories('LT')"
94
+ }
95
+ };
96
+ const selectorParams = { selector: ui5ControlProperties, index: 0, timeout: 30000 };
97
+ const newText = "master";
98
+ await expect(browser.controlActionInBrowser(function (control, txt, done) {
99
+ control.setTitle(txt);
100
+ done(control.getTitle());
101
+ }, selectorParams, newText)).resolves.toEqual(newText);
102
+
103
+ await expect(browser.controlActionInBrowser(function (control, done) {
104
+ const data = { title: control.getTitle() };
105
+ control.attachPress(data, function () {
106
+ done(data.title);
107
+ });
108
+ control.firePress();
109
+ }, ui5ControlProperties)).resolves.toEqual(newText);
110
+ });
111
+ });
@@ -0,0 +1,31 @@
1
+ var path = require("path");
2
+ var merge = require("deepmerge");
3
+ var profile = require("../../../helper/configurations/chrome.headless.conf.js");
4
+
5
+ exports.config = merge(profile.config, {
6
+ maxInstances: 6,
7
+ bail: 1,
8
+
9
+ //
10
+ // ==================
11
+ // Specify Test Files
12
+ // ==================
13
+ // Define which test specs should run. The pattern is relative to the directory
14
+ // from which `wdio` was called. Notice that, if you are calling `wdio` from an
15
+ // NPM script (see https://docs.npmjs.com/cli/run-script) then the current working
16
+ // directory is where your package.json resides, so `wdio` will be called from there.
17
+ //
18
+ specs: [
19
+ path.resolve(__dirname, "runInBrowser.test.js")
20
+ ],
21
+ // Patterns to exclude.
22
+ exclude: [
23
+ // 'path/to/excluded/files'
24
+ ],
25
+ //
26
+ // Set a base URL in order to shorten url command calls. If your `url` parameter starts
27
+ // with `/`, the base url gets prepended, not including the path portion of your baseUrl.
28
+ // If your `url` parameter starts without a scheme or `/` (like `some/path`), the base url
29
+ // gets prepended directly.
30
+ baseUrl: "https://sapui5.hana.ondemand.com/1.99.0/test-resources/sap/m/demokit/cart/webapp/index.html"
31
+ });
@@ -0,0 +1,10 @@
1
+ var chai = require("chai")
2
+ , should = chai.should();
3
+
4
+ describe("webdriver.io page", function () {
5
+ it("should have the right title", async function () {
6
+ await browser.navigateTo("https://webdriver.io");
7
+ const title = await browser.getTitle();
8
+ await title.should.be.equal("WebdriverIO · Next-gen browser and mobile automation test framework for Node.js");
9
+ });
10
+ });
@@ -0,0 +1,51 @@
1
+ describe("webdriver.io page", function () {
2
+
3
+ this.beforeAll(async () => {
4
+ await browser.url("#/categories");
5
+ });
6
+
7
+ it("step1: check name is Accessories - use $ and UI5 Control properties", async function () {
8
+ const elem = await $('li[id*="homeView--categoryList-0"]');
9
+ const allPropertiesNames = await elem.getAllUI5Properties();
10
+ expect(allPropertiesNames).toContain("title");
11
+ const val = await elem.getUI5Property("title");
12
+ expect(val).toEqual("Accessories");
13
+ });
14
+
15
+ it("step2: check name is Accessories - use $ and Aggregation Control properties", async function () {
16
+
17
+ const elem = await $('li[id*="homeView--categoryList-0"]');
18
+ const allAggregationsNames = await elem.getAllUI5Aggregations();
19
+ expect(allAggregationsNames).toContain("tooltip");
20
+ const val = await elem.getUI5Aggregation("tooltip");
21
+ expect(val).toEqual("Open category Accessories");
22
+ });
23
+
24
+ it("step3: check element's Binding context path using $ ", async function () {
25
+ const elem = await $('li[id*="homeView--categoryList-0"]');
26
+ const bindingPath = await elem.getBindingContextPath();
27
+ expect(bindingPath).toContain("/ProductCategories('AC')");
28
+ const val = await elem.getUI5Property("title");
29
+ expect(val).toEqual("Accessories");
30
+ });
31
+
32
+ it("step4: check Associations in categories - use $ and UI5 Association Control properties", async function () {
33
+ const elem = await $('li[id*="homeView--categoryList-0"]');
34
+ const associations = await elem.getAllUI5Associations();
35
+ expect(associations).toContain("ariaLabelledBy");
36
+ });
37
+
38
+ it("step5: get wrong Aggregation Control property and throw error", async function () {
39
+ const elem = await $('li[id*="homeView--categoryList-0"]');
40
+ const allAggregationsNames = await elem.getAllUI5Aggregations();
41
+ expect(allAggregationsNames).toContain("tooltip");
42
+ await expect(elem.getUI5Aggregation("")).rejects.toThrow("javascript error: done is not a function");
43
+ });
44
+
45
+ it("step6: check element's Binding context path using $ and get wrong element property", async function () {
46
+ const elem = await $('li[id*="homeView--categoryList-0"]');
47
+ const bindingPath = await elem.getBindingContextPath();
48
+ expect(bindingPath).toContain("/ProductCategories('AC')");
49
+ await expect(elem.getUI5Property("")).rejects.toThrow("javascript error: done is not a function");
50
+ });
51
+ });
@@ -0,0 +1,141 @@
1
+ describe("webdriver.io page", function () {
2
+
3
+ this.beforeAll(async () => {
4
+ await browser.url("#/categories");
5
+ });
6
+
7
+ it("step1: check name is Accessories - use UI5 Control properties", async function () {
8
+ const parent = await $("#container-cart---homeView--categoryList-listUl");
9
+ const elem = (await parent.$$('li[id*="homeView--categoryList"]'))[0];
10
+ await browser.waitUntil(
11
+ async () => {
12
+ try {
13
+ return await elem.getAllUI5Properties();
14
+ } catch (error) {
15
+ // console.log(error.message);
16
+ return false;
17
+ }
18
+ },
19
+ {
20
+ timeout: 50000,
21
+ timeoutMsg: "element is not visible"
22
+ }
23
+ );
24
+ const allPropertiesNames = await elem.getAllUI5Properties();
25
+ expect(allPropertiesNames).toContain("title", "description");
26
+ await expect(elem.getUI5Property("title")).resolves.toBe("Accessories");
27
+ });
28
+
29
+ it("step2: check name Accessories - use UI5 Aggregation Control properties", async function () {
30
+ const parent = await $("#container-cart---homeView--categoryList-listUl");
31
+ const elem = (await parent.$$('li[id*="homeView--categoryList"]'))[0];
32
+ await browser.waitUntil(
33
+ async () => {
34
+ try {
35
+ return await elem.getAllUI5Aggregations();
36
+ } catch (error) {
37
+ // console.log(error.message);
38
+ return false;
39
+ }
40
+ },
41
+ {
42
+ timeout: 50000,
43
+ timeoutMsg: "element is not visible"
44
+ }
45
+ );
46
+ const allAggregationsNames = await elem.getAllUI5Aggregations();
47
+ expect(allAggregationsNames).toContain("tooltip");
48
+ await expect(elem.getUI5Aggregation("tooltip")).resolves.toBe("Open category Accessories");
49
+ });
50
+
51
+ it("step3: check element's Binding context path using chain $.$$ ", async function () {
52
+ const parent = await $("#container-cart---homeView--categoryList-listUl");
53
+ const elems = (await parent.$$('li[id*="homeView--categoryList"]'));
54
+ const elem = elems[0];
55
+ await browser.waitUntil(
56
+ async () => {
57
+ try {
58
+ return await elem.getBindingContextPath();
59
+ } catch (error) {
60
+ // console.log(error.message);
61
+ return false;
62
+ }
63
+ },
64
+ {
65
+ timeout: 50000,
66
+ timeoutMsg: "element is not visible"
67
+ }
68
+ );
69
+ await expect(elem.getBindingContextPath()).resolves.toContain("/ProductCategories('AC')");
70
+ await expect(elem.getUI5Property("title")).resolves.toEqual("Accessories");
71
+ });
72
+
73
+ it("step4: step4: check Associations in categories - use chain $.$$ and UI5 Association Control properties ", async function () {
74
+ const parent = await $("#container-cart---homeView--categoryList-listUl");
75
+ const elem = (await parent.$$('li[id*="homeView--categoryList"]'))[0];
76
+ await browser.waitUntil(
77
+ async () => {
78
+ try {
79
+ return await elem.getAllUI5Associations();
80
+ } catch (error) {
81
+ // console.log(error.message);
82
+ return false;
83
+ }
84
+ },
85
+ {
86
+ timeout: 50000,
87
+ timeoutMsg: "element is not visible"
88
+ }
89
+ );
90
+ await expect(elem.getAllUI5Associations()).resolves.toContain("ariaLabelledBy");
91
+ });
92
+
93
+ it("step5: get wrong Aggregation Control properties and throw error", async function () {
94
+ const parent = await $("#container-cart---homeView--categoryList-listUl");
95
+ const elem = (await parent.$$('li[id*="homeView--categoryList"]'))[0];
96
+ await browser.waitUntil(
97
+ async () => {
98
+ try {
99
+ return await elem.getAllUI5Aggregations();
100
+ } catch (error) {
101
+ // console.log(error.message);
102
+ return false;
103
+ }
104
+ },
105
+ {
106
+ timeout: 50000,
107
+ timeoutMsg: "element is not visible"
108
+ }
109
+ );
110
+ await expect(elem.getAllUI5Aggregations()).resolves.toContain("tooltip");
111
+ await expect(elem.getUI5Aggregation("")).rejects.toThrow("javascript error: done is not a function");
112
+ });
113
+
114
+ it("step6: check element's Binding context path using chain $.$$ and get wrong element property", async function () {
115
+ const parent = await $("#container-cart---homeView--categoryList-listUl");
116
+ const elems = (await parent.$$('li[id*="homeView--categoryList"]'));
117
+ const elem = elems[0];
118
+ await browser.waitUntil(
119
+ async () => {
120
+ try {
121
+ return await elem.getBindingContextPath();
122
+ } catch (error) {
123
+ return false;
124
+ }
125
+ },
126
+ {
127
+ timeout: 50000,
128
+ timeoutMsg: "element is not visible"
129
+ }
130
+ );
131
+ await expect(elem.getBindingContextPath()).resolves.toContain("/ProductCategories('AC')");
132
+ await expect(elem.getUI5Property("")).rejects.toThrow("javascript error: done is not a function");
133
+ });
134
+
135
+ it("step7: get wrong element by wrong selector and throw error", async function () {
136
+ const parent = await $('li[id*="homeView--categoryList-0"]');
137
+ await expect(parent).toBeDisplayedInViewport();
138
+ const elem = await parent.$$('li[id*="__item1-container-cart---homeView--categoryList-0-wrong"]');
139
+ await expect(elem.length).toBe(0);
140
+ });
141
+ });
@@ -0,0 +1,32 @@
1
+ var path = require("path");
2
+ var merge = require("deepmerge");
3
+ var profile = require("../../../helper/configurations/chrome.headless.conf.js");
4
+
5
+ exports.config = merge(profile.config, {
6
+ maxInstances: 6,
7
+ bail: 1,
8
+
9
+ //
10
+ // ==================
11
+ // Specify Test Files
12
+ // ==================
13
+ // Define which test specs should run. The pattern is relative to the directory
14
+ // from which `wdio` was called. Notice that, if you are calling `wdio` from an
15
+ // NPM script (see https://docs.npmjs.com/cli/run-script) then the current working
16
+ // directory is where your package.json resides, so `wdio` will be called from there.
17
+ //
18
+ specs: [
19
+ path.resolve(__dirname, "getWithDomElement.test.js"),
20
+ path.resolve(__dirname, "getWithDomElements.test.js")
21
+ ],
22
+ // Patterns to exclude.
23
+ exclude: [
24
+ // 'path/to/excluded/files'
25
+ ],
26
+ //
27
+ // Set a base URL in order to shorten url command calls. If your `url` parameter starts
28
+ // with `/`, the base url gets prepended, not including the path portion of your baseUrl.
29
+ // If your `url` parameter starts without a scheme or `/` (like `some/path`), the base url
30
+ // gets prepended directly.
31
+ baseUrl: "https://sapui5.hana.ondemand.com/1.99.0/test-resources/sap/m/demokit/cart/webapp/index.html"
32
+ });
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ const { handleCookiesConsent } = require("../../../helper/utils");
3
+
4
+ describe("Test 'getAllUI5Aggregations()' and 'getUI5Aggregation()' on both element and browser levels", function () {
5
+
6
+ it("should get Dropdown aggregations on both element and browser levels, access unknown, empty and 'items' aggregations", async function () {
7
+ await browser.navigateTo("https://sapui5.hana.ondemand.com/1.99.0/#/entity/sap.m.ComboBox/sample/sap.m.sample.ComboBox");
8
+ await handleCookiesConsent();
9
+
10
+ const dropdownProperties = {
11
+ "elementProperties": {
12
+ "viewName": "sap.m.sample.ComboBox.view.ComboBox",
13
+ "metadata": "sap.m.ComboBox"
14
+ }
15
+ };
16
+
17
+ const element = await browser.uiControl(dropdownProperties);
18
+
19
+ await checkElementAndBrowserAccessAllAggregations({
20
+ requiredAggregations: [
21
+ "tooltip",
22
+ "customData",
23
+ "layoutData",
24
+ "dependents",
25
+ "dragDropConfig",
26
+ "formattedValueStateText",
27
+ "items"
28
+ ],
29
+ element
30
+ });
31
+
32
+ // Unknown Aggregation
33
+ const unknowAggregationOnElementLevel = await element.getUI5Aggregation("unknown_aggregation");
34
+ expect(unknowAggregationOnElementLevel).toBeNull();
35
+ await expect(browser.getUI5Aggregation("unknown_aggregation", element)).resolves.toEqual(unknowAggregationOnElementLevel);
36
+
37
+ // Empty aggregation
38
+ const tooltipOnElementLever = await element.getUI5Aggregation("tooltip");
39
+ expect(tooltipOnElementLever).toBeNull();
40
+ await expect(browser.getUI5Aggregation("tooltip", element)).resolves.toEqual(tooltipOnElementLever);
41
+
42
+ // Aggregation array - test in controlActionInBrowser
43
+ // This is not working, fails with an error "javascript error: circular reference" - maybe an infinite loop?
44
+ // content is an array of objects
45
+ await expect(element.getUI5Aggregation("items")).rejects.toThrow("javascript error: circular reference");
46
+ await expect(browser.getUI5Aggregation("items", element)).rejects.toThrow("javascript error: circular reference");
47
+ });
48
+
49
+ it("should get List Item aggregations on both element and browser levels and access tooltip aggregation", async function () {
50
+ await browser.navigateTo("https://sapui5.hana.ondemand.com/1.99.0/test-resources/sap/m/demokit/cart/webapp/index.html#/categories");
51
+
52
+ const listElementProperties = {
53
+ "elementProperties": {
54
+ "metadata": "sap.m.StandardListItem", "mProperties": {
55
+ "viewId": "container-cart---app",
56
+ "title": [{ "path": "CategoryName" }],
57
+ "bindingContextPath": "/ProductCategories*"
58
+ }
59
+ }
60
+ };
61
+
62
+ const element = await browser.uiControl(listElementProperties);
63
+
64
+ await checkElementAndBrowserAccessAllAggregations({
65
+ requiredAggregations: ["tooltip"],
66
+ element
67
+ });
68
+
69
+ const tooltipOnElementLever = await element.getUI5Aggregation("tooltip");
70
+ expect(tooltipOnElementLever).toBe("Open category Accessories");
71
+ await expect(browser.getUI5Aggregation("tooltip", element)).resolves.toEqual(tooltipOnElementLever);
72
+ });
73
+
74
+ it("should try to access non-existing/empty aggregation(s)", async function () {
75
+ await browser.navigateTo("https://sapui5.hana.ondemand.com/1.99.0/test-resources/sap/m/demokit/cart/webapp/index.html#/categories");
76
+ const listElementProperties = {
77
+ "elementProperties": {
78
+ "metadata": "sap.m.StandardListItem", "mProperties": {
79
+ "viewId": "container-cart---app",
80
+ "title": [{ "path": "CategoryName" }],
81
+ "bindingContextPath": "/ProductCategories*"
82
+ }
83
+ }
84
+ };
85
+
86
+ const element = await browser.uiControl(listElementProperties);
87
+ const allAggregationNamesOnElementLevel = await element.getAllUI5Aggregations();
88
+ expect(allAggregationNamesOnElementLevel).not.toContain("wrong_aggregation");
89
+ expect(allAggregationNamesOnElementLevel).not.toContain("");
90
+
91
+ await expect(element.getUI5Aggregation("")).rejects.toThrow("javascript error: done is not a function");
92
+ await expect(browser.getUI5Aggregation("wrong_aggregation_name", element)).resolves.toBeNull();
93
+ });
94
+ });
95
+
96
+
97
+ async function checkElementAndBrowserAccessAllAggregations({ requiredAggregations, element }) {
98
+ const allAggregationNamesOnElementLevel = await element.getAllUI5Aggregations();
99
+ expect(allAggregationNamesOnElementLevel).toContain(...requiredAggregations);
100
+
101
+ await expect(browser.getAllUI5Aggregations(element)).resolves.toEqual(allAggregationNamesOnElementLevel);
102
+ }
@@ -0,0 +1,24 @@
1
+ describe("Test 'getAllUI5Associations()' and 'getUI5Association()' on both element and browser levels", function () {
2
+ it("should access all Associations and single association via 'ariaLabelledBy' and wrong/empty name", async function () {
3
+ await browser.url("#/categories");
4
+
5
+ var ui5ControlProperties = {
6
+ "elementProperties": { "metadata": "sap.m.List", "items": [{ "path": "/ProductCategories" }] },
7
+ "parentProperties": { "metadata": "sap.m.Page", "title": [{ "path": "i18n>homeTitle" }] }
8
+ };
9
+ const elem = await browser.uiControl(ui5ControlProperties);
10
+ const associations = await elem.getAllUI5Associations();
11
+ expect(associations).toStrictEqual(["ariaLabelledBy"]);
12
+ await expect(browser.getAllUI5Associations(elem)).resolves.toStrictEqual(associations);
13
+
14
+ const association = await elem.getUI5Association(associations[0]);
15
+
16
+ await expect(browser.getUI5Association(associations[0], elem)).resolves.toStrictEqual(association);
17
+
18
+ await expect(elem.getUI5Association("wrong_name")).resolves.toBeNull();
19
+ await expect(browser.getUI5Association("wrong_name", elem)).resolves.toBeNull();
20
+
21
+ await expect(elem.getUI5Association("")).rejects.toThrow("javascript error: done is not a function");
22
+ await expect(browser.getUI5Association("", elem)).rejects.toThrow("javascript error: done is not a function");
23
+ });
24
+ });