ff-automationv2 2.2.31 → 2.2.32-beta.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/dist/ai/llmprompts/llmPromptTypes/systemPromptTypes.d.ts +3 -0
- package/dist/ai/llmprompts/promptRegistry.js +10 -2
- package/dist/ai/llmprompts/systemPrompts/actionExtractorPrompt.js +83 -27
- package/dist/ai/llmprompts/systemPrompts/fileVerifyActionExtractorPrompt.d.ts +2 -0
- package/dist/ai/llmprompts/systemPrompts/fileVerifyActionExtractorPrompt.js +35 -0
- package/dist/ai/llmprompts/systemPrompts/fireflinkElementIndexExtactors.js +35 -0
- package/dist/ai/llmprompts/systemPrompts/fireflinkElementIndexExtractor_Mob.js +5 -2
- package/dist/ai/llmprompts/systemPrompts/getActionExtractorPrompt.js +4 -2
- package/dist/ai/llmprompts/systemPrompts/getActionExtractorPromptMob.js +3 -1
- package/dist/ai/llmprompts/systemPrompts/inputContextPrompt.d.ts +2 -0
- package/dist/ai/llmprompts/systemPrompts/inputContextPrompt.js +54 -0
- package/dist/ai/llmprompts/systemPrompts/mobileKeywordExtractor.js +53 -8
- package/dist/ai/llmprompts/systemPrompts/verifyActionExtractorPrompt.js +5 -4
- package/dist/ai/llmprompts/systemPrompts/verifyActionExtractorPromptMob.js +1 -1
- package/dist/ai/llmprompts/userPrompts/userPrompt.js +2 -0
- package/dist/automation/actions/executor.d.ts +14 -6
- package/dist/automation/actions/executor.js +968 -251
- package/dist/automation/actions/interaction/alert/enterDataToAlert.js +3 -1
- package/dist/automation/actions/interaction/alert/getTextPresentOnAlertPopup.js +4 -0
- package/dist/automation/actions/interaction/alert/verifyAlertPopUpMessageContainsString.js +1 -1
- package/dist/automation/actions/interaction/alert/verifyAlertPopupIsDisplayed.js +1 -1
- package/dist/automation/actions/interaction/alert/verifyTextPresentOnAlertPopup.js +1 -1
- package/dist/automation/actions/interaction/clear/clearAndEnter.js +6 -3
- package/dist/automation/actions/interaction/elementlessActions/getOtp.js +25 -24
- package/dist/automation/actions/interaction/enterActions/EnterInputIntoElementFromClipBoardInterface_mob.js +3 -1
- package/dist/automation/actions/interaction/enterActions/enterInput.js +5 -2
- package/dist/automation/actions/interaction/enterActions/enterInputAndPress.js +5 -2
- package/dist/automation/actions/interaction/enterActions/enterUrl.js +5 -2
- package/dist/automation/actions/interaction/enterActions/enterusingJs.js +3 -1
- package/dist/automation/actions/interaction/enterActions/waitAndEnter.js +5 -2
- package/dist/automation/actions/interaction/files/VerifyPDF.d.ts +2 -0
- package/dist/automation/actions/interaction/files/VerifyPDF.js +171 -0
- package/dist/automation/actions/interaction/get/MOB_GetADBLogsForGivenAppPackage.js +4 -1
- package/dist/automation/actions/interaction/get/MOB_GetAllContexts.js +5 -1
- package/dist/automation/actions/interaction/get/MOB_GetAllWindowHandles.d.ts +1 -1
- package/dist/automation/actions/interaction/get/MOB_GetAllWindowHandles.js +10 -6
- package/dist/automation/actions/interaction/get/MOB_GetAltitude.js +5 -1
- package/dist/automation/actions/interaction/get/MOB_GetBatteryPercentage.js +5 -1
- package/dist/automation/actions/interaction/get/MOB_GetBatteryStatus.d.ts +1 -1
- package/dist/automation/actions/interaction/get/MOB_GetBatteryStatus.js +7 -3
- package/dist/automation/actions/interaction/get/MOB_GetClipBoardText.js +5 -1
- package/dist/automation/actions/interaction/get/MOB_GetCurrentActivity.js +5 -1
- package/dist/automation/actions/interaction/get/MOB_GetCurrentAppPackage.js +5 -1
- package/dist/automation/actions/interaction/get/MOB_GetCurrentContext.js +5 -1
- package/dist/automation/actions/interaction/get/MOB_GetCurrentDeviceDate.js +5 -1
- package/dist/automation/actions/interaction/get/MOB_GetCurrentDeviceSettings.js +5 -1
- package/dist/automation/actions/interaction/get/MOB_GetCurrentDeviceStatus.js +5 -1
- package/dist/automation/actions/interaction/get/MOB_GetCurrentDeviceSystemBars.js +5 -2
- package/dist/automation/actions/interaction/get/MOB_GetCurrentDeviceTime.js +5 -1
- package/dist/automation/actions/interaction/get/MOB_GetCurrentOrientation.js +5 -1
- package/dist/automation/actions/interaction/get/MOB_GetCurrentSessionId.js +5 -1
- package/dist/automation/actions/interaction/get/MOB_GetDeviceLocation.js +5 -1
- package/dist/automation/actions/interaction/get/MOB_GetDeviceName.js +5 -1
- package/dist/automation/actions/interaction/get/MOB_GetDeviceOsVersion.js +5 -1
- package/dist/automation/actions/interaction/get/MOB_GetDeviceUdid.js +5 -1
- package/dist/automation/actions/interaction/get/MOB_GetHeightOfElement.js +5 -1
- package/dist/automation/actions/interaction/get/MOB_GetHeightOfScreen.js +4 -0
- package/dist/automation/actions/interaction/get/MOB_GetHourFromCurrentDeviceTime.js +5 -1
- package/dist/automation/actions/interaction/get/MOB_GetLatitude.js +5 -1
- package/dist/automation/actions/interaction/get/MOB_GetLongitude.js +5 -1
- package/dist/automation/actions/interaction/get/MOB_GetMinuteFromCurrentDeviceTime.js +5 -1
- package/dist/automation/actions/interaction/get/MOB_GetSecondFromCurrentDeviceTime.js +5 -1
- package/dist/automation/actions/interaction/get/MOB_GetSizeOfScreen.js +5 -1
- package/dist/automation/actions/interaction/get/MOB_GetSupportedPerformanceDataTypes.js +5 -1
- package/dist/automation/actions/interaction/get/MOB_GetTextFromElementAndSetToClipBoard.js +5 -1
- package/dist/automation/actions/interaction/get/MOB_GetWidthOfElement.js +5 -1
- package/dist/automation/actions/interaction/get/MOB_GetWidthOfScreen.js +5 -1
- package/dist/automation/actions/interaction/get/browserWindowGetPosition.js +5 -0
- package/dist/automation/actions/interaction/get/getAllBrokenImages.js +9 -0
- package/dist/automation/actions/interaction/get/getAllBrokenLinkCount.js +9 -0
- package/dist/automation/actions/interaction/get/getAllBrokenLinks.js +10 -1
- package/dist/automation/actions/interaction/get/getAllConsoleErrors.js +11 -0
- package/dist/automation/actions/interaction/get/getAllConsoleInformation.js +12 -1
- package/dist/automation/actions/interaction/get/getAllConsoleLogs.js +11 -1
- package/dist/automation/actions/interaction/get/getAllConsoleWarnings.js +12 -1
- package/dist/automation/actions/interaction/get/getAllCookieNames.js +6 -1
- package/dist/automation/actions/interaction/get/getAllCookieValues.js +6 -1
- package/dist/automation/actions/interaction/get/getAllSelectedOptions.js +8 -1
- package/dist/automation/actions/interaction/get/getAllTheOptionsFromListBoxAsText.js +4 -1
- package/dist/automation/actions/interaction/get/getAllTheOptionsFromListBoxAsTextInSortedOrder.js +4 -1
- package/dist/automation/actions/interaction/get/getAllTheSelectedOptionsFromListBoxAsText.js +4 -1
- package/dist/automation/actions/interaction/get/getAllWindowHandles.js +5 -1
- package/dist/automation/actions/interaction/get/getAttribute.js +19 -14
- package/dist/automation/actions/interaction/get/getAudioCurrentPlaybackRate.js +4 -1
- package/dist/automation/actions/interaction/get/getAudioCurrentSeekTime.js +4 -1
- package/dist/automation/actions/interaction/get/getAudioCurrentVolume.js +4 -1
- package/dist/automation/actions/interaction/get/getAudioDecodedByte.js +4 -1
- package/dist/automation/actions/interaction/get/getAudioDefaultPlaybackRate.js +4 -1
- package/dist/automation/actions/interaction/get/getAudioMediaLength.js +4 -1
- package/dist/automation/actions/interaction/get/getAudioMediaSource.js +4 -1
- package/dist/automation/actions/interaction/get/getBestPracticesScore.js +11 -3
- package/dist/automation/actions/interaction/get/getBrowserCount.js +5 -0
- package/dist/automation/actions/interaction/get/getBrowserVersion.js +5 -0
- package/dist/automation/actions/interaction/get/getCapabilityNames.js +5 -0
- package/dist/automation/actions/interaction/get/getClipBoardText.js +13 -0
- package/dist/automation/actions/interaction/get/getCollectiveApiResponseTime.js +4 -1
- package/dist/automation/actions/interaction/get/getCollectiveApiStatusCode.js +4 -1
- package/dist/automation/actions/interaction/get/getCssValue.js +5 -1
- package/dist/automation/actions/interaction/get/getCurrentDayOfTheWeek.js +4 -0
- package/dist/automation/actions/interaction/get/getCurrentSecondsFromCurrentSystemTime.js +5 -1
- package/dist/automation/actions/interaction/get/getCurrentSystemDate.js +4 -0
- package/dist/automation/actions/interaction/get/getCurrentSystemDay.js +5 -1
- package/dist/automation/actions/interaction/get/getCurrentSystemMonth.js +5 -1
- package/dist/automation/actions/interaction/get/getCurrentSystemTime.js +5 -1
- package/dist/automation/actions/interaction/get/getCurrentSystemYear.js +5 -1
- package/dist/automation/actions/interaction/get/getCurrentWindowHandle.js +13 -26
- package/dist/automation/actions/interaction/get/getDataFromApiRequestHeaderForJsonPath.js +5 -4
- package/dist/automation/actions/interaction/get/getDataFromApiResponseForJsonPath.js +5 -4
- package/dist/automation/actions/interaction/get/getDateWithGivenFormat.js +13 -16
- package/dist/automation/actions/interaction/get/getDriverInstance.js +13 -28
- package/dist/automation/actions/interaction/get/getFirstContentfulPaint.js +8 -1
- package/dist/automation/actions/interaction/get/getFirstSelectedOption.js +5 -1
- package/dist/automation/actions/interaction/get/getFullPaintTime.js +8 -1
- package/dist/automation/actions/interaction/get/getHTMLCodeOfPage.js +4 -0
- package/dist/automation/actions/interaction/get/getHeightOfBrowserWindow.js +5 -0
- package/dist/automation/actions/interaction/get/getHeightOfWebElement.js +4 -1
- package/dist/automation/actions/interaction/get/getHourFromCurrentSystemTime.js +4 -0
- package/dist/automation/actions/interaction/get/getImplicitTimeOut.js +15 -28
- package/dist/automation/actions/interaction/get/getLargestContentfulPaint.js +7 -0
- package/dist/automation/actions/interaction/get/getListBoxSize.d.ts +1 -1
- package/dist/automation/actions/interaction/get/getListBoxSize.js +4 -2
- package/dist/automation/actions/interaction/get/getListOfElementsFromLocatorTypeLocatorValue.js +7 -2
- package/dist/automation/actions/interaction/get/getLocation.js +14 -8
- package/dist/automation/actions/interaction/get/getMinuteFromCurrentSystemTime.js +4 -0
- package/dist/automation/actions/interaction/get/getNetworkRouteTime.js +7 -0
- package/dist/automation/actions/interaction/get/getNumberOfBrokenImages.js +7 -0
- package/dist/automation/actions/interaction/get/getNumberOfLinksPresentInCurrentPage.js +5 -0
- package/dist/automation/actions/interaction/get/getNumberOfWorkingLinksFromCurrentPage.js +9 -0
- package/dist/automation/actions/interaction/get/getOptions.js +4 -1
- package/dist/automation/actions/interaction/get/getPageTitle.js +5 -1
- package/dist/automation/actions/interaction/get/getPerformanceMetrics.js +12 -1
- package/dist/automation/actions/interaction/get/getPwaScore.js +11 -3
- package/dist/automation/actions/interaction/get/getRect.js +9 -2
- package/dist/automation/actions/interaction/get/getScreenshot.js +13 -28
- package/dist/automation/actions/interaction/get/getScreenshotAs.js +14 -44
- package/dist/automation/actions/interaction/get/getSeoScore.js +15 -3
- package/dist/automation/actions/interaction/get/getSingleApiRequestPayload.js +5 -3
- package/dist/automation/actions/interaction/get/getSingleApiResponse.js +9 -8
- package/dist/automation/actions/interaction/get/getSingleApiResponseTime.js +9 -9
- package/dist/automation/actions/interaction/get/getSingleApiStatusCode.d.ts +1 -1
- package/dist/automation/actions/interaction/get/getSingleApiStatusCode.js +10 -17
- package/dist/automation/actions/interaction/get/getSize.js +7 -2
- package/dist/automation/actions/interaction/get/getSizeOfBrowserWindow.js +5 -4
- package/dist/automation/actions/interaction/get/getStringDataFromLocalFile.js +10 -7
- package/dist/automation/actions/interaction/get/getSystemProperty.js +6 -4
- package/dist/automation/actions/interaction/get/getTagName.js +9 -2
- package/dist/automation/actions/interaction/get/getText.js +7 -2
- package/dist/automation/actions/interaction/get/getTheFirstSelectedOptionFromListBoxAsText.js +5 -1
- package/dist/automation/actions/interaction/get/getTotalNumberOfCookies.js +6 -1
- package/dist/automation/actions/interaction/get/getTunnelIdentifier.js +5 -8
- package/dist/automation/actions/interaction/get/getURLPresentInAddressBar.js +5 -1
- package/dist/automation/actions/interaction/get/getUserHomeDirectory.js +9 -1
- package/dist/automation/actions/interaction/get/getValueByCookieName.js +7 -4
- package/dist/automation/actions/interaction/get/getValueFromLocalStorage.js +6 -4
- package/dist/automation/actions/interaction/get/getValueOfSystemVariable.js +6 -4
- package/dist/automation/actions/interaction/get/getVideoCurrentPlaybackRate.js +4 -1
- package/dist/automation/actions/interaction/get/getVideoCurrentSeekTime.js +4 -1
- package/dist/automation/actions/interaction/get/getVideoCurrentVolume.js +4 -1
- package/dist/automation/actions/interaction/get/getVideoDecodedByte.js +4 -1
- package/dist/automation/actions/interaction/get/getVideoDefaultPlaybackRate.js +4 -1
- package/dist/automation/actions/interaction/get/getVideoMediaLength.js +4 -1
- package/dist/automation/actions/interaction/get/getVideoMediaSource.js +5 -1
- package/dist/automation/actions/interaction/get/getWidthOfBrowser.js +6 -1
- package/dist/automation/actions/interaction/get/getWidthOfWebElement.js +4 -1
- package/dist/automation/actions/interaction/get/getWorkingLinksFromCurrentPage.js +10 -1
- package/dist/automation/actions/interaction/get/getWrappedElement.js +5 -1
- package/dist/automation/actions/interaction/get/getWrappedOptionFromListBoxAsText.d.ts +1 -1
- package/dist/automation/actions/interaction/get/getWrappedOptionFromListBoxAsText.js +4 -2
- package/dist/automation/actions/interaction/get/getXLocationOfBrowserWindow.js +4 -3
- package/dist/automation/actions/interaction/get/getXLocationOfWebElement.js +7 -2
- package/dist/automation/actions/interaction/get/getYLocationOfBrowserWindow.js +6 -1
- package/dist/automation/actions/interaction/get/getYLocationOfWebElement.js +7 -2
- package/dist/automation/actions/interaction/shadowDom/shadowDomEnter.js +2 -0
- package/dist/automation/actions/interaction/shadowDom/shadowDomGetText.js +5 -2
- package/dist/automation/actions/interaction/verify/MOB_VerifyBatteryLevel.js +1 -1
- package/dist/automation/actions/interaction/verify/VerifyAttributeValue.js +2 -2
- package/dist/automation/actions/interaction/verify/VerifyBrowserHtmlCodeContainsString.js +1 -1
- package/dist/automation/actions/interaction/verify/VerifyBrowserWindowHeight.js +1 -1
- package/dist/automation/actions/interaction/verify/VerifyBrowserWindowTitleContainsString.js +1 -1
- package/dist/automation/actions/interaction/verify/VerifyBrowserWindowTitleIsString.js +1 -1
- package/dist/automation/actions/interaction/verify/VerifyBrowserWindowUrlContainsExpectedUrl.js +1 -1
- package/dist/automation/actions/interaction/verify/VerifyBrowserWindowUrlIsString.js +1 -1
- package/dist/automation/actions/interaction/verify/VerifyBrowserWindowWidth.js +1 -1
- package/dist/automation/actions/interaction/verify/VerifyBrowserWindowXLocation.js +1 -1
- package/dist/automation/actions/interaction/verify/VerifyBrowserWindowYLocation.js +1 -1
- package/dist/automation/actions/interaction/verify/VerifyCssAttributeValue.js +1 -1
- package/dist/automation/actions/interaction/verify/VerifyElementNotContainsText.js +2 -2
- package/dist/automation/actions/interaction/verify/VerifyHeightOfWebElement.js +2 -2
- package/dist/automation/actions/interaction/verify/VerifyHexCodeForGivenXYCoordinates.js +1 -1
- package/dist/automation/actions/interaction/verify/VerifyIfAllCookiesAreDeleted.js +1 -1
- package/dist/automation/actions/interaction/verify/VerifyIfCookieNameIsAdded.js +1 -1
- package/dist/automation/actions/interaction/verify/VerifyIfCookieNameIsDeleted.js +1 -1
- package/dist/automation/actions/interaction/verify/VerifyIfCookieObjectIsPresent.js +1 -1
- package/dist/automation/actions/interaction/verify/VerifyIfGivenOptionIsDuplicate.js +1 -1
- package/dist/automation/actions/interaction/verify/VerifyIfImageIsBroken.js +1 -1
- package/dist/automation/actions/interaction/verify/VerifyIfLinkIsBroken.js +1 -1
- package/dist/automation/actions/interaction/verify/VerifyIfLinkIsWorking.js +1 -1
- package/dist/automation/actions/interaction/verify/VerifyIfLinksAreBroken.js +1 -1
- package/dist/automation/actions/interaction/verify/VerifyIfLinksAreWorking.js +1 -1
- package/dist/automation/actions/interaction/verify/VerifyIfOptionWithTextIsDeselected.js +1 -1
- package/dist/automation/actions/interaction/verify/VerifyIfOptionWithValueIsDeselected.js +1 -1
- package/dist/automation/actions/interaction/verify/VerifyIfOptionWithValueIsSelected.js +1 -1
- package/dist/automation/actions/interaction/verify/VerifyIfOptionWithVisibleTextIsSelected.js +1 -1
- package/dist/automation/actions/interaction/verify/VerifyIfSpecifiedOptionIsSelected.js +1 -1
- package/dist/automation/actions/interaction/verify/VerifyNavigateURL.js +1 -1
- package/dist/automation/actions/interaction/verify/VerifyPartialAttributeValue.js +2 -2
- package/dist/automation/actions/interaction/verify/VerifyPartialTitleOfCurrentPage.js +1 -1
- package/dist/automation/actions/interaction/verify/VerifyTagName.js +1 -1
- package/dist/automation/actions/interaction/verify/VerifyThatSpecifiedOptionIsNotSelected.js +1 -1
- package/dist/automation/actions/interaction/verify/VerifyTitleInAllPage.js +1 -1
- package/dist/automation/actions/interaction/verify/VerifyTitleOfCurrentPage.js +1 -1
- package/dist/automation/actions/interaction/verify/VerifyValueOfElementContainsString.js +1 -1
- package/dist/automation/actions/interaction/verify/VerifyValueOfElementIsString.js +1 -1
- package/dist/automation/actions/interaction/verify/VerifyWidthOfElement.js +2 -2
- package/dist/automation/actions/interaction/verify/VerifyXLocationOfElement.js +2 -2
- package/dist/automation/actions/interaction/verify/VerifyYLocationOfElement.js +2 -2
- package/dist/automation/actions/interaction/verify/checkIfElementIsDisplayed.js +2 -2
- package/dist/automation/actions/interaction/verify/verifypartialtext.js +2 -2
- package/dist/automation/actions/interaction/verify/verifytext.js +2 -2
- package/dist/automation/actions/interface/FireFlinkResponseSchema.d.ts +22 -1
- package/dist/automation/actions/interface/FireFlinkResponseSchema.js +18 -4
- package/dist/automation/actions/interface/alertActionInterface.d.ts +11 -0
- package/dist/automation/actions/interface/clearActionInterface.d.ts +4 -0
- package/dist/automation/actions/interface/getActionInterface.d.ts +150 -141
- package/dist/automation/actions/interface/getOtpInterface.d.ts +5 -0
- package/dist/automation/actions/interface/interactionActionInterface.d.ts +14 -7
- package/dist/automation/actions/interface/shadowDomInterface.d.ts +10 -0
- package/dist/automation/actions/interface/verifyActionInterface.d.ts +100 -0
- package/dist/core/Errors/InvalidFileTypeError.d.ts +5 -0
- package/dist/core/Errors/InvalidFileTypeError.js +14 -0
- package/dist/core/constants/supportedActions.js +4 -0
- package/dist/core/helpers/elementSelectorResolver.d.ts +11 -0
- package/dist/core/helpers/elementSelectorResolver.js +102 -0
- package/dist/core/helpers/runnerDomPipeline.d.ts +9 -0
- package/dist/core/helpers/runnerDomPipeline.js +97 -0
- package/dist/core/helpers/runnerKafkaReporter.d.ts +17 -0
- package/dist/core/helpers/runnerKafkaReporter.js +71 -0
- package/dist/core/helpers/runnerPostActionHelper.d.ts +2 -0
- package/dist/core/helpers/runnerPostActionHelper.js +30 -0
- package/dist/core/helpers/stepActionInspector.d.ts +5 -0
- package/dist/core/helpers/stepActionInspector.js +113 -0
- package/dist/core/helpers/visionFallbackHandler.d.ts +3 -0
- package/dist/core/helpers/visionFallbackHandler.js +138 -0
- package/dist/core/interfaces/actionInterface.d.ts +7 -5
- package/dist/core/interfaces/automationRunnerInterface.d.ts +56 -1
- package/dist/core/interfaces/fireflinkScriptPayloadInterface.d.ts +2 -0
- package/dist/core/interfaces/llmResponseInterface.d.ts +5 -0
- package/dist/core/interfaces/promptInterface.d.ts +9 -2
- package/dist/core/interfaces/scriptGenrationDataInterface.d.ts +4 -0
- package/dist/core/main/actionHandlerFactory.js +37 -7
- package/dist/core/main/executionContext.d.ts +2 -1
- package/dist/core/main/executionContext.js +3 -2
- package/dist/core/main/runAutomationScript.d.ts +1 -0
- package/dist/core/main/runAutomationScript.js +390 -1008
- package/dist/core/types/llmResponseType.d.ts +2 -2
- package/dist/core/types/promptType.d.ts +3 -1
- package/dist/core/types/promptType.js +2 -0
- package/dist/fireflinkData/fireflinkScript/appendScriptData.js +3 -0
- package/dist/utils/browserCap/capability.js +17 -0
- package/dist/utils/helpers/getHelper.d.ts +8 -0
- package/dist/utils/helpers/getHelper.js +115 -0
- package/dist/utils/helpers/platformSyntax.d.ts +1 -1
- package/package.json +2 -1
- package/dist/ai/llmprompts/systemPrompts/combinedActionExtractorPrompt.d.ts +0 -2
- package/dist/ai/llmprompts/systemPrompts/combinedActionExtractorPrompt.js +0 -36
|
@@ -2,14 +2,16 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.enterDataToAlert = enterDataToAlert;
|
|
4
4
|
const appendScriptData_js_1 = require("../../../../fireflinkData/fireflinkScript/appendScriptData.js");
|
|
5
|
+
const getHelper_js_1 = require("../../../../utils/helpers/getHelper.js");
|
|
5
6
|
async function enterDataToAlert(args) {
|
|
6
7
|
try {
|
|
7
8
|
await args.driver.sendAlertText(args.value);
|
|
8
9
|
(0, appendScriptData_js_1.appendScriptData)({
|
|
9
10
|
scriptDataAppender: args.scriptDataAppender,
|
|
10
11
|
nlpName: "EnterDataToAlert",
|
|
11
|
-
stepInputs: [args.value],
|
|
12
|
+
stepInputs: [args.variableName ? `variable:${args.variableName}` : args.value],
|
|
12
13
|
});
|
|
14
|
+
(0, getHelper_js_1.saveStepInputData)(args, args.value);
|
|
13
15
|
}
|
|
14
16
|
catch (error) {
|
|
15
17
|
args.scriptDataAppender.setErrorNLP("EnterDataToAlert");
|
|
@@ -2,12 +2,16 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getTextPresentOnAlertPopup = getTextPresentOnAlertPopup;
|
|
4
4
|
const appendScriptData_js_1 = require("../../../../fireflinkData/fireflinkScript/appendScriptData.js");
|
|
5
|
+
const getHelper_js_1 = require("../../../../utils/helpers/getHelper.js");
|
|
5
6
|
async function getTextPresentOnAlertPopup(args) {
|
|
6
7
|
try {
|
|
8
|
+
const text = await args.driver.getAlertText();
|
|
7
9
|
(0, appendScriptData_js_1.appendScriptData)({
|
|
8
10
|
scriptDataAppender: args.scriptDataAppender,
|
|
9
11
|
nlpName: "GetTextPresentOnAlertPopup",
|
|
12
|
+
returnTypeVariableName: args.returnTypeVariableName
|
|
10
13
|
});
|
|
14
|
+
(0, getHelper_js_1.saveStepInputData)(args, text);
|
|
11
15
|
}
|
|
12
16
|
catch (error) {
|
|
13
17
|
args.scriptDataAppender.setErrorNLP("GetTextPresentOnAlertPopup");
|
|
@@ -9,7 +9,7 @@ async function verifyAlertPopUpMessageContainsString(args) {
|
|
|
9
9
|
(0, appendScriptData_js_1.appendScriptData)({
|
|
10
10
|
scriptDataAppender: args.scriptDataAppender,
|
|
11
11
|
nlpName: "VerifyAlertPopUpMessageContainsString",
|
|
12
|
-
stepInputs: [args.value]
|
|
12
|
+
stepInputs: [args.variableName ? `variable:${args.variableName}` : args.value]
|
|
13
13
|
});
|
|
14
14
|
}
|
|
15
15
|
else {
|
|
@@ -12,7 +12,7 @@ async function verifyAlertPopupIsDisplayed(args) {
|
|
|
12
12
|
(0, appendScriptData_js_1.appendScriptData)({
|
|
13
13
|
scriptDataAppender: args.scriptDataAppender,
|
|
14
14
|
nlpName: "VerifyAlertPopupIsDisplayed",
|
|
15
|
-
stepInputs: [value]
|
|
15
|
+
stepInputs: [args.variableName ? `variable:${args.variableName}` : value]
|
|
16
16
|
});
|
|
17
17
|
}
|
|
18
18
|
catch (error) {
|
|
@@ -9,7 +9,7 @@ async function verifyTextPresentOnAlertPopup(args) {
|
|
|
9
9
|
(0, appendScriptData_js_1.appendScriptData)({
|
|
10
10
|
scriptDataAppender: args.scriptDataAppender,
|
|
11
11
|
nlpName: "VerifyTextPresentOnAlertPopup",
|
|
12
|
-
stepInputs: [args.value]
|
|
12
|
+
stepInputs: [args.variableName ? `variable:${args.variableName}` : args.value]
|
|
13
13
|
});
|
|
14
14
|
}
|
|
15
15
|
else {
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.clearAndEnter = clearAndEnter;
|
|
4
4
|
const enterActionHelper_js_1 = require("../../../../utils/helpers/enterActionHelper.js");
|
|
5
5
|
const appendScriptData_js_1 = require("../../../../fireflinkData/fireflinkScript/appendScriptData.js");
|
|
6
|
+
const getHelper_js_1 = require("../../../../utils/helpers/getHelper.js");
|
|
6
7
|
async function clearAndEnter(args) {
|
|
7
8
|
const nlpName = args.platform === "ios" ? "IOS_ClearThenEnterInput" : "MOB_ClearThenEnterInput";
|
|
8
9
|
switch (args.platform) {
|
|
@@ -17,7 +18,7 @@ async function clearAndEnter(args) {
|
|
|
17
18
|
(0, appendScriptData_js_1.appendScriptData)({
|
|
18
19
|
scriptDataAppender: args.scriptDataAppender,
|
|
19
20
|
nlpName: nlpName,
|
|
20
|
-
stepInputs: [],
|
|
21
|
+
stepInputs: [args.variableName ? `variable:${args.variableName}` : args.value],
|
|
21
22
|
pageDOM: args.pageDOM,
|
|
22
23
|
elementGetter: args.elementGetter,
|
|
23
24
|
ffNumber: ffElementNumber,
|
|
@@ -26,6 +27,7 @@ async function clearAndEnter(args) {
|
|
|
26
27
|
selector: args.selector,
|
|
27
28
|
platform: args.platform
|
|
28
29
|
});
|
|
30
|
+
(0, getHelper_js_1.saveStepInputData)(args, args.value);
|
|
29
31
|
}
|
|
30
32
|
catch (error) {
|
|
31
33
|
args.scriptDataAppender.setErrorNLP(nlpName);
|
|
@@ -42,8 +44,8 @@ async function clearAndEnter(args) {
|
|
|
42
44
|
const ffElementNumber = `Fire-Flink-${ffNumber}`;
|
|
43
45
|
(0, appendScriptData_js_1.appendScriptData)({
|
|
44
46
|
scriptDataAppender: args.scriptDataAppender,
|
|
45
|
-
nlpName:
|
|
46
|
-
stepInputs: [],
|
|
47
|
+
nlpName: "ClearThenEnterInput",
|
|
48
|
+
stepInputs: [args.variableName ? `variable:${args.variableName}` : args.value],
|
|
47
49
|
pageDOM: args.pageDOM,
|
|
48
50
|
elementGetter: args.elementGetter,
|
|
49
51
|
ffNumber: ffElementNumber,
|
|
@@ -52,6 +54,7 @@ async function clearAndEnter(args) {
|
|
|
52
54
|
selector: xpathPath,
|
|
53
55
|
platform: args.platform
|
|
54
56
|
});
|
|
57
|
+
(0, getHelper_js_1.saveStepInputData)(args, args.value);
|
|
55
58
|
}
|
|
56
59
|
catch (error) {
|
|
57
60
|
args.scriptDataAppender.setErrorNLP("ClearThenEnterInput");
|
|
@@ -4,17 +4,18 @@ exports.GetOtpAction = GetOtpAction;
|
|
|
4
4
|
const logData_js_1 = require("../../../../utils/logger/logData.js");
|
|
5
5
|
const child_process_1 = require("child_process");
|
|
6
6
|
const appendScriptData_js_1 = require("../../../../fireflinkData/fireflinkScript/appendScriptData.js");
|
|
7
|
+
const getHelper_js_1 = require("../../../../utils/helpers/getHelper.js");
|
|
7
8
|
async function GetOtpAction(args) {
|
|
8
9
|
try {
|
|
9
|
-
const udid = args.driver.capabilities["appium:udid"] || args.driver.capabilities.udid;
|
|
10
|
-
const cmdPrefix =
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
// const udid = (args.driver.capabilities as any)["appium:udid"] || (args.driver.capabilities as any).udid;
|
|
11
|
+
const cmdPrefix = `${args.adbPath} shell`;
|
|
12
|
+
const timeFrom = Number(args.timeFrom) || 60;
|
|
13
|
+
const waitTime = Number(args.waitTime) || 60;
|
|
13
14
|
const packageName = (0, child_process_1.execSync)(`${cmdPrefix} cmd role get-role-holders android.app.role.SMS`.trim(), { encoding: "utf8" });
|
|
14
15
|
logData_js_1.logger.info("the default app is ", packageName);
|
|
15
16
|
const expectedHeader = args.selector.trim().toLowerCase();
|
|
16
17
|
const getLatestMatchingSms = () => {
|
|
17
|
-
const inboxSms = (0, child_process_1.execSync)(`${cmdPrefix} "content query --uri content://sms/inbox --projection _id:date:address:body --sort 'date DESC'"`, { encoding: "utf8" }).trim();
|
|
18
|
+
const inboxSms = (0, child_process_1.execSync)(`${cmdPrefix} "content query --uri content://sms/inbox --projection _id:date:address:body --sort 'date DESC' | head -n 100"`, { encoding: "utf8" }).trim();
|
|
18
19
|
const messages = [...inboxSms.matchAll(/(?:^|\r?\n)Row:\s*\d+\s+_id=(\d+),\s*date=(\d+),\s*address=(.*?),\s*body=(.*?)(?=\r?\nRow:|$)/gs)]
|
|
19
20
|
.map((match) => ({
|
|
20
21
|
id: match[1],
|
|
@@ -26,14 +27,16 @@ async function GetOtpAction(args) {
|
|
|
26
27
|
};
|
|
27
28
|
const existingSms = getLatestMatchingSms();
|
|
28
29
|
const now = Date.now();
|
|
29
|
-
if (existingSms && now - existingSms.date <= (
|
|
30
|
+
if (existingSms && now - existingSms.date <= (timeFrom * 1000)) {
|
|
30
31
|
const smsBody = existingSms.body;
|
|
31
32
|
logData_js_1.logger.info("SMS body:", smsBody);
|
|
32
33
|
let regex;
|
|
34
|
+
let otpValue;
|
|
33
35
|
if (args.otpExtractor) {
|
|
34
36
|
const otpResult = await args.otpExtractor(smsBody);
|
|
35
37
|
if (otpResult?.otp && otpResult.regex) {
|
|
36
38
|
regex = otpResult.regex;
|
|
39
|
+
otpValue = otpResult.otp;
|
|
37
40
|
logData_js_1.logger.info("Extracted OTP:", otpResult.otp, "Generated Regex:", otpResult.regex);
|
|
38
41
|
}
|
|
39
42
|
else {
|
|
@@ -43,21 +46,21 @@ async function GetOtpAction(args) {
|
|
|
43
46
|
(0, appendScriptData_js_1.appendScriptData)({
|
|
44
47
|
scriptDataAppender: args.scriptDataAppender,
|
|
45
48
|
nlpName: "MOB_FetchOtpFromMessages",
|
|
46
|
-
stepInputs: [existingSms.address,
|
|
47
|
-
platform:
|
|
48
|
-
|
|
49
|
-
(0, appendScriptData_js_1.appendScriptData)({
|
|
50
|
-
scriptDataAppender: args.scriptDataAppender,
|
|
51
|
-
nlpName: "StringSubStringUsingRegex",
|
|
52
|
-
stepInputs: [smsBody, regex],
|
|
53
|
-
platform: args.platform
|
|
49
|
+
stepInputs: [existingSms.address, timeFrom + "s", waitTime],
|
|
50
|
+
platform: "android",
|
|
51
|
+
returnTypeVariableName: args.returnTypeVariableName
|
|
54
52
|
});
|
|
53
|
+
(0, getHelper_js_1.saveStepInputData)(args, otpValue || smsBody);
|
|
55
54
|
return;
|
|
56
55
|
}
|
|
57
56
|
const baselineId = existingSms?.id;
|
|
58
57
|
const pollingStartedAt = now;
|
|
59
|
-
const pollingDeadline = pollingStartedAt + (
|
|
58
|
+
const pollingDeadline = pollingStartedAt + (waitTime * 1000);
|
|
60
59
|
while (Date.now() < pollingDeadline) {
|
|
60
|
+
if (args.isTerminated?.()) {
|
|
61
|
+
logData_js_1.logger.info("OTP polling aborted because session was terminated.");
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
61
64
|
const latestSms = getLatestMatchingSms();
|
|
62
65
|
if (latestSms &&
|
|
63
66
|
latestSms.id !== baselineId &&
|
|
@@ -65,11 +68,13 @@ async function GetOtpAction(args) {
|
|
|
65
68
|
const smsBody = latestSms.body;
|
|
66
69
|
logData_js_1.logger.info("SMS body:", smsBody);
|
|
67
70
|
let regex;
|
|
71
|
+
let otpValue;
|
|
68
72
|
if (args.otpExtractor) {
|
|
69
73
|
const otpResult = await args.otpExtractor(smsBody);
|
|
70
74
|
if (otpResult?.otp && otpResult.regex) {
|
|
71
75
|
regex = otpResult.regex;
|
|
72
76
|
regex = regex.replace(/\\+/g, "\\");
|
|
77
|
+
otpValue = otpResult.otp;
|
|
73
78
|
logData_js_1.logger.info("Extracted OTP:", otpResult.otp, "Generated Regex:", otpResult.regex);
|
|
74
79
|
}
|
|
75
80
|
else {
|
|
@@ -79,20 +84,16 @@ async function GetOtpAction(args) {
|
|
|
79
84
|
(0, appendScriptData_js_1.appendScriptData)({
|
|
80
85
|
scriptDataAppender: args.scriptDataAppender,
|
|
81
86
|
nlpName: "MOB_FetchOtpFromMessages",
|
|
82
|
-
stepInputs: [latestSms.address,
|
|
83
|
-
platform:
|
|
84
|
-
|
|
85
|
-
(0, appendScriptData_js_1.appendScriptData)({
|
|
86
|
-
scriptDataAppender: args.scriptDataAppender,
|
|
87
|
-
nlpName: "StringSubStringUsingRegex",
|
|
88
|
-
stepInputs: [smsBody, regex],
|
|
89
|
-
platform: args.platform
|
|
87
|
+
stepInputs: [latestSms.address, timeFrom + "s", waitTime],
|
|
88
|
+
platform: "android",
|
|
89
|
+
returnTypeVariableName: args.returnTypeVariableName
|
|
90
90
|
});
|
|
91
|
+
(0, getHelper_js_1.saveStepInputData)(args, otpValue || smsBody);
|
|
91
92
|
return;
|
|
92
93
|
}
|
|
93
94
|
await new Promise((resolve) => setTimeout(resolve, 2000));
|
|
94
95
|
}
|
|
95
|
-
throw new Error(`Timed out waiting up to
|
|
96
|
+
throw new Error(`Timed out waiting up to ${waitTime} seconds for an SMS with header: ${args.selector}`);
|
|
96
97
|
}
|
|
97
98
|
catch (error) {
|
|
98
99
|
args.scriptDataAppender.setErrorNLP("getOtp");
|
|
@@ -4,6 +4,7 @@ exports.MOB_EnterInputIntoElementFromClipBoard = MOB_EnterInputIntoElementFromCl
|
|
|
4
4
|
const appendScriptData_js_1 = require("../../../../fireflinkData/fireflinkScript/appendScriptData.js");
|
|
5
5
|
const enterActionHelper_js_1 = require("../../../../utils/helpers/enterActionHelper.js");
|
|
6
6
|
const logData_js_1 = require("../../../../utils/logger/logData.js");
|
|
7
|
+
const getHelper_js_1 = require("../../../../utils/helpers/getHelper.js");
|
|
7
8
|
async function MOB_EnterInputIntoElementFromClipBoard(args) {
|
|
8
9
|
try {
|
|
9
10
|
const { ffNumber, xpathPath } = (0, enterActionHelper_js_1.enterActionHelperMob)(args.pageDOM, args.fireflinkIndex);
|
|
@@ -16,7 +17,7 @@ async function MOB_EnterInputIntoElementFromClipBoard(args) {
|
|
|
16
17
|
(0, appendScriptData_js_1.appendScriptData)({
|
|
17
18
|
scriptDataAppender: args.scriptDataAppender,
|
|
18
19
|
nlpName: "MOB_EnterInputIntoElementFromClipBoard",
|
|
19
|
-
stepInputs: [],
|
|
20
|
+
stepInputs: [value],
|
|
20
21
|
pageDOM: args.pageDOM,
|
|
21
22
|
elementGetter: args.elementGetter,
|
|
22
23
|
ffNumber: ffElementNumber,
|
|
@@ -25,6 +26,7 @@ async function MOB_EnterInputIntoElementFromClipBoard(args) {
|
|
|
25
26
|
selector: args.selector,
|
|
26
27
|
platform: args.platform
|
|
27
28
|
});
|
|
29
|
+
(0, getHelper_js_1.saveStepInputData)(args, value);
|
|
28
30
|
}
|
|
29
31
|
catch (error) {
|
|
30
32
|
args.scriptDataAppender.setErrorNLP("MOB_EnterInputIntoElementFromClipBoard");
|
|
@@ -37,6 +37,7 @@ exports.enterInput = enterInput;
|
|
|
37
37
|
const enterActionHelper_js_1 = require("../../../../utils/helpers/enterActionHelper.js");
|
|
38
38
|
const logData_js_1 = require("../../../../utils/logger/logData.js");
|
|
39
39
|
const appendScriptData_js_1 = require("../../../../fireflinkData/fireflinkScript/appendScriptData.js");
|
|
40
|
+
const getHelper_js_1 = require("../../../../utils/helpers/getHelper.js");
|
|
40
41
|
async function enterInput(args) {
|
|
41
42
|
const nlpName = args.platform === "ios" ? "IOS_SendKeys" : "MOB_SendKeys";
|
|
42
43
|
switch (args.platform) {
|
|
@@ -69,7 +70,7 @@ async function enterInput(args) {
|
|
|
69
70
|
(0, appendScriptData_js_1.appendScriptData)({
|
|
70
71
|
scriptDataAppender: args.scriptDataAppender,
|
|
71
72
|
nlpName: nlpName,
|
|
72
|
-
stepInputs: [args.value],
|
|
73
|
+
stepInputs: [args.variableName ? `variable:${args.variableName}` : args.value],
|
|
73
74
|
pageDOM: args.pageDOM,
|
|
74
75
|
elementGetter: args.elementGetter,
|
|
75
76
|
ffNumber: ffElementNumber,
|
|
@@ -78,6 +79,7 @@ async function enterInput(args) {
|
|
|
78
79
|
selector: args.selector,
|
|
79
80
|
platform: args.platform
|
|
80
81
|
});
|
|
82
|
+
(0, getHelper_js_1.saveStepInputData)(args, args.value);
|
|
81
83
|
}
|
|
82
84
|
catch (error) {
|
|
83
85
|
args.scriptDataAppender.setErrorNLP(nlpName);
|
|
@@ -100,7 +102,7 @@ async function enterInput(args) {
|
|
|
100
102
|
(0, appendScriptData_js_1.appendScriptData)({
|
|
101
103
|
scriptDataAppender: args.scriptDataAppender,
|
|
102
104
|
nlpName: 'SendKeys',
|
|
103
|
-
stepInputs: [args.value],
|
|
105
|
+
stepInputs: [args.variableName ? `variable:${args.variableName}` : args.value],
|
|
104
106
|
pageDOM: args.pageDOM,
|
|
105
107
|
elementGetter: args.elementGetter,
|
|
106
108
|
ffNumber: ffElementNumber,
|
|
@@ -109,6 +111,7 @@ async function enterInput(args) {
|
|
|
109
111
|
selector: xpathPath,
|
|
110
112
|
platform: args.platform
|
|
111
113
|
});
|
|
114
|
+
(0, getHelper_js_1.saveStepInputData)(args, args.value);
|
|
112
115
|
}
|
|
113
116
|
catch (error) {
|
|
114
117
|
args.scriptDataAppender.setErrorNLP("SendKeys");
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.enterInputAndPress = enterInputAndPress;
|
|
4
4
|
const enterActionHelper_js_1 = require("../../../../utils/helpers/enterActionHelper.js");
|
|
5
5
|
const appendScriptData_js_1 = require("../../../../fireflinkData/fireflinkScript/appendScriptData.js");
|
|
6
|
+
const getHelper_js_1 = require("../../../../utils/helpers/getHelper.js");
|
|
6
7
|
async function enterInputAndPress(args) {
|
|
7
8
|
switch (args.platform) {
|
|
8
9
|
case "android":
|
|
@@ -44,7 +45,7 @@ async function enterInputAndPress(args) {
|
|
|
44
45
|
(0, appendScriptData_js_1.appendScriptData)({
|
|
45
46
|
scriptDataAppender: args.scriptDataAppender,
|
|
46
47
|
nlpName: "MOB_EnterDataAndPressKey",
|
|
47
|
-
stepInputs: [inputValue, keyValue],
|
|
48
|
+
stepInputs: [args.variableName ? `variable:${args.variableName}` : inputValue, keyValue],
|
|
48
49
|
pageDOM: args.pageDOM,
|
|
49
50
|
elementGetter: args.elementGetter,
|
|
50
51
|
ffNumber: ffElementNumber,
|
|
@@ -53,6 +54,7 @@ async function enterInputAndPress(args) {
|
|
|
53
54
|
selector: args.selector,
|
|
54
55
|
platform: args.platform
|
|
55
56
|
});
|
|
57
|
+
(0, getHelper_js_1.saveStepInputData)(args, inputValue || args.value);
|
|
56
58
|
}
|
|
57
59
|
catch (error) {
|
|
58
60
|
args.scriptDataAppender.setErrorNLP("MOB_EnterDataAndPressKey");
|
|
@@ -98,7 +100,7 @@ async function enterInputAndPress(args) {
|
|
|
98
100
|
(0, appendScriptData_js_1.appendScriptData)({
|
|
99
101
|
scriptDataAppender: args.scriptDataAppender,
|
|
100
102
|
nlpName: "EnterDataAndPressKey",
|
|
101
|
-
stepInputs: [inputValue, keyValue],
|
|
103
|
+
stepInputs: [args.variableName ? `variable:${args.variableName}` : inputValue, keyValue],
|
|
102
104
|
pageDOM: args.pageDOM,
|
|
103
105
|
elementGetter: args.elementGetter,
|
|
104
106
|
ffNumber: ffElementNumber,
|
|
@@ -107,6 +109,7 @@ async function enterInputAndPress(args) {
|
|
|
107
109
|
selector: xpathPath,
|
|
108
110
|
platform: args.platform
|
|
109
111
|
});
|
|
112
|
+
(0, getHelper_js_1.saveStepInputData)(args, inputValue || args.value);
|
|
110
113
|
}
|
|
111
114
|
catch (error) {
|
|
112
115
|
args.scriptDataAppender.setErrorNLP("EnterDataAndPressKey");
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.enterUrl = enterUrl;
|
|
4
4
|
const appendScriptData_js_1 = require("../../../../fireflinkData/fireflinkScript/appendScriptData.js");
|
|
5
|
+
const getHelper_js_1 = require("../../../../utils/helpers/getHelper.js");
|
|
5
6
|
async function enterUrl(args) {
|
|
6
7
|
const nlpName = args.platform === "ios" ? "IOS_EnterUrl" : "MOB_EnterUrl";
|
|
7
8
|
switch (args.platform) {
|
|
@@ -21,8 +22,9 @@ async function enterUrl(args) {
|
|
|
21
22
|
(0, appendScriptData_js_1.appendScriptData)({
|
|
22
23
|
scriptDataAppender: args.scriptDataAppender,
|
|
23
24
|
nlpName: nlpName,
|
|
24
|
-
stepInputs: [args.value],
|
|
25
|
+
stepInputs: [args.variableName ? `variable:${args.variableName}` : args.value],
|
|
25
26
|
});
|
|
27
|
+
(0, getHelper_js_1.saveStepInputData)(args, args.value);
|
|
26
28
|
}
|
|
27
29
|
catch (error) {
|
|
28
30
|
args.scriptDataAppender.setErrorNLP(nlpName);
|
|
@@ -36,8 +38,9 @@ async function enterUrl(args) {
|
|
|
36
38
|
(0, appendScriptData_js_1.appendScriptData)({
|
|
37
39
|
scriptDataAppender: args.scriptDataAppender,
|
|
38
40
|
nlpName: 'EnterURL',
|
|
39
|
-
stepInputs: [args.value],
|
|
41
|
+
stepInputs: [args.variableName ? `variable:${args.variableName}` : args.value],
|
|
40
42
|
});
|
|
43
|
+
(0, getHelper_js_1.saveStepInputData)(args, args.value);
|
|
41
44
|
}
|
|
42
45
|
catch (error) {
|
|
43
46
|
args.scriptDataAppender.setErrorNLP("EnterURL");
|
|
@@ -4,6 +4,7 @@ exports.enterInputUsingJs = enterInputUsingJs;
|
|
|
4
4
|
const enterActionHelper_js_1 = require("../../../../utils/helpers/enterActionHelper.js");
|
|
5
5
|
const logData_js_1 = require("../../../../utils/logger/logData.js");
|
|
6
6
|
const appendScriptData_js_1 = require("../../../../fireflinkData/fireflinkScript/appendScriptData.js");
|
|
7
|
+
const getHelper_js_1 = require("../../../../utils/helpers/getHelper.js");
|
|
7
8
|
async function enterInputUsingJs(args) {
|
|
8
9
|
try {
|
|
9
10
|
const { ffNumber, xpathPath } = (0, enterActionHelper_js_1.enterActionHelper)(args.pageDOM, args.fireflinkIndex);
|
|
@@ -20,7 +21,7 @@ async function enterInputUsingJs(args) {
|
|
|
20
21
|
(0, appendScriptData_js_1.appendScriptData)({
|
|
21
22
|
scriptDataAppender: args.scriptDataAppender,
|
|
22
23
|
nlpName: "EnterDataAndPressKey",
|
|
23
|
-
stepInputs: [args.value],
|
|
24
|
+
stepInputs: [args.variableName ? `variable:${args.variableName}` : args.value],
|
|
24
25
|
pageDOM: args.pageDOM,
|
|
25
26
|
elementGetter: args.elementGetter,
|
|
26
27
|
ffNumber: ffElementNumber,
|
|
@@ -29,6 +30,7 @@ async function enterInputUsingJs(args) {
|
|
|
29
30
|
selector: xpathPath,
|
|
30
31
|
platform: args.platform
|
|
31
32
|
});
|
|
33
|
+
(0, getHelper_js_1.saveStepInputData)(args, args.value);
|
|
32
34
|
}
|
|
33
35
|
catch (error) {
|
|
34
36
|
args.scriptDataAppender.setErrorNLP("EnterInputUsingJS");
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.waitAndEnter = waitAndEnter;
|
|
4
4
|
const enterActionHelper_js_1 = require("../../../../utils/helpers/enterActionHelper.js");
|
|
5
5
|
const appendScriptData_js_1 = require("../../../../fireflinkData/fireflinkScript/appendScriptData.js");
|
|
6
|
+
const getHelper_js_1 = require("../../../../utils/helpers/getHelper.js");
|
|
6
7
|
async function waitAndEnter(args) {
|
|
7
8
|
const DEFAULT_WAIT = 5;
|
|
8
9
|
const parseValue = (value) => {
|
|
@@ -28,7 +29,7 @@ async function waitAndEnter(args) {
|
|
|
28
29
|
(0, appendScriptData_js_1.appendScriptData)({
|
|
29
30
|
scriptDataAppender: args.scriptDataAppender,
|
|
30
31
|
nlpName: "MOB_WaitAndSendKeys",
|
|
31
|
-
stepInputs: [inputValue, waitTimeSeconds.toString()],
|
|
32
|
+
stepInputs: [args.variableName ? `variable:${args.variableName}` : inputValue, waitTimeSeconds.toString()],
|
|
32
33
|
pageDOM: args.pageDOM,
|
|
33
34
|
elementGetter: args.elementGetter,
|
|
34
35
|
ffNumber: ffElementNumber,
|
|
@@ -37,6 +38,7 @@ async function waitAndEnter(args) {
|
|
|
37
38
|
selector: args.selector,
|
|
38
39
|
platform: args.platform
|
|
39
40
|
});
|
|
41
|
+
(0, getHelper_js_1.saveStepInputData)(args, inputValue || args.value);
|
|
40
42
|
}
|
|
41
43
|
catch (error) {
|
|
42
44
|
args.scriptDataAppender.setErrorNLP("MOB_WaitAndSendKeys");
|
|
@@ -63,7 +65,7 @@ async function waitAndEnter(args) {
|
|
|
63
65
|
(0, appendScriptData_js_1.appendScriptData)({
|
|
64
66
|
scriptDataAppender: args.scriptDataAppender,
|
|
65
67
|
nlpName: "WaitAndSendKeys",
|
|
66
|
-
stepInputs: [inputValue, waitTimeSeconds.toString()],
|
|
68
|
+
stepInputs: [args.variableName ? `variable:${args.variableName}` : inputValue, waitTimeSeconds.toString()],
|
|
67
69
|
pageDOM: args.pageDOM,
|
|
68
70
|
elementGetter: args.elementGetter,
|
|
69
71
|
ffNumber: ffElementNumber,
|
|
@@ -72,6 +74,7 @@ async function waitAndEnter(args) {
|
|
|
72
74
|
selector: args.selector,
|
|
73
75
|
platform: args.platform
|
|
74
76
|
});
|
|
77
|
+
(0, getHelper_js_1.saveStepInputData)(args, inputValue || args.value);
|
|
75
78
|
}
|
|
76
79
|
catch (error) {
|
|
77
80
|
args.scriptDataAppender.setErrorNLP("WaitAndSendKeys");
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.verifyPDF = verifyPDF;
|
|
7
|
+
const appendScriptData_js_1 = require("../../../../fireflinkData/fireflinkScript/appendScriptData.js");
|
|
8
|
+
const logData_js_1 = require("../../../../utils/logger/logData.js");
|
|
9
|
+
const fs_1 = __importDefault(require("fs"));
|
|
10
|
+
const path_1 = __importDefault(require("path"));
|
|
11
|
+
//Normalizing
|
|
12
|
+
function normalizeText(text) {
|
|
13
|
+
return text.replace(/\s+/g, " ").trim();
|
|
14
|
+
}
|
|
15
|
+
//Extracting
|
|
16
|
+
async function extractTextFromPdf(buffer) {
|
|
17
|
+
try {
|
|
18
|
+
const dynamicImport = new Function("modulePath", "return import(modulePath)");
|
|
19
|
+
const pdfjs = await dynamicImport("pdfjs-dist/legacy/build/pdf.mjs").catch(() => dynamicImport("pdfjs-dist"));
|
|
20
|
+
const data = new Uint8Array(buffer);
|
|
21
|
+
const loadingTask = pdfjs.getDocument({
|
|
22
|
+
data,
|
|
23
|
+
useSystemFonts: true,
|
|
24
|
+
disableFontFace: true,
|
|
25
|
+
});
|
|
26
|
+
const pdfDoc = await loadingTask.promise;
|
|
27
|
+
const pageTexts = [];
|
|
28
|
+
for (let i = 1; i <= pdfDoc.numPages; i++) {
|
|
29
|
+
const page = await pdfDoc.getPage(i);
|
|
30
|
+
const textContent = await page.getTextContent();
|
|
31
|
+
const pageString = textContent.items
|
|
32
|
+
.map((item) => ("str" in item ? item.str : ""))
|
|
33
|
+
.join(" ");
|
|
34
|
+
pageTexts.push(pageString);
|
|
35
|
+
}
|
|
36
|
+
return pageTexts.join("\n");
|
|
37
|
+
}
|
|
38
|
+
catch (err) {
|
|
39
|
+
logData_js_1.logger.error("pdfjs-dist extraction failed, falling back to raw buffer string scan", err);
|
|
40
|
+
return buffer.toString("latin1");
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//Downloading time
|
|
44
|
+
const DOWNLOAD_TIMEOUT_MS = 30000;
|
|
45
|
+
const POLL_INTERVAL_MS = 400;
|
|
46
|
+
const STABILITY_WAIT_MS = 250;
|
|
47
|
+
async function waitForDownloadComplete(tempFileDir, timeoutMs = DOWNLOAD_TIMEOUT_MS) {
|
|
48
|
+
const startTime = Date.now();
|
|
49
|
+
while (Date.now() - startTime < timeoutMs) {
|
|
50
|
+
if (fs_1.default.existsSync(tempFileDir)) {
|
|
51
|
+
const allEntries = fs_1.default.readdirSync(tempFileDir);
|
|
52
|
+
let hasActiveDownload = false;
|
|
53
|
+
const pdfFiles = [];
|
|
54
|
+
// Single pass: early exit if active download is present, stat only PDF files
|
|
55
|
+
for (const file of allEntries) {
|
|
56
|
+
const lower = file.toLowerCase();
|
|
57
|
+
if (lower.endsWith(".crdownload") || lower.endsWith(".part") || lower.endsWith(".tmp")) {
|
|
58
|
+
hasActiveDownload = true;
|
|
59
|
+
break; // Download still in progress, skip remaining work this cycle
|
|
60
|
+
}
|
|
61
|
+
if (lower.endsWith(".pdf")) {
|
|
62
|
+
const fullPath = path_1.default.join(tempFileDir, file);
|
|
63
|
+
try {
|
|
64
|
+
const stat = fs_1.default.statSync(fullPath);
|
|
65
|
+
if (stat.isFile()) {
|
|
66
|
+
pdfFiles.push({ name: file, fullPath, mtime: stat.mtimeMs, size: stat.size });
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
// File locked or in transition, skip for this cycle
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
if (!hasActiveDownload && pdfFiles.length > 0) {
|
|
75
|
+
pdfFiles.sort((a, b) => b.mtime - a.mtime);
|
|
76
|
+
const latest = pdfFiles[0];
|
|
77
|
+
if (latest.size > 0) {
|
|
78
|
+
await new Promise(res => setTimeout(res, STABILITY_WAIT_MS));
|
|
79
|
+
try {
|
|
80
|
+
const newStat = fs_1.default.statSync(latest.fullPath);
|
|
81
|
+
if (newStat.size === latest.size && newStat.size > 0) {
|
|
82
|
+
const durationSeconds = Math.max(1, Math.ceil((Date.now() - startTime) / 1000));
|
|
83
|
+
return { file: latest, durationSeconds };
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
// Retry on next cycle
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
await new Promise(res => setTimeout(res, POLL_INTERVAL_MS));
|
|
93
|
+
}
|
|
94
|
+
throw new Error(`PDF download did not complete within ${timeoutMs / 1000} seconds in directory: ${tempFileDir}. ` +
|
|
95
|
+
`Ensure the download was triggered prior to VerifyPDF.`);
|
|
96
|
+
}
|
|
97
|
+
async function verifyPDF(args) {
|
|
98
|
+
const tempFileDir = path_1.default.resolve(process.cwd(), "session", "temp_file");
|
|
99
|
+
let calculatedDuration = 2;
|
|
100
|
+
try {
|
|
101
|
+
const { file: latestFile, durationSeconds } = await waitForDownloadComplete(tempFileDir);
|
|
102
|
+
calculatedDuration = durationSeconds;
|
|
103
|
+
logData_js_1.logger.info("VerifyPDF: found latest file", { file: latestFile.name, dir: tempFileDir, durationSeconds });
|
|
104
|
+
const buffer = fs_1.default.readFileSync(latestFile.fullPath);
|
|
105
|
+
const header = buffer.subarray(0, 5).toString("ascii");
|
|
106
|
+
if (!header.startsWith("%PDF")) {
|
|
107
|
+
throw new Error(`File does not have a valid PDF header (%PDF): ${latestFile.name}`);
|
|
108
|
+
}
|
|
109
|
+
const expectedText = args.value?.trim();
|
|
110
|
+
if (expectedText) {
|
|
111
|
+
const extractedText = await extractTextFromPdf(buffer);
|
|
112
|
+
const normalizedExtracted = normalizeText(extractedText).toLowerCase();
|
|
113
|
+
const normalizedExpected = normalizeText(expectedText).toLowerCase();
|
|
114
|
+
if (!normalizedExtracted.includes(normalizedExpected)) {
|
|
115
|
+
// Secondary check on raw buffer
|
|
116
|
+
const rawContent = buffer.toString("latin1").toLowerCase();
|
|
117
|
+
if (!rawContent.includes(normalizedExpected)) {
|
|
118
|
+
throw new Error(`PDF "${latestFile.name}" does not contain expected text: "${expectedText}"`);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
logData_js_1.logger.info("VerifyPDF passed", {
|
|
123
|
+
file: latestFile.name,
|
|
124
|
+
expectedText: expectedText || "(none — structural check only)",
|
|
125
|
+
sizeBytes: buffer.length
|
|
126
|
+
});
|
|
127
|
+
(0, appendScriptData_js_1.appendScriptData)({
|
|
128
|
+
scriptDataAppender: args.scriptDataAppender,
|
|
129
|
+
nlpName: "Sleep",
|
|
130
|
+
stepInputs: [calculatedDuration],
|
|
131
|
+
});
|
|
132
|
+
(0, appendScriptData_js_1.appendScriptData)({
|
|
133
|
+
scriptDataAppender: args.scriptDataAppender,
|
|
134
|
+
nlpName: "GetUserHomeDirectory",
|
|
135
|
+
stepInputs: [],
|
|
136
|
+
returnTypeVariableName: "userHomeDirectory"
|
|
137
|
+
});
|
|
138
|
+
(0, appendScriptData_js_1.appendScriptData)({
|
|
139
|
+
scriptDataAppender: args.scriptDataAppender,
|
|
140
|
+
nlpName: "ConcatString",
|
|
141
|
+
stepInputs: ["variable:userHomeDirectory", "/Downloads"],
|
|
142
|
+
returnTypeVariableName: "finalpath"
|
|
143
|
+
});
|
|
144
|
+
(0, appendScriptData_js_1.appendScriptData)({
|
|
145
|
+
scriptDataAppender: args.scriptDataAppender,
|
|
146
|
+
nlpName: "GetLastModifiedFile",
|
|
147
|
+
stepInputs: ["variable:finalpath"],
|
|
148
|
+
returnTypeVariableName: "lastModifiedFilePath"
|
|
149
|
+
});
|
|
150
|
+
(0, appendScriptData_js_1.appendScriptData)({
|
|
151
|
+
scriptDataAppender: args.scriptDataAppender,
|
|
152
|
+
nlpName: "VerifyPDF",
|
|
153
|
+
stepInputs: ["variable:lastModifiedFilePath", args.value ?? ""],
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
catch (error) {
|
|
157
|
+
args.scriptDataAppender.setErrorNLP("VerifyPDF");
|
|
158
|
+
throw new Error("VerifyPDF action failed", { cause: error });
|
|
159
|
+
}
|
|
160
|
+
finally {
|
|
161
|
+
try {
|
|
162
|
+
if (fs_1.default.existsSync(tempFileDir)) {
|
|
163
|
+
fs_1.default.rmSync(tempFileDir, { recursive: true, force: true });
|
|
164
|
+
logData_js_1.logger.info(`Cleaned up temp_file directory: ${tempFileDir}`);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
catch (cleanupErr) {
|
|
168
|
+
logData_js_1.logger.error("Error cleaning up temp_file directory after VerifyPDF:", cleanupErr);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
@@ -1,16 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.MOB_GetADBLogsForGivenAppPackage = void 0;
|
|
4
|
+
const getHelper_js_1 = require("../../../../utils/helpers/getHelper.js");
|
|
4
5
|
const appendScriptData_1 = require("../../../../fireflinkData/fireflinkScript/appendScriptData");
|
|
5
6
|
const MOB_GetADBLogsForGivenAppPackage = async (args) => {
|
|
6
7
|
try {
|
|
7
8
|
const packageName = args.value;
|
|
8
9
|
const logs = await args.driver.getLogs("logcat");
|
|
9
10
|
const _filteredLogs = logs.filter((log) => log.message && log.message.includes(packageName));
|
|
11
|
+
(0, getHelper_js_1.saveStepInputData)(args, logs);
|
|
10
12
|
(0, appendScriptData_1.appendScriptData)({
|
|
11
13
|
scriptDataAppender: args.scriptDataAppender,
|
|
12
14
|
nlpName: "MOB_GetADBLogsForGivenAppPackage",
|
|
13
|
-
stepInputs: [packageName]
|
|
15
|
+
stepInputs: [packageName],
|
|
16
|
+
returnTypeVariableName: args.returnTypeVariableName
|
|
14
17
|
});
|
|
15
18
|
}
|
|
16
19
|
catch (error) {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.MOB_GetAllContexts = void 0;
|
|
4
|
+
const getHelper_js_1 = require("../../../../utils/helpers/getHelper.js");
|
|
4
5
|
const appendScriptData_1 = require("../../../../fireflinkData/fireflinkScript/appendScriptData");
|
|
5
6
|
const MOB_GetAllContexts = async (args) => {
|
|
6
7
|
try {
|
|
@@ -8,8 +9,11 @@ const MOB_GetAllContexts = async (args) => {
|
|
|
8
9
|
const _contexts = await args.driver.getContexts();
|
|
9
10
|
(0, appendScriptData_1.appendScriptData)({
|
|
10
11
|
scriptDataAppender: args.scriptDataAppender,
|
|
11
|
-
nlpName: "MOB_GetAllContexts"
|
|
12
|
+
nlpName: "MOB_GetAllContexts",
|
|
13
|
+
returnTypeVariableName: args.returnTypeVariableName
|
|
12
14
|
});
|
|
15
|
+
const __result = _contexts;
|
|
16
|
+
(0, getHelper_js_1.saveStepInputData)(args, __result);
|
|
13
17
|
}
|
|
14
18
|
catch (error) {
|
|
15
19
|
args.scriptDataAppender.setErrorNLP("MOB_GetAllContexts");
|