@sap_oss/wdio-qmate-service 3.8.0 → 3.10.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 (526) hide show
  1. package/.eslintrc.yml +4 -4
  2. package/.prettierrc.json +7 -7
  3. package/CLAUDE.md +10 -10
  4. package/CONTRIBUTING.md +1 -1
  5. package/README.md +6 -2
  6. package/lib/reuse/authenticator/authConfig.js +3 -3
  7. package/lib/reuse/authenticator/authConfig.js.map +1 -1
  8. package/lib/reuse/authenticator/authHandler.js +0 -2
  9. package/lib/reuse/authenticator/authHandler.js.map +1 -1
  10. package/lib/reuse/authenticator/basicUrlAuthenticator.js.map +1 -1
  11. package/lib/reuse/authenticator/customAuthenticator.js +1 -3
  12. package/lib/reuse/authenticator/customAuthenticator.js.map +1 -1
  13. package/lib/reuse/authenticator/formAuthenticator.js +1 -3
  14. package/lib/reuse/authenticator/formAuthenticator.js.map +1 -1
  15. package/lib/reuse/helper/clientsideUI5scripts.js +15 -19
  16. package/lib/reuse/helper/clientsideUI5scripts.js.map +1 -1
  17. package/lib/reuse/helper/dateTimeFormatParser.js +8 -2
  18. package/lib/reuse/helper/dateTimeFormatParser.js.map +1 -1
  19. package/lib/reuse/helper/elementHighlight.js +2 -6
  20. package/lib/reuse/helper/elementHighlight.js.map +1 -1
  21. package/lib/reuse/helper/errorHandler.js +2 -9
  22. package/lib/reuse/helper/errorHandler.js.map +1 -1
  23. package/lib/reuse/helper/jsDocGen.js +1 -1
  24. package/lib/reuse/helper/jsDocGen.js.map +1 -1
  25. package/lib/reuse/helper/tableHelper.js +3 -0
  26. package/lib/reuse/helper/tableHelper.js.map +1 -1
  27. package/lib/reuse/helper/timeHelper.js +3 -7
  28. package/lib/reuse/helper/timeHelper.js.map +1 -1
  29. package/lib/reuse/helper/verboseLogger.js.map +1 -1
  30. package/lib/reuse/index.js +0 -17
  31. package/lib/reuse/index.js.map +1 -1
  32. package/lib/reuse/modules/common/constants/date.constants.js +0 -2
  33. package/lib/reuse/modules/common/constants/date.constants.js.map +1 -1
  34. package/lib/reuse/modules/common/navigation.js.map +1 -1
  35. package/lib/reuse/modules/flp/userSettings.d.ts +2 -0
  36. package/lib/reuse/modules/flp/userSettings.js +6 -1
  37. package/lib/reuse/modules/flp/userSettings.js.map +1 -1
  38. package/lib/reuse/modules/nonUi5/NonUi5.js.map +1 -1
  39. package/lib/reuse/modules/nonUi5/session.js.map +1 -1
  40. package/lib/reuse/modules/nonUi5/userInteraction.js.map +1 -1
  41. package/lib/reuse/modules/ui5/assertion.d.ts +1 -0
  42. package/lib/reuse/modules/ui5/assertion.js +11 -4
  43. package/lib/reuse/modules/ui5/assertion.js.map +1 -1
  44. package/lib/reuse/modules/ui5/control.js.map +1 -1
  45. package/lib/reuse/modules/ui5/date.js +15 -15
  46. package/lib/reuse/modules/ui5/date.js.map +1 -1
  47. package/lib/reuse/modules/ui5/element.d.ts +2 -2
  48. package/lib/reuse/modules/ui5/element.js +7 -4
  49. package/lib/reuse/modules/ui5/element.js.map +1 -1
  50. package/lib/reuse/modules/ui5/session.d.ts +4 -2
  51. package/lib/reuse/modules/ui5/session.js +32 -4
  52. package/lib/reuse/modules/ui5/session.js.map +1 -1
  53. package/lib/reuse/modules/ui5/table.js +25 -9
  54. package/lib/reuse/modules/ui5/table.js.map +1 -1
  55. package/lib/reuse/modules/ui5/userInteraction.d.ts +1 -1
  56. package/lib/reuse/modules/ui5/userInteraction.js +46 -59
  57. package/lib/reuse/modules/ui5/userInteraction.js.map +1 -1
  58. package/lib/reuse/modules/util/constants/formatter.constants.js +0 -2
  59. package/lib/reuse/modules/util/constants/formatter.constants.js.map +1 -1
  60. package/lib/reuse/modules/util/file.d.ts +7 -4
  61. package/lib/reuse/modules/util/file.js +34 -7
  62. package/lib/reuse/modules/util/file.js.map +1 -1
  63. package/lib/reuse/modules/util/formatter.js +7 -3
  64. package/lib/reuse/modules/util/formatter.js.map +1 -1
  65. package/lib/reuse/modules/util/function.js +1 -5
  66. package/lib/reuse/modules/util/function.js.map +1 -1
  67. package/lib/scripts/clientsideUI5scripts.js +22 -29
  68. package/lib/scripts/clientsideUI5scripts.js.map +1 -1
  69. package/lib/scripts/dataExchange/dataExchange.js.map +1 -1
  70. package/lib/scripts/dataExchange/dataExchangeUtil.js +3 -13
  71. package/lib/scripts/dataExchange/dataExchangeUtil.js.map +1 -1
  72. package/lib/scripts/hooks/before.js +0 -1
  73. package/lib/scripts/hooks/before.js.map +1 -1
  74. package/lib/scripts/hooks/onComplete.js +2 -3
  75. package/lib/scripts/hooks/onComplete.js.map +1 -1
  76. package/lib/scripts/hooks/utils/addLocatorCommands.js.map +1 -1
  77. package/lib/scripts/hooks/utils/browserLog.js.map +1 -1
  78. package/lib/scripts/hooks/utils/cycle.js +3 -9
  79. package/lib/scripts/hooks/utils/cycle.js.map +1 -1
  80. package/lib/scripts/hooks/utils/dataExchangeCommands.js +1 -2
  81. package/lib/scripts/hooks/utils/dataExchangeCommands.js.map +1 -1
  82. package/lib/scripts/hooks/utils/isBrowserDefined.js.map +1 -1
  83. package/lib/scripts/locators/qmateLocator.js +30 -53
  84. package/lib/scripts/locators/qmateLocator.js.map +1 -1
  85. package/lib/scripts/locators/qmateLocatorSrc/comparators/DomPropertiesComparator.js +2 -2
  86. package/lib/scripts/locators/qmateLocatorSrc/comparators/DomPropertiesComparator.js.map +1 -1
  87. package/lib/scripts/locators/qmateLocatorSrc/constants/IgnoredMetadataList.d.ts +1 -0
  88. package/lib/scripts/locators/qmateLocatorSrc/constants/IgnoredMetadataList.js +10 -0
  89. package/lib/scripts/locators/qmateLocatorSrc/constants/IgnoredMetadataList.js.map +1 -0
  90. package/lib/scripts/locators/qmateLocatorSrc/filters/ElementFilter.d.ts +2 -3
  91. package/lib/scripts/locators/qmateLocatorSrc/filters/ElementFilter.js +18 -22
  92. package/lib/scripts/locators/qmateLocatorSrc/filters/ElementFilter.js.map +1 -1
  93. package/lib/scripts/locators/qmateLocatorSrc/utils/UI5ControlHandler.js +3 -2
  94. package/lib/scripts/locators/qmateLocatorSrc/utils/UI5ControlHandler.js.map +1 -1
  95. package/lib/scripts/locators/uiveri5Locator.js +1 -1
  96. package/lib/scripts/locators/uiveri5Locator.js.map +1 -1
  97. package/lib/scripts/stats/createUsage.js +1 -1
  98. package/lib/scripts/stats/createUsage.js.map +1 -1
  99. package/lib/scripts/stats/getOperatingSystem.js.map +1 -1
  100. package/lib/scripts/stats/getUserId.js +1 -1
  101. package/lib/scripts/stats/stats.js +9 -9
  102. package/lib/scripts/stats/stats.js.map +1 -1
  103. package/lib/scripts/stats/updateUsage.js +1 -1
  104. package/mkdocs.yml +18 -18
  105. package/package.json +18 -26
  106. package/packages/qcrypt/dist/classes/Decrypter.d.ts +38 -38
  107. package/packages/qcrypt/dist/classes/Decrypter.js +150 -153
  108. package/packages/qcrypt/dist/classes/Encrypter.d.ts +46 -46
  109. package/packages/qcrypt/dist/classes/Encrypter.js +144 -144
  110. package/packages/qcrypt/dist/classes/KeyGenerator.d.ts +16 -16
  111. package/packages/qcrypt/dist/classes/KeyGenerator.js +45 -43
  112. package/packages/qcrypt/dist/classes/helper/ErrorHandler.d.ts +8 -8
  113. package/packages/qcrypt/dist/classes/helper/ErrorHandler.js +48 -50
  114. package/packages/qcrypt/dist/classes/helper/Util.d.ts +67 -67
  115. package/packages/qcrypt/dist/classes/helper/Util.js +113 -114
  116. package/packages/qcrypt/dist/index.js +5 -3
  117. package/packages/qcrypt/dist/types/common.d.ts +13 -13
  118. package/reuseApi.json +8 -468
  119. package/test/.eslintrc.yml +1 -1
  120. package/test/authenticator/staticLogin/configCustom.js +1 -3
  121. package/test/authenticator/staticLogin/configCustomViaConfig.js +1 -3
  122. package/test/authenticator/staticLogin/configFiori.js +1 -3
  123. package/test/authenticator/staticLogin/configPlain.js +1 -4
  124. package/test/authenticator/staticLogin/configSapCloud.js +1 -3
  125. package/test/authenticator/staticLogin/html/custom.html +4 -4
  126. package/test/authenticator/staticLogin/html/fiori.html +4 -4
  127. package/test/authenticator/staticLogin/html/home.html +2 -2
  128. package/test/authenticator/staticLogin/html/sapCloud.html +4 -4
  129. package/test/authenticator/staticLogin/specs/custom.spec.js +1 -5
  130. package/test/authenticator/staticLogin/specs/plain.spec.js +0 -5
  131. package/test/authenticator/staticLogin/staticServerConfig.js +13 -10
  132. package/test/authenticator/systemLogin/configCustom.js +3 -5
  133. package/test/authenticator/systemLogin/configFiori.js +2 -5
  134. package/test/authenticator/systemLogin/configPlain.js +3 -5
  135. package/test/authenticator/systemLogin/configSapCloud.js +3 -5
  136. package/test/authenticator/systemLogin/specs/custom.spec.js +3 -5
  137. package/test/authenticator/systemLogin/specs/fiori.spec.js +3 -4
  138. package/test/authenticator/systemLogin/specs/plain.spec.js +3 -5
  139. package/test/authenticator/systemLogin/specs/sapCloud.spec.js +3 -5
  140. package/test/core/dataExchange/config.export.js +11 -18
  141. package/test/core/dataExchange/config.import.js +7 -12
  142. package/test/core/dataExchange/config.js +9 -11
  143. package/test/core/dataExchange/config.parallel.group.js +53 -61
  144. package/test/core/dataExchange/config.parallel.js +53 -58
  145. package/test/core/dataExchange/data/another/folder/data/anotherFolder/purchase-orders/Limit-Purchase-Order.json +1 -1
  146. package/test/core/dataExchange/data/another/folder/data/anotherFolder/purchase-orders/ServicePurchaseOrder.2Items.json +1 -1
  147. package/test/core/dataExchange/data/another/folder/data/anotherFolder/purchaseRequisition_HI.json +1 -1
  148. package/test/core/dataExchange/data/another/folder/data/anotherFolder/subfolder/LimitPurchaseOrder.json +1 -1
  149. package/test/core/dataExchange/data/another/folder/data/anotherFolder/subfolder/PurchaseOrderItems.json +1 -1
  150. package/test/core/dataExchange/data/another/folder/data/anotherFolder/subfolder/PurchaseOrderWithScheduline.json +1 -1
  151. package/test/core/dataExchange/data/another/folder/data/anotherFolder/subfolder/ServiceAndMaterialPurchaseOrder.json +1 -1
  152. package/test/core/dataExchange/data/another/folder/data/anotherFolder/subfolder/ServicePurchaseOrder.json +1 -1
  153. package/test/core/dataExchange/data/another/folder/data/anotherFolder/subfolder/ServicePurchaseOrder2Items.json +1 -1
  154. package/test/core/dataExchange/data/my/folder/data/qs9/data.json +1 -1
  155. package/test/core/dataExchange/data/my/folder/data/qs9/purchaseRequisition.json +1 -1
  156. package/test/core/dataExchange/data/my/folder/data/qs9/supplierInvoice.json +1 -1
  157. package/test/core/dataExchange/data/my/folder/data/qs9/webUser.json +1 -1
  158. package/test/core/dataExchange/data/ui/moreDataFolder/anotherUser.json +1 -1
  159. package/test/core/dataExchange/data/ui/user.json +1 -1
  160. package/test/core/dataExchange/data/ui/webUser.json +1 -1
  161. package/test/core/dataExchange/specs/export.fast.spec.js +11 -16
  162. package/test/core/dataExchange/specs/export.slow.spec.js +13 -18
  163. package/test/core/dataExchange/specs/export.spec.js +13 -23
  164. package/test/core/dataExchange/specs/import.spec.js +6 -23
  165. package/test/core/dataExchange/specs/importExport.spec.js +47 -62
  166. package/test/core/dataExchange/utils.js +11 -15
  167. package/test/core/functional/README.md +8 -5
  168. package/test/core/functional/chaining/chaining.test.js +46 -49
  169. package/test/core/functional/chaining/test.conf.js +1 -4
  170. package/test/core/functional/locators/ancestorProperties.test.js +49 -59
  171. package/test/core/functional/locators/childProperties.test.js +30 -36
  172. package/test/core/functional/locators/descendantProperties.test.js +50 -57
  173. package/test/core/functional/locators/domProperties.test.js +25 -29
  174. package/test/core/functional/locators/elementProperties.test.js +30 -29
  175. package/test/core/functional/locators/mixedProperties.test.js +317 -108
  176. package/test/core/functional/locators/parentProperties.test.js +18 -22
  177. package/test/core/functional/locators/siblingProperties.test.js +66 -75
  178. package/test/core/functional/locators/utils.js +1 -1
  179. package/test/core/functional/nativeBrowser/runInBrowser.test.js +84 -58
  180. package/test/core/functional/nativeBrowser/test.conf.js +1 -3
  181. package/test/core/functional/nonUi5/basic.test.js +3 -3
  182. package/test/core/functional/nonUi5/getWithDomElement.test.js +0 -2
  183. package/test/core/functional/nonUi5/getWithDomElements.test.js +2 -3
  184. package/test/core/functional/nonUi5/test.conf.js +1 -4
  185. package/test/core/functional/ui5Properties/countries.json +1 -1
  186. package/test/core/functional/ui5Properties/getAggregations.test.js +19 -27
  187. package/test/core/functional/ui5Properties/getAssociations.test.js +3 -3
  188. package/test/core/functional/ui5Properties/getBindingInfos.test.js +17 -17
  189. package/test/core/functional/ui5Properties/getProperties.test.js +25 -33
  190. package/test/core/functional/ui5Properties/test.conf.js +1 -6
  191. package/test/core/functional/uiveri5/sample.test.js +1 -2
  192. package/test/core/functional/uiveri5/test.conf.js +1 -3
  193. package/test/core/testIntegration/config.js +1 -1
  194. package/test/core/testIntegration/configMultiCombo.js +1 -1
  195. package/test/core/testIntegration/configTable.js +1 -1
  196. package/test/core/testIntegration/filters1.spec.js +908 -870
  197. package/test/core/testIntegration/multicombobox.spec.js +64 -60
  198. package/test/core/testIntegration/table.spec.js +35 -33
  199. package/test/helper/configurations/base.conf.js +6 -3
  200. package/test/helper/configurations/chrome.headless.conf.js +1 -1
  201. package/test/helper/sleeper.js +1 -1
  202. package/test/reuse/common/assertion/expectDefined.spec.js +1 -2
  203. package/test/reuse/common/assertion/expectEqual.spec.js +36 -26
  204. package/test/reuse/common/assertion/expectFalse.spec.js +1 -1
  205. package/test/reuse/common/assertion/expectTrue.spec.js +1 -1
  206. package/test/reuse/common/assertion/expectUndefined.spec.js +1 -2
  207. package/test/reuse/common/assertion/expectUnequal.spec.js +24 -13
  208. package/test/reuse/common/assertion/expectUrlToBe.spec.js +3 -6
  209. package/test/reuse/common/assertion/test.assertion.conf.js +39 -35
  210. package/test/reuse/common/date/calculate.spec.js +36 -36
  211. package/test/reuse/common/date/calculateWithTime.spec.js +88 -88
  212. package/test/reuse/common/date/getNextMonth.spec.js +3 -3
  213. package/test/reuse/common/date/getNextYear.spec.js +2 -2
  214. package/test/reuse/common/date/getPreviousMonth.spec.js +2 -2
  215. package/test/reuse/common/date/getPreviousYear.spec.js +2 -2
  216. package/test/reuse/common/date/getSpecific.spec.js +2 -2
  217. package/test/reuse/common/date/getToday.spec.js +2 -2
  218. package/test/reuse/common/date/getTomorrow.spec.js +2 -2
  219. package/test/reuse/common/date/test.date.conf.js +1 -1
  220. package/test/reuse/common/navigation/navigateToUrlAndRetry.spec.js +2 -6
  221. package/test/reuse/common/navigation/test.navigation.conf.js +14 -12
  222. package/test/reuse/common/userInteraction/clearAndFillActive.spec.js +1 -3
  223. package/test/reuse/common/userInteraction/clearAndFillActiveAndRetry.spec.js +2 -6
  224. package/test/reuse/common/userInteraction/fillActive.spec.js +2 -6
  225. package/test/reuse/common/userInteraction/fillActiveAndRetry.spec.js +2 -6
  226. package/test/reuse/common/userInteraction/pressKey.spec.js +6 -30
  227. package/test/reuse/common/userInteraction/test.userInteraction.conf.js +36 -38
  228. package/test/reuse/flp/userLocks/data/data.json +1 -1
  229. package/test/reuse/flp/userLocks/deleteExistingLockEntries.spec.js +0 -3
  230. package/test/reuse/flp/userLocks/getNumberOfLockEntries.spec.js +0 -2
  231. package/test/reuse/flp/userLocks/test.userLocks.conf.js +1 -4
  232. package/test/reuse/flp/userSettings/data/data.json +1 -1
  233. package/test/reuse/flp/userSettings/getDateFormatFromUserSettings.spec.js +0 -2
  234. package/test/reuse/flp/userSettings/getLanguageFromUserSettings.spec.js +0 -1
  235. package/test/reuse/flp/userSettings/getTimeFormatFromUserSettings.spec.js +0 -3
  236. package/test/reuse/flp/userSettings/getTimeZoneFromUserSettings.spec.js +0 -2
  237. package/test/reuse/flp/userSettings/setDateFormatFromUserSettings.spec.js +0 -2
  238. package/test/reuse/flp/userSettings/setLanguageFromUserSettings.spec.js +0 -2
  239. package/test/reuse/flp/userSettings/setNumberFormatFromUserSettings.spec.js +1 -3
  240. package/test/reuse/flp/userSettings/setS4UserSettings.spec.js +0 -2
  241. package/test/reuse/flp/userSettings/setTimeFormatFromUserSettings.spec.js +0 -3
  242. package/test/reuse/flp/userSettings/setTimeZoneFromUserSettings.spec.js +0 -2
  243. package/test/reuse/flp/userSettings/test.userSettings.apply.conf.js +1 -3
  244. package/test/reuse/helper/elementHighlight/test.elementHighlight.conf.js +2 -4
  245. package/test/reuse/nonUi5/assertion/expectAttributeToBe.spec.js +4 -11
  246. package/test/reuse/nonUi5/assertion/expectAttributeToContain.spec.js +3 -10
  247. package/test/reuse/nonUi5/assertion/expectCssPropertyValueToBe.spec.js +2 -4
  248. package/test/reuse/nonUi5/assertion/expectToBeNotVisible.spec.js +3 -5
  249. package/test/reuse/nonUi5/assertion/expectToBeVisible.spec.js +2 -2
  250. package/test/reuse/nonUi5/assertion/test.assertion.conf.js +39 -35
  251. package/test/reuse/nonUi5/assertion/test.assertion.sauceLabs.conf.js +40 -42
  252. package/test/reuse/nonUi5/element/getAttributeValue.spec.js +3 -9
  253. package/test/reuse/nonUi5/element/getByChild.spec.js +4 -8
  254. package/test/reuse/nonUi5/element/getByClass.spec.js +2 -7
  255. package/test/reuse/nonUi5/element/getByCss.spec.js +6 -11
  256. package/test/reuse/nonUi5/element/getByCssContainingText.spec.js +2 -6
  257. package/test/reuse/nonUi5/element/getById.spec.js +3 -10
  258. package/test/reuse/nonUi5/element/getByName.spec.js +2 -5
  259. package/test/reuse/nonUi5/element/getByParent.spec.js +5 -15
  260. package/test/reuse/nonUi5/element/getByXPath.spec.js +2 -5
  261. package/test/reuse/nonUi5/element/getCssPropertyValue.spec.js +1 -4
  262. package/test/reuse/nonUi5/element/getValue.spec.js +3 -6
  263. package/test/reuse/nonUi5/element/highlight.spec.js +0 -2
  264. package/test/reuse/nonUi5/element/isPresent.spec.js +1 -3
  265. package/test/reuse/nonUi5/element/isPresentByCss.spec.js +1 -1
  266. package/test/reuse/nonUi5/element/isPresentByXPath.spec.js +0 -1
  267. package/test/reuse/nonUi5/element/setInnerHTML.spec.js +2 -5
  268. package/test/reuse/nonUi5/element/test.element.conf.js +18 -15
  269. package/test/reuse/nonUi5/element/waitForAll.spec.js +2 -5
  270. package/test/reuse/nonUi5/element/waitToBeClickable.spec.js +2 -5
  271. package/test/reuse/nonUi5/element/waitToBePresent.spec.js +2 -3
  272. package/test/reuse/nonUi5/element/waitToBeVisible.spec.js +3 -8
  273. package/test/reuse/nonUi5/navigation/test.navigation.conf.js +1 -3
  274. package/test/reuse/nonUi5/userInteraction/checkAttributeAndValue.spec.js +13 -17
  275. package/test/reuse/nonUi5/userInteraction/clear.spec.js +3 -5
  276. package/test/reuse/nonUi5/userInteraction/clearAndFill.spec.js +1 -1
  277. package/test/reuse/nonUi5/userInteraction/clearAndFillAndRetry.spec.js +1 -3
  278. package/test/reuse/nonUi5/userInteraction/clearAndRetry.spec.js +1 -3
  279. package/test/reuse/nonUi5/userInteraction/click.spec.js +1 -3
  280. package/test/reuse/nonUi5/userInteraction/clickAndRetry.spec.js +2 -6
  281. package/test/reuse/nonUi5/userInteraction/clickElementInSvg.spec.js +1 -3
  282. package/test/reuse/nonUi5/userInteraction/doubleClick.spec.js +1 -1
  283. package/test/reuse/nonUi5/userInteraction/dragAndDrop.spec.js +2 -2
  284. package/test/reuse/nonUi5/userInteraction/fillAndRetry.spec.js +1 -3
  285. package/test/reuse/nonUi5/userInteraction/selectAll.spec.js +2 -2
  286. package/test/reuse/nonUi5/userInteraction/test.userInteraction.conf.js +1 -1
  287. package/test/reuse/nonUi5/userInteraction/test.userInteraction.sauceLabs.conf.js +43 -39
  288. package/test/reuse/service/odata/test.odata.conf.js +4 -7
  289. package/test/reuse/service/rest/db.json +1 -1
  290. package/test/reuse/service/rest/delete.spec.js +3 -10
  291. package/test/reuse/service/rest/get.spec.js +2 -9
  292. package/test/reuse/service/rest/init.spec.js +0 -2
  293. package/test/reuse/service/rest/patch.spec.js +5 -12
  294. package/test/reuse/service/rest/post.spec.js +6 -17
  295. package/test/reuse/service/rest/put.spec.js +10 -17
  296. package/test/reuse/service/rest/rest-server.js +5 -5
  297. package/test/reuse/service/rest/test.rest.conf.js +4 -11
  298. package/test/reuse/ui5/assertion/expectAttributeToBe.spec.js +77 -42
  299. package/test/reuse/ui5/assertion/expectAttributeToContain.spec.js +48 -18
  300. package/test/reuse/ui5/assertion/expectBindingContextPathToBe.spec.js +41 -42
  301. package/test/reuse/ui5/assertion/expectBindingPathToBe.spec.js +58 -64
  302. package/test/reuse/ui5/assertion/expectCssPropertyValueToBe.spec.js +1 -2
  303. package/test/reuse/ui5/assertion/expectMessageToastTextToBe.spec.js +7 -11
  304. package/test/reuse/ui5/assertion/expectTextToBe.spec.js +13 -13
  305. package/test/reuse/ui5/assertion/expectToBeEnabled.spec.js +2 -6
  306. package/test/reuse/ui5/assertion/expectToBeNotEnabled.spec.js +17 -20
  307. package/test/reuse/ui5/assertion/expectToBeNotVisible.spec.js +13 -14
  308. package/test/reuse/ui5/assertion/expectToBeVisible.spec.js +15 -20
  309. package/test/reuse/ui5/assertion/expectToBeVisibleInViewport.spec.js +11 -15
  310. package/test/reuse/ui5/assertion/expectValidationError.spec.js +14 -16
  311. package/test/reuse/ui5/assertion/expectValidationSuccess.spec.js +14 -16
  312. package/test/reuse/ui5/assertion/expectValueToBe.spec.js +14 -17
  313. package/test/reuse/ui5/assertion/expectValueToBeDefined.spec.js +6 -9
  314. package/test/reuse/ui5/assertion/test.assertion.sauceLab.conf.js +3 -3
  315. package/test/reuse/ui5/confirmationDialog/clickButton.spec.js +24 -28
  316. package/test/reuse/ui5/confirmationDialog/clickCancel.spec.js +24 -25
  317. package/test/reuse/ui5/confirmationDialog/clickCreate.spec.js +1 -1
  318. package/test/reuse/ui5/confirmationDialog/clickDelete.spec.js +25 -28
  319. package/test/reuse/ui5/confirmationDialog/clickNo.spec.js +21 -29
  320. package/test/reuse/ui5/confirmationDialog/clickOk.spec.js +19 -22
  321. package/test/reuse/ui5/confirmationDialog/clickRevokeApproval.spec.js +1 -1
  322. package/test/reuse/ui5/confirmationDialog/clickYes.spec.js +17 -25
  323. package/test/reuse/ui5/confirmationDialog/test.confirmationDialog.conf.js +1 -1
  324. package/test/reuse/ui5/confirmationDialog/test.confirmationDialog.sauceLab.conf.js +4 -4
  325. package/test/reuse/ui5/control/execute.spec.js +37 -25
  326. package/test/reuse/ui5/control/focus.spec.js +29 -29
  327. package/test/reuse/ui5/control/getAggregationProperty.spec.js +25 -21
  328. package/test/reuse/ui5/control/getAssociationProperty.spec.js +13 -15
  329. package/test/reuse/ui5/control/getBindingContextPathProperty.spec.js +12 -10
  330. package/test/reuse/ui5/control/getProperty.spec.js +12 -10
  331. package/test/reuse/ui5/control/getPropertyBinding.spec.js +12 -10
  332. package/test/reuse/ui5/control/test.control.sauceLab.conf.js +3 -4
  333. package/test/reuse/ui5/date/fillRange.spec.js +7 -10
  334. package/test/reuse/ui5/date/pick.spec.js +31 -34
  335. package/test/reuse/ui5/date/pickRange.spec.js +31 -25
  336. package/test/reuse/ui5/date/pickWithTime.spec.js +8 -10
  337. package/test/reuse/ui5/date/test.date.conf.js +3 -8
  338. package/test/reuse/ui5/date/test.date.sauceLab.conf.js +4 -9
  339. package/test/reuse/ui5/element/getBindingValue.spec.js +17 -23
  340. package/test/reuse/ui5/element/getByChild.spec.js +52 -52
  341. package/test/reuse/ui5/element/getByParent.spec.js +65 -61
  342. package/test/reuse/ui5/element/getByText.spec.js +10 -14
  343. package/test/reuse/ui5/element/getCssPropertyValue.spec.js +1 -1
  344. package/test/reuse/ui5/element/getDisplayed.spec.js +23 -26
  345. package/test/reuse/ui5/element/getId.spec.js +15 -18
  346. package/test/reuse/ui5/element/getPropertyValue.spec.js +19 -23
  347. package/test/reuse/ui5/element/highlight.spec.js +9 -12
  348. package/test/reuse/ui5/element/isVisible.spec.js +12 -12
  349. package/test/reuse/ui5/element/test.element.sauceLab.conf.js +3 -5
  350. package/test/reuse/ui5/element/waitForAll.spec.js +10 -15
  351. package/test/reuse/ui5/errorDialog/clickClose.spec.js +6 -9
  352. package/test/reuse/ui5/errorDialog/expectToBeVisible.spec.js +7 -11
  353. package/test/reuse/ui5/errorDialog/test.errorDialog.conf.js +2 -5
  354. package/test/reuse/ui5/errorDialog/test.errorDialog.sauceLab.conf.js +4 -9
  355. package/test/reuse/ui5/mockserver_qunit/Component.js +3 -8
  356. package/test/reuse/ui5/mockserver_qunit/controller/App.controller.js +12 -18
  357. package/test/reuse/ui5/mockserver_qunit/controller/BaseController.js +3 -10
  358. package/test/reuse/ui5/mockserver_qunit/controller/Home.controller.js +6 -11
  359. package/test/reuse/ui5/mockserver_qunit/controller/NotFound.controller.js +6 -11
  360. package/test/reuse/ui5/mockserver_qunit/controller/employee/Employee.controller.js +10 -16
  361. package/test/reuse/ui5/mockserver_qunit/controller/employee/EmployeeList.controller.js +4 -9
  362. package/test/reuse/ui5/mockserver_qunit/controller/employee/Resume.controller.js +39 -36
  363. package/test/reuse/ui5/mockserver_qunit/controller/employee/overview/EmployeeOverview.controller.js +2 -7
  364. package/test/reuse/ui5/mockserver_qunit/controller/employee/overview/EmployeeOverviewContent.controller.js +66 -79
  365. package/test/reuse/ui5/mockserver_qunit/index.html +19 -18
  366. package/test/reuse/ui5/mockserver_qunit/initMockServer.js +13 -13
  367. package/test/reuse/ui5/mockserver_qunit/localService/mockdata/Employees.json +153 -153
  368. package/test/reuse/ui5/mockserver_qunit/localService/mockdata/Resumes.json +63 -63
  369. package/test/reuse/ui5/mockserver_qunit/localService/mockserver.js +124 -128
  370. package/test/reuse/ui5/mockserver_qunit/localService/mockserverLoadAllData.js +7 -13
  371. package/test/reuse/ui5/mockserver_qunit/manifest.json +169 -167
  372. package/test/reuse/ui5/mockserver_qunit/test/flpSandboxMockServer.html +58 -56
  373. package/test/reuse/ui5/mockserver_qunit/test/flpSandboxMockServerAllData.html +65 -61
  374. package/test/reuse/ui5/mockserver_qunit/test/qmate/ui/config.js +60 -66
  375. package/test/reuse/ui5/mockserver_qunit/test/qmate/ui/qunitExecution/specs/runQUnitTests.spec.js +3 -4
  376. package/test/reuse/ui5/mockserver_qunit/test/qmate/ui/testDisplayNotFound/data/setup.json +8 -10
  377. package/test/reuse/ui5/mockserver_qunit/test/qmate/ui/testDisplayNotFound/specs/testDisplayNotFound.spec.js +16 -18
  378. package/test/reuse/ui5/mockserver_qunit/test/qmate/ui/testShowEmployeeList/data/mock/Employees.json +203 -203
  379. package/test/reuse/ui5/mockserver_qunit/test/qmate/ui/testShowEmployeeList/data/mock/Resumes.json +113 -113
  380. package/test/reuse/ui5/mockserver_qunit/test/qmate/ui/testShowEmployeeList/data/setup.json +8 -10
  381. package/test/reuse/ui5/mockserver_qunit/test/qmate/ui/testShowEmployeeList/data/testShowEmployeeList.json +1 -1
  382. package/test/reuse/ui5/mockserver_qunit/test/qmate/ui/testShowEmployeeList/specs/testShowEmployeeList.spec.js +24 -26
  383. package/test/reuse/ui5/mockserver_qunit/test/qmate/ui/utils/constants.js +2 -2
  384. package/test/reuse/ui5/mockserver_qunit/test/qmate/ui/utils/mockDataMapper.js +5 -6
  385. package/test/reuse/ui5/mockserver_qunit/test/qmate/ui/utils/mockHelper.js +37 -52
  386. package/test/reuse/ui5/mockserver_qunit/test/unit/allTests.js +2 -4
  387. package/test/reuse/ui5/mockserver_qunit/test/unit/unitTests.qunit.html +28 -31
  388. package/test/reuse/ui5/mockserver_qunit/test/unit/utils/Conversions.js +13 -10
  389. package/test/reuse/ui5/navigation/expectUnsupportedNavigationPopup.spec.js +12 -13
  390. package/test/reuse/ui5/navigation/navigateToApplicationWithQueryParams.spec.js +1 -1
  391. package/test/reuse/ui5/navigation/navigateToApplicationWithQueryParamsAndRetry.spec.js +1 -1
  392. package/test/reuse/ui5/navigation/navigateToSystemAndApplication.spec.js +1 -2
  393. package/test/reuse/ui5/navigation/navigateToSystemAndApplicationAndRetry.spec.js +2 -4
  394. package/test/reuse/ui5/navigation/test.navigation.conf.js +2 -7
  395. package/test/reuse/ui5/navigation/test.navigation.sauceLab.conf.js +4 -4
  396. package/test/reuse/ui5/navigation/test.navigation.static.sauceLab.conf.js +4 -4
  397. package/test/reuse/ui5/navigationBar/clickUserIcon.spec.js +5 -10
  398. package/test/reuse/ui5/navigationBar/expectPageTitle.spec.js +2 -3
  399. package/test/reuse/ui5/navigationBar/expectShellHeader.spec.js +2 -3
  400. package/test/reuse/ui5/navigationBar/test.navigationBar.conf.js +2 -8
  401. package/test/reuse/ui5/navigationBar/test.navigationBar.sauceLab.conf.js +4 -10
  402. package/test/reuse/ui5/session/login.spec.js +9 -11
  403. package/test/reuse/ui5/session/loginFiori.spec.js +5 -7
  404. package/test/reuse/ui5/session/loginSapCloud.spec.js +6 -8
  405. package/test/reuse/ui5/session/logout.spec.js +2 -3
  406. package/test/reuse/ui5/session/switchUser.spec.js +1 -1
  407. package/test/reuse/ui5/session/test.session.conf.js +1 -7
  408. package/test/reuse/ui5/session/test.session.sauceLab.conf.js +4 -12
  409. package/test/reuse/ui5/table/clickSettingsButton.spec.js +12 -18
  410. package/test/reuse/ui5/table/getAllColumnValuesByName.spec.js +1 -4
  411. package/test/reuse/ui5/table/getSelectorForRowByIndex.spec.js +11 -14
  412. package/test/reuse/ui5/table/getSelectorsForRowsByValues.spec.js +6 -9
  413. package/test/reuse/ui5/table/getTotalNumberOfRowsByValues.spec.js +1 -3
  414. package/test/reuse/ui5/table/openItemByIndex.spec.js +23 -29
  415. package/test/reuse/ui5/table/openItemByValues.spec.js +27 -38
  416. package/test/reuse/ui5/table/selectRowByValues.spec.js +7 -7
  417. package/test/reuse/ui5/table/sortColumnAscending.spec.js +17 -25
  418. package/test/reuse/ui5/table/sortColumnDescending.spec.js +13 -19
  419. package/test/reuse/ui5/table/test.table.sauceLab.conf.js +4 -8
  420. package/test/reuse/ui5/table/test.table.sauceLab.tunnel.conf.js +4 -8
  421. package/test/reuse/ui5/userInteraction/clear.spec.js +14 -18
  422. package/test/reuse/ui5/userInteraction/clearAndFill.spec.js +28 -29
  423. package/test/reuse/ui5/userInteraction/clearAndFillAndRetry.spec.js +4 -12
  424. package/test/reuse/ui5/userInteraction/clearAndFillSmartFieldInput.spec.js +20 -19
  425. package/test/reuse/ui5/userInteraction/clearAndFillSmartFieldInputAndRetry.spec.js +5 -7
  426. package/test/reuse/ui5/userInteraction/clearAndRetry.spec.js +11 -16
  427. package/test/reuse/ui5/userInteraction/click.spec.js +90 -29
  428. package/test/reuse/ui5/userInteraction/clickAndRetry.spec.js +1 -3
  429. package/test/reuse/ui5/userInteraction/clickSelectArrow.spec.js +29 -30
  430. package/test/reuse/ui5/userInteraction/clickSelectArrowAndRetry.spec.js +1 -3
  431. package/test/reuse/ui5/userInteraction/doubleClick.spec.js +18 -22
  432. package/test/reuse/ui5/userInteraction/dragAndDrop.spec.js +8 -10
  433. package/test/reuse/ui5/userInteraction/fill.spec.js +20 -22
  434. package/test/reuse/ui5/userInteraction/fillAndRetry.spec.js +2 -6
  435. package/test/reuse/ui5/userInteraction/mouseOverElement.spec.js +2 -5
  436. package/test/reuse/ui5/userInteraction/openF4Help.spec.js +8 -12
  437. package/test/reuse/ui5/userInteraction/openValueHelp.spec.js +11 -12
  438. package/test/reuse/ui5/userInteraction/rightClick.spec.js +17 -20
  439. package/test/reuse/ui5/userInteraction/scrollToElement.spec.js +38 -38
  440. package/test/reuse/ui5/userInteraction/searchFor.spec.js +3 -12
  441. package/test/reuse/ui5/userInteraction/selectBox.spec.js +36 -36
  442. package/test/reuse/ui5/userInteraction/selectCombobox.spec.js +16 -24
  443. package/test/reuse/ui5/userInteraction/selectMultiComboBox.spec.js +22 -31
  444. package/test/reuse/util/browser/back.spec.js +10 -11
  445. package/test/reuse/util/browser/clearBrowser.spec.js +1 -1
  446. package/test/reuse/util/browser/executeScript.spec.js +14 -16
  447. package/test/reuse/util/browser/getBaseUrl.spec.js +1 -1
  448. package/test/reuse/util/browser/getBrowserName.spec.js +1 -3
  449. package/test/reuse/util/browser/getCurrentUrl.spec.js +9 -9
  450. package/test/reuse/util/browser/getCurrentWindow.spec.js +1 -1
  451. package/test/reuse/util/browser/getUI5Version.spec.js +8 -8
  452. package/test/reuse/util/browser/log.spec.js +1 -3
  453. package/test/reuse/util/browser/logCurrentUrl.spec.js +1 -1
  454. package/test/reuse/util/browser/refresh.spec.js +14 -16
  455. package/test/reuse/util/browser/reloadSession.spec.js +1 -1
  456. package/test/reuse/util/browser/setBaseUrl.spec.js +2 -2
  457. package/test/reuse/util/browser/switchToDefaultContent.spec.js +28 -29
  458. package/test/reuse/util/browser/switchToWindow.spec.js +2 -3
  459. package/test/reuse/util/browser/test.browserCmndLineArgs.conf.js +1 -3
  460. package/test/reuse/util/browser/waitUntil.spec.js +8 -16
  461. package/test/reuse/util/component/loadEntryPoint.spec.js +2 -3
  462. package/test/reuse/util/component/storeEntryPoint.spec.js +6 -10
  463. package/test/reuse/util/component/test.component.conf.js +1 -4
  464. package/test/reuse/util/console/console.spec.js +1 -3
  465. package/test/reuse/util/console/test.console.conf.js +2 -4
  466. package/test/reuse/util/data/customSourceData/getSecureData.secure.json +1 -1
  467. package/test/reuse/util/data/customSourceData/test.json +1 -1
  468. package/test/reuse/util/data/data/test.json +1 -1
  469. package/test/reuse/util/data/getData.spec.js +3 -7
  470. package/test/reuse/util/data/test.data.conf.js +1 -5
  471. package/test/reuse/util/data/test.data.privacy.conf.js +1 -7
  472. package/test/reuse/util/file/getAttributeValuesFromJson.spec.js +1 -1
  473. package/test/reuse/util/file/getFileNamesByExtensions.spec.js +0 -1
  474. package/test/reuse/util/file/pdfParser.spec.js +76 -80
  475. package/test/reuse/util/file/test.file.conf.js +2 -1
  476. package/test/reuse/util/file/testFiles/test1.json +26 -77
  477. package/test/reuse/util/file/upload.spec.js +24 -29
  478. package/test/reuse/util/formatter/addRemoveLeadingZeros.spec.js +1 -2
  479. package/test/reuse/util/formatter/formatDate.spec.js +2 -2
  480. package/test/reuse/util/formatter/formatDateWithTime.spec.js +6 -2
  481. package/test/reuse/util/formatter/sliceStringAfter.spec.js +1 -1
  482. package/test/reuse/util/formatter/sliceStringAt.spec.js +1 -1
  483. package/test/reuse/util/formatter/stringifyJSON.spec.js +4 -4
  484. package/test/reuse/util/formatter/test.formatter.conf.js +2 -2
  485. package/test/reuse/util/system/system.spec.js +1 -3
  486. package/test/reuse/util/system/test.system.conf.js +3 -5
  487. package/test/reuse/util/userSettings/data/data.json +1 -1
  488. package/test/reuse/util/userSettings/getDateFormatFromUserSettings.spec.js +0 -2
  489. package/test/reuse/util/userSettings/getLanguageFromUserSettings.spec.js +0 -1
  490. package/test/reuse/util/userSettings/getTimeFormatFromUserSettings.spec.js +0 -3
  491. package/test/reuse/util/userSettings/getTimeZoneFromUserSettings.spec.js +0 -2
  492. package/test/reuse/util/userSettings/setDateFormatFromUserSettings.spec.js +0 -2
  493. package/test/reuse/util/userSettings/setLanguageFromUserSettings.spec.js +0 -2
  494. package/test/reuse/util/userSettings/setNumberFormatFromUserSettings.spec.js +1 -3
  495. package/test/reuse/util/userSettings/setS4UserSettings.spec.js +0 -2
  496. package/test/reuse/util/userSettings/setTimeFormatFromUserSettings.spec.js +0 -3
  497. package/test/reuse/util/userSettings/setTimeZoneFromUserSettings.spec.js +0 -2
  498. package/test/reuse/util/userSettings/test.userSettings.apply.conf.js +1 -3
  499. package/test/unit/stats/getUserId.error.spec.ts +3 -1
  500. package/test/unit/stats/getUserId.spec.ts +10 -10
  501. package/test/unit/vitest.config.ts +2 -2
  502. package/test/watchMode/config.js +1 -3
  503. package/test/watchMode/navigateToUrlAndClick.spec.js +7 -7
  504. package/tsconfig.json +1 -4
  505. package/lib/reuse/modules/mobile/Mobile.d.ts +0 -16
  506. package/lib/reuse/modules/mobile/Mobile.js +0 -23
  507. package/lib/reuse/modules/mobile/Mobile.js.map +0 -1
  508. package/lib/reuse/modules/mobile/android.d.ts +0 -32
  509. package/lib/reuse/modules/mobile/android.js +0 -85
  510. package/lib/reuse/modules/mobile/android.js.map +0 -1
  511. package/lib/reuse/modules/mobile/device.d.ts +0 -173
  512. package/lib/reuse/modules/mobile/device.js +0 -403
  513. package/lib/reuse/modules/mobile/device.js.map +0 -1
  514. package/lib/reuse/modules/mobile/element.d.ts +0 -95
  515. package/lib/reuse/modules/mobile/element.js +0 -185
  516. package/lib/reuse/modules/mobile/element.js.map +0 -1
  517. package/lib/reuse/modules/mobile/gestures.d.ts +0 -42
  518. package/lib/reuse/modules/mobile/gestures.js +0 -86
  519. package/lib/reuse/modules/mobile/gestures.js.map +0 -1
  520. package/lib/reuse/modules/mobile/ios.d.ts +0 -10
  521. package/lib/reuse/modules/mobile/ios.js +0 -19
  522. package/lib/reuse/modules/mobile/ios.js.map +0 -1
  523. package/lib/reuse/modules/mobile/userInteraction.d.ts +0 -94
  524. package/lib/reuse/modules/mobile/userInteraction.js +0 -210
  525. package/lib/reuse/modules/mobile/userInteraction.js.map +0 -1
  526. package/test/helper/configurations/mobile.conf.js +0 -16
@@ -1,85 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.Android = void 0;
7
- // Imports
8
- const verboseLogger_1 = require("../../helper/verboseLogger");
9
- const errorHandler_1 = __importDefault(require("../../helper/errorHandler"));
10
- /**
11
- * @class android
12
- * @memberof mobile
13
- */
14
- class Android {
15
- vlf = new verboseLogger_1.VerboseLoggerFactory("mobile", "android");
16
- ErrorHandler = new errorHandler_1.default();
17
- /**
18
- * @function pressKeyByName
19
- * @memberof mobile.android
20
- * @description Simulate pressing a hardware key on the android device (e.g., back button, home button, etc.),
21
- * @param {string} keyName - The name of the key (e.g., "back", "home", "volumeUp", etc.)
22
- * @returns {Promise<void>}
23
- * @example
24
- * await mobile.android.pressKeyByName("back");
25
- * await mobile.android.pressKeyByName("home");
26
- */
27
- async pressKeyByName(keyName) {
28
- const vl = this.vlf.initLog(this.pressKeyByName);
29
- const keyCodeMap = {
30
- back: 4,
31
- home: 3,
32
- volumeUp: 24,
33
- volumeDown: 25,
34
- VolumeMute: 164,
35
- power: 26,
36
- enter: 66,
37
- space: 62,
38
- delete: 67,
39
- menu: 82,
40
- search: 84,
41
- camera: 27,
42
- focus: 80,
43
- notification: 83,
44
- call: 5,
45
- calendar: 208,
46
- recent: 312,
47
- settings: 176
48
- };
49
- try {
50
- const keyCode = keyCodeMap[keyName.toLowerCase()];
51
- if (keyCode !== undefined) {
52
- vl.log(`Pressing key: ${keyName} (code: ${keyCode})`);
53
- await browser.pressKeyCode(keyCode);
54
- }
55
- else {
56
- throw new Error(`Key code for "${keyName}" not found.`);
57
- }
58
- }
59
- catch (error) {
60
- return this.ErrorHandler.logException(error, "Error: During pressKeyByName in Android", true);
61
- }
62
- }
63
- /**
64
- * @function pressKeyByCode
65
- * @memberof mobile.android
66
- * @description Simulate pressing a hardware key on the android device (e.g., back button, home button, etc.),
67
- * @param {string} keyCode - The code of the key (e.g., 4 (back), 3 (home) , etc.)
68
- * @returns {Promise<void>}
69
- * @example await mobile.android.pressKeyByCode(4);
70
- * @see https://developer.android.com/reference/android/view/KeyEvent
71
- */
72
- async pressKeyByCode(keyCode) {
73
- const vl = this.vlf.initLog(this.pressKeyByCode);
74
- try {
75
- vl.log(`Pressing key by code: ${keyCode}`);
76
- await browser.pressKeyCode(keyCode);
77
- }
78
- catch (error) {
79
- return this.ErrorHandler.logException(error, "Error: During pressKeyByCode in Android", true);
80
- }
81
- }
82
- }
83
- exports.Android = Android;
84
- exports.default = new Android();
85
- //# sourceMappingURL=android.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"android.js","sourceRoot":"","sources":["../../../../src/reuse/modules/mobile/android.ts"],"names":[],"mappings":";;;;;;AAAA,UAAU;AACV,8DAAkE;AAClE,6EAAqD;AAKrD;;;GAGG;AACH,MAAa,OAAO;IACV,GAAG,GAAG,IAAI,oCAAoB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACpD,YAAY,GAAG,IAAI,sBAAY,EAAE,CAAC;IAE1C;;;;;;;;;OASG;IACH,KAAK,CAAC,cAAc,CAAC,OAAgB;QACnC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAEjD,MAAM,UAAU,GAA8B;YAC5C,IAAI,EAAE,CAAC;YACP,IAAI,EAAE,CAAC;YACP,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,EAAE;YACd,UAAU,EAAE,GAAG;YACf,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,EAAE;YACT,MAAM,EAAE,EAAE;YACV,IAAI,EAAE,EAAE;YACR,MAAM,EAAE,EAAE;YACV,MAAM,EAAE,EAAE;YACV,KAAK,EAAE,EAAE;YACT,YAAY,EAAE,EAAE;YAChB,IAAI,EAAE,CAAC;YACP,QAAQ,EAAE,GAAG;YACb,MAAM,EAAE,GAAG;YACX,QAAQ,EAAE,GAAG;SACd,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;YAClD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,EAAE,CAAC,GAAG,CAAC,iBAAiB,OAAO,WAAW,OAAO,GAAG,CAAC,CAAC;gBACtD,MAAM,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YACtC,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CAAC,iBAAiB,OAAO,cAAc,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,KAAK,EAAE,yCAAyC,EAAE,IAAI,CAAC,CAAC;QAChG,CAAC;IACH,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,cAAc,CAAC,OAAe;QAClC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACjD,IAAI,CAAC;YACH,EAAE,CAAC,GAAG,CAAC,yBAAyB,OAAO,EAAE,CAAC,CAAC;YAC3C,MAAM,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QACtC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,KAAK,EAAE,yCAAyC,EAAE,IAAI,CAAC,CAAC;QAChG,CAAC;IACH,CAAC;CACF;AArED,0BAqEC;AACD,kBAAe,IAAI,OAAO,EAAE,CAAC"}
@@ -1,173 +0,0 @@
1
- type hideKeyboardStrategy = "pressKey" | "tapOutside" | "swipeDown" | "";
2
- declare const ORIENTATION: {
3
- readonly LANDSCAPE: "LANDSCAPE";
4
- readonly PORTRAIT: "PORTRAIT";
5
- readonly UNKNOWN: "UNKNOWN";
6
- };
7
- type Orientation = (typeof ORIENTATION)[keyof typeof ORIENTATION];
8
- /**
9
- * @class device
10
- * @memberof mobile
11
- */
12
- export declare class Device {
13
- private vlf;
14
- private ErrorHandler;
15
- private isValidPlatform;
16
- private executionPlatform;
17
- /**
18
- * @function isAppInstalled
19
- * @memberof mobile.device
20
- * @description Check if the application identified by its Package name/Bundle ID is installed on the device.
21
- * @param {string} appPackageOrBundleId - Android package Name, or iOS bundle Id.
22
- * @returns {boolean} - Returns `true` if specified app package/bundled installed in the device, or `false`.
23
- * @example
24
- * await mobile.device.isAppInstalled("com.google.android.apps.maps");
25
- * await mobile.device.isAppInstalled("com.apple.AppStore")
26
- */
27
- isAppInstalled(appPackageOrBundleId: string): Promise<boolean>;
28
- /**
29
- * @function installApp
30
- * @memberof mobile.device
31
- * @description Install the appropriate app based on the platform the test is being executed on.
32
- * @param {string} appPath - Path of the app(.apk, .ipa)
33
- * @returns {Promise<void>}
34
- * @example
35
- * await mobile.device.installApp("/path/to/your/app.apk");
36
- * await mobile.device.installApp("/path/to/your/app.ipa");
37
- */
38
- installApp(appPath: string): Promise<void>;
39
- /**
40
- * @function switchToContext
41
- * @memberof mobile.device
42
- * @description Switch to the specified( WEBVIEW | NATIVE_APP ) context if available.
43
- * @param {string} [targetContext='WEBVIEW'] The name of the target context.
44
- * @param {number} [timeout=5000] Maximum time to wait for the web context to appear, milliseconds.
45
- * @returns {Promise<boolean>} Returns `true` if the context is successfully switched, otherwise `false`.
46
- * @example
47
- * await mobile.device.switchToContext();
48
- * await mobile.device.switchToContext("NATIVE_APP", 1000);
49
- */
50
- switchToContext(targetContext?: string, timeout?: number): Promise<boolean>;
51
- /**
52
- * @function getTargetContextIfAvailable
53
- * @memberof mobile.device
54
- * @description
55
- * Returns the specified target context if available within a given timeout.
56
- *
57
- * This method retrieves the list of available contexts and determines if a context
58
- * that matches the `targetContext` string is present. If the target context is found,
59
- * it returns the context name; otherwise, it returns `null`.
60
- *
61
- * @param {string} [targetContext='WEBVIEW'] The name of the target context to check for.
62
- * Common examples are `WEBVIEW` or `NATIVE_APP`.
63
- * @param {number} [timeout=5000] The maximum time, in milliseconds, to wait for the target
64
- * context to become available.
65
- * @returns {Promise<string | null>} The name of the target context if found, or `null` if
66
- * the context is not available within the timeout.
67
- * @example
68
- * const context = await getTargetContextIfAvailable("WEBVIEW", 10000);
69
- * const context = await getTargetContextIfAvailable("NATIVE_APP", 10000);
70
- */
71
- getTargetContextIfAvailable(targetContext?: string, timeout?: number): Promise<string | null>;
72
- /**
73
- * @function closeApplication
74
- * @memberof mobile.device
75
- * @description Close the currently active mobile application.
76
- * @returns {Promise<void>}
77
- * @example
78
- * await mobile.device.closeApplication();
79
- */
80
- closeApplication(): Promise<void>;
81
- /**
82
- * @function queryAppState
83
- * @memberof mobile.device
84
- * @description Queries the state of the application (e.g., running, background, not installed) on the mobile device(Android or iOS).
85
- * @param {string} appPackageOrBundleId - Package name (Android) or bundle ID (iOS) of the application.
86
- * @returns {Promise<number>} - The app state:
87
- * 0 - Not running,
88
- * 1 - Not installed,
89
- * 2 - Running in the background (not suspended),
90
- * 3 - Running in the background (suspended),
91
- * 4 - Running in the foreground.
92
- * @example
93
- * await mobile.device.queryAppState("com.google.android.apps.maps");
94
- * await mobile.device.queryAppState("com.apple.AppStore");
95
- */
96
- queryAppState(appPackageOrBundleId: string): Promise<number>;
97
- /**
98
- * @function launchApp
99
- * @memberof mobile.device
100
- * @description Launches the app for both iOS and Android with a parameterized app identifier.
101
- * @param {string} appPackageOrBundleId - The Android package name or iOS bundle ID of the application.
102
- * @returns {Promise<void>} Resolves when the app is successfully launched.
103
- * @example
104
- * await mobile.device.launchApp("com.google.android.apps.maps");
105
- * await mobile.device.launchApp("com.apple.AppStore");
106
- */
107
- launchApp(appPackageOrBundleId: string): Promise<void>;
108
- /**
109
- * @function switchToLandscapeOrientation
110
- * @memberof mobile.device
111
- * @description Switches the device orientation to landscape mode.
112
- * @returns {Promise<void>} Resolves when the orientation is successfully switched.
113
- * @example
114
- * await mobile.device.switchToLandscapeOrientation();
115
- */
116
- switchToLandscapeOrientation(): Promise<void>;
117
- /**
118
- * @function switchToPortraitOrientation
119
- * @memberof mobile.device
120
- * @description Switches the device orientation to portrait mode.
121
- * @returns {Promise<void>} Resolves when the orientation is successfully switched.
122
- * @example
123
- * await mobile.device.switchToPortraitOrientation();
124
- */
125
- switchToPortraitOrientation(): Promise<void>;
126
- /**
127
- * @function getCurrentOrientation
128
- * @memberof mobile.device
129
- * @description Returns the device current orientation (PORTRAIT or LANDSCAPE)
130
- * @returns {Promise<Orientation>} The current device orientation.
131
- * @example
132
- * await mobile.device.getCurrentOrientation();
133
- */
134
- getCurrentOrientation(): Promise<Orientation>;
135
- /**
136
- * @function hideKeyboard
137
- * @memberof mobile.device
138
- * @description Hides the keyboard on both Android and iOS using specific strategies with timeout.
139
- * @param {string} strategy - Strategy to use for hiding the keyboard ('pressKey', 'tapOutside', 'swipeDown').
140
- * @param {string} key - Key to press if using the 'pressKey' strategy (e.g., 'Done', 'Enter').
141
- * @param {number} keyCode - Key code for Android (optional).
142
- * @param {number} [timeout=5000] - Timeout in milliseconds for retrying to hide the keyboard.
143
- * @returns {Promise<void>}
144
- * @example
145
- * await mobile.device.hideKeyboard();
146
- * await mobile.device.hideKeyboard('tapOutside');
147
- * await mobile.device.hideKeyboard('swipeDown');
148
- * //Android only, Sends a specific key code, like 66 for "Enter."
149
- * await mobile.device.hideKeyboard('pressKey', undefined, 66);
150
- * await mobile.device.hideKeyboard('pressKey', 'Done');
151
- */
152
- hideKeyboard(strategy?: hideKeyboardStrategy, key?: string, keyCode?: number, timeout?: number): Promise<void>;
153
- /**
154
- * @function isKeyboardVisible
155
- * @memberof mobile.device
156
- * @description Checks if the keyboard is visible or not on the mobile device.
157
- * @returns {Promise<boolean>} Returns `true` if the keyboard is visible on the mobile view.
158
- * @example
159
- * await mobile.device.isKeyboardVisible();
160
- */
161
- isKeyboardVisible(): Promise<boolean>;
162
- /**
163
- * @function isPlatformSupported
164
- * @memberof mobile.device
165
- * @description Determine if the current platform is supported, if the current device platform is either `Android` or `iOS`.
166
- * @returns {Promise<boolean>} If neither Android nor iOS is detected (e.g., Windows, Linux, or web), the condition evaluates to false
167
- * @example
168
- * await mobile.device.isPlatformSupported();
169
- */
170
- isPlatformSupported(): Promise<boolean>;
171
- }
172
- declare const _default: Device;
173
- export default _default;
@@ -1,403 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.Device = void 0;
7
- // Imports
8
- const verboseLogger_1 = require("../../helper/verboseLogger");
9
- const errorHandler_1 = __importDefault(require("../../helper/errorHandler"));
10
- const ORIENTATION = {
11
- LANDSCAPE: "LANDSCAPE",
12
- PORTRAIT: "PORTRAIT",
13
- UNKNOWN: "UNKNOWN"
14
- };
15
- /**
16
- * @class device
17
- * @memberof mobile
18
- */
19
- class Device {
20
- vlf = new verboseLogger_1.VerboseLoggerFactory("mobile", "device");
21
- ErrorHandler = new errorHandler_1.default();
22
- //==================================Private Methods===============================================
23
- async isValidPlatform() {
24
- const vl = this.vlf.initLog(this.isValidPlatform);
25
- const SUPPORTED_PLATFORMS = ["android", "ios"];
26
- const platform = await browser.capabilities.platformName;
27
- return SUPPORTED_PLATFORMS.includes(platform.toLowerCase().trim());
28
- }
29
- async executionPlatform() {
30
- const vl = this.vlf.initLog(this.executionPlatform);
31
- const platform = browser.capabilities.platformName;
32
- return platform.toLowerCase().trim();
33
- }
34
- //==================================Public Methods================================================
35
- /**
36
- * @function isAppInstalled
37
- * @memberof mobile.device
38
- * @description Check if the application identified by its Package name/Bundle ID is installed on the device.
39
- * @param {string} appPackageOrBundleId - Android package Name, or iOS bundle Id.
40
- * @returns {boolean} - Returns `true` if specified app package/bundled installed in the device, or `false`.
41
- * @example
42
- * await mobile.device.isAppInstalled("com.google.android.apps.maps");
43
- * await mobile.device.isAppInstalled("com.apple.AppStore")
44
- */
45
- async isAppInstalled(appPackageOrBundleId) {
46
- const vl = this.vlf.initLog(this.isAppInstalled);
47
- let isAppInstalledInDevice = false;
48
- try {
49
- if (await this.isValidPlatform()) {
50
- isAppInstalledInDevice = browser.isAppInstalled(appPackageOrBundleId);
51
- vl.log(`${await this.executionPlatform()} app installed successfully.`);
52
- }
53
- else {
54
- vl.log(`Unsupported platform while checking the is app installed or not`);
55
- }
56
- }
57
- catch (error) {
58
- this.ErrorHandler.logException(error, "Error: Could not determine if app is installed, The provided package name is invalid.", true);
59
- }
60
- return isAppInstalledInDevice;
61
- }
62
- /**
63
- * @function installApp
64
- * @memberof mobile.device
65
- * @description Install the appropriate app based on the platform the test is being executed on.
66
- * @param {string} appPath - Path of the app(.apk, .ipa)
67
- * @returns {Promise<void>}
68
- * @example
69
- * await mobile.device.installApp("/path/to/your/app.apk");
70
- * await mobile.device.installApp("/path/to/your/app.ipa");
71
- */
72
- async installApp(appPath) {
73
- const vl = this.vlf.initLog(this.installApp);
74
- try {
75
- vl.log(`Installing ${await this.executionPlatform()} app...`);
76
- if (await this.isValidPlatform()) {
77
- await browser.installApp(appPath);
78
- vl.log(`${await this.executionPlatform()} app installed successfully.`);
79
- }
80
- else {
81
- vl.log(`Unsupported platform ${await this.executionPlatform()} while installing app`);
82
- }
83
- }
84
- catch (error) {
85
- this.ErrorHandler.logException(error, `Error: Unable to install app. The provided app path ${appPath} does not exist`, true);
86
- }
87
- }
88
- /**
89
- * @function switchToContext
90
- * @memberof mobile.device
91
- * @description Switch to the specified( WEBVIEW | NATIVE_APP ) context if available.
92
- * @param {string} [targetContext='WEBVIEW'] The name of the target context.
93
- * @param {number} [timeout=5000] Maximum time to wait for the web context to appear, milliseconds.
94
- * @returns {Promise<boolean>} Returns `true` if the context is successfully switched, otherwise `false`.
95
- * @example
96
- * await mobile.device.switchToContext();
97
- * await mobile.device.switchToContext("NATIVE_APP", 1000);
98
- */
99
- async switchToContext(targetContext = "WEBVIEW", timeout = 5000) {
100
- const vl = this.vlf.initLog(this.switchToContext);
101
- try {
102
- let target = this.getTargetContextIfAvailable(targetContext, timeout);
103
- if (target) {
104
- await browser.switchContext(target);
105
- vl.log(`Switched to ${target} context successfully...`);
106
- return true;
107
- }
108
- else {
109
- vl.log(`Switched to ${target} context not successful, it may be null`);
110
- }
111
- }
112
- catch (error) {
113
- this.ErrorHandler.logException(error, `Error: No contexts available, Could not switch to ${targetContext} context 'INVALID_CONTEXT'. `, true);
114
- }
115
- return false;
116
- }
117
- /**
118
- * @function getTargetContextIfAvailable
119
- * @memberof mobile.device
120
- * @description
121
- * Returns the specified target context if available within a given timeout.
122
- *
123
- * This method retrieves the list of available contexts and determines if a context
124
- * that matches the `targetContext` string is present. If the target context is found,
125
- * it returns the context name; otherwise, it returns `null`.
126
- *
127
- * @param {string} [targetContext='WEBVIEW'] The name of the target context to check for.
128
- * Common examples are `WEBVIEW` or `NATIVE_APP`.
129
- * @param {number} [timeout=5000] The maximum time, in milliseconds, to wait for the target
130
- * context to become available.
131
- * @returns {Promise<string | null>} The name of the target context if found, or `null` if
132
- * the context is not available within the timeout.
133
- * @example
134
- * const context = await getTargetContextIfAvailable("WEBVIEW", 10000);
135
- * const context = await getTargetContextIfAvailable("NATIVE_APP", 10000);
136
- */
137
- async getTargetContextIfAvailable(targetContext = "WEBVIEW", timeout = 5000) {
138
- const vl = this.vlf.initLog(this.getTargetContextIfAvailable);
139
- try {
140
- let availableContexts = [];
141
- const isContextAvailable = await browser.waitUntil(async () => {
142
- // Get all available contexts
143
- availableContexts = await browser.getContexts();
144
- return availableContexts.some((context) => context.includes(targetContext));
145
- }, {
146
- timeout,
147
- timeoutMsg: `Target Context "${targetContext}" not found within ${timeout}ms`
148
- });
149
- if (isContextAvailable) {
150
- const target = availableContexts.find((context) => context.includes(targetContext));
151
- vl.log(`Target Context "${target}" is available.`);
152
- return target || null;
153
- }
154
- else {
155
- vl.log(`Target Context ${targetContext} is not available.`);
156
- }
157
- }
158
- catch (error) {
159
- this.ErrorHandler.logException(error, `Error: No contexts available, Failed to check is target ${targetContext} context available`, true);
160
- }
161
- return null;
162
- }
163
- /**
164
- * @function closeApplication
165
- * @memberof mobile.device
166
- * @description Close the currently active mobile application.
167
- * @returns {Promise<void>}
168
- * @example
169
- * await mobile.device.closeApplication();
170
- */
171
- async closeApplication() {
172
- const vl = this.vlf.initLog(this.closeApplication);
173
- try {
174
- await browser.closeApp();
175
- vl.log("The application has been closed successfully.");
176
- }
177
- catch (error) {
178
- this.ErrorHandler.logException(error, `Error: Unable to close app, the app is not currently running`, true);
179
- }
180
- }
181
- /**
182
- * @function queryAppState
183
- * @memberof mobile.device
184
- * @description Queries the state of the application (e.g., running, background, not installed) on the mobile device(Android or iOS).
185
- * @param {string} appPackageOrBundleId - Package name (Android) or bundle ID (iOS) of the application.
186
- * @returns {Promise<number>} - The app state:
187
- * 0 - Not running,
188
- * 1 - Not installed,
189
- * 2 - Running in the background (not suspended),
190
- * 3 - Running in the background (suspended),
191
- * 4 - Running in the foreground.
192
- * @example
193
- * await mobile.device.queryAppState("com.google.android.apps.maps");
194
- * await mobile.device.queryAppState("com.apple.AppStore");
195
- */
196
- async queryAppState(appPackageOrBundleId) {
197
- const vl = this.vlf.initLog(this.queryAppState);
198
- let appState = -1;
199
- try {
200
- vl.log(`Querying the ${await this.executionPlatform()} app state...`);
201
- if (await this.isValidPlatform()) {
202
- appState = await browser.queryAppState(appPackageOrBundleId);
203
- vl.log(`Application state for ${appPackageOrBundleId} : ${appState}`);
204
- }
205
- else {
206
- vl.log(`Unsupported platform while query app state: ${await this.executionPlatform()}`);
207
- }
208
- }
209
- catch (error) {
210
- this.ErrorHandler.logException(error, `Error: Unable to query app state, the package name ${appPackageOrBundleId} is invalid or does not exist.`, true);
211
- }
212
- return appState;
213
- }
214
- /**
215
- * @function launchApp
216
- * @memberof mobile.device
217
- * @description Launches the app for both iOS and Android with a parameterized app identifier.
218
- * @param {string} appPackageOrBundleId - The Android package name or iOS bundle ID of the application.
219
- * @returns {Promise<void>} Resolves when the app is successfully launched.
220
- * @example
221
- * await mobile.device.launchApp("com.google.android.apps.maps");
222
- * await mobile.device.launchApp("com.apple.AppStore");
223
- */
224
- async launchApp(appPackageOrBundleId) {
225
- const vl = this.vlf.initLog(this.launchApp);
226
- try {
227
- vl.log(`Launching ${await this.executionPlatform()} app...`);
228
- if (await this.isValidPlatform()) {
229
- await browser.activateApp(appPackageOrBundleId);
230
- vl.log(`${await this.executionPlatform()} App launched successfully with given ${appPackageOrBundleId} Package/bundle ID`);
231
- }
232
- else {
233
- vl.log(`Unsupported platform while launching the app: ${await this.executionPlatform()}`);
234
- }
235
- }
236
- catch (error) {
237
- this.ErrorHandler.logException(error, `Error: Unable to launch the app, the package name ${appPackageOrBundleId} is invalid or does not exist.`, true);
238
- }
239
- }
240
- /**
241
- * @function switchToLandscapeOrientation
242
- * @memberof mobile.device
243
- * @description Switches the device orientation to landscape mode.
244
- * @returns {Promise<void>} Resolves when the orientation is successfully switched.
245
- * @example
246
- * await mobile.device.switchToLandscapeOrientation();
247
- */
248
- async switchToLandscapeOrientation() {
249
- const vl = this.vlf.initLog(this.switchToLandscapeOrientation);
250
- try {
251
- const currentOrientation = await browser.getOrientation();
252
- if (currentOrientation === ORIENTATION.LANDSCAPE) {
253
- vl.log("Device is already in landscape mode.");
254
- return;
255
- }
256
- vl.log("Switching device orientation to landscape...");
257
- await browser.setOrientation(ORIENTATION.LANDSCAPE);
258
- vl.log("Device orientation successfully switched to landscape.");
259
- }
260
- catch (error) {
261
- this.ErrorHandler.logException(error, `Error: Could not change device orientation, Invalid argument: The orientation must be 'LANDSCAPE'.`, true);
262
- }
263
- }
264
- /**
265
- * @function switchToPortraitOrientation
266
- * @memberof mobile.device
267
- * @description Switches the device orientation to portrait mode.
268
- * @returns {Promise<void>} Resolves when the orientation is successfully switched.
269
- * @example
270
- * await mobile.device.switchToPortraitOrientation();
271
- */
272
- async switchToPortraitOrientation() {
273
- const vl = this.vlf.initLog(this.switchToPortraitOrientation);
274
- try {
275
- const currentOrientation = await browser.getOrientation();
276
- if (currentOrientation === ORIENTATION.PORTRAIT) {
277
- vl.log("Device is already in portrait mode.");
278
- return;
279
- }
280
- vl.log("Switching device orientation to portrait...");
281
- await browser.setOrientation(ORIENTATION.PORTRAIT);
282
- vl.log("Device orientation successfully switched to portrait.");
283
- }
284
- catch (error) {
285
- this.ErrorHandler.logException(error, `Error: Could not change device orientation, Invalid argument: The orientation must be 'PORTRAIT`, true);
286
- }
287
- }
288
- /**
289
- * @function getCurrentOrientation
290
- * @memberof mobile.device
291
- * @description Returns the device current orientation (PORTRAIT or LANDSCAPE)
292
- * @returns {Promise<Orientation>} The current device orientation.
293
- * @example
294
- * await mobile.device.getCurrentOrientation();
295
- */
296
- async getCurrentOrientation() {
297
- const vl = this.vlf.initLog(this.getCurrentOrientation);
298
- let orientation = ORIENTATION.UNKNOWN; // Default value
299
- try {
300
- orientation = await browser.getOrientation();
301
- vl.log(`Current device orientation: ${orientation}`);
302
- }
303
- catch (error) {
304
- this.ErrorHandler.logException(error, `Error: Could not get the current device orientation`, true);
305
- }
306
- return orientation;
307
- }
308
- /**
309
- * @function hideKeyboard
310
- * @memberof mobile.device
311
- * @description Hides the keyboard on both Android and iOS using specific strategies with timeout.
312
- * @param {string} strategy - Strategy to use for hiding the keyboard ('pressKey', 'tapOutside', 'swipeDown').
313
- * @param {string} key - Key to press if using the 'pressKey' strategy (e.g., 'Done', 'Enter').
314
- * @param {number} keyCode - Key code for Android (optional).
315
- * @param {number} [timeout=5000] - Timeout in milliseconds for retrying to hide the keyboard.
316
- * @returns {Promise<void>}
317
- * @example
318
- * await mobile.device.hideKeyboard();
319
- * await mobile.device.hideKeyboard('tapOutside');
320
- * await mobile.device.hideKeyboard('swipeDown');
321
- * //Android only, Sends a specific key code, like 66 for "Enter."
322
- * await mobile.device.hideKeyboard('pressKey', undefined, 66);
323
- * await mobile.device.hideKeyboard('pressKey', 'Done');
324
- */
325
- async hideKeyboard(strategy, key, keyCode, timeout = 5000) {
326
- const vl = this.vlf.initLog(this.hideKeyboard);
327
- const startTime = Date.now();
328
- while (Date.now() - startTime < timeout) {
329
- try {
330
- if (await util.browser.isAndroid()) {
331
- vl.log("Hiding keyboard on Android.");
332
- await browser.hideKeyboard(strategy, key, keyCode);
333
- }
334
- else if (await util.browser.isIos()) {
335
- vl.log("Hiding keyboard on iOS.");
336
- await browser.execute("mobile: hideKeyboard", { strategy });
337
- }
338
- else {
339
- vl.log("Unsupported platform: Unable to hide the keyboard.");
340
- return;
341
- }
342
- vl.log("Keyboard hidden successfully.");
343
- return; // Exit if the keyboard is successfully hidden
344
- }
345
- catch (error) {
346
- // Wait briefly before retrying
347
- await new Promise((resolve) => setTimeout(resolve, 500));
348
- this.ErrorHandler.logException(error, `Error: Failed to hide the keyboard, Retrying...`, true);
349
- }
350
- }
351
- vl.log(`Failed to hide the keyboard within the timeout of ${timeout}ms.`);
352
- }
353
- /**
354
- * @function isKeyboardVisible
355
- * @memberof mobile.device
356
- * @description Checks if the keyboard is visible or not on the mobile device.
357
- * @returns {Promise<boolean>} Returns `true` if the keyboard is visible on the mobile view.
358
- * @example
359
- * await mobile.device.isKeyboardVisible();
360
- */
361
- async isKeyboardVisible() {
362
- const vl = this.vlf.initLog(this.isKeyboardVisible);
363
- let isKeyboardVisible = false;
364
- try {
365
- if (await util.browser.isAndroid()) {
366
- vl.log("check if the screen height is reduced due to the keyboard");
367
- // For Android, check if the screen height is reduced due to the keyboard
368
- const windowRect = await browser.getWindowRect();
369
- const screenSize = await browser.getWindowSize();
370
- // If the visible height is less, keyboard is visible
371
- vl.log("if visible height is less, keyboard is visible");
372
- isKeyboardVisible = windowRect.height < screenSize.height;
373
- }
374
- else if (await util.browser.isIos()) {
375
- // For iOS, check if the keyboard is displayed via Appium's mobile API
376
- const isKeyboardShown = await browser.execute("mobile: isKeyboardShown");
377
- isKeyboardVisible = isKeyboardShown === true; // Returns true if the keyboard is visible
378
- }
379
- else {
380
- vl.log("Unsupported platform: Unable to detect keyboard visibility.");
381
- return false;
382
- }
383
- }
384
- catch (error) {
385
- this.ErrorHandler.logException(error, `Error: Failed to get the is keyboard visible`, true);
386
- }
387
- return isKeyboardVisible;
388
- }
389
- /**
390
- * @function isPlatformSupported
391
- * @memberof mobile.device
392
- * @description Determine if the current platform is supported, if the current device platform is either `Android` or `iOS`.
393
- * @returns {Promise<boolean>} If neither Android nor iOS is detected (e.g., Windows, Linux, or web), the condition evaluates to false
394
- * @example
395
- * await mobile.device.isPlatformSupported();
396
- */
397
- async isPlatformSupported() {
398
- return (await util.browser.isAndroid()) || (await util.browser.isIos());
399
- }
400
- }
401
- exports.Device = Device;
402
- exports.default = new Device();
403
- //# sourceMappingURL=device.js.map