ff-automationv2 2.2.32 → 2.2.34-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 +4 -0
- package/dist/ai/llmprompts/systemPrompts/actionExtractorPrompt.js +16 -12
- package/dist/ai/llmprompts/systemPrompts/arithmeticPrompt.d.ts +2 -0
- package/dist/ai/llmprompts/systemPrompts/arithmeticPrompt.js +48 -0
- package/dist/ai/llmprompts/systemPrompts/getActionExtractorPrompt.js +1 -1
- package/dist/ai/llmprompts/systemPrompts/getActionExtractorPromptMob.js +1 -1
- package/dist/ai/llmprompts/systemPrompts/inputContextPrompt.js +2 -0
- package/dist/ai/llmprompts/systemPrompts/mobileKeywordExtractor.js +2 -2
- package/dist/ai/llmprompts/userPrompts/userPrompt.js +1 -0
- package/dist/automation/actions/executor.d.ts +1 -0
- package/dist/automation/actions/executor.js +25 -0
- package/dist/automation/actions/interaction/alert/enterDataToAlert.js +2 -2
- package/dist/automation/actions/interaction/alert/getTextPresentOnAlertPopup.js +2 -2
- package/dist/automation/actions/interaction/arithmetic/arithmeticOperations.d.ts +2 -0
- package/dist/automation/actions/interaction/arithmetic/arithmeticOperations.js +61 -0
- package/dist/automation/actions/interaction/clear/clear.js +4 -1
- package/dist/automation/actions/interaction/clear/clearAndEnter.js +7 -4
- package/dist/automation/actions/interaction/elementlessActions/getOtp.js +7 -7
- package/dist/automation/actions/interaction/enterActions/EnterInputIntoElementFromClipBoardInterface_mob.js +6 -3
- package/dist/automation/actions/interaction/enterActions/enterInput.js +8 -5
- package/dist/automation/actions/interaction/enterActions/enterInputAndPress.js +7 -4
- package/dist/automation/actions/interaction/enterActions/enterUrl.js +3 -3
- package/dist/automation/actions/interaction/enterActions/enterusingJs.js +2 -2
- package/dist/automation/actions/interaction/enterActions/waitAndEnter.js +7 -4
- package/dist/automation/actions/interaction/get/MOB_GetADBLogsForGivenAppPackage.js +2 -2
- package/dist/automation/actions/interaction/get/MOB_GetAllContexts.js +2 -2
- package/dist/automation/actions/interaction/get/MOB_GetAllWindowHandles.js +3 -3
- package/dist/automation/actions/interaction/get/MOB_GetAltitude.js +2 -2
- package/dist/automation/actions/interaction/get/MOB_GetBatteryPercentage.js +2 -2
- package/dist/automation/actions/interaction/get/MOB_GetBatteryStatus.js +2 -2
- package/dist/automation/actions/interaction/get/MOB_GetClipBoardText.js +2 -2
- package/dist/automation/actions/interaction/get/MOB_GetCurrentActivity.js +2 -2
- package/dist/automation/actions/interaction/get/MOB_GetCurrentAppPackage.js +2 -2
- package/dist/automation/actions/interaction/get/MOB_GetCurrentContext.js +2 -2
- package/dist/automation/actions/interaction/get/MOB_GetCurrentDeviceDate.js +2 -2
- package/dist/automation/actions/interaction/get/MOB_GetCurrentDeviceSettings.js +2 -2
- package/dist/automation/actions/interaction/get/MOB_GetCurrentDeviceStatus.js +2 -2
- package/dist/automation/actions/interaction/get/MOB_GetCurrentDeviceSystemBars.js +2 -2
- package/dist/automation/actions/interaction/get/MOB_GetCurrentDeviceTime.js +2 -2
- package/dist/automation/actions/interaction/get/MOB_GetCurrentOrientation.js +2 -2
- package/dist/automation/actions/interaction/get/MOB_GetCurrentSessionId.js +2 -2
- package/dist/automation/actions/interaction/get/MOB_GetDeviceLocation.js +2 -2
- package/dist/automation/actions/interaction/get/MOB_GetDeviceName.js +2 -2
- package/dist/automation/actions/interaction/get/MOB_GetDeviceOsVersion.js +2 -2
- package/dist/automation/actions/interaction/get/MOB_GetDeviceUdid.js +2 -2
- package/dist/automation/actions/interaction/get/MOB_GetHeightOfElement.js +2 -2
- package/dist/automation/actions/interaction/get/MOB_GetHeightOfScreen.js +2 -2
- package/dist/automation/actions/interaction/get/MOB_GetHourFromCurrentDeviceTime.js +2 -2
- package/dist/automation/actions/interaction/get/MOB_GetLatitude.js +2 -2
- package/dist/automation/actions/interaction/get/MOB_GetLongitude.js +2 -2
- package/dist/automation/actions/interaction/get/MOB_GetMinuteFromCurrentDeviceTime.js +2 -2
- package/dist/automation/actions/interaction/get/MOB_GetSecondFromCurrentDeviceTime.js +2 -2
- package/dist/automation/actions/interaction/get/MOB_GetSizeOfScreen.js +2 -2
- package/dist/automation/actions/interaction/get/MOB_GetSupportedPerformanceDataTypes.js +2 -2
- package/dist/automation/actions/interaction/get/MOB_GetTextFromElementAndSetToClipBoard.js +2 -2
- package/dist/automation/actions/interaction/get/MOB_GetWidthOfElement.js +2 -2
- package/dist/automation/actions/interaction/get/MOB_GetWidthOfScreen.js +2 -2
- package/dist/automation/actions/interaction/get/browserWindowGetPosition.js +2 -2
- package/dist/automation/actions/interaction/get/getAllBrokenImages.js +2 -2
- package/dist/automation/actions/interaction/get/getAllBrokenLinkCount.js +2 -2
- package/dist/automation/actions/interaction/get/getAllBrokenLinks.js +2 -2
- package/dist/automation/actions/interaction/get/getAllConsoleErrors.js +2 -2
- package/dist/automation/actions/interaction/get/getAllConsoleInformation.js +2 -2
- package/dist/automation/actions/interaction/get/getAllConsoleLogs.js +2 -2
- package/dist/automation/actions/interaction/get/getAllConsoleWarnings.js +2 -2
- package/dist/automation/actions/interaction/get/getAllCookieNames.js +2 -2
- package/dist/automation/actions/interaction/get/getAllCookieValues.js +2 -2
- package/dist/automation/actions/interaction/get/getAllSelectedOptions.js +2 -2
- package/dist/automation/actions/interaction/get/getAllTheOptionsFromListBoxAsText.js +2 -2
- package/dist/automation/actions/interaction/get/getAllTheOptionsFromListBoxAsTextInSortedOrder.js +2 -2
- package/dist/automation/actions/interaction/get/getAllTheSelectedOptionsFromListBoxAsText.js +2 -2
- package/dist/automation/actions/interaction/get/getAllWindowHandles.js +2 -2
- package/dist/automation/actions/interaction/get/getAttribute.js +3 -3
- package/dist/automation/actions/interaction/get/getAudioCurrentPlaybackRate.js +2 -2
- package/dist/automation/actions/interaction/get/getAudioCurrentSeekTime.js +2 -2
- package/dist/automation/actions/interaction/get/getAudioCurrentVolume.js +2 -2
- package/dist/automation/actions/interaction/get/getAudioDecodedByte.js +2 -2
- package/dist/automation/actions/interaction/get/getAudioDefaultPlaybackRate.js +2 -2
- package/dist/automation/actions/interaction/get/getAudioMediaLength.js +2 -2
- package/dist/automation/actions/interaction/get/getAudioMediaSource.js +2 -2
- package/dist/automation/actions/interaction/get/getBestPracticesScore.js +2 -2
- package/dist/automation/actions/interaction/get/getBrowserCount.js +2 -2
- package/dist/automation/actions/interaction/get/getBrowserVersion.js +2 -2
- package/dist/automation/actions/interaction/get/getCapabilityNames.js +2 -2
- package/dist/automation/actions/interaction/get/getClipBoardText.js +2 -2
- package/dist/automation/actions/interaction/get/getCollectiveApiResponseTime.js +2 -2
- package/dist/automation/actions/interaction/get/getCollectiveApiStatusCode.js +2 -2
- package/dist/automation/actions/interaction/get/getCssValue.js +2 -2
- package/dist/automation/actions/interaction/get/getCurrentDayOfTheWeek.js +2 -2
- package/dist/automation/actions/interaction/get/getCurrentSecondsFromCurrentSystemTime.js +2 -2
- package/dist/automation/actions/interaction/get/getCurrentSystemDate.js +2 -2
- package/dist/automation/actions/interaction/get/getCurrentSystemDay.js +2 -2
- package/dist/automation/actions/interaction/get/getCurrentSystemMonth.js +2 -2
- package/dist/automation/actions/interaction/get/getCurrentSystemTime.js +2 -2
- package/dist/automation/actions/interaction/get/getCurrentSystemYear.js +2 -2
- package/dist/automation/actions/interaction/get/getCurrentWindowHandle.js +2 -2
- package/dist/automation/actions/interaction/get/getDataFromApiRequestHeaderForJsonPath.js +2 -2
- package/dist/automation/actions/interaction/get/getDataFromApiResponseForJsonPath.js +2 -2
- package/dist/automation/actions/interaction/get/getDateWithGivenFormat.js +2 -2
- package/dist/automation/actions/interaction/get/getDriverInstance.js +2 -2
- package/dist/automation/actions/interaction/get/getFirstContentfulPaint.js +2 -2
- package/dist/automation/actions/interaction/get/getFirstSelectedOption.js +2 -2
- package/dist/automation/actions/interaction/get/getFullPaintTime.js +2 -2
- package/dist/automation/actions/interaction/get/getHTMLCodeOfPage.js +2 -2
- package/dist/automation/actions/interaction/get/getHeightOfBrowserWindow.js +2 -2
- package/dist/automation/actions/interaction/get/getHeightOfWebElement.js +2 -2
- package/dist/automation/actions/interaction/get/getHourFromCurrentSystemTime.js +2 -2
- package/dist/automation/actions/interaction/get/getImplicitTimeOut.js +2 -2
- package/dist/automation/actions/interaction/get/getLargestContentfulPaint.js +2 -2
- package/dist/automation/actions/interaction/get/getListBoxSize.js +2 -2
- package/dist/automation/actions/interaction/get/getListOfElementsFromLocatorTypeLocatorValue.js +3 -3
- package/dist/automation/actions/interaction/get/getLocation.js +3 -3
- package/dist/automation/actions/interaction/get/getMinuteFromCurrentSystemTime.js +2 -2
- package/dist/automation/actions/interaction/get/getNetworkRouteTime.js +2 -2
- package/dist/automation/actions/interaction/get/getNumberOfBrokenImages.js +2 -2
- package/dist/automation/actions/interaction/get/getNumberOfLinksPresentInCurrentPage.js +2 -2
- package/dist/automation/actions/interaction/get/getNumberOfWorkingLinksFromCurrentPage.js +2 -2
- package/dist/automation/actions/interaction/get/getOptions.js +2 -2
- package/dist/automation/actions/interaction/get/getPageTitle.js +2 -2
- package/dist/automation/actions/interaction/get/getPerformanceMetrics.js +2 -2
- package/dist/automation/actions/interaction/get/getPwaScore.js +2 -2
- package/dist/automation/actions/interaction/get/getRect.js +3 -3
- package/dist/automation/actions/interaction/get/getScreenshot.js +2 -2
- package/dist/automation/actions/interaction/get/getScreenshotAs.js +2 -2
- package/dist/automation/actions/interaction/get/getSeoScore.js +2 -2
- package/dist/automation/actions/interaction/get/getSingleApiRequestPayload.js +2 -2
- package/dist/automation/actions/interaction/get/getSingleApiResponse.js +2 -2
- package/dist/automation/actions/interaction/get/getSingleApiResponseTime.js +2 -2
- package/dist/automation/actions/interaction/get/getSingleApiStatusCode.js +2 -2
- package/dist/automation/actions/interaction/get/getSize.js +3 -3
- package/dist/automation/actions/interaction/get/getSizeOfBrowserWindow.js +2 -2
- package/dist/automation/actions/interaction/get/getStringDataFromLocalFile.js +2 -2
- package/dist/automation/actions/interaction/get/getSystemProperty.js +2 -2
- package/dist/automation/actions/interaction/get/getTagName.js +3 -3
- package/dist/automation/actions/interaction/get/getText.js +12 -5
- package/dist/automation/actions/interaction/get/getTheFirstSelectedOptionFromListBoxAsText.js +2 -2
- package/dist/automation/actions/interaction/get/getTotalNumberOfCookies.js +2 -2
- package/dist/automation/actions/interaction/get/getTunnelIdentifier.js +2 -2
- package/dist/automation/actions/interaction/get/getURLPresentInAddressBar.js +2 -2
- package/dist/automation/actions/interaction/get/getUserHomeDirectory.js +2 -2
- package/dist/automation/actions/interaction/get/getValueByCookieName.js +2 -2
- package/dist/automation/actions/interaction/get/getValueFromLocalStorage.js +2 -2
- package/dist/automation/actions/interaction/get/getValueOfSystemVariable.js +2 -2
- package/dist/automation/actions/interaction/get/getVideoCurrentPlaybackRate.js +2 -2
- package/dist/automation/actions/interaction/get/getVideoCurrentSeekTime.js +2 -2
- package/dist/automation/actions/interaction/get/getVideoCurrentVolume.js +2 -2
- package/dist/automation/actions/interaction/get/getVideoDecodedByte.js +2 -2
- package/dist/automation/actions/interaction/get/getVideoDefaultPlaybackRate.js +2 -2
- package/dist/automation/actions/interaction/get/getVideoMediaLength.js +2 -2
- package/dist/automation/actions/interaction/get/getVideoMediaSource.js +2 -2
- package/dist/automation/actions/interaction/get/getWidthOfBrowser.js +2 -2
- package/dist/automation/actions/interaction/get/getWidthOfWebElement.js +2 -2
- package/dist/automation/actions/interaction/get/getWorkingLinksFromCurrentPage.js +2 -2
- package/dist/automation/actions/interaction/get/getWrappedElement.js +2 -2
- package/dist/automation/actions/interaction/get/getWrappedOptionFromListBoxAsText.js +2 -2
- package/dist/automation/actions/interaction/get/getXLocationOfBrowserWindow.js +2 -2
- package/dist/automation/actions/interaction/get/getXLocationOfWebElement.js +3 -3
- package/dist/automation/actions/interaction/get/getYLocationOfBrowserWindow.js +2 -2
- package/dist/automation/actions/interaction/get/getYLocationOfWebElement.js +3 -3
- package/dist/automation/actions/interaction/iframe/switchToDefaultContent.js +1 -1
- package/dist/automation/actions/interaction/shadowDom/shadowDomEnter.js +2 -2
- package/dist/automation/actions/interaction/shadowDom/shadowDomGetText.js +2 -2
- package/dist/automation/actions/interaction/verify/VerifyElementNotContainsText.js +4 -1
- package/dist/automation/actions/interaction/verify/verifypartialtext.js +9 -2
- package/dist/automation/actions/interaction/verify/verifytext.js +9 -2
- package/dist/automation/actions/interface/FireFlinkResponseSchema.d.ts +13 -0
- package/dist/automation/actions/interface/FireFlinkResponseSchema.js +10 -1
- package/dist/automation/actions/interface/arithmeticActionInterface.d.ts +18 -0
- package/dist/automation/actions/interface/arithmeticActionInterface.js +2 -0
- package/dist/core/constants/allAction.js +2 -1
- package/dist/core/constants/supportedActions.js +2 -1
- package/dist/core/helpers/elementSelectorResolver.d.ts +1 -1
- package/dist/core/helpers/elementSelectorResolver.js +3 -2
- package/dist/core/helpers/runnerDomPipeline.d.ts +2 -2
- package/dist/core/helpers/runnerDomPipeline.js +20 -9
- package/dist/core/helpers/visionFallbackHandler.js +4 -4
- package/dist/core/interfaces/actionInterface.d.ts +2 -0
- package/dist/core/interfaces/automationRunnerInterface.d.ts +1 -0
- package/dist/core/interfaces/promptInterface.d.ts +3 -0
- package/dist/core/main/actionHandlerFactory.js +3 -0
- package/dist/core/main/runAutomationScript.js +53 -8
- package/dist/core/types/promptType.d.ts +2 -1
- package/dist/core/types/promptType.js +1 -0
- package/dist/fireflinkData/fireflinkLocators/getListOfLocators.d.ts +2 -1
- package/dist/fireflinkData/fireflinkLocators/getListOfLocators.js +2 -2
- package/dist/fireflinkData/fireflinkScript/appendScriptData.js +42 -6
- package/dist/fireflinkData/fireflinkScript/scriptGenrationData.d.ts +1 -0
- package/dist/fireflinkData/fireflinkScript/scriptGenrationData.js +1 -0
- package/dist/imageAnalysisWeb/annotateScreenshot.d.ts +1 -1
- package/dist/imageAnalysisWeb/annotateScreenshot.js +24 -10
- package/dist/imageAnalysisWeb/generateAnnotatedScreenshots.js +5 -2
- package/dist/tests/senario.d.ts +0 -0
- package/dist/tests/senario.js +1120 -0
- package/dist/tests/test12.d.ts +1 -0
- package/dist/tests/test12.js +34 -65
- package/dist/utils/DomExtraction/jsForAttributeInjection.js +23 -0
- package/dist/utils/helpers/xpathcreation.js +3 -0
- package/dist/utils/iframesExtraction/findElementUsingFF.js +1 -2
- package/dist/utils/iframesExtraction/switchToIframeByMeta.js +1 -1
- package/dist/utils/workers/locatorWorker.js +3 -1
- package/package.json +1 -1
- /package/dist/utils/helpers/{getHelper.d.ts → saveStepInputData.d.ts} +0 -0
- /package/dist/utils/helpers/{getHelper.js → saveStepInputData.js} +0 -0
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getVideoMediaLength = void 0;
|
|
4
|
-
const
|
|
4
|
+
const saveStepInputData_js_1 = require("../../../../utils/helpers/saveStepInputData.js");
|
|
5
5
|
const appendScriptData_js_1 = require("../../../../fireflinkData/fireflinkScript/appendScriptData.js");
|
|
6
6
|
const getVideoMediaLength = async (args) => {
|
|
7
7
|
try {
|
|
8
8
|
const element = await args.driver.$(args.selector);
|
|
9
9
|
// duration returns total media length in seconds
|
|
10
10
|
const _videoDuration = await element.getProperty("duration");
|
|
11
|
-
(0,
|
|
11
|
+
(0, saveStepInputData_js_1.saveStepInputData)(args, _videoDuration);
|
|
12
12
|
(0, appendScriptData_js_1.appendScriptData)({
|
|
13
13
|
scriptDataAppender: args.scriptDataAppender,
|
|
14
14
|
nlpName: "GetVideoMediaLength",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getVideoMediaSource = void 0;
|
|
4
|
-
const
|
|
4
|
+
const saveStepInputData_js_1 = require("../../../../utils/helpers/saveStepInputData.js");
|
|
5
5
|
const appendScriptData_js_1 = require("../../../../fireflinkData/fireflinkScript/appendScriptData.js");
|
|
6
6
|
const getVideoMediaSource = async (args) => {
|
|
7
7
|
try {
|
|
@@ -17,7 +17,7 @@ const getVideoMediaSource = async (args) => {
|
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
19
|
const src = videoSource || "";
|
|
20
|
-
(0,
|
|
20
|
+
(0, saveStepInputData_js_1.saveStepInputData)(args, src);
|
|
21
21
|
(0, appendScriptData_js_1.appendScriptData)({
|
|
22
22
|
scriptDataAppender: args.scriptDataAppender,
|
|
23
23
|
nlpName: "GetVideoMediaSource",
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getWidthOfBrowser = void 0;
|
|
4
4
|
const appendScriptData_js_1 = require("../../../../fireflinkData/fireflinkScript/appendScriptData.js");
|
|
5
|
-
const
|
|
5
|
+
const saveStepInputData_js_1 = require("../../../../utils/helpers/saveStepInputData.js");
|
|
6
6
|
const getWidthOfBrowser = async (args) => {
|
|
7
7
|
try {
|
|
8
8
|
const rect = await args.driver.getWindowRect();
|
|
@@ -12,7 +12,7 @@ const getWidthOfBrowser = async (args) => {
|
|
|
12
12
|
nlpName: "GetWidthOfBrowser",
|
|
13
13
|
returnTypeVariableName: args.returnTypeVariableName
|
|
14
14
|
});
|
|
15
|
-
(0,
|
|
15
|
+
(0, saveStepInputData_js_1.saveStepInputData)(args, width);
|
|
16
16
|
}
|
|
17
17
|
catch (error) {
|
|
18
18
|
args.scriptDataAppender.setErrorNLP("GetWidthOfBrowser");
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getWidthOfWebElement = void 0;
|
|
4
|
-
const
|
|
4
|
+
const saveStepInputData_js_1 = require("../../../../utils/helpers/saveStepInputData.js");
|
|
5
5
|
const appendScriptData_js_1 = require("../../../../fireflinkData/fireflinkScript/appendScriptData.js");
|
|
6
6
|
const logData_js_1 = require("../../../../utils/logger/logData.js");
|
|
7
7
|
const getWidthOfWebElement = async (args) => {
|
|
@@ -10,7 +10,7 @@ const getWidthOfWebElement = async (args) => {
|
|
|
10
10
|
const _size = await element.getSize();
|
|
11
11
|
const _width = _size.width;
|
|
12
12
|
logData_js_1.logger.info('width --', _width);
|
|
13
|
-
(0,
|
|
13
|
+
(0, saveStepInputData_js_1.saveStepInputData)(args, _size.width);
|
|
14
14
|
(0, appendScriptData_js_1.appendScriptData)({
|
|
15
15
|
scriptDataAppender: args.scriptDataAppender,
|
|
16
16
|
nlpName: "GetWidthOfWebElement",
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getWorkingLinksFromCurrentPage = void 0;
|
|
4
4
|
const appendScriptData_js_1 = require("../../../../fireflinkData/fireflinkScript/appendScriptData.js");
|
|
5
|
-
const
|
|
5
|
+
const saveStepInputData_js_1 = require("../../../../utils/helpers/saveStepInputData.js");
|
|
6
6
|
const getWorkingLinksFromCurrentPage = async (args) => {
|
|
7
7
|
try {
|
|
8
8
|
const workingLinks = await args.driver.execute(() => {
|
|
@@ -16,7 +16,7 @@ const getWorkingLinksFromCurrentPage = async (args) => {
|
|
|
16
16
|
nlpName: "GetWorkingLinksFromCurrentPage",
|
|
17
17
|
returnTypeVariableName: args.returnTypeVariableName
|
|
18
18
|
});
|
|
19
|
-
(0,
|
|
19
|
+
(0, saveStepInputData_js_1.saveStepInputData)(args, workingLinks);
|
|
20
20
|
}
|
|
21
21
|
catch (error) {
|
|
22
22
|
args.scriptDataAppender.setErrorNLP("GetWorkingLinksFromCurrentPage");
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getWrappedElement = void 0;
|
|
4
|
-
const
|
|
4
|
+
const saveStepInputData_js_1 = require("../../../../utils/helpers/saveStepInputData.js");
|
|
5
5
|
const appendScriptData_js_1 = require("../../../../fireflinkData/fireflinkScript/appendScriptData.js");
|
|
6
6
|
const getWrappedElement = async (args) => {
|
|
7
7
|
try {
|
|
@@ -9,7 +9,7 @@ const getWrappedElement = async (args) => {
|
|
|
9
9
|
// In WDIO, this is already the wrapped element
|
|
10
10
|
const _wrappedElement = element;
|
|
11
11
|
const res = args.selector;
|
|
12
|
-
(0,
|
|
12
|
+
(0, saveStepInputData_js_1.saveStepInputData)(args, res);
|
|
13
13
|
(0, appendScriptData_js_1.appendScriptData)({
|
|
14
14
|
scriptDataAppender: args.scriptDataAppender,
|
|
15
15
|
nlpName: "GetWrappedElement",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getWrappedOptionFromListBoxAsText = getWrappedOptionFromListBoxAsText;
|
|
4
|
-
const
|
|
4
|
+
const saveStepInputData_js_1 = require("../../../../utils/helpers/saveStepInputData.js");
|
|
5
5
|
const logData_js_1 = require("../../../../utils/logger/logData.js");
|
|
6
6
|
const appendScriptData_js_1 = require("../../../../fireflinkData/fireflinkScript/appendScriptData.js");
|
|
7
7
|
async function getWrappedOptionFromListBoxAsText(args) {
|
|
@@ -29,7 +29,7 @@ async function getWrappedOptionFromListBoxAsText(args) {
|
|
|
29
29
|
platform: args.platform,
|
|
30
30
|
returnTypeVariableName: args.returnTypeVariableName
|
|
31
31
|
});
|
|
32
|
-
(0,
|
|
32
|
+
(0, saveStepInputData_js_1.saveStepInputData)(args, optionTexts);
|
|
33
33
|
}
|
|
34
34
|
catch (error) {
|
|
35
35
|
args.scriptDataAppender.setErrorNLP("GetWrappedOptionFromListBoxAsText");
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getXLocationOfBrowserWindow = void 0;
|
|
4
|
-
const
|
|
4
|
+
const saveStepInputData_js_1 = require("../../../../utils/helpers/saveStepInputData.js");
|
|
5
5
|
const appendScriptData_js_1 = require("../../../../fireflinkData/fireflinkScript/appendScriptData.js");
|
|
6
6
|
const getXLocationOfBrowserWindow = async (args) => {
|
|
7
7
|
try {
|
|
8
8
|
const position = await args.driver.getWindowRect();
|
|
9
|
-
(0,
|
|
9
|
+
(0, saveStepInputData_js_1.saveStepInputData)(args, position.x);
|
|
10
10
|
(0, appendScriptData_js_1.appendScriptData)({
|
|
11
11
|
scriptDataAppender: args.scriptDataAppender,
|
|
12
12
|
nlpName: "GetXLocationOfBrowserWindow",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getXLocationOfWebElement = void 0;
|
|
4
|
-
const
|
|
4
|
+
const saveStepInputData_js_1 = require("../../../../utils/helpers/saveStepInputData.js");
|
|
5
5
|
const logData_js_1 = require("../../../../utils/logger/logData.js");
|
|
6
6
|
const appendScriptData_js_1 = require("../../../../fireflinkData/fireflinkScript/appendScriptData.js");
|
|
7
7
|
const getXLocationOfWebElement = async (args) => {
|
|
@@ -14,7 +14,7 @@ const getXLocationOfWebElement = async (args) => {
|
|
|
14
14
|
const _location = await element.getLocation();
|
|
15
15
|
const _x = _location.x;
|
|
16
16
|
logData_js_1.logger.info(`X Location of element: ${_x}`);
|
|
17
|
-
(0,
|
|
17
|
+
(0, saveStepInputData_js_1.saveStepInputData)(args, _x);
|
|
18
18
|
(0, appendScriptData_js_1.appendScriptData)({
|
|
19
19
|
scriptDataAppender: args.scriptDataAppender,
|
|
20
20
|
nlpName: nlpName,
|
|
@@ -41,7 +41,7 @@ const getXLocationOfWebElement = async (args) => {
|
|
|
41
41
|
const _location = await element.getLocation();
|
|
42
42
|
const _x = _location.x;
|
|
43
43
|
logData_js_1.logger.info(`X Location of element: ${_x}`);
|
|
44
|
-
(0,
|
|
44
|
+
(0, saveStepInputData_js_1.saveStepInputData)(args, _x);
|
|
45
45
|
(0, appendScriptData_js_1.appendScriptData)({
|
|
46
46
|
scriptDataAppender: args.scriptDataAppender,
|
|
47
47
|
nlpName: "GetXLocationOfWebElement",
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getYLocationOfBrowserWindow = void 0;
|
|
4
4
|
const appendScriptData_js_1 = require("../../../../fireflinkData/fireflinkScript/appendScriptData.js");
|
|
5
|
-
const
|
|
5
|
+
const saveStepInputData_js_1 = require("../../../../utils/helpers/saveStepInputData.js");
|
|
6
6
|
const getYLocationOfBrowserWindow = async (args) => {
|
|
7
7
|
try {
|
|
8
8
|
const rect = await args.driver.getWindowRect();
|
|
@@ -12,7 +12,7 @@ const getYLocationOfBrowserWindow = async (args) => {
|
|
|
12
12
|
nlpName: "GetYLocationOfBrowserWindow",
|
|
13
13
|
returnTypeVariableName: args.returnTypeVariableName
|
|
14
14
|
});
|
|
15
|
-
(0,
|
|
15
|
+
(0, saveStepInputData_js_1.saveStepInputData)(args, y);
|
|
16
16
|
}
|
|
17
17
|
catch (error) {
|
|
18
18
|
args.scriptDataAppender.setErrorNLP("GetYLocationOfBrowserWindow");
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getYLocationOfWebElement = void 0;
|
|
4
|
-
const
|
|
4
|
+
const saveStepInputData_js_1 = require("../../../../utils/helpers/saveStepInputData.js");
|
|
5
5
|
const logData_js_1 = require("../../../../utils/logger/logData.js");
|
|
6
6
|
const appendScriptData_js_1 = require("../../../../fireflinkData/fireflinkScript/appendScriptData.js");
|
|
7
7
|
const getYLocationOfWebElement = async (args) => {
|
|
@@ -14,7 +14,7 @@ const getYLocationOfWebElement = async (args) => {
|
|
|
14
14
|
const _location = await element.getLocation();
|
|
15
15
|
const _y = _location.y;
|
|
16
16
|
logData_js_1.logger.info(`X Location of element: ${_y}`);
|
|
17
|
-
(0,
|
|
17
|
+
(0, saveStepInputData_js_1.saveStepInputData)(args, _y);
|
|
18
18
|
(0, appendScriptData_js_1.appendScriptData)({
|
|
19
19
|
scriptDataAppender: args.scriptDataAppender,
|
|
20
20
|
nlpName: nlpName,
|
|
@@ -40,7 +40,7 @@ const getYLocationOfWebElement = async (args) => {
|
|
|
40
40
|
const element = await args.driver.$(args.selector);
|
|
41
41
|
const _location = await element.getLocation();
|
|
42
42
|
const _y = _location.y;
|
|
43
|
-
(0,
|
|
43
|
+
(0, saveStepInputData_js_1.saveStepInputData)(args, _y);
|
|
44
44
|
(0, appendScriptData_js_1.appendScriptData)({
|
|
45
45
|
scriptDataAppender: args.scriptDataAppender,
|
|
46
46
|
nlpName: "GetYLocationOfWebElement",
|
|
@@ -4,7 +4,7 @@ exports.switchToDefaultContent = switchToDefaultContent;
|
|
|
4
4
|
const appendScriptData_js_1 = require("../../../../fireflinkData/fireflinkScript/appendScriptData.js");
|
|
5
5
|
async function switchToDefaultContent(args) {
|
|
6
6
|
try {
|
|
7
|
-
await args.driver.
|
|
7
|
+
await args.driver.switchFrame(null);
|
|
8
8
|
(0, appendScriptData_js_1.appendScriptData)({
|
|
9
9
|
scriptDataAppender: args.scriptDataAppender,
|
|
10
10
|
nlpName: "SwitchToDefaultContent"
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.enterInputShadow = enterInputShadow;
|
|
4
4
|
const jsForShadowRoot_js_1 = require("../../../../utils/javascript/jsForShadowRoot.js");
|
|
5
5
|
const appendScriptData_js_1 = require("../../../../fireflinkData/fireflinkScript/appendScriptData.js");
|
|
6
|
-
const
|
|
6
|
+
const saveStepInputData_js_1 = require("../../../../utils/helpers/saveStepInputData.js");
|
|
7
7
|
async function enterInputShadow(args) {
|
|
8
8
|
try {
|
|
9
9
|
const executableJS = jsForShadowRoot_js_1.SHADOW_DOM_ENTER_JS.replace("arguments[0]", `"${args.selector}"`).replace("arguments[1]", `"${args.value}"`);
|
|
@@ -13,7 +13,7 @@ async function enterInputShadow(args) {
|
|
|
13
13
|
nlpName: "ExecuteJavaScript",
|
|
14
14
|
stepInputs: [executableJS]
|
|
15
15
|
});
|
|
16
|
-
(0,
|
|
16
|
+
(0, saveStepInputData_js_1.saveStepInputData)(args, args.value);
|
|
17
17
|
}
|
|
18
18
|
catch (error) {
|
|
19
19
|
args.scriptDataAppender.setErrorNLP("ExecuteJavaScript");
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.getTextShadowElement = getTextShadowElement;
|
|
4
4
|
const jsForShadowRoot_js_1 = require("../../../../utils/javascript/jsForShadowRoot.js");
|
|
5
5
|
const appendScriptData_js_1 = require("../../../../fireflinkData/fireflinkScript/appendScriptData.js");
|
|
6
|
-
const
|
|
6
|
+
const saveStepInputData_js_1 = require("../../../../utils/helpers/saveStepInputData.js");
|
|
7
7
|
async function getTextShadowElement(args) {
|
|
8
8
|
try {
|
|
9
9
|
const executableJS = jsForShadowRoot_js_1.SHADOW_DOM_GET_TEXT_JS.replace("arguments[0]", `"${args.selector}"`);
|
|
@@ -14,7 +14,7 @@ async function getTextShadowElement(args) {
|
|
|
14
14
|
stepInputs: [executableJS],
|
|
15
15
|
returnTypeVariableName: args.returnTypeVariableName
|
|
16
16
|
});
|
|
17
|
-
(0,
|
|
17
|
+
(0, saveStepInputData_js_1.saveStepInputData)(args, text);
|
|
18
18
|
}
|
|
19
19
|
catch (error) {
|
|
20
20
|
args.scriptDataAppender.setErrorNLP("ExecuteJavaScript");
|
|
@@ -7,7 +7,10 @@ async function verifyElementNotContainsText(args) {
|
|
|
7
7
|
case "android":
|
|
8
8
|
try {
|
|
9
9
|
const element = await args.driver.$(args.selector);
|
|
10
|
-
const
|
|
10
|
+
const isWebView = args.pageDOM?.includes("ff-inspect");
|
|
11
|
+
const expected = isWebView
|
|
12
|
+
? (await element.getText()) || ""
|
|
13
|
+
: (await element.getAttribute("text")) || "";
|
|
11
14
|
const caseSensitive = false;
|
|
12
15
|
if (expected == args.value) {
|
|
13
16
|
throw new Error(`Element do contain the text. Expected: not containing "${args.value}", Actual: contains "${expected}"`);
|
|
@@ -10,8 +10,15 @@ async function verifyPartialText(args) {
|
|
|
10
10
|
case "ios":
|
|
11
11
|
try {
|
|
12
12
|
const element = await args.driver.$(args.selector);
|
|
13
|
-
const
|
|
14
|
-
|
|
13
|
+
const isWebView = args.pageDOM?.includes("ff-inspect");
|
|
14
|
+
let actual;
|
|
15
|
+
if (isWebView) {
|
|
16
|
+
actual = (await element.getText()) || "";
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
const attributeName = args.platform === "ios" ? "value" : "text";
|
|
20
|
+
actual = (await element.getAttribute(attributeName)) || "";
|
|
21
|
+
}
|
|
15
22
|
const expected = args.value;
|
|
16
23
|
if (!actual?.includes(expected)) {
|
|
17
24
|
throw new Error(`Element does not contain the expected text. Expected to contain: "${args.value}", Actual: "${actual}"`);
|
|
@@ -10,8 +10,15 @@ async function verifyText(args) {
|
|
|
10
10
|
case "ios":
|
|
11
11
|
try {
|
|
12
12
|
const element = await args.driver.$(args.selector);
|
|
13
|
-
const
|
|
14
|
-
|
|
13
|
+
const isWebView = args.pageDOM?.includes("ff-inspect");
|
|
14
|
+
let text;
|
|
15
|
+
if (isWebView) {
|
|
16
|
+
text = (await element.getText()) || "";
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
const attributeName = args.platform === "ios" ? "value" : "text";
|
|
20
|
+
text = (await element.getAttribute(attributeName)) || "";
|
|
21
|
+
}
|
|
15
22
|
const expected = (args.value || "").toLowerCase();
|
|
16
23
|
const isMatched = text.toLowerCase().trim() === expected.trim();
|
|
17
24
|
logData_js_1.logger.info("text", { text });
|
|
@@ -195,4 +195,17 @@ export declare const InputContextSchema: z.ZodObject<{
|
|
|
195
195
|
inputText: z.ZodString;
|
|
196
196
|
variableName: z.ZodString;
|
|
197
197
|
}, z.core.$strip>;
|
|
198
|
+
export declare const ArithmeticSchema: z.ZodObject<{
|
|
199
|
+
operandOne: z.ZodString;
|
|
200
|
+
operandTwo: z.ZodString;
|
|
201
|
+
operandOneVariableName: z.ZodNullable<z.ZodString>;
|
|
202
|
+
operandTwoVariableName: z.ZodNullable<z.ZodString>;
|
|
203
|
+
operation: z.ZodEnum<{
|
|
204
|
+
multiply: "multiply";
|
|
205
|
+
divide: "divide";
|
|
206
|
+
add: "add";
|
|
207
|
+
subtract: "subtract";
|
|
208
|
+
}>;
|
|
209
|
+
variableName: z.ZodString;
|
|
210
|
+
}, z.core.$strip>;
|
|
198
211
|
export declare function getSchemaForPrompt(type: string, platform: string, args?: any): any;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.InputContextSchema = exports.OtpExtractorSchema = exports.ErrorDescriptionSchema = exports.UserStorySchema = exports.VisionSchema = exports.DefaultInteractionSchema = exports.MouseActionSchema = exports.UploadActionSchema = exports.GetOtpActionSchema = exports.ClearTextActionSchema = exports.EnterActionSchema = exports.TapActionSchema = exports.ClickActionSchema = exports.SwitchActionSchema = exports.MobileScrollSchema = exports.WebScrollSchema = exports.DragDropActionSchema = exports.MobileCombinedSchema = exports.CombinedActionSchema = exports.WaitActionSchema = exports.MobileGetSchema = exports.MobileFileVerifySchema = exports.MobileVerifySchema = exports.WebGetSchema = exports.WebFileVerifySchema = exports.WebVerifySchema = exports.AlertShema = exports.KeywordSchema = exports.StepItemSchema = void 0;
|
|
3
|
+
exports.ArithmeticSchema = exports.InputContextSchema = exports.OtpExtractorSchema = exports.ErrorDescriptionSchema = exports.UserStorySchema = exports.VisionSchema = exports.DefaultInteractionSchema = exports.MouseActionSchema = exports.UploadActionSchema = exports.GetOtpActionSchema = exports.ClearTextActionSchema = exports.EnterActionSchema = exports.TapActionSchema = exports.ClickActionSchema = exports.SwitchActionSchema = exports.MobileScrollSchema = exports.WebScrollSchema = exports.DragDropActionSchema = exports.MobileCombinedSchema = exports.CombinedActionSchema = exports.WaitActionSchema = exports.MobileGetSchema = exports.MobileFileVerifySchema = exports.MobileVerifySchema = exports.WebGetSchema = exports.WebFileVerifySchema = exports.WebVerifySchema = exports.AlertShema = exports.KeywordSchema = exports.StepItemSchema = void 0;
|
|
4
4
|
exports.getSchemaForPrompt = getSchemaForPrompt;
|
|
5
5
|
const zod_1 = require("zod");
|
|
6
6
|
const promptType_js_1 = require("../../../core/types/promptType.js");
|
|
@@ -192,6 +192,14 @@ exports.InputContextSchema = zod_1.z.object({
|
|
|
192
192
|
inputText: zod_1.z.string(),
|
|
193
193
|
variableName: zod_1.z.string(),
|
|
194
194
|
});
|
|
195
|
+
exports.ArithmeticSchema = zod_1.z.object({
|
|
196
|
+
operandOne: zod_1.z.string(),
|
|
197
|
+
operandTwo: zod_1.z.string(),
|
|
198
|
+
operandOneVariableName: zod_1.z.string().nullable(),
|
|
199
|
+
operandTwoVariableName: zod_1.z.string().nullable(),
|
|
200
|
+
operation: zod_1.z.enum(["add", "subtract", "multiply", "divide"]),
|
|
201
|
+
variableName: zod_1.z.string(),
|
|
202
|
+
});
|
|
195
203
|
const schemaMap = {
|
|
196
204
|
[promptType_js_1.PromptType.KEYWORD_EXTRACTOR]: exports.KeywordSchema,
|
|
197
205
|
[promptType_js_1.PromptType.VISION_PROMPT]: exports.VisionSchema,
|
|
@@ -201,6 +209,7 @@ const schemaMap = {
|
|
|
201
209
|
[promptType_js_1.PromptType.COMBINED_ACTION_EXTRACTOR_PROMPT]: exports.CombinedActionSchema,
|
|
202
210
|
[promptType_js_1.PromptType.OTP_EXTRACTOR]: exports.OtpExtractorSchema,
|
|
203
211
|
[promptType_js_1.PromptType.INPUT_CONTEXT_PROMPT]: exports.InputContextSchema,
|
|
212
|
+
[promptType_js_1.PromptType.ARITHMETIC_PROMPT]: exports.ArithmeticSchema,
|
|
204
213
|
};
|
|
205
214
|
function getSchemaForPrompt(type, platform, args) {
|
|
206
215
|
let schemaToUse = schemaMap[type];
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ScriptDataAppender } from "../../../fireflinkData/fireflinkScript/scriptGenrationData.js";
|
|
2
|
+
import { ElementGetter } from "../../../fireflinkData/fireflinkLocators/getListOfLocators.js";
|
|
3
|
+
export interface ArithmeticActionInterface {
|
|
4
|
+
operandOne: string;
|
|
5
|
+
operandTwo?: string;
|
|
6
|
+
operandOneVariableName?: string | null;
|
|
7
|
+
operandTwoVariableName?: string | null;
|
|
8
|
+
operation: "add" | "subtract" | "multiply" | "divide" | string;
|
|
9
|
+
variableName: string;
|
|
10
|
+
stepIndex?: any;
|
|
11
|
+
currentStep?: string;
|
|
12
|
+
manualStep?: string;
|
|
13
|
+
stepsInputData?: any[];
|
|
14
|
+
scriptDataAppender?: ScriptDataAppender;
|
|
15
|
+
platform?: string;
|
|
16
|
+
elementGetter: ElementGetter;
|
|
17
|
+
returnTypeVariableName?: string;
|
|
18
|
+
}
|
|
@@ -3,7 +3,7 @@ import { ShadowIframeResult } from "../interfaces/automationRunnerInterface.js";
|
|
|
3
3
|
export { ShadowIframeResult };
|
|
4
4
|
export declare function generateUniqueName(currentName: string | undefined, usedNames: string[]): string | undefined;
|
|
5
5
|
export declare function normalizeSvgSelector(selector: string): string;
|
|
6
|
-
export declare function resolveElementSelector(doc: any, domInfo: any, fireflinkIndex: string, platform: PlatformType, driver: any): Promise<{
|
|
6
|
+
export declare function resolveElementSelector(doc: any, domInfo: any, fireflinkIndex: string, platform: PlatformType, driver: any, fallbackAttempt: number, driverContext?: any): Promise<{
|
|
7
7
|
selector: string;
|
|
8
8
|
doc: any;
|
|
9
9
|
domInfo: any;
|
|
@@ -31,11 +31,11 @@ function normalizeSvgSelector(selector) {
|
|
|
31
31
|
}
|
|
32
32
|
return selector;
|
|
33
33
|
}
|
|
34
|
-
async function resolveElementSelector(doc, domInfo, fireflinkIndex, platform, driver) {
|
|
34
|
+
async function resolveElementSelector(doc, domInfo, fireflinkIndex, platform, driver, fallbackAttempt, driverContext) {
|
|
35
35
|
let selector;
|
|
36
36
|
let updatedDoc = doc;
|
|
37
37
|
let updatedDomInfo = domInfo;
|
|
38
|
-
if (platform === "web") {
|
|
38
|
+
if (platform === "web" || (driverContext && fallbackAttempt > 1)) {
|
|
39
39
|
if (!updatedDoc) {
|
|
40
40
|
logData_js_1.logger.info("doc is undefined. Rebuilding document from domInfo.");
|
|
41
41
|
if (!updatedDomInfo || !updatedDomInfo.dom) {
|
|
@@ -57,6 +57,7 @@ async function resolveElementSelector(doc, domInfo, fireflinkIndex, platform, dr
|
|
|
57
57
|
selector = result.xpathPath;
|
|
58
58
|
}
|
|
59
59
|
selector = normalizeSvgSelector(selector);
|
|
60
|
+
selector = selector.replace(/\/div\[0\]\/div\[0\]/g, "/div[1]").replace(/\/div\[0\]/g, "/div[1]");
|
|
60
61
|
return { selector, doc: updatedDoc, domInfo: updatedDomInfo };
|
|
61
62
|
}
|
|
62
63
|
async function handleShadowAndIframe(driver, stepAction, selector, fireflinkIndex, domInfo, actionHandlers, elementName, elementType) {
|
|
@@ -4,6 +4,6 @@ import { DomCaptureResult, DomProcessResult } from "../interfaces/automationRunn
|
|
|
4
4
|
export { DomCaptureResult, DomProcessResult };
|
|
5
5
|
export declare class RunnerDomPipeline {
|
|
6
6
|
static parseDomDocument(domHtml: string, platform: PlatformType): any;
|
|
7
|
-
static captureAndParseDom(driver: any, platform: PlatformType, stepCount: number, action: string, isRetry?: boolean): Promise<DomCaptureResult>;
|
|
8
|
-
static processRelevantDom(domProcessor: DomProcessingEngine, domInfo: any, keywords: any, stepCount: number, action: string, currentStep: string, platform: PlatformType, driver: any, isRetry?: boolean): Promise<DomProcessResult>;
|
|
7
|
+
static captureAndParseDom(driver: any, platform: PlatformType, stepCount: number, action: string, isRetry?: boolean, driverContext?: any): Promise<DomCaptureResult>;
|
|
8
|
+
static processRelevantDom(domProcessor: DomProcessingEngine, domInfo: any, keywords: any, stepCount: number, action: string, currentStep: string, platform: PlatformType, driver: any, isRetry?: boolean, driverContext?: any): Promise<DomProcessResult>;
|
|
9
9
|
}
|
|
@@ -19,7 +19,7 @@ class RunnerDomPipeline {
|
|
|
19
19
|
return parser.window.document;
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
|
-
static async captureAndParseDom(driver, platform, stepCount, action, isRetry = false) {
|
|
22
|
+
static async captureAndParseDom(driver, platform, stepCount, action, isRetry = false, driverContext) {
|
|
23
23
|
try {
|
|
24
24
|
let domInfo;
|
|
25
25
|
let doc;
|
|
@@ -32,12 +32,23 @@ class RunnerDomPipeline {
|
|
|
32
32
|
doc = RunnerDomPipeline.parseDomDocument(domInfo.dom, "web");
|
|
33
33
|
}
|
|
34
34
|
else {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
35
|
+
if (driverContext) {
|
|
36
|
+
await driver.switchContext(driverContext);
|
|
37
|
+
domInfo = await (0, jsForAttributeInjection_js_1.getAnnotatedDOM)(driver);
|
|
38
|
+
const fileName = isRetry
|
|
39
|
+
? `annotated-dom-retry-webview-${stepCount}`
|
|
40
|
+
: `annotated-dom-${stepCount}`;
|
|
41
|
+
logData_js_1.logger.saveDOM(domInfo.dom, fileName);
|
|
42
|
+
doc = RunnerDomPipeline.parseDomDocument(domInfo.dom, "web");
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
domInfo = await (0, jsForAttributeInjection_js_1.getAnnotatedDOMForMobile)(driver);
|
|
46
|
+
const fileName = isRetry
|
|
47
|
+
? `annotated-dom-Mob-retry-${stepCount}`
|
|
48
|
+
: `annotated-dom-Mob-${stepCount}`;
|
|
49
|
+
logData_js_1.logger.saveDOM(domInfo.dom, fileName);
|
|
50
|
+
doc = RunnerDomPipeline.parseDomDocument(domInfo.dom, platform);
|
|
51
|
+
}
|
|
41
52
|
}
|
|
42
53
|
return { domInfo, doc };
|
|
43
54
|
}
|
|
@@ -48,11 +59,11 @@ class RunnerDomPipeline {
|
|
|
48
59
|
throw error;
|
|
49
60
|
}
|
|
50
61
|
}
|
|
51
|
-
static async processRelevantDom(domProcessor, domInfo, keywords, stepCount, action, currentStep, platform, driver, isRetry = false) {
|
|
62
|
+
static async processRelevantDom(domProcessor, domInfo, keywords, stepCount, action, currentStep, platform, driver, isRetry = false, driverContext) {
|
|
52
63
|
try {
|
|
53
64
|
let extractedRelevantDom;
|
|
54
65
|
let toonDom;
|
|
55
|
-
if (platform === "web") {
|
|
66
|
+
if (platform === "web" || driverContext) {
|
|
56
67
|
extractedRelevantDom = await domProcessor.webProcess({
|
|
57
68
|
keywords: keywords,
|
|
58
69
|
rawDom: domInfo?.dom,
|
|
@@ -10,7 +10,7 @@ const runnerPostActionHelper_js_1 = require("./runnerPostActionHelper.js");
|
|
|
10
10
|
const runnerDomPipeline_js_1 = require("./runnerDomPipeline.js");
|
|
11
11
|
const logData_js_1 = require("../../utils/logger/logData.js");
|
|
12
12
|
async function executeVisionFallback(params) {
|
|
13
|
-
const { driver, platform, action, step, stepAction, inputValue, stepCount, fallbackAttempt, priorAndNextSteps, listOfSteps, currentElementName, extractorElementName, stepElementType, iframeDomHtml, beforeHandles, context, stepProcessor, actionHandlers, reporter, causeError, } = params;
|
|
13
|
+
const { driver, platform, action, step, stepAction, inputValue, stepCount, fallbackAttempt, priorAndNextSteps, listOfSteps, currentElementName, extractorElementName, stepElementType, iframeDomHtml, beforeHandles, context, stepProcessor, actionHandlers, reporter, causeError, driverContext } = params;
|
|
14
14
|
let domInfo = params.domInfo;
|
|
15
15
|
let doc = params.doc;
|
|
16
16
|
logData_js_1.logger.error(`execution failed for step "${step}": ${causeError} and going for vision`);
|
|
@@ -20,7 +20,7 @@ async function executeVisionFallback(params) {
|
|
|
20
20
|
if (action === "scroll") {
|
|
21
21
|
throw new Error("Scroll action failed element not found", { cause: causeError });
|
|
22
22
|
}
|
|
23
|
-
if (platform === "web") {
|
|
23
|
+
if (platform === "web" || (driverContext && fallbackAttempt > 1)) {
|
|
24
24
|
annotatedScreenshot = await (0, generateAnnotatedScreenshots_js_1.generateAnnotatedScreenshots)(driver);
|
|
25
25
|
}
|
|
26
26
|
else {
|
|
@@ -36,7 +36,7 @@ async function executeVisionFallback(params) {
|
|
|
36
36
|
bounds = visionResult.boxes;
|
|
37
37
|
}
|
|
38
38
|
let stepResultVision;
|
|
39
|
-
if (platform === "web") {
|
|
39
|
+
if (platform === "web" || (driverContext && fallbackAttempt > 1)) {
|
|
40
40
|
stepResultVision = await stepProcessor.getLLMResponse({
|
|
41
41
|
platform,
|
|
42
42
|
type: promptType_js_1.PromptType.VISION_PROMPT,
|
|
@@ -73,7 +73,7 @@ async function executeVisionFallback(params) {
|
|
|
73
73
|
throw new Error(`vision unable to find element for step "${step}"`, { cause: causeError });
|
|
74
74
|
}
|
|
75
75
|
let xpath;
|
|
76
|
-
if (platform === "android" || platform === "ios") {
|
|
76
|
+
if ((platform === "android" || platform === "ios") && (driverContext && fallbackAttempt < 2)) {
|
|
77
77
|
const index = Number(fireflinkIndex.split("-").pop());
|
|
78
78
|
const box = bounds[index - 1];
|
|
79
79
|
if (!box) {
|
|
@@ -348,5 +348,7 @@ export interface IActionExecutor {
|
|
|
348
348
|
otp: string;
|
|
349
349
|
regex: string;
|
|
350
350
|
} | null>, returnTypeVariableName?: string): Promise<void>;
|
|
351
|
+
verifyPDF(value: string): Promise<void>;
|
|
352
|
+
arithmetic(result: any): Promise<void>;
|
|
351
353
|
setStepContext?(stepIndex?: any, currentStep?: string, stepsInputData?: any[], manualStep?: string, returnTypeVariableName?: string, variableName?: string): void;
|
|
352
354
|
}
|
|
@@ -1481,6 +1481,9 @@ function createActionHandlers(context) {
|
|
|
1481
1481
|
const isDownload = result?.isDownload ?? true;
|
|
1482
1482
|
const filePath = result?.path ?? null;
|
|
1483
1483
|
await executor.verifyPDF(expectedText, isDownload, filePath);
|
|
1484
|
+
}),
|
|
1485
|
+
arithmetic: withExecutor(async (executor, result) => {
|
|
1486
|
+
await executor.arithmetic(result);
|
|
1484
1487
|
})
|
|
1485
1488
|
};
|
|
1486
1489
|
}
|