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.
Files changed (204) hide show
  1. package/dist/ai/llmprompts/llmPromptTypes/systemPromptTypes.d.ts +3 -0
  2. package/dist/ai/llmprompts/promptRegistry.js +4 -0
  3. package/dist/ai/llmprompts/systemPrompts/actionExtractorPrompt.js +16 -12
  4. package/dist/ai/llmprompts/systemPrompts/arithmeticPrompt.d.ts +2 -0
  5. package/dist/ai/llmprompts/systemPrompts/arithmeticPrompt.js +48 -0
  6. package/dist/ai/llmprompts/systemPrompts/getActionExtractorPrompt.js +1 -1
  7. package/dist/ai/llmprompts/systemPrompts/getActionExtractorPromptMob.js +1 -1
  8. package/dist/ai/llmprompts/systemPrompts/inputContextPrompt.js +2 -0
  9. package/dist/ai/llmprompts/systemPrompts/mobileKeywordExtractor.js +2 -2
  10. package/dist/ai/llmprompts/userPrompts/userPrompt.js +1 -0
  11. package/dist/automation/actions/executor.d.ts +1 -0
  12. package/dist/automation/actions/executor.js +25 -0
  13. package/dist/automation/actions/interaction/alert/enterDataToAlert.js +2 -2
  14. package/dist/automation/actions/interaction/alert/getTextPresentOnAlertPopup.js +2 -2
  15. package/dist/automation/actions/interaction/arithmetic/arithmeticOperations.d.ts +2 -0
  16. package/dist/automation/actions/interaction/arithmetic/arithmeticOperations.js +61 -0
  17. package/dist/automation/actions/interaction/clear/clear.js +4 -1
  18. package/dist/automation/actions/interaction/clear/clearAndEnter.js +7 -4
  19. package/dist/automation/actions/interaction/elementlessActions/getOtp.js +7 -7
  20. package/dist/automation/actions/interaction/enterActions/EnterInputIntoElementFromClipBoardInterface_mob.js +6 -3
  21. package/dist/automation/actions/interaction/enterActions/enterInput.js +8 -5
  22. package/dist/automation/actions/interaction/enterActions/enterInputAndPress.js +7 -4
  23. package/dist/automation/actions/interaction/enterActions/enterUrl.js +3 -3
  24. package/dist/automation/actions/interaction/enterActions/enterusingJs.js +2 -2
  25. package/dist/automation/actions/interaction/enterActions/waitAndEnter.js +7 -4
  26. package/dist/automation/actions/interaction/get/MOB_GetADBLogsForGivenAppPackage.js +2 -2
  27. package/dist/automation/actions/interaction/get/MOB_GetAllContexts.js +2 -2
  28. package/dist/automation/actions/interaction/get/MOB_GetAllWindowHandles.js +3 -3
  29. package/dist/automation/actions/interaction/get/MOB_GetAltitude.js +2 -2
  30. package/dist/automation/actions/interaction/get/MOB_GetBatteryPercentage.js +2 -2
  31. package/dist/automation/actions/interaction/get/MOB_GetBatteryStatus.js +2 -2
  32. package/dist/automation/actions/interaction/get/MOB_GetClipBoardText.js +2 -2
  33. package/dist/automation/actions/interaction/get/MOB_GetCurrentActivity.js +2 -2
  34. package/dist/automation/actions/interaction/get/MOB_GetCurrentAppPackage.js +2 -2
  35. package/dist/automation/actions/interaction/get/MOB_GetCurrentContext.js +2 -2
  36. package/dist/automation/actions/interaction/get/MOB_GetCurrentDeviceDate.js +2 -2
  37. package/dist/automation/actions/interaction/get/MOB_GetCurrentDeviceSettings.js +2 -2
  38. package/dist/automation/actions/interaction/get/MOB_GetCurrentDeviceStatus.js +2 -2
  39. package/dist/automation/actions/interaction/get/MOB_GetCurrentDeviceSystemBars.js +2 -2
  40. package/dist/automation/actions/interaction/get/MOB_GetCurrentDeviceTime.js +2 -2
  41. package/dist/automation/actions/interaction/get/MOB_GetCurrentOrientation.js +2 -2
  42. package/dist/automation/actions/interaction/get/MOB_GetCurrentSessionId.js +2 -2
  43. package/dist/automation/actions/interaction/get/MOB_GetDeviceLocation.js +2 -2
  44. package/dist/automation/actions/interaction/get/MOB_GetDeviceName.js +2 -2
  45. package/dist/automation/actions/interaction/get/MOB_GetDeviceOsVersion.js +2 -2
  46. package/dist/automation/actions/interaction/get/MOB_GetDeviceUdid.js +2 -2
  47. package/dist/automation/actions/interaction/get/MOB_GetHeightOfElement.js +2 -2
  48. package/dist/automation/actions/interaction/get/MOB_GetHeightOfScreen.js +2 -2
  49. package/dist/automation/actions/interaction/get/MOB_GetHourFromCurrentDeviceTime.js +2 -2
  50. package/dist/automation/actions/interaction/get/MOB_GetLatitude.js +2 -2
  51. package/dist/automation/actions/interaction/get/MOB_GetLongitude.js +2 -2
  52. package/dist/automation/actions/interaction/get/MOB_GetMinuteFromCurrentDeviceTime.js +2 -2
  53. package/dist/automation/actions/interaction/get/MOB_GetSecondFromCurrentDeviceTime.js +2 -2
  54. package/dist/automation/actions/interaction/get/MOB_GetSizeOfScreen.js +2 -2
  55. package/dist/automation/actions/interaction/get/MOB_GetSupportedPerformanceDataTypes.js +2 -2
  56. package/dist/automation/actions/interaction/get/MOB_GetTextFromElementAndSetToClipBoard.js +2 -2
  57. package/dist/automation/actions/interaction/get/MOB_GetWidthOfElement.js +2 -2
  58. package/dist/automation/actions/interaction/get/MOB_GetWidthOfScreen.js +2 -2
  59. package/dist/automation/actions/interaction/get/browserWindowGetPosition.js +2 -2
  60. package/dist/automation/actions/interaction/get/getAllBrokenImages.js +2 -2
  61. package/dist/automation/actions/interaction/get/getAllBrokenLinkCount.js +2 -2
  62. package/dist/automation/actions/interaction/get/getAllBrokenLinks.js +2 -2
  63. package/dist/automation/actions/interaction/get/getAllConsoleErrors.js +2 -2
  64. package/dist/automation/actions/interaction/get/getAllConsoleInformation.js +2 -2
  65. package/dist/automation/actions/interaction/get/getAllConsoleLogs.js +2 -2
  66. package/dist/automation/actions/interaction/get/getAllConsoleWarnings.js +2 -2
  67. package/dist/automation/actions/interaction/get/getAllCookieNames.js +2 -2
  68. package/dist/automation/actions/interaction/get/getAllCookieValues.js +2 -2
  69. package/dist/automation/actions/interaction/get/getAllSelectedOptions.js +2 -2
  70. package/dist/automation/actions/interaction/get/getAllTheOptionsFromListBoxAsText.js +2 -2
  71. package/dist/automation/actions/interaction/get/getAllTheOptionsFromListBoxAsTextInSortedOrder.js +2 -2
  72. package/dist/automation/actions/interaction/get/getAllTheSelectedOptionsFromListBoxAsText.js +2 -2
  73. package/dist/automation/actions/interaction/get/getAllWindowHandles.js +2 -2
  74. package/dist/automation/actions/interaction/get/getAttribute.js +3 -3
  75. package/dist/automation/actions/interaction/get/getAudioCurrentPlaybackRate.js +2 -2
  76. package/dist/automation/actions/interaction/get/getAudioCurrentSeekTime.js +2 -2
  77. package/dist/automation/actions/interaction/get/getAudioCurrentVolume.js +2 -2
  78. package/dist/automation/actions/interaction/get/getAudioDecodedByte.js +2 -2
  79. package/dist/automation/actions/interaction/get/getAudioDefaultPlaybackRate.js +2 -2
  80. package/dist/automation/actions/interaction/get/getAudioMediaLength.js +2 -2
  81. package/dist/automation/actions/interaction/get/getAudioMediaSource.js +2 -2
  82. package/dist/automation/actions/interaction/get/getBestPracticesScore.js +2 -2
  83. package/dist/automation/actions/interaction/get/getBrowserCount.js +2 -2
  84. package/dist/automation/actions/interaction/get/getBrowserVersion.js +2 -2
  85. package/dist/automation/actions/interaction/get/getCapabilityNames.js +2 -2
  86. package/dist/automation/actions/interaction/get/getClipBoardText.js +2 -2
  87. package/dist/automation/actions/interaction/get/getCollectiveApiResponseTime.js +2 -2
  88. package/dist/automation/actions/interaction/get/getCollectiveApiStatusCode.js +2 -2
  89. package/dist/automation/actions/interaction/get/getCssValue.js +2 -2
  90. package/dist/automation/actions/interaction/get/getCurrentDayOfTheWeek.js +2 -2
  91. package/dist/automation/actions/interaction/get/getCurrentSecondsFromCurrentSystemTime.js +2 -2
  92. package/dist/automation/actions/interaction/get/getCurrentSystemDate.js +2 -2
  93. package/dist/automation/actions/interaction/get/getCurrentSystemDay.js +2 -2
  94. package/dist/automation/actions/interaction/get/getCurrentSystemMonth.js +2 -2
  95. package/dist/automation/actions/interaction/get/getCurrentSystemTime.js +2 -2
  96. package/dist/automation/actions/interaction/get/getCurrentSystemYear.js +2 -2
  97. package/dist/automation/actions/interaction/get/getCurrentWindowHandle.js +2 -2
  98. package/dist/automation/actions/interaction/get/getDataFromApiRequestHeaderForJsonPath.js +2 -2
  99. package/dist/automation/actions/interaction/get/getDataFromApiResponseForJsonPath.js +2 -2
  100. package/dist/automation/actions/interaction/get/getDateWithGivenFormat.js +2 -2
  101. package/dist/automation/actions/interaction/get/getDriverInstance.js +2 -2
  102. package/dist/automation/actions/interaction/get/getFirstContentfulPaint.js +2 -2
  103. package/dist/automation/actions/interaction/get/getFirstSelectedOption.js +2 -2
  104. package/dist/automation/actions/interaction/get/getFullPaintTime.js +2 -2
  105. package/dist/automation/actions/interaction/get/getHTMLCodeOfPage.js +2 -2
  106. package/dist/automation/actions/interaction/get/getHeightOfBrowserWindow.js +2 -2
  107. package/dist/automation/actions/interaction/get/getHeightOfWebElement.js +2 -2
  108. package/dist/automation/actions/interaction/get/getHourFromCurrentSystemTime.js +2 -2
  109. package/dist/automation/actions/interaction/get/getImplicitTimeOut.js +2 -2
  110. package/dist/automation/actions/interaction/get/getLargestContentfulPaint.js +2 -2
  111. package/dist/automation/actions/interaction/get/getListBoxSize.js +2 -2
  112. package/dist/automation/actions/interaction/get/getListOfElementsFromLocatorTypeLocatorValue.js +3 -3
  113. package/dist/automation/actions/interaction/get/getLocation.js +3 -3
  114. package/dist/automation/actions/interaction/get/getMinuteFromCurrentSystemTime.js +2 -2
  115. package/dist/automation/actions/interaction/get/getNetworkRouteTime.js +2 -2
  116. package/dist/automation/actions/interaction/get/getNumberOfBrokenImages.js +2 -2
  117. package/dist/automation/actions/interaction/get/getNumberOfLinksPresentInCurrentPage.js +2 -2
  118. package/dist/automation/actions/interaction/get/getNumberOfWorkingLinksFromCurrentPage.js +2 -2
  119. package/dist/automation/actions/interaction/get/getOptions.js +2 -2
  120. package/dist/automation/actions/interaction/get/getPageTitle.js +2 -2
  121. package/dist/automation/actions/interaction/get/getPerformanceMetrics.js +2 -2
  122. package/dist/automation/actions/interaction/get/getPwaScore.js +2 -2
  123. package/dist/automation/actions/interaction/get/getRect.js +3 -3
  124. package/dist/automation/actions/interaction/get/getScreenshot.js +2 -2
  125. package/dist/automation/actions/interaction/get/getScreenshotAs.js +2 -2
  126. package/dist/automation/actions/interaction/get/getSeoScore.js +2 -2
  127. package/dist/automation/actions/interaction/get/getSingleApiRequestPayload.js +2 -2
  128. package/dist/automation/actions/interaction/get/getSingleApiResponse.js +2 -2
  129. package/dist/automation/actions/interaction/get/getSingleApiResponseTime.js +2 -2
  130. package/dist/automation/actions/interaction/get/getSingleApiStatusCode.js +2 -2
  131. package/dist/automation/actions/interaction/get/getSize.js +3 -3
  132. package/dist/automation/actions/interaction/get/getSizeOfBrowserWindow.js +2 -2
  133. package/dist/automation/actions/interaction/get/getStringDataFromLocalFile.js +2 -2
  134. package/dist/automation/actions/interaction/get/getSystemProperty.js +2 -2
  135. package/dist/automation/actions/interaction/get/getTagName.js +3 -3
  136. package/dist/automation/actions/interaction/get/getText.js +12 -5
  137. package/dist/automation/actions/interaction/get/getTheFirstSelectedOptionFromListBoxAsText.js +2 -2
  138. package/dist/automation/actions/interaction/get/getTotalNumberOfCookies.js +2 -2
  139. package/dist/automation/actions/interaction/get/getTunnelIdentifier.js +2 -2
  140. package/dist/automation/actions/interaction/get/getURLPresentInAddressBar.js +2 -2
  141. package/dist/automation/actions/interaction/get/getUserHomeDirectory.js +2 -2
  142. package/dist/automation/actions/interaction/get/getValueByCookieName.js +2 -2
  143. package/dist/automation/actions/interaction/get/getValueFromLocalStorage.js +2 -2
  144. package/dist/automation/actions/interaction/get/getValueOfSystemVariable.js +2 -2
  145. package/dist/automation/actions/interaction/get/getVideoCurrentPlaybackRate.js +2 -2
  146. package/dist/automation/actions/interaction/get/getVideoCurrentSeekTime.js +2 -2
  147. package/dist/automation/actions/interaction/get/getVideoCurrentVolume.js +2 -2
  148. package/dist/automation/actions/interaction/get/getVideoDecodedByte.js +2 -2
  149. package/dist/automation/actions/interaction/get/getVideoDefaultPlaybackRate.js +2 -2
  150. package/dist/automation/actions/interaction/get/getVideoMediaLength.js +2 -2
  151. package/dist/automation/actions/interaction/get/getVideoMediaSource.js +2 -2
  152. package/dist/automation/actions/interaction/get/getWidthOfBrowser.js +2 -2
  153. package/dist/automation/actions/interaction/get/getWidthOfWebElement.js +2 -2
  154. package/dist/automation/actions/interaction/get/getWorkingLinksFromCurrentPage.js +2 -2
  155. package/dist/automation/actions/interaction/get/getWrappedElement.js +2 -2
  156. package/dist/automation/actions/interaction/get/getWrappedOptionFromListBoxAsText.js +2 -2
  157. package/dist/automation/actions/interaction/get/getXLocationOfBrowserWindow.js +2 -2
  158. package/dist/automation/actions/interaction/get/getXLocationOfWebElement.js +3 -3
  159. package/dist/automation/actions/interaction/get/getYLocationOfBrowserWindow.js +2 -2
  160. package/dist/automation/actions/interaction/get/getYLocationOfWebElement.js +3 -3
  161. package/dist/automation/actions/interaction/iframe/switchToDefaultContent.js +1 -1
  162. package/dist/automation/actions/interaction/shadowDom/shadowDomEnter.js +2 -2
  163. package/dist/automation/actions/interaction/shadowDom/shadowDomGetText.js +2 -2
  164. package/dist/automation/actions/interaction/verify/VerifyElementNotContainsText.js +4 -1
  165. package/dist/automation/actions/interaction/verify/verifypartialtext.js +9 -2
  166. package/dist/automation/actions/interaction/verify/verifytext.js +9 -2
  167. package/dist/automation/actions/interface/FireFlinkResponseSchema.d.ts +13 -0
  168. package/dist/automation/actions/interface/FireFlinkResponseSchema.js +10 -1
  169. package/dist/automation/actions/interface/arithmeticActionInterface.d.ts +18 -0
  170. package/dist/automation/actions/interface/arithmeticActionInterface.js +2 -0
  171. package/dist/core/constants/allAction.js +2 -1
  172. package/dist/core/constants/supportedActions.js +2 -1
  173. package/dist/core/helpers/elementSelectorResolver.d.ts +1 -1
  174. package/dist/core/helpers/elementSelectorResolver.js +3 -2
  175. package/dist/core/helpers/runnerDomPipeline.d.ts +2 -2
  176. package/dist/core/helpers/runnerDomPipeline.js +20 -9
  177. package/dist/core/helpers/visionFallbackHandler.js +4 -4
  178. package/dist/core/interfaces/actionInterface.d.ts +2 -0
  179. package/dist/core/interfaces/automationRunnerInterface.d.ts +1 -0
  180. package/dist/core/interfaces/promptInterface.d.ts +3 -0
  181. package/dist/core/main/actionHandlerFactory.js +3 -0
  182. package/dist/core/main/runAutomationScript.js +53 -8
  183. package/dist/core/types/promptType.d.ts +2 -1
  184. package/dist/core/types/promptType.js +1 -0
  185. package/dist/fireflinkData/fireflinkLocators/getListOfLocators.d.ts +2 -1
  186. package/dist/fireflinkData/fireflinkLocators/getListOfLocators.js +2 -2
  187. package/dist/fireflinkData/fireflinkScript/appendScriptData.js +42 -6
  188. package/dist/fireflinkData/fireflinkScript/scriptGenrationData.d.ts +1 -0
  189. package/dist/fireflinkData/fireflinkScript/scriptGenrationData.js +1 -0
  190. package/dist/imageAnalysisWeb/annotateScreenshot.d.ts +1 -1
  191. package/dist/imageAnalysisWeb/annotateScreenshot.js +24 -10
  192. package/dist/imageAnalysisWeb/generateAnnotatedScreenshots.js +5 -2
  193. package/dist/tests/senario.d.ts +0 -0
  194. package/dist/tests/senario.js +1120 -0
  195. package/dist/tests/test12.d.ts +1 -0
  196. package/dist/tests/test12.js +34 -65
  197. package/dist/utils/DomExtraction/jsForAttributeInjection.js +23 -0
  198. package/dist/utils/helpers/xpathcreation.js +3 -0
  199. package/dist/utils/iframesExtraction/findElementUsingFF.js +1 -2
  200. package/dist/utils/iframesExtraction/switchToIframeByMeta.js +1 -1
  201. package/dist/utils/workers/locatorWorker.js +3 -1
  202. package/package.json +1 -1
  203. /package/dist/utils/helpers/{getHelper.d.ts → saveStepInputData.d.ts} +0 -0
  204. /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 getHelper_js_1 = require("../../../../utils/helpers/getHelper.js");
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, getHelper_js_1.saveStepInputData)(args, _videoDuration);
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 getHelper_js_1 = require("../../../../utils/helpers/getHelper.js");
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, getHelper_js_1.saveStepInputData)(args, src);
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 getHelper_js_1 = require("../../../../utils/helpers/getHelper.js");
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, getHelper_js_1.saveStepInputData)(args, width);
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 getHelper_js_1 = require("../../../../utils/helpers/getHelper.js");
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, getHelper_js_1.saveStepInputData)(args, _size.width);
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 getHelper_js_1 = require("../../../../utils/helpers/getHelper.js");
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, getHelper_js_1.saveStepInputData)(args, workingLinks);
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 getHelper_js_1 = require("../../../../utils/helpers/getHelper.js");
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, getHelper_js_1.saveStepInputData)(args, res);
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 getHelper_js_1 = require("../../../../utils/helpers/getHelper.js");
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, getHelper_js_1.saveStepInputData)(args, optionTexts);
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 getHelper_js_1 = require("../../../../utils/helpers/getHelper.js");
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, getHelper_js_1.saveStepInputData)(args, position.x);
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 getHelper_js_1 = require("../../../../utils/helpers/getHelper.js");
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, getHelper_js_1.saveStepInputData)(args, _x);
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, getHelper_js_1.saveStepInputData)(args, _x);
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 getHelper_js_1 = require("../../../../utils/helpers/getHelper.js");
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, getHelper_js_1.saveStepInputData)(args, y);
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 getHelper_js_1 = require("../../../../utils/helpers/getHelper.js");
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, getHelper_js_1.saveStepInputData)(args, _y);
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, getHelper_js_1.saveStepInputData)(args, _y);
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.switchToFrame(null);
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 getHelper_js_1 = require("../../../../utils/helpers/getHelper.js");
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, getHelper_js_1.saveStepInputData)(args, args.value);
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 getHelper_js_1 = require("../../../../utils/helpers/getHelper.js");
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, getHelper_js_1.saveStepInputData)(args, text);
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 expected = await element.getAttribute("text");
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 attributeName = args.platform === "ios" ? "value" : "text";
14
- const actual = (await element.getAttribute(attributeName)) || "";
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 attributeName = args.platform === "ios" ? "value" : "text";
14
- const text = (await element.getAttribute(attributeName)) || "";
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
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -27,5 +27,6 @@ exports.allKeywordAction = [
27
27
  "switchToAndroid",
28
28
  "switchToWeb",
29
29
  "getOtp",
30
- "enterOtp"
30
+ "enterOtp",
31
+ "arithmetic"
31
32
  ];
@@ -230,5 +230,6 @@ exports.ELEMENTLESS_ACTION = [
230
230
  "MouseClickOnCurrentCursorPoint",
231
231
  "MouseDoubleClickAtCursorPoint",
232
232
  "MouseClickOnCurrentCursorPointNTimes",
233
- "getOtp"
233
+ "getOtp",
234
+ "arithmetic",
234
235
  ];
@@ -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
- domInfo = await (0, jsForAttributeInjection_js_1.getAnnotatedDOMForMobile)(driver);
36
- const fileName = isRetry
37
- ? `annotated-dom-Mob-retry-${stepCount}`
38
- : `annotated-dom-Mob-${stepCount}`;
39
- logData_js_1.logger.saveDOM(domInfo.dom, fileName);
40
- doc = RunnerDomPipeline.parseDomDocument(domInfo.dom, platform);
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
  }
@@ -52,6 +52,7 @@ export interface VisionFallbackParams {
52
52
  actionHandlers: Record<string, any>;
53
53
  reporter: RunnerKafkaReporter;
54
54
  causeError: any;
55
+ driverContext?: any;
55
56
  }
56
57
  export interface VisionFallbackResult {
57
58
  preCapturedDomInfo: any | null;
@@ -44,4 +44,7 @@ export interface PromptArgsMap {
44
44
  inputStepsContext: string[];
45
45
  priorAndNextSteps: string[];
46
46
  };
47
+ [PromptType.ARITHMETIC_PROMPT]: {
48
+ inputStepsContext: any[];
49
+ };
47
50
  }
@@ -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
  }