@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.
- package/.eslintignore +3 -0
- package/.eslintrc.yml +33 -0
- package/.reuse/dep5 +29 -0
- package/LICENSE +201 -0
- package/LICENSES/Apache-2.0.txt +73 -0
- package/README.md +20 -0
- package/docs/contact.md +10 -0
- package/docs/doc.md +5188 -0
- package/docs/gettingStarted/selectors.md +168 -0
- package/docs/gettingStarted/setup.md +8 -0
- package/docs/index.md +14 -0
- package/docs/style/custom.css +24 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.js +171 -0
- package/lib/index.js.map +1 -0
- package/lib/reuse/authenticator/authConfig.d.ts +54 -0
- package/lib/reuse/authenticator/authConfig.js +55 -0
- package/lib/reuse/authenticator/authConfig.js.map +1 -0
- package/lib/reuse/authenticator/authHandler.d.ts +6 -0
- package/lib/reuse/authenticator/authHandler.js +37 -0
- package/lib/reuse/authenticator/authHandler.js.map +1 -0
- package/lib/reuse/authenticator/basicUrlAuthenticator.d.ts +2 -0
- package/lib/reuse/authenticator/basicUrlAuthenticator.js +36 -0
- package/lib/reuse/authenticator/basicUrlAuthenticator.js.map +1 -0
- package/lib/reuse/authenticator/customAuthenticator.d.ts +2 -0
- package/lib/reuse/authenticator/customAuthenticator.js +60 -0
- package/lib/reuse/authenticator/customAuthenticator.js.map +1 -0
- package/lib/reuse/authenticator/formAuthenticator.d.ts +2 -0
- package/lib/reuse/authenticator/formAuthenticator.js +57 -0
- package/lib/reuse/authenticator/formAuthenticator.js.map +1 -0
- package/lib/reuse/authenticator/plainAuthenticator.d.ts +2 -0
- package/lib/reuse/authenticator/plainAuthenticator.js +20 -0
- package/lib/reuse/authenticator/plainAuthenticator.js.map +1 -0
- package/lib/reuse/data/authenticators.json +16 -0
- package/lib/reuse/helper/clientsideUI5scripts.d.ts +1 -0
- package/lib/reuse/helper/clientsideUI5scripts.js +388 -0
- package/lib/reuse/helper/clientsideUI5scripts.js.map +1 -0
- package/lib/reuse/helper/jsDocGen.d.ts +1 -0
- package/lib/reuse/helper/jsDocGen.js +45 -0
- package/lib/reuse/helper/jsDocGen.js.map +1 -0
- package/lib/reuse/index.d.ts +5 -0
- package/lib/reuse/index.js +89 -0
- package/lib/reuse/index.js.map +1 -0
- package/lib/reuse/modules/common/Common.d.ts +12 -0
- package/lib/reuse/modules/common/Common.js +21 -0
- package/lib/reuse/modules/common/Common.js.map +1 -0
- package/lib/reuse/modules/common/assertion.d.ts +65 -0
- package/lib/reuse/modules/common/assertion.js +91 -0
- package/lib/reuse/modules/common/assertion.js.map +1 -0
- package/lib/reuse/modules/common/constants/date.constants.d.ts +8 -0
- package/lib/reuse/modules/common/constants/date.constants.js +13 -0
- package/lib/reuse/modules/common/constants/date.constants.js.map +1 -0
- package/lib/reuse/modules/common/constants/userInteraction.constants.d.ts +9 -0
- package/lib/reuse/modules/common/constants/userInteraction.constants.js +14 -0
- package/lib/reuse/modules/common/constants/userInteraction.constants.js.map +1 -0
- package/lib/reuse/modules/common/date.d.ts +84 -0
- package/lib/reuse/modules/common/date.js +164 -0
- package/lib/reuse/modules/common/date.js.map +1 -0
- package/lib/reuse/modules/common/navigation.d.ts +26 -0
- package/lib/reuse/modules/common/navigation.js +56 -0
- package/lib/reuse/modules/common/navigation.js.map +1 -0
- package/lib/reuse/modules/common/types/date.types.d.ts +2 -0
- package/lib/reuse/modules/common/types/date.types.js +3 -0
- package/lib/reuse/modules/common/types/date.types.js.map +1 -0
- package/lib/reuse/modules/common/userInteraction.d.ts +104 -0
- package/lib/reuse/modules/common/userInteraction.js +199 -0
- package/lib/reuse/modules/common/userInteraction.js.map +1 -0
- package/lib/reuse/modules/nonUi5/NonUi5.d.ts +12 -0
- package/lib/reuse/modules/nonUi5/NonUi5.js +21 -0
- package/lib/reuse/modules/nonUi5/NonUi5.js.map +1 -0
- package/lib/reuse/modules/nonUi5/assertion.d.ts +62 -0
- package/lib/reuse/modules/nonUi5/assertion.js +127 -0
- package/lib/reuse/modules/nonUi5/assertion.js.map +1 -0
- package/lib/reuse/modules/nonUi5/constants/userInteraction.constants.d.ts +6 -0
- package/lib/reuse/modules/nonUi5/constants/userInteraction.constants.js +11 -0
- package/lib/reuse/modules/nonUi5/constants/userInteraction.constants.js.map +1 -0
- package/lib/reuse/modules/nonUi5/element.d.ts +286 -0
- package/lib/reuse/modules/nonUi5/element.js +639 -0
- package/lib/reuse/modules/nonUi5/element.js.map +1 -0
- package/lib/reuse/modules/nonUi5/navigation.d.ts +17 -0
- package/lib/reuse/modules/nonUi5/navigation.js +44 -0
- package/lib/reuse/modules/nonUi5/navigation.js.map +1 -0
- package/lib/reuse/modules/nonUi5/userInteraction.d.ts +170 -0
- package/lib/reuse/modules/nonUi5/userInteraction.js +415 -0
- package/lib/reuse/modules/nonUi5/userInteraction.js.map +1 -0
- package/lib/reuse/modules/service/Service.d.ts +8 -0
- package/lib/reuse/modules/service/Service.js +17 -0
- package/lib/reuse/modules/service/Service.js.map +1 -0
- package/lib/reuse/modules/service/odata.d.ts +177 -0
- package/lib/reuse/modules/service/odata.js +347 -0
- package/lib/reuse/modules/service/odata.js.map +1 -0
- package/lib/reuse/modules/service/rest.d.ts +66 -0
- package/lib/reuse/modules/service/rest.js +168 -0
- package/lib/reuse/modules/service/rest.js.map +1 -0
- package/lib/reuse/modules/service/soap.d.ts +0 -0
- package/lib/reuse/modules/service/soap.js +2 -0
- package/lib/reuse/modules/service/soap.js.map +1 -0
- package/lib/reuse/modules/ui5/Ui5.d.ts +34 -0
- package/lib/reuse/modules/ui5/Ui5.js +41 -0
- package/lib/reuse/modules/ui5/Ui5.js.map +1 -0
- package/lib/reuse/modules/ui5/assertion.d.ts +183 -0
- package/lib/reuse/modules/ui5/assertion.js +493 -0
- package/lib/reuse/modules/ui5/assertion.js.map +1 -0
- package/lib/reuse/modules/ui5/confirmationDialog.d.ts +86 -0
- package/lib/reuse/modules/ui5/confirmationDialog.js +145 -0
- package/lib/reuse/modules/ui5/confirmationDialog.js.map +1 -0
- package/lib/reuse/modules/ui5/constants/mockserver.constants.d.ts +4 -0
- package/lib/reuse/modules/ui5/constants/mockserver.constants.js +9 -0
- package/lib/reuse/modules/ui5/constants/mockserver.constants.js.map +1 -0
- package/lib/reuse/modules/ui5/control.d.ts +84 -0
- package/lib/reuse/modules/ui5/control.js +132 -0
- package/lib/reuse/modules/ui5/control.js.map +1 -0
- package/lib/reuse/modules/ui5/date.d.ts +48 -0
- package/lib/reuse/modules/ui5/date.js +153 -0
- package/lib/reuse/modules/ui5/date.js.map +1 -0
- package/lib/reuse/modules/ui5/element.d.ts +160 -0
- package/lib/reuse/modules/ui5/element.js +349 -0
- package/lib/reuse/modules/ui5/element.js.map +1 -0
- package/lib/reuse/modules/ui5/errorDialog.d.ts +39 -0
- package/lib/reuse/modules/ui5/errorDialog.js +65 -0
- package/lib/reuse/modules/ui5/errorDialog.js.map +1 -0
- package/lib/reuse/modules/ui5/footerBar.d.ts +153 -0
- package/lib/reuse/modules/ui5/footerBar.js +240 -0
- package/lib/reuse/modules/ui5/footerBar.js.map +1 -0
- package/lib/reuse/modules/ui5/mockserver.d.ts +154 -0
- package/lib/reuse/modules/ui5/mockserver.js +665 -0
- package/lib/reuse/modules/ui5/mockserver.js.map +1 -0
- package/lib/reuse/modules/ui5/navigation.d.ts +103 -0
- package/lib/reuse/modules/ui5/navigation.js +275 -0
- package/lib/reuse/modules/ui5/navigation.js.map +1 -0
- package/lib/reuse/modules/ui5/navigationBar.d.ts +48 -0
- package/lib/reuse/modules/ui5/navigationBar.js +141 -0
- package/lib/reuse/modules/ui5/navigationBar.js.map +1 -0
- package/lib/reuse/modules/ui5/qunit.d.ts +17 -0
- package/lib/reuse/modules/ui5/qunit.js +52 -0
- package/lib/reuse/modules/ui5/qunit.js.map +1 -0
- package/lib/reuse/modules/ui5/session.d.ts +117 -0
- package/lib/reuse/modules/ui5/session.js +374 -0
- package/lib/reuse/modules/ui5/session.js.map +1 -0
- package/lib/reuse/modules/ui5/table.d.ts +61 -0
- package/lib/reuse/modules/ui5/table.js +188 -0
- package/lib/reuse/modules/ui5/table.js.map +1 -0
- package/lib/reuse/modules/ui5/types/mockserver.types.d.ts +2 -0
- package/lib/reuse/modules/ui5/types/mockserver.types.js +3 -0
- package/lib/reuse/modules/ui5/types/mockserver.types.js.map +1 -0
- package/lib/reuse/modules/ui5/userInteraction.d.ts +304 -0
- package/lib/reuse/modules/ui5/userInteraction.js +690 -0
- package/lib/reuse/modules/ui5/userInteraction.js.map +1 -0
- package/lib/reuse/modules/util/Util.d.ts +22 -0
- package/lib/reuse/modules/util/Util.js +27 -0
- package/lib/reuse/modules/util/Util.js.map +1 -0
- package/lib/reuse/modules/util/browser.d.ts +167 -0
- package/lib/reuse/modules/util/browser.js +367 -0
- package/lib/reuse/modules/util/browser.js.map +1 -0
- package/lib/reuse/modules/util/console.d.ts +56 -0
- package/lib/reuse/modules/util/console.js +152 -0
- package/lib/reuse/modules/util/console.js.map +1 -0
- package/lib/reuse/modules/util/constants/formatter.constants.d.ts +11 -0
- package/lib/reuse/modules/util/constants/formatter.constants.js +16 -0
- package/lib/reuse/modules/util/constants/formatter.constants.js.map +1 -0
- package/lib/reuse/modules/util/data.d.ts +36 -0
- package/lib/reuse/modules/util/data.js +87 -0
- package/lib/reuse/modules/util/data.js.map +1 -0
- package/lib/reuse/modules/util/file.d.ts +55 -0
- package/lib/reuse/modules/util/file.js +159 -0
- package/lib/reuse/modules/util/file.js.map +1 -0
- package/lib/reuse/modules/util/formatter.d.ts +90 -0
- package/lib/reuse/modules/util/formatter.js +210 -0
- package/lib/reuse/modules/util/formatter.js.map +1 -0
- package/lib/reuse/modules/util/function.d.ts +48 -0
- package/lib/reuse/modules/util/function.js +161 -0
- package/lib/reuse/modules/util/function.js.map +1 -0
- package/lib/reuse/modules/util/system.d.ts +17 -0
- package/lib/reuse/modules/util/system.js +58 -0
- package/lib/reuse/modules/util/system.js.map +1 -0
- package/lib/reuse/modules/util/types/formatter.types.d.ts +2 -0
- package/lib/reuse/modules/util/types/formatter.types.js +3 -0
- package/lib/reuse/modules/util/types/formatter.types.js.map +1 -0
- package/lib/scripts/clientsideUI5scripts.d.ts +1 -0
- package/lib/scripts/clientsideUI5scripts.js +315 -0
- package/lib/scripts/clientsideUI5scripts.js.map +1 -0
- package/lib/scripts/dataExchange/dataExchange.d.ts +1 -0
- package/lib/scripts/dataExchange/dataExchange.js +224 -0
- package/lib/scripts/dataExchange/dataExchange.js.map +1 -0
- package/lib/scripts/dataExchange/dataExchangeUtil.d.ts +63 -0
- package/lib/scripts/dataExchange/dataExchangeUtil.js +211 -0
- package/lib/scripts/dataExchange/dataExchangeUtil.js.map +1 -0
- package/lib/scripts/hooks/after.d.ts +8 -0
- package/lib/scripts/hooks/after.js +30 -0
- package/lib/scripts/hooks/after.js.map +1 -0
- package/lib/scripts/hooks/before.d.ts +8 -0
- package/lib/scripts/hooks/before.js +38 -0
- package/lib/scripts/hooks/before.js.map +1 -0
- package/lib/scripts/hooks/beforeSession.d.ts +8 -0
- package/lib/scripts/hooks/beforeSession.js +37 -0
- package/lib/scripts/hooks/beforeSession.js.map +1 -0
- package/lib/scripts/hooks/onComplete.d.ts +9 -0
- package/lib/scripts/hooks/onComplete.js +31 -0
- package/lib/scripts/hooks/onComplete.js.map +1 -0
- package/lib/scripts/hooks/onPrepare.d.ts +6 -0
- package/lib/scripts/hooks/onPrepare.js +36 -0
- package/lib/scripts/hooks/onPrepare.js.map +1 -0
- package/lib/scripts/hooks/utils/addLocatorCommands.d.ts +2 -0
- package/lib/scripts/hooks/utils/addLocatorCommands.js +193 -0
- package/lib/scripts/hooks/utils/addLocatorCommands.js.map +1 -0
- package/lib/scripts/hooks/utils/browserLog.d.ts +2 -0
- package/lib/scripts/hooks/utils/browserLog.js +39 -0
- package/lib/scripts/hooks/utils/browserLog.js.map +1 -0
- package/lib/scripts/hooks/utils/dataExchangeCommands.d.ts +9 -0
- package/lib/scripts/hooks/utils/dataExchangeCommands.js +46 -0
- package/lib/scripts/hooks/utils/dataExchangeCommands.js.map +1 -0
- package/lib/scripts/hooks/utils/decryption.d.ts +13 -0
- package/lib/scripts/hooks/utils/decryption.js +90 -0
- package/lib/scripts/hooks/utils/decryption.js.map +1 -0
- package/lib/scripts/hooks/utils/lib.d.ts +4 -0
- package/lib/scripts/hooks/utils/lib.js +330 -0
- package/lib/scripts/hooks/utils/lib.js.map +1 -0
- package/lib/scripts/hooks/utils/locatorCommands.d.ts +10 -0
- package/lib/scripts/hooks/utils/locatorCommands.js +216 -0
- package/lib/scripts/hooks/utils/locatorCommands.js.map +1 -0
- package/lib/scripts/locators/qmateLocator.d.ts +1 -0
- package/lib/scripts/locators/qmateLocator.js +1384 -0
- package/lib/scripts/locators/qmateLocator.js.map +1 -0
- package/lib/scripts/locators/uiveri5Locator.d.ts +1 -0
- package/lib/scripts/locators/uiveri5Locator.js +21 -0
- package/lib/scripts/locators/uiveri5Locator.js.map +1 -0
- package/mkdocs.yml +53 -0
- package/package.json +152 -0
- package/test/.eslintrc.yml +6 -0
- package/test/authenticator/package.json +13 -0
- package/test/authenticator/staticLogin/configCustom.js +22 -0
- package/test/authenticator/staticLogin/configCustomViaConfig.js +20 -0
- package/test/authenticator/staticLogin/configFiori.js +19 -0
- package/test/authenticator/staticLogin/configPlain.js +17 -0
- package/test/authenticator/staticLogin/configSapCloud.js +18 -0
- package/test/authenticator/staticLogin/html/custom.html +10 -0
- package/test/authenticator/staticLogin/html/fiori.html +10 -0
- package/test/authenticator/staticLogin/html/home.html +7 -0
- package/test/authenticator/staticLogin/html/sapCloud.html +10 -0
- package/test/authenticator/staticLogin/specs/custom.spec.js +6 -0
- package/test/authenticator/staticLogin/specs/customViaConfig.spec.js +10 -0
- package/test/authenticator/staticLogin/specs/fiori.spec.js +6 -0
- package/test/authenticator/staticLogin/specs/plain.spec.js +64 -0
- package/test/authenticator/staticLogin/specs/sapCloud.spec.js +6 -0
- package/test/authenticator/staticLogin/staticServerConfig.js +20 -0
- package/test/authenticator/systemLogin/configCustom.js +26 -0
- package/test/authenticator/systemLogin/configFiori.js +24 -0
- package/test/authenticator/systemLogin/configPlain.js +22 -0
- package/test/authenticator/systemLogin/configSapCloud.js +24 -0
- package/test/authenticator/systemLogin/specs/custom.spec.js +13 -0
- package/test/authenticator/systemLogin/specs/fiori.spec.js +12 -0
- package/test/authenticator/systemLogin/specs/plain.spec.js +21 -0
- package/test/authenticator/systemLogin/specs/sapCloud.spec.js +13 -0
- package/test/core/README.md +17 -0
- package/test/core/dataExchange/config.export.js +56 -0
- package/test/core/dataExchange/config.import.js +47 -0
- package/test/core/dataExchange/config.js +52 -0
- package/test/core/dataExchange/config.parallel.group.js +61 -0
- package/test/core/dataExchange/config.parallel.js +58 -0
- package/test/core/dataExchange/data/another/folder/data/anotherFolder/dummy1.txt +0 -0
- package/test/core/dataExchange/data/another/folder/data/anotherFolder/purchase-orders/Limit-Purchase-Order.json +29 -0
- package/test/core/dataExchange/data/another/folder/data/anotherFolder/purchase-orders/ServicePurchaseOrder.2Items.json +67 -0
- package/test/core/dataExchange/data/another/folder/data/anotherFolder/purchaseRequisition_HI.json +31 -0
- package/test/core/dataExchange/data/another/folder/data/anotherFolder/subfolder/LimitPurchaseOrder.json +29 -0
- package/test/core/dataExchange/data/another/folder/data/anotherFolder/subfolder/PurchaseOrderItems.json +58 -0
- package/test/core/dataExchange/data/another/folder/data/anotherFolder/subfolder/PurchaseOrderWithScheduline.json +27 -0
- package/test/core/dataExchange/data/another/folder/data/anotherFolder/subfolder/ServiceAndMaterialPurchaseOrder.json +65 -0
- package/test/core/dataExchange/data/another/folder/data/anotherFolder/subfolder/ServicePurchaseOrder.json +39 -0
- package/test/core/dataExchange/data/another/folder/data/anotherFolder/subfolder/ServicePurchaseOrder2Items.json +67 -0
- package/test/core/dataExchange/data/my/folder/data/qs9/data.json +5 -0
- package/test/core/dataExchange/data/my/folder/data/qs9/dummy1.txt +0 -0
- package/test/core/dataExchange/data/my/folder/data/qs9/dummy2.txt +0 -0
- package/test/core/dataExchange/data/my/folder/data/qs9/empty.json +0 -0
- package/test/core/dataExchange/data/my/folder/data/qs9/purchaseRequisition.json +31 -0
- package/test/core/dataExchange/data/my/folder/data/qs9/supplierInvoice.json +17 -0
- package/test/core/dataExchange/data/my/folder/data/qs9/webUser.json +6 -0
- package/test/core/dataExchange/data/ui/moreDataFolder/anotherUser.json +6 -0
- package/test/core/dataExchange/data/ui/user.json +6 -0
- package/test/core/dataExchange/data/ui/webUser.json +6 -0
- package/test/core/dataExchange/specs/export.fast.spec.js +48 -0
- package/test/core/dataExchange/specs/export.slow.spec.js +50 -0
- package/test/core/dataExchange/specs/export.spec.js +103 -0
- package/test/core/dataExchange/specs/import.spec.js +144 -0
- package/test/core/dataExchange/specs/importExport.spec.js +196 -0
- package/test/core/dataExchange/utils.js +160 -0
- package/test/core/functional/README.md +30 -0
- package/test/core/functional/chaining/chaining.test.js +137 -0
- package/test/core/functional/chaining/test.conf.js +31 -0
- package/test/core/functional/locators/ancestorProperties.test.js +99 -0
- package/test/core/functional/locators/childProperties.test.js +40 -0
- package/test/core/functional/locators/descendantProperties.test.js +107 -0
- package/test/core/functional/locators/domProperties.test.js +60 -0
- package/test/core/functional/locators/elementProperties.test.js +114 -0
- package/test/core/functional/locators/mixedProperties.test.js +170 -0
- package/test/core/functional/locators/parentProperties.test.js +47 -0
- package/test/core/functional/locators/siblingProperties.test.js +120 -0
- package/test/core/functional/locators/test.locator.conf.js +38 -0
- package/test/core/functional/locators/utils.js +6 -0
- package/test/core/functional/nativeBrowser/runInBrowser.test.js +111 -0
- package/test/core/functional/nativeBrowser/test.conf.js +31 -0
- package/test/core/functional/nonUi5/basic.test.js +10 -0
- package/test/core/functional/nonUi5/getWithDomElement.test.js +51 -0
- package/test/core/functional/nonUi5/getWithDomElements.test.js +141 -0
- package/test/core/functional/nonUi5/test.conf.js +32 -0
- package/test/core/functional/ui5Properties/getAggregations.test.js +102 -0
- package/test/core/functional/ui5Properties/getAssociations.test.js +24 -0
- package/test/core/functional/ui5Properties/getBindingInfos.test.js +71 -0
- package/test/core/functional/ui5Properties/getProperties.test.js +226 -0
- package/test/core/functional/ui5Properties/test.conf.js +16 -0
- package/test/core/functional/uiveri5/sample.test.js +61 -0
- package/test/core/functional/uiveri5/test.conf.js +31 -0
- package/test/core/package-lock.json +0 -0
- package/test/core/package.json +12 -0
- package/test/core/testIntegration/config.js +17 -0
- package/test/core/testIntegration/configMultiCombo.js +17 -0
- package/test/core/testIntegration/configTable.js +18 -0
- package/test/core/testIntegration/filters1.spec.js +1849 -0
- package/test/core/testIntegration/multicombobox.spec.js +134 -0
- package/test/core/testIntegration/table.spec.js +80 -0
- package/test/helper/configurations/base.conf.js +43 -0
- package/test/helper/configurations/chrome.conf.js +47 -0
- package/test/helper/configurations/chrome.headless.conf.js +45 -0
- package/test/helper/configurations/sauce.labs.conf.js +37 -0
- package/test/helper/configurations/sauce.labs.tunnel.conf.js +39 -0
- package/test/helper/sleeper.js +19 -0
- package/test/helper/utils.js +15 -0
- package/test/helper/website/buttons.html +85 -0
- package/test/helper/website/checkBox.html +83 -0
- package/test/helper/website/dragAndDropFailing.html +83 -0
- package/test/helper/website/dragAndDropWdioExample.html +41 -0
- package/test/helper/website/dropdown.html +78 -0
- package/test/helper/website/forms.html +82 -0
- package/test/helper/website/hiddenAndVisible.html +60 -0
- package/test/helper/website/main.css +36 -0
- package/test/helper/website/scrollPage.html +261 -0
- package/test/helper/website/style.css +52 -0
- package/test/helper/website/tables.html +140 -0
- package/test/helper/website/waitForElements.html +73 -0
- package/test/reuse/common/assertion/expectDefined.spec.js +11 -0
- package/test/reuse/common/assertion/expectEqual.spec.js +52 -0
- package/test/reuse/common/assertion/expectFalse.spec.js +9 -0
- package/test/reuse/common/assertion/expectTrue.spec.js +9 -0
- package/test/reuse/common/assertion/expectUndefined.spec.js +11 -0
- package/test/reuse/common/assertion/expectUnequal.spec.js +25 -0
- package/test/reuse/common/assertion/expectUrlToBe.spec.js +27 -0
- package/test/reuse/common/assertion/test.assertion.conf.js +59 -0
- package/test/reuse/common/date/calculate.spec.js +163 -0
- package/test/reuse/common/date/getNextMonth.spec.js +105 -0
- package/test/reuse/common/date/getNextYear.spec.js +72 -0
- package/test/reuse/common/date/getPreviousMonth.spec.js +71 -0
- package/test/reuse/common/date/getPreviousYear.spec.js +72 -0
- package/test/reuse/common/date/getSpecific.spec.js +63 -0
- package/test/reuse/common/date/getToday.spec.js +78 -0
- package/test/reuse/common/date/getTomorrow.spec.js +72 -0
- package/test/reuse/common/date/test.date.conf.js +19 -0
- package/test/reuse/common/date/utils.js +6 -0
- package/test/reuse/common/navigation/navigateToUrl.spec.js +28 -0
- package/test/reuse/common/navigation/navigateToUrlAndRetry.spec.js +27 -0
- package/test/reuse/common/navigation/test.navigation.conf.js +25 -0
- package/test/reuse/common/userInteraction/clearAndFillActive.spec.js +100 -0
- package/test/reuse/common/userInteraction/clearAndFillActiveAndRetry.spec.js +106 -0
- package/test/reuse/common/userInteraction/fillActive.spec.js +230 -0
- package/test/reuse/common/userInteraction/fillActiveAndRetry.spec.js +172 -0
- package/test/reuse/common/userInteraction/pressKey.spec.js +105 -0
- package/test/reuse/common/userInteraction/test.userInteraction.conf.js +53 -0
- package/test/reuse/nonUi5/assertion/expectAttributeToBe.spec.js +45 -0
- package/test/reuse/nonUi5/assertion/expectAttributeToContain.spec.js +43 -0
- package/test/reuse/nonUi5/assertion/expectToBeNotVisible.spec.js +37 -0
- package/test/reuse/nonUi5/assertion/expectToBeVisible.spec.js +63 -0
- package/test/reuse/nonUi5/assertion/expectValueToBe.spec.js +25 -0
- package/test/reuse/nonUi5/assertion/test.assertion.conf.js +60 -0
- package/test/reuse/nonUi5/assertion/test.assertion.sauceLabs.conf.js +64 -0
- package/test/reuse/nonUi5/element/getAllDisplayed.spec.js +39 -0
- package/test/reuse/nonUi5/element/getAttributeValue.spec.js +58 -0
- package/test/reuse/nonUi5/element/getByChild.spec.js +70 -0
- package/test/reuse/nonUi5/element/getByClass.spec.js +64 -0
- package/test/reuse/nonUi5/element/getByCss.spec.js +65 -0
- package/test/reuse/nonUi5/element/getByCssContainingText.spec.js +83 -0
- package/test/reuse/nonUi5/element/getById.spec.js +35 -0
- package/test/reuse/nonUi5/element/getByName.spec.js +30 -0
- package/test/reuse/nonUi5/element/getByParent.spec.js +71 -0
- package/test/reuse/nonUi5/element/getByXPath.spec.js +30 -0
- package/test/reuse/nonUi5/element/getValue.spec.js +51 -0
- package/test/reuse/nonUi5/element/highlight.spec.js +18 -0
- package/test/reuse/nonUi5/element/isPresent.spec.js +39 -0
- package/test/reuse/nonUi5/element/isPresentByCss.spec.js +73 -0
- package/test/reuse/nonUi5/element/isPresentByXPath.spec.js +31 -0
- package/test/reuse/nonUi5/element/setInnerHTML.spec.js +23 -0
- package/test/reuse/nonUi5/element/test.element.conf.js +55 -0
- package/test/reuse/nonUi5/element/test.element.sauceLabs.conf.js +58 -0
- package/test/reuse/nonUi5/element/waitForAll.spec.js +24 -0
- package/test/reuse/nonUi5/element/waitToBeClickable.spec.js +24 -0
- package/test/reuse/nonUi5/element/waitToBePresent.spec.js +32 -0
- package/test/reuse/nonUi5/element/waitToBeVisible.spec.js +36 -0
- package/test/reuse/nonUi5/navigation/navigateToApplication.spec.js +13 -0
- package/test/reuse/nonUi5/navigation/test.navigation.conf.js +14 -0
- package/test/reuse/nonUi5/userInteraction/checkAttributeAndValue.spec.js +135 -0
- package/test/reuse/nonUi5/userInteraction/clear.spec.js +43 -0
- package/test/reuse/nonUi5/userInteraction/clearAndFill.spec.js +51 -0
- package/test/reuse/nonUi5/userInteraction/clearAndFillAndRetry.spec.js +58 -0
- package/test/reuse/nonUi5/userInteraction/clearAndRetry.spec.js +43 -0
- package/test/reuse/nonUi5/userInteraction/click.spec.js +60 -0
- package/test/reuse/nonUi5/userInteraction/clickAndRetry.spec.js +60 -0
- package/test/reuse/nonUi5/userInteraction/clickElementInSvg.spec.js +24 -0
- package/test/reuse/nonUi5/userInteraction/doubleClick.spec.js +22 -0
- package/test/reuse/nonUi5/userInteraction/dragAndDrop.spec.js +40 -0
- package/test/reuse/nonUi5/userInteraction/fill.spec.js +37 -0
- package/test/reuse/nonUi5/userInteraction/fillAndRetry.spec.js +39 -0
- package/test/reuse/nonUi5/userInteraction/mouseOverElement.spec.js +36 -0
- package/test/reuse/nonUi5/userInteraction/moveCursorAndClick.spec.js +24 -0
- package/test/reuse/nonUi5/userInteraction/rightClick.spec.js +13 -0
- package/test/reuse/nonUi5/userInteraction/scrollToElement.spec.js +35 -0
- package/test/reuse/nonUi5/userInteraction/test.userInteraction.conf.js +72 -0
- package/test/reuse/nonUi5/userInteraction/test.userInteraction.sauceLabs.conf.js +78 -0
- package/test/reuse/service/rest/db.json +8 -0
- package/test/reuse/service/rest/delete.spec.js +20 -0
- package/test/reuse/service/rest/get.spec.js +19 -0
- package/test/reuse/service/rest/init.spec.js +35 -0
- package/test/reuse/service/rest/patch.spec.js +29 -0
- package/test/reuse/service/rest/post.spec.js +37 -0
- package/test/reuse/service/rest/test.rest.conf.js +18 -0
- package/test/reuse/ui5/assertion/expectAttributeToBe.spec.js +106 -0
- package/test/reuse/ui5/assertion/expectAttributeToContain.spec.js +78 -0
- package/test/reuse/ui5/assertion/expectBindingContextPathToBe.spec.js +103 -0
- package/test/reuse/ui5/assertion/expectBindingPathToBe.spec.js +164 -0
- package/test/reuse/ui5/assertion/expectMessageToastTextToBe.spec.js +43 -0
- package/test/reuse/ui5/assertion/expectTextToBe.spec.js +39 -0
- package/test/reuse/ui5/assertion/expectToBeEnabled.spec.js +90 -0
- package/test/reuse/ui5/assertion/expectToBeNotEnabled.spec.js +62 -0
- package/test/reuse/ui5/assertion/expectToBeNotVisible.spec.js +52 -0
- package/test/reuse/ui5/assertion/expectToBeVisible.spec.js +69 -0
- package/test/reuse/ui5/assertion/expectToBeVisibleInViewport.spec.js +49 -0
- package/test/reuse/ui5/assertion/expectValidationError.spec.js +54 -0
- package/test/reuse/ui5/assertion/expectValidationSuccess.spec.js +53 -0
- package/test/reuse/ui5/assertion/expectValueToBe.spec.js +57 -0
- package/test/reuse/ui5/assertion/expectValueToBeDefined.spec.js +35 -0
- package/test/reuse/ui5/assertion/test.assertion.conf.js +28 -0
- package/test/reuse/ui5/assertion/test.assertion.sauceLab.conf.js +37 -0
- package/test/reuse/ui5/confirmationDialog/clickCancel.spec.js +88 -0
- package/test/reuse/ui5/confirmationDialog/clickCreate.spec.js +3 -0
- package/test/reuse/ui5/confirmationDialog/clickDelete.spec.js +89 -0
- package/test/reuse/ui5/confirmationDialog/clickNo.spec.js +96 -0
- package/test/reuse/ui5/confirmationDialog/clickOk.spec.js +66 -0
- package/test/reuse/ui5/confirmationDialog/clickRevokeApproval.spec.js +3 -0
- package/test/reuse/ui5/confirmationDialog/clickYes.spec.js +70 -0
- package/test/reuse/ui5/confirmationDialog/test.confirmationDialog.conf.js +20 -0
- package/test/reuse/ui5/confirmationDialog/test.confirmationDialog.sauceLab.conf.js +29 -0
- package/test/reuse/ui5/control/execute.spec.js +29 -0
- package/test/reuse/ui5/control/getAggregationProperty.spec.js +29 -0
- package/test/reuse/ui5/control/getAssociationProperty.spec.js +1 -0
- package/test/reuse/ui5/control/getBindingContextPathProperty.spec.js +30 -0
- package/test/reuse/ui5/control/getProperty.spec.js +30 -0
- package/test/reuse/ui5/control/getPropertyBinding.spec.js +30 -0
- package/test/reuse/ui5/control/test.control.conf.js +19 -0
- package/test/reuse/ui5/control/test.control.sauceLab.conf.js +30 -0
- package/test/reuse/ui5/date/fillRange.spec.js +53 -0
- package/test/reuse/ui5/date/pick.spec.js +136 -0
- package/test/reuse/ui5/date/pickRange.spec.js +143 -0
- package/test/reuse/ui5/date/test.date.conf.js +14 -0
- package/test/reuse/ui5/date/test.date.sauceLab.conf.js +26 -0
- package/test/reuse/ui5/element/getAllDisplayed.spec.js +71 -0
- package/test/reuse/ui5/element/getBindingValue.spec.js +78 -0
- package/test/reuse/ui5/element/getByChild.spec.js +124 -0
- package/test/reuse/ui5/element/getByParent.spec.js +134 -0
- package/test/reuse/ui5/element/getByText.spec.js +67 -0
- package/test/reuse/ui5/element/getDisplayed.spec.js +82 -0
- package/test/reuse/ui5/element/getId.spec.js +72 -0
- package/test/reuse/ui5/element/getPropertyValue.spec.js +91 -0
- package/test/reuse/ui5/element/highlight.spec.js +46 -0
- package/test/reuse/ui5/element/isVisible.spec.js +68 -0
- package/test/reuse/ui5/element/test.element.conf.js +22 -0
- package/test/reuse/ui5/element/test.element.sauceLab.conf.js +33 -0
- package/test/reuse/ui5/errorDialog/clickClose.spec.js +31 -0
- package/test/reuse/ui5/errorDialog/expectToBeVisible.spec.js +30 -0
- package/test/reuse/ui5/errorDialog/test.errorDialog.conf.js +13 -0
- package/test/reuse/ui5/errorDialog/test.errorDialog.sauceLab.conf.js +26 -0
- package/test/reuse/ui5/formatter/addRemoveLeadingZeros.spec.js +18 -0
- package/test/reuse/ui5/formatter/extractNumberFromString.spec.js +34 -0
- package/test/reuse/ui5/formatter/formatDate.spec.js +103 -0
- package/test/reuse/ui5/formatter/test.formatter.conf.js +14 -0
- package/test/reuse/ui5/formatter/test.formatter.sauceLab.conf.js +24 -0
- package/test/reuse/ui5/mockserver_qunit/Component.js +23 -0
- package/test/reuse/ui5/mockserver_qunit/LICENSE.txt +957 -0
- package/test/reuse/ui5/mockserver_qunit/NOTICE.txt +1 -0
- package/test/reuse/ui5/mockserver_qunit/controller/App.controller.js +37 -0
- package/test/reuse/ui5/mockserver_qunit/controller/BaseController.js +30 -0
- package/test/reuse/ui5/mockserver_qunit/controller/Home.controller.js +27 -0
- package/test/reuse/ui5/mockserver_qunit/controller/NotFound.controller.js +34 -0
- package/test/reuse/ui5/mockserver_qunit/controller/employee/Employee.controller.js +64 -0
- package/test/reuse/ui5/mockserver_qunit/controller/employee/EmployeeList.controller.js +22 -0
- package/test/reuse/ui5/mockserver_qunit/controller/employee/Resume.controller.js +83 -0
- package/test/reuse/ui5/mockserver_qunit/controller/employee/overview/EmployeeOverview.controller.js +11 -0
- package/test/reuse/ui5/mockserver_qunit/controller/employee/overview/EmployeeOverviewContent.controller.js +192 -0
- package/test/reuse/ui5/mockserver_qunit/i18n/i18n.properties +42 -0
- package/test/reuse/ui5/mockserver_qunit/index.html +21 -0
- package/test/reuse/ui5/mockserver_qunit/initMockServer.js +16 -0
- package/test/reuse/ui5/mockserver_qunit/localService/metadata.xml +61 -0
- package/test/reuse/ui5/mockserver_qunit/localService/mockdata/Employees.json +155 -0
- package/test/reuse/ui5/mockserver_qunit/localService/mockdata/Resumes.json +65 -0
- package/test/reuse/ui5/mockserver_qunit/localService/mockserver.js +146 -0
- package/test/reuse/ui5/mockserver_qunit/localService/mockserverLoadAllData.js +75 -0
- package/test/reuse/ui5/mockserver_qunit/manifest.json +169 -0
- package/test/reuse/ui5/mockserver_qunit/test/flpSandboxMockServer.html +63 -0
- package/test/reuse/ui5/mockserver_qunit/test/flpSandboxMockServerAllData.html +68 -0
- package/test/reuse/ui5/mockserver_qunit/test/qmate/ui/config.js +92 -0
- package/test/reuse/ui5/mockserver_qunit/test/qmate/ui/qunitExecution/specs/runQUnitTests.spec.js +14 -0
- package/test/reuse/ui5/mockserver_qunit/test/qmate/ui/testDisplayNotFound/data/setup.json +11 -0
- package/test/reuse/ui5/mockserver_qunit/test/qmate/ui/testDisplayNotFound/specs/testDisplayNotFound.spec.js +71 -0
- package/test/reuse/ui5/mockserver_qunit/test/qmate/ui/testShowEmployeeList/data/mock/Employees.json +204 -0
- package/test/reuse/ui5/mockserver_qunit/test/qmate/ui/testShowEmployeeList/data/mock/Resumes.json +114 -0
- package/test/reuse/ui5/mockserver_qunit/test/qmate/ui/testShowEmployeeList/data/setup.json +11 -0
- package/test/reuse/ui5/mockserver_qunit/test/qmate/ui/testShowEmployeeList/data/testShowEmployeeList.json +1 -0
- package/test/reuse/ui5/mockserver_qunit/test/qmate/ui/testShowEmployeeList/specs/testShowEmployeeList.spec.js +118 -0
- package/test/reuse/ui5/mockserver_qunit/test/qmate/ui/utils/constants.js +25 -0
- package/test/reuse/ui5/mockserver_qunit/test/qmate/ui/utils/mockDataMapper.js +23 -0
- package/test/reuse/ui5/mockserver_qunit/test/qmate/ui/utils/mockHelper.js +222 -0
- package/test/reuse/ui5/mockserver_qunit/test/unit/allTests.js +6 -0
- package/test/reuse/ui5/mockserver_qunit/test/unit/unitTests.qunit.html +38 -0
- package/test/reuse/ui5/mockserver_qunit/test/unit/utils/Conversions.js +13 -0
- package/test/reuse/ui5/mockserver_qunit/view/App.view.xml +9 -0
- package/test/reuse/ui5/mockserver_qunit/view/Home.view.xml +12 -0
- package/test/reuse/ui5/mockserver_qunit/view/NotFound.view.xml +11 -0
- package/test/reuse/ui5/mockserver_qunit/view/employee/Employee.view.xml +52 -0
- package/test/reuse/ui5/mockserver_qunit/view/employee/EmployeeList.view.xml +24 -0
- package/test/reuse/ui5/mockserver_qunit/view/employee/Resume.view.xml +35 -0
- package/test/reuse/ui5/mockserver_qunit/view/employee/ResumeHobbies.view.xml +3 -0
- package/test/reuse/ui5/mockserver_qunit/view/employee/ResumeNotes.view.xml +3 -0
- package/test/reuse/ui5/mockserver_qunit/view/employee/ResumeProjects.view.xml +3 -0
- package/test/reuse/ui5/mockserver_qunit/view/employee/overview/EmployeeOverview.view.xml +13 -0
- package/test/reuse/ui5/mockserver_qunit/view/employee/overview/EmployeeOverviewContent.view.xml +43 -0
- package/test/reuse/ui5/mockserver_qunit/view/employee/overview/EmployeeOverviewTop.view.xml +3 -0
- package/test/reuse/ui5/navigation/closePopups.spec.js +16 -0
- package/test/reuse/ui5/navigation/expectUnsupportedNavigationPopup.spec.js +81 -0
- package/test/reuse/ui5/navigation/navigateToApplication.spec.js +148 -0
- package/test/reuse/ui5/navigation/navigateToApplicationAndRetry.spec.js +153 -0
- package/test/reuse/ui5/navigation/navigateToApplicationWithQueryParams.spec.js +63 -0
- package/test/reuse/ui5/navigation/navigateToApplicationWithQueryParamsAndRetry.spec.js +64 -0
- package/test/reuse/ui5/navigation/navigateToSystemAndApplication.spec.js +45 -0
- package/test/reuse/ui5/navigation/navigateToSystemAndApplicationAndRetry.spec.js +43 -0
- package/test/reuse/ui5/navigation/test.navigation.conf.js +17 -0
- package/test/reuse/ui5/navigation/test.navigation.sauceLab.conf.js +33 -0
- package/test/reuse/ui5/navigation/test.navigation.static.conf.js +34 -0
- package/test/reuse/ui5/navigation/test.navigation.static.sauceLab.conf.js +41 -0
- package/test/reuse/ui5/navigation/website/main.css +36 -0
- package/test/reuse/ui5/navigation/website/main.html +50 -0
- package/test/reuse/ui5/navigationBar/clickBack.spec.js +38 -0
- package/test/reuse/ui5/navigationBar/clickUserIcon.spec.js +36 -0
- package/test/reuse/ui5/navigationBar/expectPageTitle.spec.js +22 -0
- package/test/reuse/ui5/navigationBar/expectShellHeader.spec.js +22 -0
- package/test/reuse/ui5/navigationBar/test.navigationBar.conf.js +17 -0
- package/test/reuse/ui5/navigationBar/test.navigationBar.sauceLab.conf.js +28 -0
- package/test/reuse/ui5/session/login.spec.js +78 -0
- package/test/reuse/ui5/session/loginFiori.spec.js +52 -0
- package/test/reuse/ui5/session/loginSapCloud.spec.js +51 -0
- package/test/reuse/ui5/session/logout.spec.js +48 -0
- package/test/reuse/ui5/session/switchUser.spec.js +48 -0
- package/test/reuse/ui5/session/test.session.conf.js +20 -0
- package/test/reuse/ui5/session/test.session.sauceLab.conf.js +29 -0
- package/test/reuse/ui5/table/clickSettingsButton.spec.js +58 -0
- package/test/reuse/ui5/table/sortColumnAscending.spec.js +84 -0
- package/test/reuse/ui5/table/sortColumnDescending.spec.js +84 -0
- package/test/reuse/ui5/table/test.table.conf.js +14 -0
- package/test/reuse/ui5/table/test.table.sauceLab.conf.js +25 -0
- package/test/reuse/ui5/table/test.table.sauceLab.tunnel.conf.js +25 -0
- package/test/reuse/ui5/userInteraction/clear.spec.js +75 -0
- package/test/reuse/ui5/userInteraction/clearAndFill.spec.js +157 -0
- package/test/reuse/ui5/userInteraction/clearAndFillAndRetry.spec.js +132 -0
- package/test/reuse/ui5/userInteraction/clearAndFillSmartFieldInput.spec.js +73 -0
- package/test/reuse/ui5/userInteraction/clearAndRetry.spec.js +57 -0
- package/test/reuse/ui5/userInteraction/click.spec.js +73 -0
- package/test/reuse/ui5/userInteraction/clickAndRetry.spec.js +52 -0
- package/test/reuse/ui5/userInteraction/clickSelectArrow.spec.js +87 -0
- package/test/reuse/ui5/userInteraction/clickSelectArrowAndRetry.spec.js +147 -0
- package/test/reuse/ui5/userInteraction/clickTab.spec.js +59 -0
- package/test/reuse/ui5/userInteraction/doubleClick.spec.js +73 -0
- package/test/reuse/ui5/userInteraction/dragAndDrop.spec.js +34 -0
- package/test/reuse/ui5/userInteraction/fill.spec.js +114 -0
- package/test/reuse/ui5/userInteraction/fillAndRetry.spec.js +120 -0
- package/test/reuse/ui5/userInteraction/mouseOverElement.spec.js +55 -0
- package/test/reuse/ui5/userInteraction/openF4Help.spec.js +56 -0
- package/test/reuse/ui5/userInteraction/rightClick.spec.js +72 -0
- package/test/reuse/ui5/userInteraction/scrollToElement.spec.js +89 -0
- package/test/reuse/ui5/userInteraction/searchFor.spec.js +155 -0
- package/test/reuse/ui5/userInteraction/selectBox.spec.js +128 -0
- package/test/reuse/ui5/userInteraction/selectCombobox.spec.js +115 -0
- package/test/reuse/ui5/userInteraction/selectMultiComboBox.spec.js +155 -0
- package/test/reuse/ui5/userInteraction/test.userInteraction.conf.js +35 -0
- package/test/reuse/ui5/userInteraction/test.userInteraction.sauceLab.conf.js +46 -0
- package/test/reuse/util/browser/back.spec.js +32 -0
- package/test/reuse/util/browser/clearBrowser.spec.js +35 -0
- package/test/reuse/util/browser/executeScript.spec.js +49 -0
- package/test/reuse/util/browser/getBaseUrl.spec.js +13 -0
- package/test/reuse/util/browser/getBrowserName.spec.js +18 -0
- package/test/reuse/util/browser/getCurrentUrl.spec.js +34 -0
- package/test/reuse/util/browser/getCurrentWindow.spec.js +42 -0
- package/test/reuse/util/browser/getUI5Version.spec.js +31 -0
- package/test/reuse/util/browser/logCurrentUrl.spec.js +23 -0
- package/test/reuse/util/browser/refresh.spec.js +52 -0
- package/test/reuse/util/browser/setBaseUrl.spec.js +13 -0
- package/test/reuse/util/browser/switchToDefaultContent.spec.js +34 -0
- package/test/reuse/util/browser/switchToIframe.spec.js +29 -0
- package/test/reuse/util/browser/switchToNewWindow.spec.js +142 -0
- package/test/reuse/util/browser/switchToWindow.spec.js +57 -0
- package/test/reuse/util/browser/test.browser.conf.js +27 -0
- package/test/reuse/util/data/data/test.json +3 -0
- package/test/reuse/util/data/data/test.secure.json +11 -0
- package/test/reuse/util/data/decrypt.spec.js +15 -0
- package/test/reuse/util/data/getData.spec.js +15 -0
- package/test/reuse/util/data/getSecureData.spec.js +57 -0
- package/test/reuse/util/data/test.data.conf.js +22 -0
- package/test/reuse/util/file/file.spec.js +90 -0
- package/test/reuse/util/file/pdfParser.spec.js +55 -0
- package/test/reuse/util/file/test.file.conf.js +15 -0
- package/test/reuse/util/file/testFiles/sample.pdf +198 -0
- package/test/reuse/util/file/testFiles/test.txt +5 -0
- package/test/reuse/util/file/testFiles/test2.txt +2 -0
- package/test/reuse/util/formatter/addRemoveLeadingZeros.spec.js +38 -0
- package/test/reuse/util/formatter/extractNumberFromString.spec.js +67 -0
- package/test/reuse/util/formatter/formatDate.spec.js +150 -0
- package/test/reuse/util/formatter/sliceStringAfter.spec.js +62 -0
- package/test/reuse/util/formatter/sliceStringAt.spec.js +62 -0
- package/test/reuse/util/formatter/stringifyJSON.spec.js +24 -0
- package/test/reuse/util/formatter/test.formatter.conf.js +20 -0
- package/test/reuse/util/formatter/trimString.spec.js +37 -0
- package/tsconfig.json +26 -0
|
@@ -0,0 +1,690 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.UserInteraction = void 0;
|
|
13
|
+
/**
|
|
14
|
+
* @class userInteraction
|
|
15
|
+
* @memberof ui5
|
|
16
|
+
*/
|
|
17
|
+
class UserInteraction {
|
|
18
|
+
// =================================== CLICK ===================================
|
|
19
|
+
/**
|
|
20
|
+
* @function click
|
|
21
|
+
* @memberOf ui5.userInteraction
|
|
22
|
+
* @description Clicks on the element with the given selector.
|
|
23
|
+
* @param {Object} selector - The selector describing the element.
|
|
24
|
+
* @param {Number} [index=0] - The index of the selector (in case there are more than one elements visible at the same time).
|
|
25
|
+
* @param {Number} [timeout=30000] - The timeout to wait (ms).
|
|
26
|
+
* @example await ui5.userInteraction.click(selector);
|
|
27
|
+
*/
|
|
28
|
+
click(selector, index = 0, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000) {
|
|
29
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
30
|
+
let elem = null;
|
|
31
|
+
yield browser.waitUntil(function () {
|
|
32
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
33
|
+
elem = yield ui5.element.getDisplayed(selector, index, timeout);
|
|
34
|
+
if (!elem)
|
|
35
|
+
return false;
|
|
36
|
+
return elem.isClickable();
|
|
37
|
+
});
|
|
38
|
+
}, {
|
|
39
|
+
timeout,
|
|
40
|
+
timeoutMsg: `Element not clickable after ${+timeout / 1000}s`
|
|
41
|
+
});
|
|
42
|
+
try {
|
|
43
|
+
// @ts-ignore
|
|
44
|
+
yield elem.click();
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
// @ts-ignore
|
|
48
|
+
if (error.message && error.message.match(new RegExp(/is not clickable at point/))) {
|
|
49
|
+
// @ts-ignore
|
|
50
|
+
const errorMessage = yield util.function.mapWdioErrorToQmateErrorMessage(error, "click");
|
|
51
|
+
throw new Error(errorMessage);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
;
|
|
57
|
+
/**
|
|
58
|
+
* @function clickAndRetry
|
|
59
|
+
* @memberOf ui5.userInteraction
|
|
60
|
+
* @description Clicks on the element with the given selector and retries the action in case of a failure.
|
|
61
|
+
* @param {Object} selector - The selector describing the element.
|
|
62
|
+
* @param {Number} [index=0] - The index of the selector (in case there are more than one elements visible at the same time).
|
|
63
|
+
* @param {Number} [timeout=30000] - The timeout to wait (ms).
|
|
64
|
+
* @param {Number} [retries=3] - The number of retries, can be set in config for all functions under params stepsRetries.
|
|
65
|
+
* @param {Number} [interval=5000] - The delay between the retries (ms). Can be set in config for all functions under params.stepRetriesIntervals.
|
|
66
|
+
* @example await ui5.userInteraction.clickAndRetry(selector);
|
|
67
|
+
*/
|
|
68
|
+
clickAndRetry(selector, index = 0, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000, retries = 3, interval = 5000) {
|
|
69
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
70
|
+
yield util.function.retry(this.click, [selector, index, timeout], retries, interval, this);
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
;
|
|
74
|
+
/**
|
|
75
|
+
* @function clickTab
|
|
76
|
+
* @memberOf ui5.userInteraction
|
|
77
|
+
* @description Clicks on the tab with the given selector and checks if the tab got selected successfully.
|
|
78
|
+
* The function retries the click for maximal 3 times if the selection of the tab (blue underline) was not successful.
|
|
79
|
+
* @param {Object} selector - The selector describing the element.
|
|
80
|
+
* @param {Number} [index=0] - The index of the selector (in case there are more than one elements visible at the same time).
|
|
81
|
+
* @param {Number} [timeout=30000] - The timeout to wait (ms).
|
|
82
|
+
* @example await ui5.userInteraction.clickTab(selector);
|
|
83
|
+
*/
|
|
84
|
+
clickTab(selector, index = 0, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000) {
|
|
85
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
86
|
+
yield util.function.retry(function (selector, index, timeout) {
|
|
87
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
88
|
+
yield ui5.userInteraction.click(selector);
|
|
89
|
+
const tab = yield ui5.element.getDisplayed(selector, index, timeout);
|
|
90
|
+
const classList = yield tab.getAttribute("class");
|
|
91
|
+
if (!classList.includes("sapUxAPAnchorBarButtonSelected")) {
|
|
92
|
+
throw new Error();
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
}, [selector, index, timeout], 3, 5000, this);
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
;
|
|
99
|
+
/**
|
|
100
|
+
* @function clickListItem
|
|
101
|
+
* @memberOf ui5.userInteraction
|
|
102
|
+
* @description Clicks or opens the list item with the given selector (e.g. ColumnListItem, StandardListItem).
|
|
103
|
+
* In some cases the default click function is not working correctly (clicks an element within the list item).
|
|
104
|
+
* Therefore we recommend to use this function to open a specific list item.
|
|
105
|
+
* @param {Object} selector - The selector describing the element.
|
|
106
|
+
* @param {Number} [index=0] - The index of the selector (in case there are more than one elements visible at the same time).
|
|
107
|
+
* @param {Number} [timeout=30000] - The timeout to wait (ms).
|
|
108
|
+
* @example await ui5.userInteraction.clickListItem(selector);
|
|
109
|
+
*/
|
|
110
|
+
clickListItem(selector, index = 0, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000) {
|
|
111
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
112
|
+
const elem = yield ui5.element.getDisplayed(selector, index, timeout);
|
|
113
|
+
yield ui5.control.execute(function (control, done) {
|
|
114
|
+
control.attachPress(function () {
|
|
115
|
+
done();
|
|
116
|
+
});
|
|
117
|
+
control.firePress();
|
|
118
|
+
}, elem);
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
;
|
|
122
|
+
// =================================== FILL ===================================
|
|
123
|
+
/**
|
|
124
|
+
* @function fill
|
|
125
|
+
* @memberOf ui5.userInteraction
|
|
126
|
+
* @description Fills the input field with the given selector.
|
|
127
|
+
* @param {Object} selector - The selector describing the element.
|
|
128
|
+
* @param {String} value - The value to fill.
|
|
129
|
+
* @param {Number} [index=0] - The index of the selector (in case there are more than one elements visible at the same time).
|
|
130
|
+
* @param {Number} [timeout=30000] - The timeout to wait (ms).
|
|
131
|
+
* @example await ui5.userInteraction.fill(selector, "My Value");
|
|
132
|
+
*/
|
|
133
|
+
fill(selector, value, index = 0, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000) {
|
|
134
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
135
|
+
if (value !== null) {
|
|
136
|
+
const id = yield ui5.element.getId(selector, index, timeout);
|
|
137
|
+
let elem = null;
|
|
138
|
+
if (selector.elementProperties.metadata === "sap.m.TextArea") {
|
|
139
|
+
elem = yield nonUi5.element.getByCss("[id='" + id + "'] textarea", index, timeout);
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
elem = yield nonUi5.element.getByCss("[id='" + id + "'] input", index, timeout);
|
|
143
|
+
}
|
|
144
|
+
yield elem.setValue(value);
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
;
|
|
149
|
+
/**
|
|
150
|
+
* @function fillAndRetry
|
|
151
|
+
* @memberOf ui5.userInteraction
|
|
152
|
+
* @description Fills the input field with the given selector and retries the action in case of a failure.
|
|
153
|
+
* @param {Object} selector - The selector describing the element.
|
|
154
|
+
* @param {String} value - The value to fill.
|
|
155
|
+
* @param {Number} [index=0] - The index of the selector (in case there are more than one elements visible at the same time).
|
|
156
|
+
* @param {Number} [timeout=30000] - The timeout to wait (ms).
|
|
157
|
+
* @param {Number} [retries=3] - The number of retries, can be set in config for all functions under params stepsRetries.
|
|
158
|
+
* @param {Number} [interval=5000] - The delay between the retries (ms). Can be set in config for all functions under params.stepRetriesIntervals.
|
|
159
|
+
* @example await ui5.userInteraction.fillAndRetry(selector, "My Value");
|
|
160
|
+
*/
|
|
161
|
+
fillAndRetry(selector, value, index = 0, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000, retries = 3, interval = 5000) {
|
|
162
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
163
|
+
yield util.function.retry(this.fill, [selector, value, index, timeout], retries, interval, this);
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
;
|
|
167
|
+
// =================================== CLEAR ===================================
|
|
168
|
+
/**
|
|
169
|
+
* @function clear
|
|
170
|
+
* @memberOf ui5.userInteraction
|
|
171
|
+
* @description Clears the input with the given selector.
|
|
172
|
+
* @param {Object} selector - The selector describing the element.
|
|
173
|
+
* @param {Number} [index=0] - The index of the selector (in case there are more than one elements visible at the same time).
|
|
174
|
+
* @param {Number} [timeout=30000] - The timeout to wait (ms).
|
|
175
|
+
* @example await ui5.userInteraction.clear(selector);
|
|
176
|
+
*/
|
|
177
|
+
//TODO remove clearHelper and use clear
|
|
178
|
+
clear(selector, index = 0, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000) {
|
|
179
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
180
|
+
yield this._clearHelper(selector, index, timeout);
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
;
|
|
184
|
+
/**
|
|
185
|
+
* @function clearAndRetry
|
|
186
|
+
* @memberOf ui5.userInteraction
|
|
187
|
+
* @description Clears the input with the given selector and retries the action in case of a failure
|
|
188
|
+
* @param {Object} selector - The selector describing the element.
|
|
189
|
+
* @param {Number} [index=0] - The index of the selector (in case there are more than one elements visible at the same time).
|
|
190
|
+
* @param {Number} [timeout=30000] - The timeout to wait (ms).
|
|
191
|
+
* @param {Number} [retries=3] - The number of retries, can be set in config for all functions under params stepsRetries.
|
|
192
|
+
* @param {Number} [interval=5000] - The delay between the retries (ms). Can be set in config for all functions under params.stepRetriesIntervals.
|
|
193
|
+
* @example await ui5.userInteraction.clearAndRetry(selector);
|
|
194
|
+
*/
|
|
195
|
+
clearAndRetry(selector, index = 0, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000, retries = 3, interval = 5000) {
|
|
196
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
197
|
+
yield util.function.retry(this.clear, [selector, index, timeout], retries, interval, this);
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
;
|
|
201
|
+
/**
|
|
202
|
+
* @function clearAndFill
|
|
203
|
+
* @memberOf ui5.userInteraction
|
|
204
|
+
* @description Clears the input field with the given selector and fills the given value.
|
|
205
|
+
* @param {Object} selector - The selector describing the element.
|
|
206
|
+
* @param {String} value - The value to fill.
|
|
207
|
+
* @param {Number} [index=0] - The index of the selector (in case there are more than one elements visible at the same time).
|
|
208
|
+
* @param {Number} [timeout=30000] - The timeout to wait (ms).
|
|
209
|
+
* @example await ui5.userInteraction.clearAndFill(selector, "My Value");
|
|
210
|
+
*/
|
|
211
|
+
clearAndFill(selector, value, index = 0, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000) {
|
|
212
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
213
|
+
if (value !== null) {
|
|
214
|
+
yield this.clear(selector, index, timeout);
|
|
215
|
+
yield common.userInteraction.fillActive(value);
|
|
216
|
+
}
|
|
217
|
+
else {
|
|
218
|
+
throw new Error("Function 'clearAndFill' failed. Please provide a value as second parameter.");
|
|
219
|
+
}
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
;
|
|
223
|
+
/**
|
|
224
|
+
* @function clearAndFillAndRetry
|
|
225
|
+
* @memberOf ui5.userInteraction
|
|
226
|
+
* @description Clears the input field with the given selector and fills the given value. Retries the action in case of a failure.
|
|
227
|
+
* @param {Object} selector - The selector describing the element.
|
|
228
|
+
* @param {String} value - The value to fill.
|
|
229
|
+
* @param {Number} [index=0] - The index of the selector (in case there are more than one elements visible at the same time).
|
|
230
|
+
* @param {Number} [timeout=30000] - The timeout to wait (ms).
|
|
231
|
+
* @param {Number} [retries=3] - The number of retries, can be set in config for all functions under params stepsRetries.
|
|
232
|
+
* @param {Number} [interval=5000] - The delay between the retries (ms). Can be set in config for all functions under params.stepRetriesIntervals.
|
|
233
|
+
* @param {Boolean} [verify=true] - Specifies if the filled value should be verified.
|
|
234
|
+
* @example await ui5.userInteraction.clearAndFillAndRetry(selector, "My Value");
|
|
235
|
+
*/
|
|
236
|
+
clearAndFillAndRetry(selector, value, index = 0, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000, retries = 3, interval = 5000, verify = true) {
|
|
237
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
238
|
+
yield util.function.retry((selector, value, index, timeout) => __awaiter(this, void 0, void 0, function* () {
|
|
239
|
+
yield this.clearAndFill(selector, value, index, timeout);
|
|
240
|
+
if (verify) {
|
|
241
|
+
const elem = yield ui5.element.getDisplayed(selector);
|
|
242
|
+
let elemValue = yield ui5.element.getValue(selector, index);
|
|
243
|
+
if (elemValue != value) { // IMPORTANT: keep non-strict comparison for format changes after input (10 -> 10.00)
|
|
244
|
+
elemValue = yield ui5.element.getInnerAttribute(elem, "data-" + "value");
|
|
245
|
+
if (elemValue != value) { // IMPORTANT: keep non-strict comparison for format changes after input (10 -> 10.00)
|
|
246
|
+
throw new Error(`Actual value '${elemValue}' not equal to expected value '${value}'`);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
}), [selector, value, index, timeout], retries, interval, this);
|
|
251
|
+
});
|
|
252
|
+
}
|
|
253
|
+
;
|
|
254
|
+
/**
|
|
255
|
+
* @function clearSmartFieldInput
|
|
256
|
+
* @memberOf ui5.userInteraction
|
|
257
|
+
* @description Clears the smart filed with the given selector.
|
|
258
|
+
* @param {Object} selector - The selector describing the element.
|
|
259
|
+
* @param {Number} [index=0] - The index of the selector (in case there are more than one elements visible at the same time).
|
|
260
|
+
* @param {Number} [timeout=30000] - The timeout to wait (ms).
|
|
261
|
+
* @example await ui5.userInteraction.clearSmartFieldInput(selector);
|
|
262
|
+
*/
|
|
263
|
+
clearSmartFieldInput(selector, index = 0, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000) {
|
|
264
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
265
|
+
yield ui5.userInteraction.clear(selector, index, timeout);
|
|
266
|
+
});
|
|
267
|
+
}
|
|
268
|
+
;
|
|
269
|
+
/**
|
|
270
|
+
* @function clearAndFillSmartFieldInput
|
|
271
|
+
* @memberOf ui5.userInteraction
|
|
272
|
+
* @description Clears the smart filed with the given selector and fills the given value.
|
|
273
|
+
* @param {Object} selector - The selector describing the element.
|
|
274
|
+
* @param {String} value - The value to fill.
|
|
275
|
+
* @param {Number} [index=0] - The index of the selector (in case there are more than one elements visible at the same time).
|
|
276
|
+
* @param {Number} [timeout=30000] - The timeout to wait (ms).
|
|
277
|
+
* @example await ui5.userInteraction.clearAndFillSmartFieldInput(selector, "My Value");
|
|
278
|
+
*/
|
|
279
|
+
clearAndFillSmartFieldInput(selector, value, index = 0, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000) {
|
|
280
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
281
|
+
const id = yield ui5.element.getId(selector, index, timeout);
|
|
282
|
+
const elem = yield nonUi5.element.getByCss(`input[id*='${id}']`);
|
|
283
|
+
yield elem.click();
|
|
284
|
+
yield ui5.userInteraction.selectAll(selector, index, timeout);
|
|
285
|
+
yield elem.setValue(value);
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
;
|
|
289
|
+
/**
|
|
290
|
+
* @function clearAndFillSmartFieldInputAndRetry
|
|
291
|
+
* @memberOf ui5.userInteraction
|
|
292
|
+
* @description Clears the smart filed with the given selector and fills the given value and retries the action in case of a failure.
|
|
293
|
+
* @param {Object} selector - The selector describing the element.
|
|
294
|
+
* @param {String} value - The value to fill.
|
|
295
|
+
* @param {Number} [index=0] - The index of the selector (in case there are more than one elements visible at the same time).
|
|
296
|
+
* @param {Number} [timeout=30000] - The timeout to wait (ms).
|
|
297
|
+
* @param {Number} [retries=3] - The number of retries, can be set in config for all functions under params stepsRetries.
|
|
298
|
+
* @param {Number} [interval=5000] - The delay between the retries (ms). Can be set in config for all functions under params.stepRetriesIntervals.
|
|
299
|
+
* @example await ui5.userInteraction.clearAndFillSmartFieldInputAndRetry(selector, "My Value");
|
|
300
|
+
*/
|
|
301
|
+
clearAndFillSmartFieldInputAndRetry(selector, value, index = 0, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000, retries = 3, interval = 5000) {
|
|
302
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
303
|
+
yield util.function.retry(this.clearAndFillSmartFieldInput, [selector, value, index, timeout], retries, interval, this);
|
|
304
|
+
});
|
|
305
|
+
}
|
|
306
|
+
;
|
|
307
|
+
// =================================== SELECT ===================================
|
|
308
|
+
/**
|
|
309
|
+
* @function selectBox
|
|
310
|
+
* @memberOf ui5.userInteraction
|
|
311
|
+
* @description Selects the passed value of the Select box.
|
|
312
|
+
* Please note that the function will only work for the default select Box.
|
|
313
|
+
* In special cases, please use the clickSelectArrow function.
|
|
314
|
+
* @param {Object} selector - The selector describing the element.
|
|
315
|
+
* @param {String} value - The value to select.
|
|
316
|
+
* @param {Number} [index=0] - The index of the selector (in case there are more than one elements visible at the same time).
|
|
317
|
+
* @example await ui5.userInteraction.selectBox(selector, "Germany");
|
|
318
|
+
*/
|
|
319
|
+
selectBox(selector, value, index = 0) {
|
|
320
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
321
|
+
yield this.clickSelectArrow(selector, index);
|
|
322
|
+
if (value) {
|
|
323
|
+
const itemSelector = {
|
|
324
|
+
"elementProperties": {
|
|
325
|
+
"mProperties": {
|
|
326
|
+
"text": value
|
|
327
|
+
},
|
|
328
|
+
"ancestorProperties": selector.elementProperties
|
|
329
|
+
}
|
|
330
|
+
};
|
|
331
|
+
yield this.scrollToElement(itemSelector);
|
|
332
|
+
yield this.click(itemSelector);
|
|
333
|
+
}
|
|
334
|
+
else {
|
|
335
|
+
throw new Error("Function 'selectBox' failed: Please provide a value as second argument.");
|
|
336
|
+
}
|
|
337
|
+
});
|
|
338
|
+
}
|
|
339
|
+
;
|
|
340
|
+
/**
|
|
341
|
+
* @function selectComboBox
|
|
342
|
+
* @memberOf ui5.userInteraction
|
|
343
|
+
* @description Selects the passed value from the ComboBox with the given selector.
|
|
344
|
+
* Please note that the function will only work for the default ComboBox.
|
|
345
|
+
* In special cases you need to use the 'clickSelectArrow' function.
|
|
346
|
+
* @param {Object} selector - The selector describing the element.
|
|
347
|
+
* @param {String} value - The value to select.
|
|
348
|
+
* @param {Number} [index=0] - The index of the selector (in case there are more than one elements visible at the same time).
|
|
349
|
+
* @example await ui5.userInteraction.selectComboBox(selector, "Germany");
|
|
350
|
+
*/
|
|
351
|
+
selectComboBox(selector, value, index = 0) {
|
|
352
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
353
|
+
yield this.clickSelectArrow(selector, index);
|
|
354
|
+
if (value) {
|
|
355
|
+
const selector = {
|
|
356
|
+
"elementProperties": {
|
|
357
|
+
"metadata": "sap.m.StandardListItem",
|
|
358
|
+
"mProperties": {
|
|
359
|
+
"title": value
|
|
360
|
+
}
|
|
361
|
+
},
|
|
362
|
+
"parentProperties": {
|
|
363
|
+
"metadata": "sap.m.List"
|
|
364
|
+
}
|
|
365
|
+
};
|
|
366
|
+
yield this.scrollToElement(selector);
|
|
367
|
+
yield this.click(selector);
|
|
368
|
+
}
|
|
369
|
+
});
|
|
370
|
+
}
|
|
371
|
+
;
|
|
372
|
+
/**
|
|
373
|
+
* @function selectMultiComboBox
|
|
374
|
+
* @memberOf ui5.userInteraction
|
|
375
|
+
* @description Selects the passed values of the MultiComboBox with the given selector.
|
|
376
|
+
* Please note that the function will only work for the default MultiComboBox.
|
|
377
|
+
* In special cases, please use the clickSelectArrow function.
|
|
378
|
+
* @param {Object} selector - The selector describing the element.
|
|
379
|
+
* @param {Array} values - The values to select.
|
|
380
|
+
* @param {Number} [index=0] - The index of the selector (in case there are more than one elements visible at the same time).
|
|
381
|
+
* @example await ui5.userInteraction.selectMultiComboBox(selector, ["Option 1", "Option 2"]);
|
|
382
|
+
*/
|
|
383
|
+
selectMultiComboBox(selector, values, index = 0) {
|
|
384
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
385
|
+
yield this.clickSelectArrow(selector, index);
|
|
386
|
+
for (const v in values) {
|
|
387
|
+
const ui5ControlProperties = {
|
|
388
|
+
"elementProperties": {
|
|
389
|
+
"metadata": "sap.m.CheckBox",
|
|
390
|
+
"mProperties": {}
|
|
391
|
+
},
|
|
392
|
+
"parentProperties": {
|
|
393
|
+
"metadata": "sap.m.StandardListItem",
|
|
394
|
+
"mProperties": {
|
|
395
|
+
"title": values[v]
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
};
|
|
399
|
+
yield this.scrollToElement(ui5ControlProperties);
|
|
400
|
+
yield this.click(ui5ControlProperties);
|
|
401
|
+
}
|
|
402
|
+
yield common.userInteraction.pressEnter();
|
|
403
|
+
});
|
|
404
|
+
}
|
|
405
|
+
;
|
|
406
|
+
/**
|
|
407
|
+
* @function clickSelectArrow
|
|
408
|
+
* @memberOf ui5.userInteraction
|
|
409
|
+
* @description Clicks the arrow icon at the passed selector (select box).
|
|
410
|
+
* @param {Object} selector - The selector describing the element.
|
|
411
|
+
* @param {Number} [index=0] - The index of the selector (in case there are more than one elements visible at the same time).
|
|
412
|
+
* @example await ui5.userInteraction.clickSelectArrow(selector);
|
|
413
|
+
*/
|
|
414
|
+
clickSelectArrow(selector, index = 0) {
|
|
415
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
416
|
+
const id = yield ui5.element.getId(selector, index);
|
|
417
|
+
const arrow = yield nonUi5.element.getByCss("[id='" + id + "-arrow']", 0, 3000);
|
|
418
|
+
yield arrow.click();
|
|
419
|
+
});
|
|
420
|
+
}
|
|
421
|
+
;
|
|
422
|
+
/**
|
|
423
|
+
* @function clickSelectArrowAndRetry
|
|
424
|
+
* @memberOf ui5.userInteraction
|
|
425
|
+
* @description Clicks the arrow icon at the passed selector (select box), and retries in case it fails.
|
|
426
|
+
* @param {Object} selector - The selector describing the element
|
|
427
|
+
* @param {Number} [index=0] - The index of the selector (in case there are more than one elements visible at the same time).
|
|
428
|
+
* @param {Number} [retries=3] - The number of retries, can be set in config for all functions under params stepsRetries.
|
|
429
|
+
* @param {Number} [interval=5000] - The delay between the retries (ms). Can be set in config for all functions under params.stepRetriesIntervals.
|
|
430
|
+
* @example await ui5.userInteraction.clickSelectArrowAndRetry(selector);
|
|
431
|
+
*/
|
|
432
|
+
clickSelectArrowAndRetry(selector, index = 0, retries = 3, interval = 5000) {
|
|
433
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
434
|
+
yield util.function.retry(this.clickSelectArrow, [selector, index], retries, interval, this);
|
|
435
|
+
});
|
|
436
|
+
}
|
|
437
|
+
;
|
|
438
|
+
// =================================== OTHERS ===================================
|
|
439
|
+
/**
|
|
440
|
+
* @function mouseOverElement
|
|
441
|
+
* @memberOf ui5.userInteraction
|
|
442
|
+
* @description Moves the cursor/focus to the element with the given selector.
|
|
443
|
+
* @param {Object} selector - The selector describing the element.
|
|
444
|
+
* @param {Number} [index=0] - The index of the selector (in case there are more than one elements visible at the same time).
|
|
445
|
+
* @param {Number} [timeout=30000] - The timeout to wait (ms).
|
|
446
|
+
* @example await ui5.userInteraction.mouseOverElement(selector);
|
|
447
|
+
*/
|
|
448
|
+
mouseOverElement(selector, index = 0, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000) {
|
|
449
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
450
|
+
let elem;
|
|
451
|
+
try {
|
|
452
|
+
elem = yield ui5.element.getDisplayed(selector, index, timeout);
|
|
453
|
+
}
|
|
454
|
+
catch (error) {
|
|
455
|
+
throw new Error(`Function: 'mouseOverElement' failed: No element found for selector ${selector}`);
|
|
456
|
+
}
|
|
457
|
+
yield elem.moveTo();
|
|
458
|
+
});
|
|
459
|
+
}
|
|
460
|
+
;
|
|
461
|
+
/**
|
|
462
|
+
* @function scrollToElement
|
|
463
|
+
* @memberOf ui5.userInteraction
|
|
464
|
+
* @description Scrolls to the element with the given selector to get it into view.
|
|
465
|
+
* @param {Object} selector - The selector describing the element.
|
|
466
|
+
* @param {Number} [index=0] - The index of the selector (in case there are more than one elements visible at the same time).
|
|
467
|
+
* @param {String} [alignment="center"] - Defines vertical/horizontal alignment. One of "start", "center", "end", or "nearest".
|
|
468
|
+
* Affects the alignToTop parameter of scrollIntoView function. By default, it takes 'up'
|
|
469
|
+
* @param {Number} [timeout=30000] - The timeout to wait (ms).
|
|
470
|
+
* @example await ui5.userInteraction.scrollToElement(selector);
|
|
471
|
+
* @example await ui5.userInteraction.scrollToElement(selector, 0, "start", 5000);
|
|
472
|
+
*/
|
|
473
|
+
scrollToElement(selector, index = 0, alignment = "center", timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000) {
|
|
474
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
475
|
+
const elem = yield ui5.element.getDisplayed(selector, index, timeout);
|
|
476
|
+
if (elem) {
|
|
477
|
+
const options = {
|
|
478
|
+
"block": alignment,
|
|
479
|
+
"inline": alignment
|
|
480
|
+
};
|
|
481
|
+
yield elem.scrollIntoView(options);
|
|
482
|
+
}
|
|
483
|
+
});
|
|
484
|
+
}
|
|
485
|
+
;
|
|
486
|
+
/**
|
|
487
|
+
* @function selectAll
|
|
488
|
+
* @memberOf ui5.userInteraction
|
|
489
|
+
* @description Performs "select all" (ctrl + a) at the element with the given selector.
|
|
490
|
+
* @param {Object} [selector] - The selector describing the element.
|
|
491
|
+
* @param {Number} [index=0] - The index of the selector, in case there are more than one elements visible at the same time.
|
|
492
|
+
* @param {Number} [timeout=30000] - The timeout to wait (ms).
|
|
493
|
+
* @example await ui5.userInteraction.selectAll(selector);
|
|
494
|
+
*/
|
|
495
|
+
selectAll(selector, index = 0, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000) {
|
|
496
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
497
|
+
if (selector !== undefined) {
|
|
498
|
+
yield this.click(selector, index, timeout);
|
|
499
|
+
}
|
|
500
|
+
else {
|
|
501
|
+
util.console.info("Selector properties are undefined. Action will be performed on current element.");
|
|
502
|
+
}
|
|
503
|
+
yield common.userInteraction.pressKey(["\uE051", "a"]);
|
|
504
|
+
});
|
|
505
|
+
}
|
|
506
|
+
;
|
|
507
|
+
/**
|
|
508
|
+
* @function openF4Help
|
|
509
|
+
* @memberOf ui5.userInteraction
|
|
510
|
+
* @description Opens the F4-help of the element with the given selector.
|
|
511
|
+
* @param {Object} selector - The selector describing the element.
|
|
512
|
+
* @param {Number} [index=0] - The index of the selector (in case there are more than one elements visible at the same time).
|
|
513
|
+
* @param {Number} [timeout=30000] - The timeout to wait (ms).
|
|
514
|
+
* @param {Boolean} useF4Key - Specifies if the help is opened by pressing the F4-key or via the button.
|
|
515
|
+
* The default value is true (triggered by pressing the F4-key). Set "useF4Key" to false, to trigger the search by clicking the button.
|
|
516
|
+
* @example await ui5.userInteraction.openF4Help(selector, 0, 30000, false);
|
|
517
|
+
*/
|
|
518
|
+
openF4Help(selector, index = 0, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000, useF4Key = true) {
|
|
519
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
520
|
+
yield ui5.userInteraction.click(selector, index, timeout);
|
|
521
|
+
if (useF4Key === true) {
|
|
522
|
+
yield common.userInteraction.pressF4();
|
|
523
|
+
}
|
|
524
|
+
else {
|
|
525
|
+
const id = yield ui5.element.getId(selector);
|
|
526
|
+
const button = yield nonUi5.element.getByCss("[id='" + id + "-vhi']", 0, timeout);
|
|
527
|
+
yield button.click();
|
|
528
|
+
}
|
|
529
|
+
});
|
|
530
|
+
}
|
|
531
|
+
;
|
|
532
|
+
/**
|
|
533
|
+
* @function searchFor
|
|
534
|
+
* @memberOf ui5.userInteraction
|
|
535
|
+
* @description Searches for the passed value and executes the search.
|
|
536
|
+
* In case that the search is already filled, it will reset the field first.
|
|
537
|
+
* @param {Object} selector - The selector describing the element.
|
|
538
|
+
* @param {Number} [index=0] - The index of the selector (in case there are more than one elements visible at the same time).
|
|
539
|
+
* @param {Number} [timeout=30000] - The timeout to wait (ms).
|
|
540
|
+
* @param {Boolean} useEnter - Specifies if the search is triggered by pressing the Enter-key or via the search button.
|
|
541
|
+
* The default value is true (triggered by pressing the Enter-key). Set "useEnter" to false, to trigger the search by clicking the search button.
|
|
542
|
+
* @example await ui5.userInteraction.searchFor(selector, "My Value", 0, 30000, false);
|
|
543
|
+
*/
|
|
544
|
+
searchFor(selector, value, index = 0, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000, useEnter = true) {
|
|
545
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
546
|
+
yield ui5.userInteraction.clearAndFillAndRetry(selector, value, index, timeout);
|
|
547
|
+
if (useEnter === true) {
|
|
548
|
+
yield common.userInteraction.pressEnter();
|
|
549
|
+
}
|
|
550
|
+
else {
|
|
551
|
+
const id = yield ui5.element.getId(selector, index, timeout);
|
|
552
|
+
const searchButton = yield nonUi5.element.getByCss("[id='" + id + "-search']", 0, timeout);
|
|
553
|
+
yield searchButton.click();
|
|
554
|
+
}
|
|
555
|
+
});
|
|
556
|
+
}
|
|
557
|
+
;
|
|
558
|
+
/**
|
|
559
|
+
* @function resetSearch
|
|
560
|
+
* @memberOf ui5.userInteraction
|
|
561
|
+
* @description Resets the search field.
|
|
562
|
+
* @param {Object} selector - The selector describing the element.
|
|
563
|
+
* @param {Number} [index=0] - The index of the selector (in case there are more than one elements visible at the same time).
|
|
564
|
+
* @param {Number} [timeout=30000] - The timeout to wait (ms).
|
|
565
|
+
* @example await ui5.userInteraction.resetSearch(selector);
|
|
566
|
+
*/
|
|
567
|
+
resetSearch(selector, index = 0, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000) {
|
|
568
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
569
|
+
const id = yield ui5.element.getId(selector, index, timeout);
|
|
570
|
+
const resetButton = yield nonUi5.element.getByCss("[id='" + id + "-reset']", 0, timeout);
|
|
571
|
+
yield resetButton.click();
|
|
572
|
+
});
|
|
573
|
+
}
|
|
574
|
+
;
|
|
575
|
+
// =================================== HELPER ===================================
|
|
576
|
+
//TODO: rework function in its whole. Why don't we use the clear function from native wdio here?
|
|
577
|
+
_clearHelper(selector, index = 0, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000) {
|
|
578
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
579
|
+
let id, elem;
|
|
580
|
+
if (selector) {
|
|
581
|
+
yield ui5.userInteraction.click(selector, index, timeout);
|
|
582
|
+
id = yield ui5.element.getId(selector, index, timeout);
|
|
583
|
+
elem = yield browser.getActiveElement();
|
|
584
|
+
}
|
|
585
|
+
else {
|
|
586
|
+
elem = yield browser.getActiveElement();
|
|
587
|
+
yield elem.click();
|
|
588
|
+
// @ts-ignore
|
|
589
|
+
id = yield util.function.getAttribute(elem, "id");
|
|
590
|
+
}
|
|
591
|
+
const tokenizers = yield browser.execute(function (id) {
|
|
592
|
+
// @ts-ignore
|
|
593
|
+
const t = document.getElementById(id).querySelectorAll(".sapMTokenizer");
|
|
594
|
+
// @ts-ignore
|
|
595
|
+
const inputs = document.getElementById(id).getElementsByTagName("input");
|
|
596
|
+
// @ts-ignore
|
|
597
|
+
const textareas = document.getElementById(id).getElementsByTagName("textarea");
|
|
598
|
+
if (inputs.length) {
|
|
599
|
+
inputs[0].value = "";
|
|
600
|
+
inputs[0].focus();
|
|
601
|
+
}
|
|
602
|
+
if (textareas.length) {
|
|
603
|
+
textareas[0].value = "";
|
|
604
|
+
}
|
|
605
|
+
return t;
|
|
606
|
+
}, id);
|
|
607
|
+
if ((yield tokenizers) && (yield tokenizers.length)) {
|
|
608
|
+
yield ui5.userInteraction.selectAll(selector, index, timeout);
|
|
609
|
+
yield common.userInteraction.pressBackspace();
|
|
610
|
+
}
|
|
611
|
+
});
|
|
612
|
+
}
|
|
613
|
+
/**
|
|
614
|
+
* @function doubleClick
|
|
615
|
+
* @memberOf ui5.userInteraction
|
|
616
|
+
* @description Double Clicks on the passed element.
|
|
617
|
+
* @param {Object} selector - The selector describing the element.
|
|
618
|
+
* @param {Number} [index=0] - The index of the selector (in case there are more than one elements visible at the same time).
|
|
619
|
+
* @param {Number} [timeout=30000] - The timeout to wait (ms).
|
|
620
|
+
* @example await ui5.userInteraction.doubleClick(selector);
|
|
621
|
+
*/
|
|
622
|
+
doubleClick(selector, index = 0, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000) {
|
|
623
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
624
|
+
let elem = null;
|
|
625
|
+
yield browser.waitUntil(function () {
|
|
626
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
627
|
+
elem = yield ui5.element.getDisplayed(selector, index, timeout);
|
|
628
|
+
if (!elem)
|
|
629
|
+
return false;
|
|
630
|
+
return elem.isClickable();
|
|
631
|
+
});
|
|
632
|
+
}, {
|
|
633
|
+
timeout,
|
|
634
|
+
timeoutMsg: `Element not clickable after ${+timeout / 1000}s`
|
|
635
|
+
});
|
|
636
|
+
try {
|
|
637
|
+
// @ts-ignore
|
|
638
|
+
yield elem.doubleClick();
|
|
639
|
+
}
|
|
640
|
+
catch (error) {
|
|
641
|
+
// @ts-ignore
|
|
642
|
+
const errorMessage = yield util.function.mapWdioErrorToQmateErrorMessage(error, "doubleClick");
|
|
643
|
+
throw new Error(errorMessage);
|
|
644
|
+
}
|
|
645
|
+
});
|
|
646
|
+
}
|
|
647
|
+
;
|
|
648
|
+
/**
|
|
649
|
+
* @function rightClick
|
|
650
|
+
* @memberOf ui5.userInteraction
|
|
651
|
+
* @description Right Clicks on the passed element.
|
|
652
|
+
* @param {Object} selector - The selector describing the element.
|
|
653
|
+
* @param {Number} [index=0] - The index of the selector (in case there are more than one elements visible at the same time).
|
|
654
|
+
* @param {Number} [timeout=30000] - The timeout to wait (ms).
|
|
655
|
+
* @example const elem = await nonUi5.element.getById("button01");
|
|
656
|
+
* await ui5.userInteraction.rightClick(elem);
|
|
657
|
+
*/
|
|
658
|
+
rightClick(selector, index = 0, timeout = process.env.QMATE_CUSTOM_TIMEOUT || 30000) {
|
|
659
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
660
|
+
let elem = null;
|
|
661
|
+
yield browser.waitUntil(function () {
|
|
662
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
663
|
+
elem = yield ui5.element.getDisplayed(selector, index, timeout);
|
|
664
|
+
if (!elem)
|
|
665
|
+
return false;
|
|
666
|
+
return elem.isClickable();
|
|
667
|
+
});
|
|
668
|
+
}, {
|
|
669
|
+
timeout,
|
|
670
|
+
timeoutMsg: `Element not clickable after ${+timeout / 1000}s`
|
|
671
|
+
});
|
|
672
|
+
try {
|
|
673
|
+
// @ts-ignore
|
|
674
|
+
yield elem.click({
|
|
675
|
+
button: "right"
|
|
676
|
+
});
|
|
677
|
+
}
|
|
678
|
+
catch (error) {
|
|
679
|
+
// @ts-ignore
|
|
680
|
+
const errorMessage = yield util.function.mapWdioErrorToQmateErrorMessage(error, "rightClick");
|
|
681
|
+
throw new Error(errorMessage);
|
|
682
|
+
}
|
|
683
|
+
});
|
|
684
|
+
}
|
|
685
|
+
;
|
|
686
|
+
}
|
|
687
|
+
exports.UserInteraction = UserInteraction;
|
|
688
|
+
;
|
|
689
|
+
exports.default = new UserInteraction();
|
|
690
|
+
//# sourceMappingURL=userInteraction.js.map
|