@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,43 @@
1
+ <mvc:View
2
+ controllerName="sap.ui.demo.nav.controller.employee.overview.EmployeeOverviewContent"
3
+ xmlns="sap.m"
4
+ xmlns:mvc="sap.ui.core.mvc">
5
+ <Table id="employeesTable"
6
+ items="{/Employees}"
7
+ itemPress=".onItemPressed">
8
+ <headerToolbar>
9
+ <Toolbar>
10
+ <Title text="{i18n>Employees}" level="H2"/>
11
+ <ToolbarSpacer />
12
+ <SearchField id="searchField" search=".onSearchEmployeesTable" width="50%"/>
13
+ <Button icon="sap-icon://sort" press=".onSortButtonPressed"/>
14
+ </Toolbar>
15
+ </headerToolbar>
16
+ <columns>
17
+ <Column id="employeeIDCol"><Text text="{i18n>EmployeeID}"/></Column>
18
+ <Column id="firstNameCol" demandPopin="true"><Text text="{i18n>FirstName}"/></Column>
19
+ <Column id="lastNameCol" demandPopin="true"><Text text="{i18n>LastName}"/></Column>
20
+ <Column id="addressCol" minScreenWidth="Tablet" demandPopin="true"><Text text="{i18n>Address}"/></Column>
21
+ <Column id="cityCol" minScreenWidth="Tablet" demandPopin="true"><Text text="{i18n>City}"/></Column>
22
+ <Column id="regionCol" minScreenWidth="Tablet" demandPopin="true"><Text text="{i18n>Region}"/></Column>
23
+ <Column id="postalCodeCol" minScreenWidth="Tablet" demandPopin="true"><Text text="{i18n>PostalCode}"/></Column>
24
+ <Column id="countryCol" minScreenWidth="Tablet" demandPopin="true"><Text text="{i18n>Country}"/></Column>
25
+ <Column id="homePhoneCol" minScreenWidth="Tablet" demandPopin="true" hAlign="Right"><Text text="{i18n>Phone}"/></Column>
26
+ </columns>
27
+ <items>
28
+ <ColumnListItem type="Active">
29
+ <cells>
30
+ <Text text="{EmployeeID}"/>
31
+ <Text text="{FirstName}"/>
32
+ <Text text="{LastName}"/>
33
+ <Text text="{Address}"/>
34
+ <Text text="{City}"/>
35
+ <Text text="{Region}"/>
36
+ <Text text="{PostalCode}"/>
37
+ <Text text="{Country}"/>
38
+ <Text text="{HomePhone}"/>
39
+ </cells>
40
+ </ColumnListItem>
41
+ </items>
42
+ </Table>
43
+ </mvc:View>
@@ -0,0 +1,3 @@
1
+ <mvc:View xmlns="sap.m" xmlns:mvc="sap.ui.core.mvc" class="sapUiMediumMarginBottom">
2
+ <Title text="{i18n>EmployeeOverviewTop}"/>
3
+ </mvc:View>
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ describe("navigation - closePopups", function () {
4
+ it("Preparation", async function () {
5
+ await ui5.navigation.navigateToSystemAndApplication("hbr-710.wdf.sap.corp", "Shell-Home", false);
6
+ await ui5.session.login("AP_ACCOUNTANT");
7
+ });
8
+
9
+ it("Execution", async function () {
10
+ await ui5.navigation.closePopups();
11
+ });
12
+
13
+ it("Verification", async function () {
14
+ await ui5.session.logout();
15
+ });
16
+ });
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ const selectorForCloseButton = {
3
+ "elementProperties": {
4
+ "metadata": "sap.m.Button",
5
+ "text": "Close"
6
+ }
7
+ };
8
+ const selectorForErrorPopupText = {
9
+ "elementProperties": {
10
+ "metadata": "sap.m.Text",
11
+ "ancestorProperties": {
12
+ "elementProperties": {
13
+ "metadata": "sap.m.Dialog",
14
+ "type": "Message",
15
+ "state": "Error"
16
+ }
17
+ }
18
+ }
19
+ };
20
+
21
+ // Test is unstable - system itself can close the popup
22
+ // TODO: discuss local server usage for assertion tests execution
23
+ describe.skip("navigation - expectUnsupportedNavigationPopup", function () {
24
+ it("Preparation", async function () {
25
+ browser.config.baseUrl = "https://qs9-715.wdf.sap.corp/ui";
26
+ await ui5.navigation.navigateToApplication("Shell-home", true);
27
+ await ui5.session.loginFiori("PURCHASER", "Welcome2!", true);
28
+ });
29
+
30
+ it("Execution", async function () {
31
+ await ui5.navigation.navigateToApplication("SomeWrong-intent", false);
32
+ });
33
+
34
+ it("Verification", async function () {
35
+ await ui5.navigation.expectUnsupportedNavigationPopup("#SomeWrong-intent");
36
+ });
37
+
38
+ it("Clean Up", async function () {
39
+ await ui5.session.logout();
40
+ });
41
+ });
42
+
43
+ // Test is unstable - system itself can close the popup
44
+ // TODO: discuss local server usage for assertion tests execution
45
+ describe.skip("navigation - expectUnsupportedNavigationPopup with '&' (unhappy case, another error popup)", function () {
46
+ it("Preparation", async function () {
47
+ browser.config.baseUrl = "https://qs9-715.wdf.sap.corp/ui";
48
+ await ui5.navigation.navigateToApplication("Shell-home", true);
49
+ await ui5.session.loginFiori("PURCHASER", "Welcome2!", true);
50
+ });
51
+
52
+ it("Execution", async function () {
53
+ await ui5.navigation.navigateToApplication("SomeWrongIntentWith&", false);
54
+ });
55
+
56
+ it("Verification", async function () {
57
+ await expect(ui5.navigation.expectUnsupportedNavigationPopup("#SomeWrongIntentWith&"))
58
+ .rejects.toThrow(/No visible elements found/);
59
+ const textElement = await ui5.locator.getDisplayed(selectorForErrorPopupText);
60
+ const text = await textElement.getText();
61
+ await common.assertion.expectEqual(text, "Could not open app. Please try again later.");
62
+ });
63
+
64
+ it("Clean Up", async function () {
65
+ await ui5.session.logout();
66
+ });
67
+ });
68
+
69
+ describe("navigation - expectUnsupportedNavigationPopup (unhappy case - no popup - correct navigation)", function () {
70
+ it("Preparation", async function () {
71
+ browser.config.baseUrl = "https://qs9-715.wdf.sap.corp/ui";
72
+ await ui5.navigation.navigateToApplication("Shell-home", true);
73
+ await ui5.session.loginFiori("PURCHASER", "Welcome2!", true);
74
+ });
75
+
76
+ it("Execution & Verification", async function () {
77
+ await ui5.navigation.navigateToApplication("PurchaseOrder-manage", false);
78
+ await expect(ui5.navigation.expectUnsupportedNavigationPopup("#PurchaseOrder-manage"))
79
+ .rejects.toThrow("uiControlExecuteLocator(): No visible elements found");
80
+ });
81
+ });
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+
3
+ describe("navigation - navigateToApplication with preventPopups=false", function () {
4
+ it("Execution & Verification", async function () {
5
+ // First navigation - to #Shell-home
6
+ let urlExpected = `${await util.browser.getBaseUrl()}#Shell-home`; // http://localhost:34099/ui#Shell-home
7
+
8
+ await ui5.navigation.navigateToApplication("Shell-home"); // preventPopups=false by default
9
+ let button = await nonUi5.element.getById("parseUrl");
10
+ await nonUi5.userInteraction.click(button);
11
+
12
+ await common.assertion.expectUrlToBe(urlExpected);
13
+
14
+ let parsedUrlElement = await nonUi5.element.getById("navigationUrl");
15
+ let parsedUrlValue = await nonUi5.element.getValue(parsedUrlElement);
16
+
17
+ await common.assertion.expectEqual(urlExpected, parsedUrlValue);
18
+
19
+ // Second navigation - to #PurchaseOrder-manage
20
+ urlExpected = `${await util.browser.getBaseUrl()}#PurchaseOrder-manage`; // http://localhost:34099/ui#PurchaseOrder-manage
21
+
22
+ await ui5.navigation.navigateToApplication("PurchaseOrder-manage"); // preventPopups=false by default
23
+ button = await nonUi5.element.getById("parseUrl");
24
+ await nonUi5.userInteraction.click(button);
25
+
26
+ await common.assertion.expectUrlToBe(urlExpected);
27
+
28
+ parsedUrlElement = await nonUi5.element.getById("navigationUrl");
29
+ parsedUrlValue = await nonUi5.element.getValue(parsedUrlElement);
30
+
31
+ await common.assertion.expectEqual(urlExpected, parsedUrlValue);
32
+
33
+ });
34
+ });
35
+
36
+ describe("navigation - navigateToApplication with preventPopups=true", function () {
37
+ it("Execution & Verification", async function () {
38
+ // First navigation - to #Shell-home
39
+ // "http://localhost:34099/ui?help-readCatalog=false&help-stateUACP=PRODUCTION#Shell-home" - as preventPopups=true
40
+ const queryToClosePopups = "help-readCatalog=false&help-stateUACP=PRODUCTION"; // from private function 'generateUrlParams'
41
+ let urlExpected = `${await util.browser.getBaseUrl()}?${queryToClosePopups}#Shell-home`;
42
+
43
+ await ui5.navigation.navigateToApplication("Shell-home", true); // preventPopups=true
44
+ let button = await nonUi5.element.getById("parseUrl");
45
+ await nonUi5.userInteraction.click(button);
46
+
47
+ await common.assertion.expectUrlToBe(urlExpected);
48
+
49
+ let parsedUrlElement = await nonUi5.element.getById("navigationUrl");
50
+ let parsedUrlValue = await nonUi5.element.getValue(parsedUrlElement);
51
+
52
+ await common.assertion.expectEqual(urlExpected, parsedUrlValue);
53
+
54
+ // Second navigation - to #PurchaseOrder-manage
55
+ // "http://localhost:34099/ui?help-readCatalog=false&help-stateUACP=PRODUCTION#PurchaseOrder-manage" - as preventPopups=true
56
+ urlExpected = `${await util.browser.getBaseUrl()}?${queryToClosePopups}#PurchaseOrder-manage`;
57
+
58
+ await ui5.navigation.navigateToApplication("PurchaseOrder-manage", true); // preventPopups=true
59
+ button = await nonUi5.element.getById("parseUrl");
60
+ await nonUi5.userInteraction.click(button);
61
+
62
+ await common.assertion.expectUrlToBe(urlExpected);
63
+
64
+ parsedUrlElement = await nonUi5.element.getById("navigationUrl");
65
+ parsedUrlValue = await nonUi5.element.getValue(parsedUrlElement);
66
+
67
+ await common.assertion.expectEqual(urlExpected, parsedUrlValue);
68
+
69
+ });
70
+ });
71
+
72
+ describe("navigation - navigateToApplication wrong navigation intent type with/without verification(unhappy case)", function () {
73
+ const wrongApplication = { strange: "intent" };
74
+ const application = "Shell-home";
75
+
76
+ it("Execution & Verification", async function () {
77
+ await ui5.navigation.navigateToApplication(application, true);
78
+
79
+ await ui5.navigation.navigateToApplication(wrongApplication, false); // verify=false - no verification
80
+ const currentUrl = await browser.getUrl();
81
+
82
+ // system first navigates to 'https://qs9-715.wdf.sap.corp/ui#%5Bobject%20Object%5D'
83
+ expect(currentUrl).toContain(browser.config.baseUrl + "#[object%20Object]");
84
+
85
+ await expect(ui5.navigation.navigateToApplication(wrongApplication, false, true)) // verify = true,
86
+ .rejects.toThrow(/Navigation failed/);
87
+ });
88
+ });
89
+
90
+
91
+ const selectorForErrorPopupText = {
92
+ "elementProperties": {
93
+ "metadata": "sap.m.Text",
94
+ "ancestorProperties": {
95
+ "elementProperties": {
96
+ "metadata": "sap.m.Dialog",
97
+ "type": "Message",
98
+ "state": "Error"
99
+ }
100
+ }
101
+ }
102
+ };
103
+
104
+ // Test is unstable - system itself can close the popup
105
+ // TODO: discuss local server usage for assertion tests execution
106
+ describe.skip("assertion - expectUnsupportedNavigationPopup", function () {
107
+ it("Preparation", async function () {
108
+ await ui5.navigation.navigateToApplication("Shell-home", true);
109
+ await ui5.session.loginFiori("PURCHASER", "Welcome2!");
110
+ });
111
+
112
+ it("Execution", async function () {
113
+ await ui5.navigation.navigateToApplication("SomeWrong-intent", true);
114
+ });
115
+
116
+ it("Verification", async function () {
117
+ await ui5.assertion.expectUnsupportedNavigationPopup("#SomeWrong-intent");
118
+ });
119
+
120
+ it("Clean Up", async function () {
121
+ await ui5.session.logout();
122
+ });
123
+ });
124
+
125
+ // Test is unstable - system itself can close the popup
126
+ // TODO: discuss local server usage for assertion tests execution
127
+ describe.skip("assertion - expectUnsupportedNavigationPopup with '&' (unhappy case, another error popup)", function () {
128
+ it("Preparation", async function () {
129
+ await ui5.navigation.navigateToApplication("Shell-home", true);
130
+ await ui5.session.loginFiori("PURCHASER", "Welcome2!");
131
+ });
132
+
133
+ it("Execution", async function () {
134
+ await ui5.navigation.navigateToApplication("SomeWrongIntentWith&", false);
135
+ });
136
+
137
+ it("Verification", async function () {
138
+ await expect(ui5.assertion.expectUnsupportedNavigationPopup("#SomeWrongIntentWith&"))
139
+ .rejects.toThrow(/No visible elements found/);
140
+ const textElement = await ui5.element.getDisplayed(selectorForErrorPopupText);
141
+ const text = await textElement.getText();
142
+ await common.assertion.expectEqual(text, "Could not open app. Please try again later.");
143
+ });
144
+
145
+ it("Clean Up", async function () {
146
+ await ui5.session.logout();
147
+ });
148
+ });
@@ -0,0 +1,153 @@
1
+ "use strict";
2
+
3
+ describe("navigation - navigateToApplicationAndRetry with closePopups=true", function () {
4
+ const queryToClosePopups = "help-readCatalog=false&help-stateUACP=PRODUCTION";
5
+
6
+ it("Execution & Verification", async function () {
7
+ // First navigation - to #Shell-home
8
+ // "http://localhost:34099/ui?help-readCatalog=false&help-stateUACP=PRODUCTION#Shell-home" - as preventPopups=true
9
+ let urlExpected = `${await util.browser.getBaseUrl()}?${queryToClosePopups}#Shell-home`;
10
+
11
+ await ui5.navigation.navigateToApplicationAndRetry("Shell-home"); // closePopups=true by default
12
+ let button = await nonUi5.element.getById("parseUrl");
13
+ await nonUi5.userInteraction.click(button);
14
+
15
+ await common.assertion.expectUrlToBe(urlExpected);
16
+
17
+ let parsedUrlElement = await nonUi5.element.getById("navigationUrl");
18
+ let parsedUrlValue = await nonUi5.element.getValue(parsedUrlElement);
19
+
20
+ await common.assertion.expectEqual(urlExpected, parsedUrlValue);
21
+
22
+ // Second navigation - to #PurchaseOrder-manage
23
+ // "http://localhost:34099/ui?help-readCatalog=false&help-stateUACP=PRODUCTION#PurchaseOrder-manage" - as preventPopups=true
24
+ urlExpected = `${await util.browser.getBaseUrl()}?${queryToClosePopups}#PurchaseOrder-manage`;
25
+
26
+ await ui5.navigation.navigateToApplicationAndRetry("PurchaseOrder-manage"); // closePopups=true by default
27
+ button = await nonUi5.element.getById("parseUrl");
28
+ await nonUi5.userInteraction.click(button);
29
+
30
+ await common.assertion.expectUrlToBe(urlExpected);
31
+
32
+ parsedUrlElement = await nonUi5.element.getById("navigationUrl");
33
+ parsedUrlValue = await nonUi5.element.getValue(parsedUrlElement);
34
+
35
+ await common.assertion.expectEqual(urlExpected, parsedUrlValue);
36
+
37
+ });
38
+ });
39
+
40
+ describe("navigation - navigateToApplicationAndRetry with closePopups=false", function () {
41
+ it("Execution & Verification", async function () {
42
+ // First navigation - to #Shell-home
43
+ // http://localhost:34099/ui#Shell-home
44
+ let urlExpected = `${await util.browser.getBaseUrl()}#Shell-home`;
45
+
46
+ await ui5.navigation.navigateToApplicationAndRetry("Shell-home", false); // closePopups=false
47
+ let button = await nonUi5.element.getById("parseUrl");
48
+ await nonUi5.userInteraction.click(button);
49
+
50
+ await common.assertion.expectUrlToBe(urlExpected);
51
+
52
+ let parsedUrlElement = await nonUi5.element.getById("navigationUrl");
53
+ let parsedUrlValue = await nonUi5.element.getValue(parsedUrlElement);
54
+
55
+ await common.assertion.expectEqual(urlExpected, parsedUrlValue);
56
+
57
+ // Second navigation - to #PurchaseOrder-manage
58
+ // http://localhost:34099/ui#PurchaseOrder-manage
59
+ urlExpected = `${await util.browser.getBaseUrl()}#PurchaseOrder-manage`;
60
+
61
+ await ui5.navigation.navigateToApplicationAndRetry("PurchaseOrder-manage", false); // closePopups=false
62
+ button = await nonUi5.element.getById("parseUrl");
63
+ await nonUi5.userInteraction.click(button);
64
+
65
+ await common.assertion.expectUrlToBe(urlExpected);
66
+
67
+ parsedUrlElement = await nonUi5.element.getById("navigationUrl");
68
+ parsedUrlValue = await nonUi5.element.getValue(parsedUrlElement);
69
+
70
+ await common.assertion.expectEqual(urlExpected, parsedUrlValue);
71
+
72
+ });
73
+ });
74
+
75
+ describe("navigation - navigateToApplicationAndRetry wrong navigation intent type with/without verification(unhappy case)", function () {
76
+ const wrongApplication = {
77
+ strange: "intent"
78
+ };
79
+ const application = "Shell-home";
80
+
81
+ it("Execution & Verification", async function () {
82
+ await ui5.navigation.navigateToApplicationAndRetry(application, false, true); // closePopups=false, verify=true
83
+
84
+ await ui5.navigation.navigateToApplicationAndRetry(wrongApplication, false, false); // closePopups=false, verify=false - no verification
85
+ const currentUrl = await browser.getUrl();
86
+
87
+ // system first navigates to 'https://qs9-715.wdf.sap.corp/ui#%5Bobject%20Object%5D'
88
+ expect(currentUrl).toContain(browser.config.baseUrl + "#[object%20Object]");
89
+
90
+ await expect(ui5.navigation.navigateToApplicationAndRetry(wrongApplication, false, true)) // verify = true,
91
+ .rejects.toThrow(/failed/);
92
+ });
93
+ });
94
+
95
+
96
+ const selectorForErrorPopupText = {
97
+ "elementProperties": {
98
+ "metadata": "sap.m.Text",
99
+ "ancestorProperties": {
100
+ "elementProperties": {
101
+ "metadata": "sap.m.Dialog",
102
+ "type": "Message",
103
+ "state": "Error"
104
+ }
105
+ }
106
+ }
107
+ };
108
+
109
+ // Test is unstable - system itself can close the popup
110
+ // TODO: discuss local server usage for assertion tests execution
111
+ describe.skip("assertion - expectUnsupportedNavigationPopup", function () {
112
+ it("Preparation", async function () {
113
+ await ui5.navigation.navigateToApplicationAndRetry("Shell-home", true);
114
+ await ui5.session.loginFiori("PURCHASER", "Welcome2!");
115
+ });
116
+
117
+ it("Execution", async function () {
118
+ await ui5.navigation.navigateToApplicationAndRetry("SomeWrong-intent", false);
119
+ });
120
+
121
+ it("Verification", async function () {
122
+ await ui5.assertion.expectUnsupportedNavigationPopup("#SomeWrong-intent");
123
+ });
124
+
125
+ it("Clean Up", async function () {
126
+ await ui5.session.logout();
127
+ });
128
+ });
129
+
130
+ // Test is unstable - system itself can close the popup
131
+ // TODO: discuss local server usage for assertion tests execution
132
+ describe.skip("assertion - expectUnsupportedNavigationPopup with '&' (unhappy case, another error popup)", function () {
133
+ it("Preparation", async function () {
134
+ await ui5.navigation.navigateToApplicationAndRetry("Shell-home", true);
135
+ await ui5.session.loginFiori("PURCHASER", "Welcome2!");
136
+ });
137
+
138
+ it("Execution", async function () {
139
+ await ui5.navigation.navigateToApplicationAndRetry("SomeWrongIntentWith&", false);
140
+ });
141
+
142
+ it("Verification", async function () {
143
+ await expect(ui5.assertion.expectUnsupportedNavigationPopup("#SomeWrongIntentWith&"))
144
+ .rejects.toThrow(/No visible elements found/);
145
+ const textElement = await ui5.element.getDisplayed(selectorForErrorPopupText);
146
+ const text = await textElement.getText();
147
+ await common.assertion.expectEqual(text, "Could not open app. Please try again later.");
148
+ });
149
+
150
+ it("Clean Up", async function () {
151
+ await ui5.session.logout();
152
+ });
153
+ });
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ describe("navigation - navigateToApplicationWithQueryParams with query param in url", function () {
3
+ const query = "?sap-language=RU";
4
+ const intent = "PurchaseOrder-manage";
5
+
6
+ it("Preparation", async function () {
7
+ await ui5.navigation.navigateToApplication("Shell-home", false);
8
+ const urlExpected = `${await util.browser.getBaseUrl()}#Shell-home`;
9
+ await common.assertion.expectUrlToBe(urlExpected);
10
+ });
11
+
12
+ it("Execution", async function () {
13
+ await ui5.navigation.navigateToApplicationWithQueryParams(intent, query, false);
14
+ });
15
+
16
+ it("Verification", async function () {
17
+ const urlExpected = `${await util.browser.getBaseUrl()}${query}#${intent}`;
18
+ await common.assertion.expectUrlToBe(urlExpected);
19
+ });
20
+ });
21
+
22
+ describe("navigation - navigateToApplicationWithQueryParams with wrong param in url", function () {
23
+ const query = "unknownParam=value"; // query without '?' mark
24
+ const intent = "PurchaseOrder-manage";
25
+
26
+ it("Preparation", async function () {
27
+ await ui5.navigation.navigateToApplication("Shell-home", false);
28
+ const urlExpected = `${await util.browser.getBaseUrl()}#Shell-home`;
29
+ await common.assertion.expectUrlToBe(urlExpected);
30
+ });
31
+
32
+ it("Execution", async function () {
33
+ await ui5.navigation.navigateToApplicationWithQueryParams(intent, query, false);
34
+ });
35
+
36
+
37
+ it("Verification", async function () {
38
+ const urlExpected = `${await util.browser.getBaseUrl()}${query}#${intent}`;
39
+ await common.assertion.expectUrlToBe(urlExpected);
40
+
41
+ // if 'query' includes no "?", url will be interpreted as another (unsupported) mount
42
+ await expect(nonUi5.element.getById("parseUrl"))
43
+ .rejects.toThrow(/Element with id "parseUrl" not found/);
44
+ });
45
+ });
46
+
47
+ describe("navigation - navigateToApplicationWithQueryParams with empty param in url", function () {
48
+ const intent = "PurchaseOrder-manage";
49
+
50
+ it("Preparation", async function () {
51
+ await ui5.navigation.navigateToApplication("Shell-home");
52
+ });
53
+
54
+ it("Execution", async function () {
55
+ await ui5.navigation.navigateToApplicationWithQueryParams(intent, "", false);
56
+ });
57
+
58
+ it("Verification", async function () {
59
+ // No query
60
+ const urlExpected = `${await util.browser.getBaseUrl()}#${intent}`;
61
+ await common.assertion.expectUrlToBe(urlExpected);
62
+ });
63
+ });
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+
3
+ describe("navigation - navigateToApplicationWithQueryParamsAndRetry with query param in url", function () {
4
+ const query = "?sap-language=RU";
5
+ const intent = "PurchaseOrder-manage";
6
+
7
+ it("Preparation", async function () {
8
+ await ui5.navigation.navigateToApplication("Shell-home", false);
9
+ const urlExpected = `${await util.browser.getBaseUrl()}#Shell-home`;
10
+ await common.assertion.expectUrlToBe(urlExpected);
11
+ });
12
+
13
+ it("Execution", async function () {
14
+ await ui5.navigation.navigateToApplicationWithQueryParamsAndRetry(intent, query, false);
15
+ });
16
+
17
+ it("Verification", async function () {
18
+ const urlExpected = `${await util.browser.getBaseUrl()}${query}#${intent}`;
19
+ await common.assertion.expectUrlToBe(urlExpected);
20
+ });
21
+ });
22
+
23
+ describe("navigation - navigateToApplicationWithQueryParamsAndRetry with wrong param in url", function () {
24
+ const query = "unknownParam=value"; // query without '?' mark
25
+ const intent = "PurchaseOrder-manage";
26
+
27
+ it("Preparation", async function () {
28
+ await ui5.navigation.navigateToApplication("Shell-home", false);
29
+ const urlExpected = `${await util.browser.getBaseUrl()}#Shell-home`;
30
+ await common.assertion.expectUrlToBe(urlExpected);
31
+ });
32
+
33
+ it("Execution", async function () {
34
+ await ui5.navigation.navigateToApplicationWithQueryParamsAndRetry(intent, query, false);
35
+ });
36
+
37
+
38
+ it("Verification", async function () {
39
+ const urlExpected = `${await util.browser.getBaseUrl()}${query}#${intent}`;
40
+ await common.assertion.expectUrlToBe(urlExpected);
41
+
42
+ // if 'query' includes no "?", url will be interpreted as another (unsupported) mount
43
+ await expect(nonUi5.element.getById("parseUrl"))
44
+ .rejects.toThrow(/Element with id "parseUrl" not found/);
45
+ });
46
+ });
47
+
48
+ describe("navigation - navigateToApplicationWithQueryParamsAndRetry with empty param in url", function () {
49
+ const intent = "PurchaseOrder-manage";
50
+
51
+ it("Preparation", async function () {
52
+ await ui5.navigation.navigateToApplication("Shell-home");
53
+ });
54
+
55
+ it("Execution", async function () {
56
+ await ui5.navigation.navigateToApplicationWithQueryParamsAndRetry(intent, "", false);
57
+ });
58
+
59
+ it("Verification", async function () {
60
+ // No query
61
+ const urlExpected = `${await util.browser.getBaseUrl()}#${intent}`;
62
+ await common.assertion.expectUrlToBe(urlExpected);
63
+ });
64
+ });
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+
3
+ describe("navigation - navigateToSystemAndApplication (s4)", function () {
4
+ const system = "qs9-715.wdf.sap.corp";
5
+ const application = "PurchaseOrder-manage";
6
+
7
+ it("Execution & Verification", async function () {
8
+ await ui5.navigation.navigateToSystemAndApplication(system, "Shell-home", false);
9
+ await ui5.session.loginFiori("PURCHASER", "Welcome2!");
10
+
11
+ await ui5.navigation.navigateToSystemAndApplication(system, application, false);
12
+ });
13
+
14
+ it("Verification", async function () {
15
+ await ui5.navigationBar.expectPageTitle("Manage Purchase Orders");
16
+ });
17
+
18
+
19
+ it("Clean Up", async function () {
20
+ await ui5.session.logout();
21
+ });
22
+ });
23
+
24
+ describe("navigation - navigateToSystemAndApplication wrong navigation intent type in demo url with/without verification(unhappy case)", function () {
25
+ const system = "qs9-715.wdf.sap.corp";
26
+ const wrongApplication = {
27
+ strange: "intent"
28
+ };
29
+ const application = "Shell-home";
30
+
31
+ it("Execution & Verification", async function () {
32
+ await ui5.navigation.navigateToSystemAndApplication(system, application, false);
33
+ await ui5.session.loginFiori("PURCHASER", "Welcome2!");
34
+
35
+ await ui5.navigation.navigateToSystemAndApplication(system, wrongApplication, false); // verify = false by default
36
+ const currentUrl = await browser.getUrl();
37
+ // first navigate to 'https://qs9-715.wdf.sap.corp/ui#%5Bobject%20Object%5D'
38
+ // later, in a second, navigate to 'https://qs9-715.wdf.sap.corp/ui#Shell-home'
39
+ // Cannot test the intent inside the url, because it changes too fast in case of wrong intent
40
+ expect(currentUrl).toContain(system); // check you are still at the qs9-715 page
41
+
42
+ await expect(ui5.navigation.navigateToSystemAndApplication(system, wrongApplication, false, true)) // verify = true
43
+ .rejects.toThrow(/Navigation failed/);
44
+ });
45
+ });
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+
3
+ describe("navigation - navigateToSystemAndApplicationAndRetry", function () {
4
+ const system = "qs9-715.wdf.sap.corp";
5
+ const application = "PurchaseOrder-manage";
6
+
7
+ it("Execution & Verification", async function () {
8
+ await common.navigation.navigateToUrl(`https://${system}`);
9
+ await ui5.session.loginFiori("PURCHASER", "Welcome2!");
10
+
11
+ await ui5.navigation.navigateToSystemAndApplicationAndRetry(system, application, true);
12
+ });
13
+
14
+ it("Verification", async function () {
15
+ await ui5.navigationBar.expectPageTitle("Manage Purchase Orders");
16
+ });
17
+
18
+
19
+ it("Clean Up", async function () {
20
+ await ui5.session.logout();
21
+ });
22
+ });
23
+
24
+ describe("navigation - navigateToSystemAndApplicationAndRetry wrong navigation intent type in demo url with/without verification(unhappy case)", function () {
25
+ const system = "qs9-715.wdf.sap.corp";
26
+ const wrongApplication = {
27
+ strange: "intent"
28
+ };
29
+ const application = "Shell-home";
30
+
31
+ it("Execution & Verification", async function () {
32
+ await ui5.navigation.navigateToSystemAndApplicationAndRetry(system, application, false);
33
+ await ui5.session.loginFiori("PURCHASER", "Welcome2!");
34
+
35
+ await ui5.navigation
36
+ .navigateToSystemAndApplicationAndRetry(system, wrongApplication, false, false); // verify = false - no error during navigation
37
+ const currentUrl = await browser.getUrl();
38
+ expect(currentUrl).toContain(system); // url still includes system
39
+
40
+ await expect(ui5.navigation.navigateToSystemAndApplicationAndRetry(system, wrongApplication, false, true)) // verify = true (by default)
41
+ .rejects.toThrow(/Navigation failed/);
42
+ });
43
+ });