@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.
- package/.eslintrc.yml +4 -4
- package/.prettierrc.json +7 -7
- package/CLAUDE.md +10 -10
- package/CONTRIBUTING.md +1 -1
- package/README.md +6 -2
- package/lib/reuse/authenticator/authConfig.js +3 -3
- package/lib/reuse/authenticator/authConfig.js.map +1 -1
- package/lib/reuse/authenticator/authHandler.js +0 -2
- package/lib/reuse/authenticator/authHandler.js.map +1 -1
- package/lib/reuse/authenticator/basicUrlAuthenticator.js.map +1 -1
- package/lib/reuse/authenticator/customAuthenticator.js +1 -3
- package/lib/reuse/authenticator/customAuthenticator.js.map +1 -1
- package/lib/reuse/authenticator/formAuthenticator.js +1 -3
- package/lib/reuse/authenticator/formAuthenticator.js.map +1 -1
- package/lib/reuse/helper/clientsideUI5scripts.js +15 -19
- package/lib/reuse/helper/clientsideUI5scripts.js.map +1 -1
- package/lib/reuse/helper/dateTimeFormatParser.js +8 -2
- package/lib/reuse/helper/dateTimeFormatParser.js.map +1 -1
- package/lib/reuse/helper/elementHighlight.js +2 -6
- package/lib/reuse/helper/elementHighlight.js.map +1 -1
- package/lib/reuse/helper/errorHandler.js +2 -9
- package/lib/reuse/helper/errorHandler.js.map +1 -1
- package/lib/reuse/helper/jsDocGen.js +1 -1
- package/lib/reuse/helper/jsDocGen.js.map +1 -1
- package/lib/reuse/helper/tableHelper.js +3 -0
- package/lib/reuse/helper/tableHelper.js.map +1 -1
- package/lib/reuse/helper/timeHelper.js +3 -7
- package/lib/reuse/helper/timeHelper.js.map +1 -1
- package/lib/reuse/helper/verboseLogger.js.map +1 -1
- package/lib/reuse/index.js +0 -17
- package/lib/reuse/index.js.map +1 -1
- package/lib/reuse/modules/common/constants/date.constants.js +0 -2
- package/lib/reuse/modules/common/constants/date.constants.js.map +1 -1
- package/lib/reuse/modules/common/navigation.js.map +1 -1
- package/lib/reuse/modules/flp/userSettings.d.ts +2 -0
- package/lib/reuse/modules/flp/userSettings.js +6 -1
- package/lib/reuse/modules/flp/userSettings.js.map +1 -1
- package/lib/reuse/modules/nonUi5/NonUi5.js.map +1 -1
- package/lib/reuse/modules/nonUi5/session.js.map +1 -1
- package/lib/reuse/modules/nonUi5/userInteraction.js.map +1 -1
- package/lib/reuse/modules/ui5/assertion.d.ts +1 -0
- package/lib/reuse/modules/ui5/assertion.js +11 -4
- package/lib/reuse/modules/ui5/assertion.js.map +1 -1
- package/lib/reuse/modules/ui5/control.js.map +1 -1
- package/lib/reuse/modules/ui5/date.js +15 -15
- package/lib/reuse/modules/ui5/date.js.map +1 -1
- package/lib/reuse/modules/ui5/element.d.ts +2 -2
- package/lib/reuse/modules/ui5/element.js +7 -4
- package/lib/reuse/modules/ui5/element.js.map +1 -1
- package/lib/reuse/modules/ui5/session.d.ts +4 -2
- package/lib/reuse/modules/ui5/session.js +32 -4
- package/lib/reuse/modules/ui5/session.js.map +1 -1
- package/lib/reuse/modules/ui5/table.js +25 -9
- package/lib/reuse/modules/ui5/table.js.map +1 -1
- package/lib/reuse/modules/ui5/userInteraction.d.ts +1 -1
- package/lib/reuse/modules/ui5/userInteraction.js +46 -59
- package/lib/reuse/modules/ui5/userInteraction.js.map +1 -1
- package/lib/reuse/modules/util/constants/formatter.constants.js +0 -2
- package/lib/reuse/modules/util/constants/formatter.constants.js.map +1 -1
- package/lib/reuse/modules/util/file.d.ts +7 -4
- package/lib/reuse/modules/util/file.js +34 -7
- package/lib/reuse/modules/util/file.js.map +1 -1
- package/lib/reuse/modules/util/formatter.js +7 -3
- package/lib/reuse/modules/util/formatter.js.map +1 -1
- package/lib/reuse/modules/util/function.js +1 -5
- package/lib/reuse/modules/util/function.js.map +1 -1
- package/lib/scripts/clientsideUI5scripts.js +22 -29
- package/lib/scripts/clientsideUI5scripts.js.map +1 -1
- package/lib/scripts/dataExchange/dataExchange.js.map +1 -1
- package/lib/scripts/dataExchange/dataExchangeUtil.js +3 -13
- package/lib/scripts/dataExchange/dataExchangeUtil.js.map +1 -1
- package/lib/scripts/hooks/before.js +0 -1
- package/lib/scripts/hooks/before.js.map +1 -1
- package/lib/scripts/hooks/onComplete.js +2 -3
- package/lib/scripts/hooks/onComplete.js.map +1 -1
- package/lib/scripts/hooks/utils/addLocatorCommands.js.map +1 -1
- package/lib/scripts/hooks/utils/browserLog.js.map +1 -1
- package/lib/scripts/hooks/utils/cycle.js +3 -9
- package/lib/scripts/hooks/utils/cycle.js.map +1 -1
- package/lib/scripts/hooks/utils/dataExchangeCommands.js +1 -2
- package/lib/scripts/hooks/utils/dataExchangeCommands.js.map +1 -1
- package/lib/scripts/hooks/utils/isBrowserDefined.js.map +1 -1
- package/lib/scripts/locators/qmateLocator.js +30 -53
- package/lib/scripts/locators/qmateLocator.js.map +1 -1
- package/lib/scripts/locators/qmateLocatorSrc/comparators/DomPropertiesComparator.js +2 -2
- package/lib/scripts/locators/qmateLocatorSrc/comparators/DomPropertiesComparator.js.map +1 -1
- package/lib/scripts/locators/qmateLocatorSrc/constants/IgnoredMetadataList.d.ts +1 -0
- package/lib/scripts/locators/qmateLocatorSrc/constants/IgnoredMetadataList.js +10 -0
- package/lib/scripts/locators/qmateLocatorSrc/constants/IgnoredMetadataList.js.map +1 -0
- package/lib/scripts/locators/qmateLocatorSrc/filters/ElementFilter.d.ts +2 -3
- package/lib/scripts/locators/qmateLocatorSrc/filters/ElementFilter.js +18 -22
- package/lib/scripts/locators/qmateLocatorSrc/filters/ElementFilter.js.map +1 -1
- package/lib/scripts/locators/qmateLocatorSrc/utils/UI5ControlHandler.js +3 -2
- package/lib/scripts/locators/qmateLocatorSrc/utils/UI5ControlHandler.js.map +1 -1
- package/lib/scripts/locators/uiveri5Locator.js +1 -1
- package/lib/scripts/locators/uiveri5Locator.js.map +1 -1
- package/lib/scripts/stats/createUsage.js +1 -1
- package/lib/scripts/stats/createUsage.js.map +1 -1
- package/lib/scripts/stats/getOperatingSystem.js.map +1 -1
- package/lib/scripts/stats/getUserId.js +1 -1
- package/lib/scripts/stats/stats.js +9 -9
- package/lib/scripts/stats/stats.js.map +1 -1
- package/lib/scripts/stats/updateUsage.js +1 -1
- package/mkdocs.yml +18 -18
- package/package.json +18 -26
- package/packages/qcrypt/dist/classes/Decrypter.d.ts +38 -38
- package/packages/qcrypt/dist/classes/Decrypter.js +150 -153
- package/packages/qcrypt/dist/classes/Encrypter.d.ts +46 -46
- package/packages/qcrypt/dist/classes/Encrypter.js +144 -144
- package/packages/qcrypt/dist/classes/KeyGenerator.d.ts +16 -16
- package/packages/qcrypt/dist/classes/KeyGenerator.js +45 -43
- package/packages/qcrypt/dist/classes/helper/ErrorHandler.d.ts +8 -8
- package/packages/qcrypt/dist/classes/helper/ErrorHandler.js +48 -50
- package/packages/qcrypt/dist/classes/helper/Util.d.ts +67 -67
- package/packages/qcrypt/dist/classes/helper/Util.js +113 -114
- package/packages/qcrypt/dist/index.js +5 -3
- package/packages/qcrypt/dist/types/common.d.ts +13 -13
- package/reuseApi.json +8 -468
- package/test/.eslintrc.yml +1 -1
- package/test/authenticator/staticLogin/configCustom.js +1 -3
- package/test/authenticator/staticLogin/configCustomViaConfig.js +1 -3
- package/test/authenticator/staticLogin/configFiori.js +1 -3
- package/test/authenticator/staticLogin/configPlain.js +1 -4
- package/test/authenticator/staticLogin/configSapCloud.js +1 -3
- package/test/authenticator/staticLogin/html/custom.html +4 -4
- package/test/authenticator/staticLogin/html/fiori.html +4 -4
- package/test/authenticator/staticLogin/html/home.html +2 -2
- package/test/authenticator/staticLogin/html/sapCloud.html +4 -4
- package/test/authenticator/staticLogin/specs/custom.spec.js +1 -5
- package/test/authenticator/staticLogin/specs/plain.spec.js +0 -5
- package/test/authenticator/staticLogin/staticServerConfig.js +13 -10
- package/test/authenticator/systemLogin/configCustom.js +3 -5
- package/test/authenticator/systemLogin/configFiori.js +2 -5
- package/test/authenticator/systemLogin/configPlain.js +3 -5
- package/test/authenticator/systemLogin/configSapCloud.js +3 -5
- package/test/authenticator/systemLogin/specs/custom.spec.js +3 -5
- package/test/authenticator/systemLogin/specs/fiori.spec.js +3 -4
- package/test/authenticator/systemLogin/specs/plain.spec.js +3 -5
- package/test/authenticator/systemLogin/specs/sapCloud.spec.js +3 -5
- package/test/core/dataExchange/config.export.js +11 -18
- package/test/core/dataExchange/config.import.js +7 -12
- package/test/core/dataExchange/config.js +9 -11
- package/test/core/dataExchange/config.parallel.group.js +53 -61
- package/test/core/dataExchange/config.parallel.js +53 -58
- package/test/core/dataExchange/data/another/folder/data/anotherFolder/purchase-orders/Limit-Purchase-Order.json +1 -1
- package/test/core/dataExchange/data/another/folder/data/anotherFolder/purchase-orders/ServicePurchaseOrder.2Items.json +1 -1
- package/test/core/dataExchange/data/another/folder/data/anotherFolder/purchaseRequisition_HI.json +1 -1
- package/test/core/dataExchange/data/another/folder/data/anotherFolder/subfolder/LimitPurchaseOrder.json +1 -1
- package/test/core/dataExchange/data/another/folder/data/anotherFolder/subfolder/PurchaseOrderItems.json +1 -1
- package/test/core/dataExchange/data/another/folder/data/anotherFolder/subfolder/PurchaseOrderWithScheduline.json +1 -1
- package/test/core/dataExchange/data/another/folder/data/anotherFolder/subfolder/ServiceAndMaterialPurchaseOrder.json +1 -1
- package/test/core/dataExchange/data/another/folder/data/anotherFolder/subfolder/ServicePurchaseOrder.json +1 -1
- package/test/core/dataExchange/data/another/folder/data/anotherFolder/subfolder/ServicePurchaseOrder2Items.json +1 -1
- package/test/core/dataExchange/data/my/folder/data/qs9/data.json +1 -1
- package/test/core/dataExchange/data/my/folder/data/qs9/purchaseRequisition.json +1 -1
- package/test/core/dataExchange/data/my/folder/data/qs9/supplierInvoice.json +1 -1
- package/test/core/dataExchange/data/my/folder/data/qs9/webUser.json +1 -1
- package/test/core/dataExchange/data/ui/moreDataFolder/anotherUser.json +1 -1
- package/test/core/dataExchange/data/ui/user.json +1 -1
- package/test/core/dataExchange/data/ui/webUser.json +1 -1
- package/test/core/dataExchange/specs/export.fast.spec.js +11 -16
- package/test/core/dataExchange/specs/export.slow.spec.js +13 -18
- package/test/core/dataExchange/specs/export.spec.js +13 -23
- package/test/core/dataExchange/specs/import.spec.js +6 -23
- package/test/core/dataExchange/specs/importExport.spec.js +47 -62
- package/test/core/dataExchange/utils.js +11 -15
- package/test/core/functional/README.md +8 -5
- package/test/core/functional/chaining/chaining.test.js +46 -49
- package/test/core/functional/chaining/test.conf.js +1 -4
- package/test/core/functional/locators/ancestorProperties.test.js +49 -59
- package/test/core/functional/locators/childProperties.test.js +30 -36
- package/test/core/functional/locators/descendantProperties.test.js +50 -57
- package/test/core/functional/locators/domProperties.test.js +25 -29
- package/test/core/functional/locators/elementProperties.test.js +30 -29
- package/test/core/functional/locators/mixedProperties.test.js +317 -108
- package/test/core/functional/locators/parentProperties.test.js +18 -22
- package/test/core/functional/locators/siblingProperties.test.js +66 -75
- package/test/core/functional/locators/utils.js +1 -1
- package/test/core/functional/nativeBrowser/runInBrowser.test.js +84 -58
- package/test/core/functional/nativeBrowser/test.conf.js +1 -3
- package/test/core/functional/nonUi5/basic.test.js +3 -3
- package/test/core/functional/nonUi5/getWithDomElement.test.js +0 -2
- package/test/core/functional/nonUi5/getWithDomElements.test.js +2 -3
- package/test/core/functional/nonUi5/test.conf.js +1 -4
- package/test/core/functional/ui5Properties/countries.json +1 -1
- package/test/core/functional/ui5Properties/getAggregations.test.js +19 -27
- package/test/core/functional/ui5Properties/getAssociations.test.js +3 -3
- package/test/core/functional/ui5Properties/getBindingInfos.test.js +17 -17
- package/test/core/functional/ui5Properties/getProperties.test.js +25 -33
- package/test/core/functional/ui5Properties/test.conf.js +1 -6
- package/test/core/functional/uiveri5/sample.test.js +1 -2
- package/test/core/functional/uiveri5/test.conf.js +1 -3
- package/test/core/testIntegration/config.js +1 -1
- package/test/core/testIntegration/configMultiCombo.js +1 -1
- package/test/core/testIntegration/configTable.js +1 -1
- package/test/core/testIntegration/filters1.spec.js +908 -870
- package/test/core/testIntegration/multicombobox.spec.js +64 -60
- package/test/core/testIntegration/table.spec.js +35 -33
- package/test/helper/configurations/base.conf.js +6 -3
- package/test/helper/configurations/chrome.headless.conf.js +1 -1
- package/test/helper/sleeper.js +1 -1
- package/test/reuse/common/assertion/expectDefined.spec.js +1 -2
- package/test/reuse/common/assertion/expectEqual.spec.js +36 -26
- package/test/reuse/common/assertion/expectFalse.spec.js +1 -1
- package/test/reuse/common/assertion/expectTrue.spec.js +1 -1
- package/test/reuse/common/assertion/expectUndefined.spec.js +1 -2
- package/test/reuse/common/assertion/expectUnequal.spec.js +24 -13
- package/test/reuse/common/assertion/expectUrlToBe.spec.js +3 -6
- package/test/reuse/common/assertion/test.assertion.conf.js +39 -35
- package/test/reuse/common/date/calculate.spec.js +36 -36
- package/test/reuse/common/date/calculateWithTime.spec.js +88 -88
- package/test/reuse/common/date/getNextMonth.spec.js +3 -3
- package/test/reuse/common/date/getNextYear.spec.js +2 -2
- package/test/reuse/common/date/getPreviousMonth.spec.js +2 -2
- package/test/reuse/common/date/getPreviousYear.spec.js +2 -2
- package/test/reuse/common/date/getSpecific.spec.js +2 -2
- package/test/reuse/common/date/getToday.spec.js +2 -2
- package/test/reuse/common/date/getTomorrow.spec.js +2 -2
- package/test/reuse/common/date/test.date.conf.js +1 -1
- package/test/reuse/common/navigation/navigateToUrlAndRetry.spec.js +2 -6
- package/test/reuse/common/navigation/test.navigation.conf.js +14 -12
- package/test/reuse/common/userInteraction/clearAndFillActive.spec.js +1 -3
- package/test/reuse/common/userInteraction/clearAndFillActiveAndRetry.spec.js +2 -6
- package/test/reuse/common/userInteraction/fillActive.spec.js +2 -6
- package/test/reuse/common/userInteraction/fillActiveAndRetry.spec.js +2 -6
- package/test/reuse/common/userInteraction/pressKey.spec.js +6 -30
- package/test/reuse/common/userInteraction/test.userInteraction.conf.js +36 -38
- package/test/reuse/flp/userLocks/data/data.json +1 -1
- package/test/reuse/flp/userLocks/deleteExistingLockEntries.spec.js +0 -3
- package/test/reuse/flp/userLocks/getNumberOfLockEntries.spec.js +0 -2
- package/test/reuse/flp/userLocks/test.userLocks.conf.js +1 -4
- package/test/reuse/flp/userSettings/data/data.json +1 -1
- package/test/reuse/flp/userSettings/getDateFormatFromUserSettings.spec.js +0 -2
- package/test/reuse/flp/userSettings/getLanguageFromUserSettings.spec.js +0 -1
- package/test/reuse/flp/userSettings/getTimeFormatFromUserSettings.spec.js +0 -3
- package/test/reuse/flp/userSettings/getTimeZoneFromUserSettings.spec.js +0 -2
- package/test/reuse/flp/userSettings/setDateFormatFromUserSettings.spec.js +0 -2
- package/test/reuse/flp/userSettings/setLanguageFromUserSettings.spec.js +0 -2
- package/test/reuse/flp/userSettings/setNumberFormatFromUserSettings.spec.js +1 -3
- package/test/reuse/flp/userSettings/setS4UserSettings.spec.js +0 -2
- package/test/reuse/flp/userSettings/setTimeFormatFromUserSettings.spec.js +0 -3
- package/test/reuse/flp/userSettings/setTimeZoneFromUserSettings.spec.js +0 -2
- package/test/reuse/flp/userSettings/test.userSettings.apply.conf.js +1 -3
- package/test/reuse/helper/elementHighlight/test.elementHighlight.conf.js +2 -4
- package/test/reuse/nonUi5/assertion/expectAttributeToBe.spec.js +4 -11
- package/test/reuse/nonUi5/assertion/expectAttributeToContain.spec.js +3 -10
- package/test/reuse/nonUi5/assertion/expectCssPropertyValueToBe.spec.js +2 -4
- package/test/reuse/nonUi5/assertion/expectToBeNotVisible.spec.js +3 -5
- package/test/reuse/nonUi5/assertion/expectToBeVisible.spec.js +2 -2
- package/test/reuse/nonUi5/assertion/test.assertion.conf.js +39 -35
- package/test/reuse/nonUi5/assertion/test.assertion.sauceLabs.conf.js +40 -42
- package/test/reuse/nonUi5/element/getAttributeValue.spec.js +3 -9
- package/test/reuse/nonUi5/element/getByChild.spec.js +4 -8
- package/test/reuse/nonUi5/element/getByClass.spec.js +2 -7
- package/test/reuse/nonUi5/element/getByCss.spec.js +6 -11
- package/test/reuse/nonUi5/element/getByCssContainingText.spec.js +2 -6
- package/test/reuse/nonUi5/element/getById.spec.js +3 -10
- package/test/reuse/nonUi5/element/getByName.spec.js +2 -5
- package/test/reuse/nonUi5/element/getByParent.spec.js +5 -15
- package/test/reuse/nonUi5/element/getByXPath.spec.js +2 -5
- package/test/reuse/nonUi5/element/getCssPropertyValue.spec.js +1 -4
- package/test/reuse/nonUi5/element/getValue.spec.js +3 -6
- package/test/reuse/nonUi5/element/highlight.spec.js +0 -2
- package/test/reuse/nonUi5/element/isPresent.spec.js +1 -3
- package/test/reuse/nonUi5/element/isPresentByCss.spec.js +1 -1
- package/test/reuse/nonUi5/element/isPresentByXPath.spec.js +0 -1
- package/test/reuse/nonUi5/element/setInnerHTML.spec.js +2 -5
- package/test/reuse/nonUi5/element/test.element.conf.js +18 -15
- package/test/reuse/nonUi5/element/waitForAll.spec.js +2 -5
- package/test/reuse/nonUi5/element/waitToBeClickable.spec.js +2 -5
- package/test/reuse/nonUi5/element/waitToBePresent.spec.js +2 -3
- package/test/reuse/nonUi5/element/waitToBeVisible.spec.js +3 -8
- package/test/reuse/nonUi5/navigation/test.navigation.conf.js +1 -3
- package/test/reuse/nonUi5/userInteraction/checkAttributeAndValue.spec.js +13 -17
- package/test/reuse/nonUi5/userInteraction/clear.spec.js +3 -5
- package/test/reuse/nonUi5/userInteraction/clearAndFill.spec.js +1 -1
- package/test/reuse/nonUi5/userInteraction/clearAndFillAndRetry.spec.js +1 -3
- package/test/reuse/nonUi5/userInteraction/clearAndRetry.spec.js +1 -3
- package/test/reuse/nonUi5/userInteraction/click.spec.js +1 -3
- package/test/reuse/nonUi5/userInteraction/clickAndRetry.spec.js +2 -6
- package/test/reuse/nonUi5/userInteraction/clickElementInSvg.spec.js +1 -3
- package/test/reuse/nonUi5/userInteraction/doubleClick.spec.js +1 -1
- package/test/reuse/nonUi5/userInteraction/dragAndDrop.spec.js +2 -2
- package/test/reuse/nonUi5/userInteraction/fillAndRetry.spec.js +1 -3
- package/test/reuse/nonUi5/userInteraction/selectAll.spec.js +2 -2
- package/test/reuse/nonUi5/userInteraction/test.userInteraction.conf.js +1 -1
- package/test/reuse/nonUi5/userInteraction/test.userInteraction.sauceLabs.conf.js +43 -39
- package/test/reuse/service/odata/test.odata.conf.js +4 -7
- package/test/reuse/service/rest/db.json +1 -1
- package/test/reuse/service/rest/delete.spec.js +3 -10
- package/test/reuse/service/rest/get.spec.js +2 -9
- package/test/reuse/service/rest/init.spec.js +0 -2
- package/test/reuse/service/rest/patch.spec.js +5 -12
- package/test/reuse/service/rest/post.spec.js +6 -17
- package/test/reuse/service/rest/put.spec.js +10 -17
- package/test/reuse/service/rest/rest-server.js +5 -5
- package/test/reuse/service/rest/test.rest.conf.js +4 -11
- package/test/reuse/ui5/assertion/expectAttributeToBe.spec.js +77 -42
- package/test/reuse/ui5/assertion/expectAttributeToContain.spec.js +48 -18
- package/test/reuse/ui5/assertion/expectBindingContextPathToBe.spec.js +41 -42
- package/test/reuse/ui5/assertion/expectBindingPathToBe.spec.js +58 -64
- package/test/reuse/ui5/assertion/expectCssPropertyValueToBe.spec.js +1 -2
- package/test/reuse/ui5/assertion/expectMessageToastTextToBe.spec.js +7 -11
- package/test/reuse/ui5/assertion/expectTextToBe.spec.js +13 -13
- package/test/reuse/ui5/assertion/expectToBeEnabled.spec.js +2 -6
- package/test/reuse/ui5/assertion/expectToBeNotEnabled.spec.js +17 -20
- package/test/reuse/ui5/assertion/expectToBeNotVisible.spec.js +13 -14
- package/test/reuse/ui5/assertion/expectToBeVisible.spec.js +15 -20
- package/test/reuse/ui5/assertion/expectToBeVisibleInViewport.spec.js +11 -15
- package/test/reuse/ui5/assertion/expectValidationError.spec.js +14 -16
- package/test/reuse/ui5/assertion/expectValidationSuccess.spec.js +14 -16
- package/test/reuse/ui5/assertion/expectValueToBe.spec.js +14 -17
- package/test/reuse/ui5/assertion/expectValueToBeDefined.spec.js +6 -9
- package/test/reuse/ui5/assertion/test.assertion.sauceLab.conf.js +3 -3
- package/test/reuse/ui5/confirmationDialog/clickButton.spec.js +24 -28
- package/test/reuse/ui5/confirmationDialog/clickCancel.spec.js +24 -25
- package/test/reuse/ui5/confirmationDialog/clickCreate.spec.js +1 -1
- package/test/reuse/ui5/confirmationDialog/clickDelete.spec.js +25 -28
- package/test/reuse/ui5/confirmationDialog/clickNo.spec.js +21 -29
- package/test/reuse/ui5/confirmationDialog/clickOk.spec.js +19 -22
- package/test/reuse/ui5/confirmationDialog/clickRevokeApproval.spec.js +1 -1
- package/test/reuse/ui5/confirmationDialog/clickYes.spec.js +17 -25
- package/test/reuse/ui5/confirmationDialog/test.confirmationDialog.conf.js +1 -1
- package/test/reuse/ui5/confirmationDialog/test.confirmationDialog.sauceLab.conf.js +4 -4
- package/test/reuse/ui5/control/execute.spec.js +37 -25
- package/test/reuse/ui5/control/focus.spec.js +29 -29
- package/test/reuse/ui5/control/getAggregationProperty.spec.js +25 -21
- package/test/reuse/ui5/control/getAssociationProperty.spec.js +13 -15
- package/test/reuse/ui5/control/getBindingContextPathProperty.spec.js +12 -10
- package/test/reuse/ui5/control/getProperty.spec.js +12 -10
- package/test/reuse/ui5/control/getPropertyBinding.spec.js +12 -10
- package/test/reuse/ui5/control/test.control.sauceLab.conf.js +3 -4
- package/test/reuse/ui5/date/fillRange.spec.js +7 -10
- package/test/reuse/ui5/date/pick.spec.js +31 -34
- package/test/reuse/ui5/date/pickRange.spec.js +31 -25
- package/test/reuse/ui5/date/pickWithTime.spec.js +8 -10
- package/test/reuse/ui5/date/test.date.conf.js +3 -8
- package/test/reuse/ui5/date/test.date.sauceLab.conf.js +4 -9
- package/test/reuse/ui5/element/getBindingValue.spec.js +17 -23
- package/test/reuse/ui5/element/getByChild.spec.js +52 -52
- package/test/reuse/ui5/element/getByParent.spec.js +65 -61
- package/test/reuse/ui5/element/getByText.spec.js +10 -14
- package/test/reuse/ui5/element/getCssPropertyValue.spec.js +1 -1
- package/test/reuse/ui5/element/getDisplayed.spec.js +23 -26
- package/test/reuse/ui5/element/getId.spec.js +15 -18
- package/test/reuse/ui5/element/getPropertyValue.spec.js +19 -23
- package/test/reuse/ui5/element/highlight.spec.js +9 -12
- package/test/reuse/ui5/element/isVisible.spec.js +12 -12
- package/test/reuse/ui5/element/test.element.sauceLab.conf.js +3 -5
- package/test/reuse/ui5/element/waitForAll.spec.js +10 -15
- package/test/reuse/ui5/errorDialog/clickClose.spec.js +6 -9
- package/test/reuse/ui5/errorDialog/expectToBeVisible.spec.js +7 -11
- package/test/reuse/ui5/errorDialog/test.errorDialog.conf.js +2 -5
- package/test/reuse/ui5/errorDialog/test.errorDialog.sauceLab.conf.js +4 -9
- package/test/reuse/ui5/mockserver_qunit/Component.js +3 -8
- package/test/reuse/ui5/mockserver_qunit/controller/App.controller.js +12 -18
- package/test/reuse/ui5/mockserver_qunit/controller/BaseController.js +3 -10
- package/test/reuse/ui5/mockserver_qunit/controller/Home.controller.js +6 -11
- package/test/reuse/ui5/mockserver_qunit/controller/NotFound.controller.js +6 -11
- package/test/reuse/ui5/mockserver_qunit/controller/employee/Employee.controller.js +10 -16
- package/test/reuse/ui5/mockserver_qunit/controller/employee/EmployeeList.controller.js +4 -9
- package/test/reuse/ui5/mockserver_qunit/controller/employee/Resume.controller.js +39 -36
- package/test/reuse/ui5/mockserver_qunit/controller/employee/overview/EmployeeOverview.controller.js +2 -7
- package/test/reuse/ui5/mockserver_qunit/controller/employee/overview/EmployeeOverviewContent.controller.js +66 -79
- package/test/reuse/ui5/mockserver_qunit/index.html +19 -18
- package/test/reuse/ui5/mockserver_qunit/initMockServer.js +13 -13
- package/test/reuse/ui5/mockserver_qunit/localService/mockdata/Employees.json +153 -153
- package/test/reuse/ui5/mockserver_qunit/localService/mockdata/Resumes.json +63 -63
- package/test/reuse/ui5/mockserver_qunit/localService/mockserver.js +124 -128
- package/test/reuse/ui5/mockserver_qunit/localService/mockserverLoadAllData.js +7 -13
- package/test/reuse/ui5/mockserver_qunit/manifest.json +169 -167
- package/test/reuse/ui5/mockserver_qunit/test/flpSandboxMockServer.html +58 -56
- package/test/reuse/ui5/mockserver_qunit/test/flpSandboxMockServerAllData.html +65 -61
- package/test/reuse/ui5/mockserver_qunit/test/qmate/ui/config.js +60 -66
- package/test/reuse/ui5/mockserver_qunit/test/qmate/ui/qunitExecution/specs/runQUnitTests.spec.js +3 -4
- package/test/reuse/ui5/mockserver_qunit/test/qmate/ui/testDisplayNotFound/data/setup.json +8 -10
- package/test/reuse/ui5/mockserver_qunit/test/qmate/ui/testDisplayNotFound/specs/testDisplayNotFound.spec.js +16 -18
- package/test/reuse/ui5/mockserver_qunit/test/qmate/ui/testShowEmployeeList/data/mock/Employees.json +203 -203
- package/test/reuse/ui5/mockserver_qunit/test/qmate/ui/testShowEmployeeList/data/mock/Resumes.json +113 -113
- package/test/reuse/ui5/mockserver_qunit/test/qmate/ui/testShowEmployeeList/data/setup.json +8 -10
- package/test/reuse/ui5/mockserver_qunit/test/qmate/ui/testShowEmployeeList/data/testShowEmployeeList.json +1 -1
- package/test/reuse/ui5/mockserver_qunit/test/qmate/ui/testShowEmployeeList/specs/testShowEmployeeList.spec.js +24 -26
- package/test/reuse/ui5/mockserver_qunit/test/qmate/ui/utils/constants.js +2 -2
- package/test/reuse/ui5/mockserver_qunit/test/qmate/ui/utils/mockDataMapper.js +5 -6
- package/test/reuse/ui5/mockserver_qunit/test/qmate/ui/utils/mockHelper.js +37 -52
- package/test/reuse/ui5/mockserver_qunit/test/unit/allTests.js +2 -4
- package/test/reuse/ui5/mockserver_qunit/test/unit/unitTests.qunit.html +28 -31
- package/test/reuse/ui5/mockserver_qunit/test/unit/utils/Conversions.js +13 -10
- package/test/reuse/ui5/navigation/expectUnsupportedNavigationPopup.spec.js +12 -13
- package/test/reuse/ui5/navigation/navigateToApplicationWithQueryParams.spec.js +1 -1
- package/test/reuse/ui5/navigation/navigateToApplicationWithQueryParamsAndRetry.spec.js +1 -1
- package/test/reuse/ui5/navigation/navigateToSystemAndApplication.spec.js +1 -2
- package/test/reuse/ui5/navigation/navigateToSystemAndApplicationAndRetry.spec.js +2 -4
- package/test/reuse/ui5/navigation/test.navigation.conf.js +2 -7
- package/test/reuse/ui5/navigation/test.navigation.sauceLab.conf.js +4 -4
- package/test/reuse/ui5/navigation/test.navigation.static.sauceLab.conf.js +4 -4
- package/test/reuse/ui5/navigationBar/clickUserIcon.spec.js +5 -10
- package/test/reuse/ui5/navigationBar/expectPageTitle.spec.js +2 -3
- package/test/reuse/ui5/navigationBar/expectShellHeader.spec.js +2 -3
- package/test/reuse/ui5/navigationBar/test.navigationBar.conf.js +2 -8
- package/test/reuse/ui5/navigationBar/test.navigationBar.sauceLab.conf.js +4 -10
- package/test/reuse/ui5/session/login.spec.js +9 -11
- package/test/reuse/ui5/session/loginFiori.spec.js +5 -7
- package/test/reuse/ui5/session/loginSapCloud.spec.js +6 -8
- package/test/reuse/ui5/session/logout.spec.js +2 -3
- package/test/reuse/ui5/session/switchUser.spec.js +1 -1
- package/test/reuse/ui5/session/test.session.conf.js +1 -7
- package/test/reuse/ui5/session/test.session.sauceLab.conf.js +4 -12
- package/test/reuse/ui5/table/clickSettingsButton.spec.js +12 -18
- package/test/reuse/ui5/table/getAllColumnValuesByName.spec.js +1 -4
- package/test/reuse/ui5/table/getSelectorForRowByIndex.spec.js +11 -14
- package/test/reuse/ui5/table/getSelectorsForRowsByValues.spec.js +6 -9
- package/test/reuse/ui5/table/getTotalNumberOfRowsByValues.spec.js +1 -3
- package/test/reuse/ui5/table/openItemByIndex.spec.js +23 -29
- package/test/reuse/ui5/table/openItemByValues.spec.js +27 -38
- package/test/reuse/ui5/table/selectRowByValues.spec.js +7 -7
- package/test/reuse/ui5/table/sortColumnAscending.spec.js +17 -25
- package/test/reuse/ui5/table/sortColumnDescending.spec.js +13 -19
- package/test/reuse/ui5/table/test.table.sauceLab.conf.js +4 -8
- package/test/reuse/ui5/table/test.table.sauceLab.tunnel.conf.js +4 -8
- package/test/reuse/ui5/userInteraction/clear.spec.js +14 -18
- package/test/reuse/ui5/userInteraction/clearAndFill.spec.js +28 -29
- package/test/reuse/ui5/userInteraction/clearAndFillAndRetry.spec.js +4 -12
- package/test/reuse/ui5/userInteraction/clearAndFillSmartFieldInput.spec.js +20 -19
- package/test/reuse/ui5/userInteraction/clearAndFillSmartFieldInputAndRetry.spec.js +5 -7
- package/test/reuse/ui5/userInteraction/clearAndRetry.spec.js +11 -16
- package/test/reuse/ui5/userInteraction/click.spec.js +90 -29
- package/test/reuse/ui5/userInteraction/clickAndRetry.spec.js +1 -3
- package/test/reuse/ui5/userInteraction/clickSelectArrow.spec.js +29 -30
- package/test/reuse/ui5/userInteraction/clickSelectArrowAndRetry.spec.js +1 -3
- package/test/reuse/ui5/userInteraction/doubleClick.spec.js +18 -22
- package/test/reuse/ui5/userInteraction/dragAndDrop.spec.js +8 -10
- package/test/reuse/ui5/userInteraction/fill.spec.js +20 -22
- package/test/reuse/ui5/userInteraction/fillAndRetry.spec.js +2 -6
- package/test/reuse/ui5/userInteraction/mouseOverElement.spec.js +2 -5
- package/test/reuse/ui5/userInteraction/openF4Help.spec.js +8 -12
- package/test/reuse/ui5/userInteraction/openValueHelp.spec.js +11 -12
- package/test/reuse/ui5/userInteraction/rightClick.spec.js +17 -20
- package/test/reuse/ui5/userInteraction/scrollToElement.spec.js +38 -38
- package/test/reuse/ui5/userInteraction/searchFor.spec.js +3 -12
- package/test/reuse/ui5/userInteraction/selectBox.spec.js +36 -36
- package/test/reuse/ui5/userInteraction/selectCombobox.spec.js +16 -24
- package/test/reuse/ui5/userInteraction/selectMultiComboBox.spec.js +22 -31
- package/test/reuse/util/browser/back.spec.js +10 -11
- package/test/reuse/util/browser/clearBrowser.spec.js +1 -1
- package/test/reuse/util/browser/executeScript.spec.js +14 -16
- package/test/reuse/util/browser/getBaseUrl.spec.js +1 -1
- package/test/reuse/util/browser/getBrowserName.spec.js +1 -3
- package/test/reuse/util/browser/getCurrentUrl.spec.js +9 -9
- package/test/reuse/util/browser/getCurrentWindow.spec.js +1 -1
- package/test/reuse/util/browser/getUI5Version.spec.js +8 -8
- package/test/reuse/util/browser/log.spec.js +1 -3
- package/test/reuse/util/browser/logCurrentUrl.spec.js +1 -1
- package/test/reuse/util/browser/refresh.spec.js +14 -16
- package/test/reuse/util/browser/reloadSession.spec.js +1 -1
- package/test/reuse/util/browser/setBaseUrl.spec.js +2 -2
- package/test/reuse/util/browser/switchToDefaultContent.spec.js +28 -29
- package/test/reuse/util/browser/switchToWindow.spec.js +2 -3
- package/test/reuse/util/browser/test.browserCmndLineArgs.conf.js +1 -3
- package/test/reuse/util/browser/waitUntil.spec.js +8 -16
- package/test/reuse/util/component/loadEntryPoint.spec.js +2 -3
- package/test/reuse/util/component/storeEntryPoint.spec.js +6 -10
- package/test/reuse/util/component/test.component.conf.js +1 -4
- package/test/reuse/util/console/console.spec.js +1 -3
- package/test/reuse/util/console/test.console.conf.js +2 -4
- package/test/reuse/util/data/customSourceData/getSecureData.secure.json +1 -1
- package/test/reuse/util/data/customSourceData/test.json +1 -1
- package/test/reuse/util/data/data/test.json +1 -1
- package/test/reuse/util/data/getData.spec.js +3 -7
- package/test/reuse/util/data/test.data.conf.js +1 -5
- package/test/reuse/util/data/test.data.privacy.conf.js +1 -7
- package/test/reuse/util/file/getAttributeValuesFromJson.spec.js +1 -1
- package/test/reuse/util/file/getFileNamesByExtensions.spec.js +0 -1
- package/test/reuse/util/file/pdfParser.spec.js +76 -80
- package/test/reuse/util/file/test.file.conf.js +2 -1
- package/test/reuse/util/file/testFiles/test1.json +26 -77
- package/test/reuse/util/file/upload.spec.js +24 -29
- package/test/reuse/util/formatter/addRemoveLeadingZeros.spec.js +1 -2
- package/test/reuse/util/formatter/formatDate.spec.js +2 -2
- package/test/reuse/util/formatter/formatDateWithTime.spec.js +6 -2
- package/test/reuse/util/formatter/sliceStringAfter.spec.js +1 -1
- package/test/reuse/util/formatter/sliceStringAt.spec.js +1 -1
- package/test/reuse/util/formatter/stringifyJSON.spec.js +4 -4
- package/test/reuse/util/formatter/test.formatter.conf.js +2 -2
- package/test/reuse/util/system/system.spec.js +1 -3
- package/test/reuse/util/system/test.system.conf.js +3 -5
- package/test/reuse/util/userSettings/data/data.json +1 -1
- package/test/reuse/util/userSettings/getDateFormatFromUserSettings.spec.js +0 -2
- package/test/reuse/util/userSettings/getLanguageFromUserSettings.spec.js +0 -1
- package/test/reuse/util/userSettings/getTimeFormatFromUserSettings.spec.js +0 -3
- package/test/reuse/util/userSettings/getTimeZoneFromUserSettings.spec.js +0 -2
- package/test/reuse/util/userSettings/setDateFormatFromUserSettings.spec.js +0 -2
- package/test/reuse/util/userSettings/setLanguageFromUserSettings.spec.js +0 -2
- package/test/reuse/util/userSettings/setNumberFormatFromUserSettings.spec.js +1 -3
- package/test/reuse/util/userSettings/setS4UserSettings.spec.js +0 -2
- package/test/reuse/util/userSettings/setTimeFormatFromUserSettings.spec.js +0 -3
- package/test/reuse/util/userSettings/setTimeZoneFromUserSettings.spec.js +0 -2
- package/test/reuse/util/userSettings/test.userSettings.apply.conf.js +1 -3
- package/test/unit/stats/getUserId.error.spec.ts +3 -1
- package/test/unit/stats/getUserId.spec.ts +10 -10
- package/test/unit/vitest.config.ts +2 -2
- package/test/watchMode/config.js +1 -3
- package/test/watchMode/navigateToUrlAndClick.spec.js +7 -7
- package/tsconfig.json +1 -4
- package/lib/reuse/modules/mobile/Mobile.d.ts +0 -16
- package/lib/reuse/modules/mobile/Mobile.js +0 -23
- package/lib/reuse/modules/mobile/Mobile.js.map +0 -1
- package/lib/reuse/modules/mobile/android.d.ts +0 -32
- package/lib/reuse/modules/mobile/android.js +0 -85
- package/lib/reuse/modules/mobile/android.js.map +0 -1
- package/lib/reuse/modules/mobile/device.d.ts +0 -173
- package/lib/reuse/modules/mobile/device.js +0 -403
- package/lib/reuse/modules/mobile/device.js.map +0 -1
- package/lib/reuse/modules/mobile/element.d.ts +0 -95
- package/lib/reuse/modules/mobile/element.js +0 -185
- package/lib/reuse/modules/mobile/element.js.map +0 -1
- package/lib/reuse/modules/mobile/gestures.d.ts +0 -42
- package/lib/reuse/modules/mobile/gestures.js +0 -86
- package/lib/reuse/modules/mobile/gestures.js.map +0 -1
- package/lib/reuse/modules/mobile/ios.d.ts +0 -10
- package/lib/reuse/modules/mobile/ios.js +0 -19
- package/lib/reuse/modules/mobile/ios.js.map +0 -1
- package/lib/reuse/modules/mobile/userInteraction.d.ts +0 -94
- package/lib/reuse/modules/mobile/userInteraction.js +0 -210
- package/lib/reuse/modules/mobile/userInteraction.js.map +0 -1
- package/test/helper/configurations/mobile.conf.js +0 -16
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
const { BASE_URL } = require("../../../../src/reuse/constants.ts");
|
|
3
3
|
describe("element - getPropertyValue", function () {
|
|
4
|
-
|
|
5
4
|
let value;
|
|
6
5
|
|
|
7
6
|
it("Preparation", async function () {
|
|
@@ -10,10 +9,10 @@ describe("element - getPropertyValue", function () {
|
|
|
10
9
|
|
|
11
10
|
it("Execution", async function () {
|
|
12
11
|
const selector = {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
12
|
+
elementProperties: {
|
|
13
|
+
viewName: "sap.ui.demo.cart.view.Home",
|
|
14
|
+
metadata: "sap.m.StandardListItem",
|
|
15
|
+
bindingContextPath: "/ProductCategories*'LT')"
|
|
17
16
|
}
|
|
18
17
|
};
|
|
19
18
|
const index = 0;
|
|
@@ -28,24 +27,22 @@ describe("element - getPropertyValue", function () {
|
|
|
28
27
|
});
|
|
29
28
|
|
|
30
29
|
describe("element - getPropertyValue - wrong property", function () {
|
|
31
|
-
|
|
32
30
|
it("Preparation", async function () {
|
|
33
31
|
await browser.url("#/categories");
|
|
34
32
|
});
|
|
35
33
|
|
|
36
34
|
it("Execution & Verification", async function () {
|
|
37
35
|
const selector = {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
36
|
+
elementProperties: {
|
|
37
|
+
viewName: "sap.ui.demo.cart.view.Home",
|
|
38
|
+
metadata: "sap.m.StandardListItem",
|
|
39
|
+
bindingContextPath: "/ProductCategories*'LT')"
|
|
42
40
|
}
|
|
43
41
|
};
|
|
44
42
|
const index = 0;
|
|
45
43
|
const timeout = 30000;
|
|
46
44
|
const property = "vbcza";
|
|
47
|
-
expect(ui5.element.getPropertyValue(selector, property, index, timeout))
|
|
48
|
-
.rejects.toThrow("Function 'getPropertyValue' failed: Not existing property");
|
|
45
|
+
expect(ui5.element.getPropertyValue(selector, property, index, timeout)).rejects.toThrow("Function 'getPropertyValue' failed: Not existing property");
|
|
49
46
|
});
|
|
50
47
|
});
|
|
51
48
|
|
|
@@ -56,17 +53,16 @@ describe("element - getPropertyValue - wrong selector", function () {
|
|
|
56
53
|
|
|
57
54
|
it("Execution & Verification", async function () {
|
|
58
55
|
const selector = {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
56
|
+
elementProperties: {
|
|
57
|
+
viewName: "fdsadgmo.cart.view.Home",
|
|
58
|
+
metadata: "sadsagdsgStandardListItem",
|
|
59
|
+
bindingContextPath: "/*'LT')"
|
|
63
60
|
}
|
|
64
61
|
};
|
|
65
62
|
const index = 0;
|
|
66
63
|
const timeout = 30000;
|
|
67
64
|
const property = "title";
|
|
68
|
-
await expect(ui5.element.getPropertyValue(selector, property, index, timeout))
|
|
69
|
-
.rejects.toThrow(/No visible elements found/);
|
|
65
|
+
await expect(ui5.element.getPropertyValue(selector, property, index, timeout)).rejects.toThrow(/No visible elements found/);
|
|
70
66
|
});
|
|
71
67
|
});
|
|
72
68
|
|
|
@@ -78,10 +74,10 @@ describe("element - getPropertyValue - boolean property", function () {
|
|
|
78
74
|
|
|
79
75
|
it("Execution & Verification", async function () {
|
|
80
76
|
const selector = {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
77
|
+
elementProperties: {
|
|
78
|
+
viewName: "sap.m.sample.CheckBox.CheckBoxGroup",
|
|
79
|
+
metadata: "sap.m.CheckBox",
|
|
80
|
+
text: "Option b"
|
|
85
81
|
}
|
|
86
82
|
};
|
|
87
83
|
const index = 0;
|
|
@@ -90,4 +86,4 @@ describe("element - getPropertyValue - boolean property", function () {
|
|
|
90
86
|
// need to make sure that getPropertyValue returns a stringified boolean
|
|
91
87
|
await expect(await ui5.element.getPropertyValue(selector, property, index, timeout)).toStrictEqual(false);
|
|
92
88
|
});
|
|
93
|
-
});
|
|
89
|
+
});
|
|
@@ -1,17 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
describe("element - highlight", function () {
|
|
4
|
-
|
|
5
4
|
it("Preparation", async function () {
|
|
6
5
|
await browser.url("#/categories");
|
|
7
6
|
});
|
|
8
7
|
|
|
9
8
|
it("Execution", async function () {
|
|
10
9
|
const selector = {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
10
|
+
elementProperties: {
|
|
11
|
+
viewName: "sap.ui.demo.cart.view.Home",
|
|
12
|
+
metadata: "sap.m.StandardListItem",
|
|
13
|
+
bindingContextPath: "/ProductCategories*'LT')"
|
|
15
14
|
}
|
|
16
15
|
};
|
|
17
16
|
const duration = 60000;
|
|
@@ -25,22 +24,20 @@ describe("element - highlight", function () {
|
|
|
25
24
|
});
|
|
26
25
|
|
|
27
26
|
describe("element - highlight and catch error", function () {
|
|
28
|
-
|
|
29
27
|
it("Preparation", async function () {
|
|
30
28
|
await browser.url("#/categories");
|
|
31
29
|
});
|
|
32
30
|
|
|
33
31
|
it("Execution & Verification", async function () {
|
|
34
32
|
const selector = {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
33
|
+
elementProperties: {
|
|
34
|
+
viewName: "sap.ui.demo.cart.view.Home",
|
|
35
|
+
metadata: "sap.m.StandardListItem",
|
|
36
|
+
bindingContextPath: "/ProdgjhgctCategories*'LT')" // Wrong "bindingContextPath"
|
|
39
37
|
}
|
|
40
38
|
};
|
|
41
39
|
const duration = 3000;
|
|
42
40
|
const color = "green";
|
|
43
|
-
await expect(ui5.element.highlight(selector, duration, color))
|
|
44
|
-
.rejects.toThrow(/No visible elements found/);
|
|
41
|
+
await expect(ui5.element.highlight(selector, duration, color)).rejects.toThrow(/No visible elements found/);
|
|
45
42
|
});
|
|
46
43
|
});
|
|
@@ -7,10 +7,10 @@ describe("element - isVisible with right selector", function () {
|
|
|
7
7
|
|
|
8
8
|
it("Execution", async function () {
|
|
9
9
|
const selector = {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
elementProperties: {
|
|
11
|
+
viewName: "sap.ui.demo.cart.view.Home",
|
|
12
|
+
metadata: "sap.m.StandardListItem",
|
|
13
|
+
bindingContextPath: "/ProductCategories*'LT')"
|
|
14
14
|
}
|
|
15
15
|
};
|
|
16
16
|
|
|
@@ -31,9 +31,9 @@ describe("element - isVisible with right, but hidden selector", function () {
|
|
|
31
31
|
|
|
32
32
|
it("Execution", async function () {
|
|
33
33
|
const selectorForInvisibleElement = {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
34
|
+
elementProperties: {
|
|
35
|
+
metadata: "sap.ui.core.InvisibleText",
|
|
36
|
+
text: "Press F5 to Refresh"
|
|
37
37
|
}
|
|
38
38
|
};
|
|
39
39
|
isVisible = await ui5.element.isVisible(selectorForInvisibleElement);
|
|
@@ -52,10 +52,10 @@ describe("element - isVisible with wrong selector", function () {
|
|
|
52
52
|
|
|
53
53
|
it("Execution", async function () {
|
|
54
54
|
const selector = {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
55
|
+
elementProperties: {
|
|
56
|
+
viewName: "sap.ui.demo.cart.view.Home",
|
|
57
|
+
metadata: "sap.m.StandardListItem",
|
|
58
|
+
bindingContextPath: "/ProductCategories*'Wrong Category')"
|
|
59
59
|
}
|
|
60
60
|
};
|
|
61
61
|
|
|
@@ -65,4 +65,4 @@ describe("element - isVisible with wrong selector", function () {
|
|
|
65
65
|
it("Verification", async function () {
|
|
66
66
|
common.assertion.expectFalse(isVisible);
|
|
67
67
|
});
|
|
68
|
-
});
|
|
68
|
+
});
|
|
@@ -10,7 +10,6 @@ exports.config = merge(profile.config, {
|
|
|
10
10
|
|
|
11
11
|
maxInstances: 2, // note: for the SAP account, only 2 parallel instances is a max value
|
|
12
12
|
|
|
13
|
-
|
|
14
13
|
bail: 1,
|
|
15
14
|
baseUrl: `${BASE_URL}/test-resources/sap/m/demokit/cart/webapp/index.html?sap-ui-theme=sap_fiori_3`,
|
|
16
15
|
|
|
@@ -27,8 +26,7 @@ exports.config = merge(profile.config, {
|
|
|
27
26
|
|
|
28
27
|
exclude: [],
|
|
29
28
|
|
|
30
|
-
|
|
31
29
|
mochaOpts: {
|
|
32
|
-
timeout: 2000000
|
|
33
|
-
}
|
|
34
|
-
});
|
|
30
|
+
timeout: 2000000
|
|
31
|
+
}
|
|
32
|
+
});
|
|
@@ -1,15 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
const { BASE_URL } = require("../../../../src/reuse/constants.ts");
|
|
3
|
-
const {
|
|
4
|
-
handleCookiesConsent
|
|
5
|
-
} = require("../../../helper/utils");
|
|
3
|
+
const { handleCookiesConsent } = require("../../../helper/utils");
|
|
6
4
|
|
|
7
5
|
describe("element - waitForAll", function () {
|
|
8
|
-
|
|
9
6
|
const selector = {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
7
|
+
elementProperties: {
|
|
8
|
+
viewName: "sap.tnt.sample.NavigationList.V",
|
|
9
|
+
metadata: "sap.tnt.NavigationListItem"
|
|
13
10
|
}
|
|
14
11
|
};
|
|
15
12
|
it("Preparation", async function () {
|
|
@@ -28,12 +25,11 @@ describe("element - waitForAll", function () {
|
|
|
28
25
|
});
|
|
29
26
|
|
|
30
27
|
describe("element - waitForAll - error case", function () {
|
|
31
|
-
|
|
32
28
|
const selector = {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
29
|
+
elementProperties: {
|
|
30
|
+
viewName: "sap.tnt.sample.NavigationList.V",
|
|
31
|
+
metadata: "sap.tnt.NavigationListItem",
|
|
32
|
+
text: "No such element"
|
|
37
33
|
}
|
|
38
34
|
};
|
|
39
35
|
it("Preparation", async function () {
|
|
@@ -43,7 +39,6 @@ describe("element - waitForAll - error case", function () {
|
|
|
43
39
|
});
|
|
44
40
|
|
|
45
41
|
it("Execution and Verification", async function () {
|
|
46
|
-
await expect(ui5.element.waitForAll(selector, 4000))
|
|
47
|
-
.rejects.toThrow("Function 'waitForAll' failed with:");
|
|
42
|
+
await expect(ui5.element.waitForAll(selector, 4000)).rejects.toThrow("Function 'waitForAll' failed with:");
|
|
48
43
|
});
|
|
49
|
-
});
|
|
44
|
+
});
|
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
const { BASE_URL } = require("../../../../src/reuse/constants.ts");
|
|
3
|
-
const {
|
|
4
|
-
handleCookiesConsent
|
|
5
|
-
} = require("../../../helper/utils");
|
|
3
|
+
const { handleCookiesConsent } = require("../../../helper/utils");
|
|
6
4
|
|
|
7
5
|
describe("errorDialog - clickClose", function () {
|
|
8
|
-
|
|
9
6
|
it("Preparation", async function () {
|
|
10
7
|
await common.navigation.navigateToUrl(`${BASE_URL}/#/entity/sap.m.Dialog/sample/sap.m.sample.Dialog`);
|
|
11
8
|
await handleCookiesConsent();
|
|
@@ -14,10 +11,10 @@ describe("errorDialog - clickClose", function () {
|
|
|
14
11
|
|
|
15
12
|
it("Execution", async function () {
|
|
16
13
|
const dialogSelector = {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
14
|
+
elementProperties: {
|
|
15
|
+
viewName: "sap.m.sample.Dialog.V",
|
|
16
|
+
metadata: "sap.m.Button",
|
|
17
|
+
text: "Dialog (Fixed Size)"
|
|
21
18
|
}
|
|
22
19
|
};
|
|
23
20
|
await ui5.userInteraction.click(dialogSelector);
|
|
@@ -30,4 +27,4 @@ describe("errorDialog - clickClose", function () {
|
|
|
30
27
|
await ui5.errorDialog.clickClose();
|
|
31
28
|
await ui5.assertion.expectToBeNotVisible(dialogCloseButtonSelector);
|
|
32
29
|
});
|
|
33
|
-
});
|
|
30
|
+
});
|
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
const { BASE_URL } = require("../../../../src/reuse/constants.ts");
|
|
3
|
-
const {
|
|
4
|
-
handleCookiesConsent
|
|
5
|
-
} = require("../../../helper/utils");
|
|
3
|
+
const { handleCookiesConsent } = require("../../../helper/utils");
|
|
6
4
|
|
|
7
5
|
describe("errorDialog - expectToBeVisible", function () {
|
|
8
|
-
|
|
9
6
|
it("Preparation", async function () {
|
|
10
7
|
await common.navigation.navigateToUrl(`${BASE_URL}/#/entity/sap.m.Dialog/sample/sap.m.sample.DialogMessage`);
|
|
11
8
|
await handleCookiesConsent();
|
|
@@ -13,14 +10,13 @@ describe("errorDialog - expectToBeVisible", function () {
|
|
|
13
10
|
});
|
|
14
11
|
|
|
15
12
|
it("Execution", async function () {
|
|
16
|
-
await expect(ui5.errorDialog.expectToBeVisible())
|
|
17
|
-
.rejects.toThrow(/No visible elements/);
|
|
13
|
+
await expect(ui5.errorDialog.expectToBeVisible()).rejects.toThrow(/No visible elements/);
|
|
18
14
|
|
|
19
15
|
const selector = {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
16
|
+
elementProperties: {
|
|
17
|
+
viewName: "sap.m.sample.DialogMessage.V",
|
|
18
|
+
metadata: "sap.m.Button",
|
|
19
|
+
text: "Message Dialog (Error)"
|
|
24
20
|
}
|
|
25
21
|
};
|
|
26
22
|
await ui5.userInteraction.click(selector);
|
|
@@ -29,4 +25,4 @@ describe("errorDialog - expectToBeVisible", function () {
|
|
|
29
25
|
it("Verification", async function () {
|
|
30
26
|
await ui5.errorDialog.expectToBeVisible();
|
|
31
27
|
});
|
|
32
|
-
});
|
|
28
|
+
});
|
|
@@ -6,8 +6,5 @@ exports.config = merge(profile.config, {
|
|
|
6
6
|
maxInstances: 6,
|
|
7
7
|
specFileRetries: 2,
|
|
8
8
|
|
|
9
|
-
specs: [
|
|
10
|
-
|
|
11
|
-
path.resolve(__dirname, "expectToBeVisible.spec.js")
|
|
12
|
-
]
|
|
13
|
-
});
|
|
9
|
+
specs: [path.resolve(__dirname, "clickClose.spec.js"), path.resolve(__dirname, "expectToBeVisible.spec.js")]
|
|
10
|
+
});
|
|
@@ -9,18 +9,13 @@ exports.config = merge(profile.config, {
|
|
|
9
9
|
|
|
10
10
|
maxInstances: 2, // note: for the SAP account, only 2 parallel instances is a max value
|
|
11
11
|
|
|
12
|
-
|
|
13
12
|
bail: 1,
|
|
14
13
|
|
|
15
|
-
specs: [
|
|
16
|
-
path.resolve(__dirname, "clickClose.spec.js"),
|
|
17
|
-
path.resolve(__dirname, "expectToBeVisible.spec.js")
|
|
18
|
-
],
|
|
14
|
+
specs: [path.resolve(__dirname, "clickClose.spec.js"), path.resolve(__dirname, "expectToBeVisible.spec.js")],
|
|
19
15
|
|
|
20
16
|
exclude: [],
|
|
21
17
|
|
|
22
|
-
|
|
23
18
|
mochaOpts: {
|
|
24
|
-
timeout: 2000000
|
|
25
|
-
}
|
|
26
|
-
});
|
|
19
|
+
timeout: 2000000
|
|
20
|
+
}
|
|
21
|
+
});
|
|
@@ -1,23 +1,18 @@
|
|
|
1
1
|
/* eslint-disable no-undef */
|
|
2
|
-
sap.ui.define([
|
|
3
|
-
"sap/ui/core/UIComponent"
|
|
4
|
-
], function (UIComponent) {
|
|
2
|
+
sap.ui.define(["sap/ui/core/UIComponent"], function (UIComponent) {
|
|
5
3
|
"use strict";
|
|
6
4
|
|
|
7
5
|
return UIComponent.extend("sap.ui.demo.nav.Component", {
|
|
8
|
-
|
|
9
6
|
metadata: {
|
|
10
7
|
manifest: "json"
|
|
11
8
|
},
|
|
12
9
|
|
|
13
10
|
init: function () {
|
|
14
|
-
|
|
11
|
+
// call the init function of the parent
|
|
15
12
|
UIComponent.prototype.init.apply(this, arguments);
|
|
16
13
|
|
|
17
|
-
|
|
14
|
+
// create the views based on the url/hash
|
|
18
15
|
this.getRouter().initialize();
|
|
19
16
|
}
|
|
20
|
-
|
|
21
17
|
});
|
|
22
|
-
|
|
23
18
|
});
|
|
@@ -1,37 +1,31 @@
|
|
|
1
1
|
// eslint-disable-next-line no-undef
|
|
2
|
-
sap.ui.define([
|
|
3
|
-
"sap/ui/demo/nav/controller/BaseController",
|
|
4
|
-
"sap/base/Log"
|
|
5
|
-
], function(BaseController, Log) {
|
|
2
|
+
sap.ui.define(["sap/ui/demo/nav/controller/BaseController", "sap/base/Log"], function (BaseController, Log) {
|
|
6
3
|
"use strict";
|
|
7
4
|
|
|
8
5
|
return BaseController.extend("sap.ui.demo.nav.controller.App", {
|
|
9
|
-
|
|
10
6
|
onInit: function () {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
7
|
+
// This is ONLY for being used within the tutorial.
|
|
8
|
+
// The default log level of the current running environment may be higher than INFO,
|
|
9
|
+
// in order to see the debug info in the console, the log level needs to be explicitly
|
|
10
|
+
// set to INFO here.
|
|
11
|
+
// But for application development, the log level doesn't need to be set again in the code.
|
|
16
12
|
Log.setLevel(Log.Level.INFO);
|
|
17
13
|
|
|
18
14
|
var oRouter = this.getRouter();
|
|
19
15
|
|
|
20
16
|
oRouter.attachBypassed(function (oEvent) {
|
|
21
17
|
var sHash = oEvent.getParameter("hash");
|
|
22
|
-
|
|
23
|
-
|
|
18
|
+
// do something here, i.e. send logging data to the backend for analysis
|
|
19
|
+
// telling what resource the user tried to access...
|
|
24
20
|
Log.info("Sorry, but the hash '" + sHash + "' is invalid.", "The resource was not found.");
|
|
25
21
|
});
|
|
26
22
|
|
|
27
|
-
oRouter.attachRouteMatched(function (oEvent){
|
|
23
|
+
oRouter.attachRouteMatched(function (oEvent) {
|
|
28
24
|
var sRouteName = oEvent.getParameter("name");
|
|
29
|
-
|
|
30
|
-
|
|
25
|
+
// do something, i.e. send usage statistics to backend
|
|
26
|
+
// in order to improve our app and the user experience (Build-Measure-Learn cycle)
|
|
31
27
|
Log.info("User accessed route " + sRouteName + ", timestamp = " + new Date().getTime());
|
|
32
28
|
});
|
|
33
29
|
}
|
|
34
|
-
|
|
35
30
|
});
|
|
36
|
-
|
|
37
|
-
});
|
|
31
|
+
});
|
|
@@ -1,14 +1,9 @@
|
|
|
1
1
|
// eslint-disable-next-line no-undef
|
|
2
|
-
sap.ui.define([
|
|
3
|
-
"sap/ui/core/mvc/Controller",
|
|
4
|
-
"sap/ui/core/routing/History",
|
|
5
|
-
"sap/ui/core/UIComponent"
|
|
6
|
-
], function(Controller, History, UIComponent) {
|
|
2
|
+
sap.ui.define(["sap/ui/core/mvc/Controller", "sap/ui/core/routing/History", "sap/ui/core/UIComponent"], function (Controller, History, UIComponent) {
|
|
7
3
|
"use strict";
|
|
8
4
|
|
|
9
5
|
return Controller.extend("sap.ui.demo.nav.controller.BaseController", {
|
|
10
|
-
|
|
11
|
-
getRouter : function () {
|
|
6
|
+
getRouter: function () {
|
|
12
7
|
return UIComponent.getRouterFor(this);
|
|
13
8
|
},
|
|
14
9
|
|
|
@@ -24,7 +19,5 @@ sap.ui.define([
|
|
|
24
19
|
this.getRouter().navTo("appHome", {}, true /*no history*/);
|
|
25
20
|
}
|
|
26
21
|
}
|
|
27
|
-
|
|
28
22
|
});
|
|
29
|
-
|
|
30
|
-
});
|
|
23
|
+
});
|
|
@@ -1,27 +1,22 @@
|
|
|
1
1
|
// eslint-disable-next-line no-undef
|
|
2
|
-
sap.ui.define([
|
|
3
|
-
"sap/ui/demo/nav/controller/BaseController"
|
|
4
|
-
], function (BaseController) {
|
|
2
|
+
sap.ui.define(["sap/ui/demo/nav/controller/BaseController"], function (BaseController) {
|
|
5
3
|
"use strict";
|
|
6
4
|
|
|
7
5
|
return BaseController.extend("sap.ui.demo.nav.controller.Home", {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
// display the "notFound" target without changing the hash
|
|
6
|
+
onDisplayNotFound: function () {
|
|
7
|
+
// display the "notFound" target without changing the hash
|
|
11
8
|
this.getRouter().getTargets().display("notFound", {
|
|
12
|
-
fromTarget
|
|
9
|
+
fromTarget: "home"
|
|
13
10
|
});
|
|
14
11
|
},
|
|
15
12
|
|
|
16
|
-
onNavToEmployees
|
|
13
|
+
onNavToEmployees: function () {
|
|
17
14
|
this.getRouter().navTo("employeeList");
|
|
18
15
|
},
|
|
19
16
|
|
|
20
17
|
// eslint-disable-next-line no-unused-vars
|
|
21
|
-
onNavToEmployeeOverview
|
|
18
|
+
onNavToEmployeeOverview: function (oEvent) {
|
|
22
19
|
this.getRouter().navTo("employeeOverview");
|
|
23
20
|
}
|
|
24
|
-
|
|
25
21
|
});
|
|
26
|
-
|
|
27
22
|
});
|
|
@@ -1,34 +1,29 @@
|
|
|
1
1
|
// eslint-disable-next-line no-undef
|
|
2
|
-
sap.ui.define([
|
|
3
|
-
"sap/ui/demo/nav/controller/BaseController"
|
|
4
|
-
], function (BaseController) {
|
|
2
|
+
sap.ui.define(["sap/ui/demo/nav/controller/BaseController"], function (BaseController) {
|
|
5
3
|
"use strict";
|
|
6
4
|
|
|
7
5
|
return BaseController.extend("sap.ui.demo.nav.controller.NotFound", {
|
|
8
|
-
|
|
9
6
|
onInit: function () {
|
|
10
7
|
var oRouter, oTarget;
|
|
11
8
|
|
|
12
9
|
oRouter = this.getRouter();
|
|
13
10
|
oTarget = oRouter.getTarget("notFound");
|
|
14
11
|
oTarget.attachDisplay(function (oEvent) {
|
|
15
|
-
this._oData = oEvent.getParameter("data");
|
|
12
|
+
this._oData = oEvent.getParameter("data"); // store the data
|
|
16
13
|
}, this);
|
|
17
14
|
},
|
|
18
15
|
|
|
19
|
-
|
|
20
|
-
onNavBack
|
|
21
|
-
|
|
16
|
+
// override the parent's onNavBack (inherited from BaseController)
|
|
17
|
+
onNavBack: function () {
|
|
18
|
+
// in some cases we could display a certain target when the back button is pressed
|
|
22
19
|
if (this._oData && this._oData.fromTarget) {
|
|
23
20
|
this.getRouter().getTargets().display(this._oData.fromTarget);
|
|
24
21
|
delete this._oData.fromTarget;
|
|
25
22
|
return;
|
|
26
23
|
}
|
|
27
24
|
|
|
28
|
-
|
|
25
|
+
// call the parent's onNavBack
|
|
29
26
|
BaseController.prototype.onNavBack.apply(this, arguments);
|
|
30
27
|
}
|
|
31
|
-
|
|
32
28
|
});
|
|
33
|
-
|
|
34
29
|
});
|
|
@@ -1,19 +1,16 @@
|
|
|
1
1
|
/* eslint-disable no-unused-vars */
|
|
2
2
|
// eslint-disable-next-line no-undef
|
|
3
|
-
sap.ui.define([
|
|
4
|
-
"sap/ui/demo/nav/controller/BaseController"
|
|
5
|
-
], function (BaseController) {
|
|
3
|
+
sap.ui.define(["sap/ui/demo/nav/controller/BaseController"], function (BaseController) {
|
|
6
4
|
"use strict";
|
|
7
5
|
|
|
8
6
|
return BaseController.extend("sap.ui.demo.nav.controller.employee.Employee", {
|
|
9
|
-
|
|
10
7
|
onInit: function () {
|
|
11
8
|
var oRouter = this.getRouter();
|
|
12
9
|
|
|
13
10
|
oRouter.getRoute("employee").attachMatched(this._onRouteMatched, this);
|
|
14
11
|
|
|
15
|
-
|
|
16
|
-
|
|
12
|
+
// Hint: we don't want to do it this way
|
|
13
|
+
/*
|
|
17
14
|
oRouter.attachRouteMatched(function (oEvent){
|
|
18
15
|
var sRouteName, oArgs, oView;
|
|
19
16
|
|
|
@@ -23,16 +20,15 @@ sap.ui.define([
|
|
|
23
20
|
}
|
|
24
21
|
}, this);
|
|
25
22
|
*/
|
|
26
|
-
|
|
27
23
|
},
|
|
28
24
|
|
|
29
|
-
_onRouteMatched
|
|
25
|
+
_onRouteMatched: function (oEvent) {
|
|
30
26
|
var oArgs, oView;
|
|
31
27
|
oArgs = oEvent.getParameter("arguments");
|
|
32
28
|
oView = this.getView();
|
|
33
29
|
oView.bindElement({
|
|
34
|
-
path
|
|
35
|
-
events
|
|
30
|
+
path: "/Employees(" + oArgs.employeeId + ")",
|
|
31
|
+
events: {
|
|
36
32
|
change: this._onBindingChange.bind(this),
|
|
37
33
|
dataRequested: function (oEvent) {
|
|
38
34
|
oView.setBusy(true);
|
|
@@ -44,21 +40,19 @@ sap.ui.define([
|
|
|
44
40
|
});
|
|
45
41
|
},
|
|
46
42
|
|
|
47
|
-
_onBindingChange
|
|
48
|
-
|
|
43
|
+
_onBindingChange: function (oEvent) {
|
|
44
|
+
// No data for the binding
|
|
49
45
|
if (!this.getView().getBindingContext()) {
|
|
50
46
|
this.getRouter().getTargets().display("notFound");
|
|
51
47
|
}
|
|
52
48
|
},
|
|
53
49
|
|
|
54
|
-
onShowResume
|
|
50
|
+
onShowResume: function (oEvent) {
|
|
55
51
|
var oCtx = this.getView().getBindingContext();
|
|
56
52
|
|
|
57
53
|
this.getRouter().navTo("employeeResume", {
|
|
58
|
-
employeeId
|
|
54
|
+
employeeId: oCtx.getProperty("EmployeeID")
|
|
59
55
|
});
|
|
60
56
|
}
|
|
61
|
-
|
|
62
57
|
});
|
|
63
|
-
|
|
64
58
|
});
|
|
@@ -1,22 +1,17 @@
|
|
|
1
1
|
// eslint-disable-next-line no-undef
|
|
2
|
-
sap.ui.define([
|
|
3
|
-
"sap/ui/demo/nav/controller/BaseController"
|
|
4
|
-
], function (BaseController) {
|
|
2
|
+
sap.ui.define(["sap/ui/demo/nav/controller/BaseController"], function (BaseController) {
|
|
5
3
|
"use strict";
|
|
6
4
|
|
|
7
5
|
return BaseController.extend("sap.ui.demo.nav.controller.employee.EmployeeList", {
|
|
8
|
-
|
|
9
|
-
onListItemPressed : function(oEvent){
|
|
6
|
+
onListItemPressed: function (oEvent) {
|
|
10
7
|
var oItem, oCtx;
|
|
11
8
|
|
|
12
9
|
oItem = oEvent.getSource();
|
|
13
10
|
oCtx = oItem.getBindingContext();
|
|
14
11
|
|
|
15
|
-
this.getRouter().navTo("employee",{
|
|
16
|
-
employeeId
|
|
12
|
+
this.getRouter().navTo("employee", {
|
|
13
|
+
employeeId: oCtx.getProperty("EmployeeID")
|
|
17
14
|
});
|
|
18
|
-
|
|
19
15
|
}
|
|
20
16
|
});
|
|
21
|
-
|
|
22
17
|
});
|