ff-automationv2 2.2.31 → 2.2.32-beta.1

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 (273) hide show
  1. package/dist/ai/llmprompts/llmPromptTypes/systemPromptTypes.d.ts +3 -0
  2. package/dist/ai/llmprompts/promptRegistry.js +10 -2
  3. package/dist/ai/llmprompts/systemPrompts/actionExtractorPrompt.js +83 -27
  4. package/dist/ai/llmprompts/systemPrompts/fileVerifyActionExtractorPrompt.d.ts +2 -0
  5. package/dist/ai/llmprompts/systemPrompts/fileVerifyActionExtractorPrompt.js +45 -0
  6. package/dist/ai/llmprompts/systemPrompts/fireflinkElementIndexExtactors.js +35 -0
  7. package/dist/ai/llmprompts/systemPrompts/fireflinkElementIndexExtractor_Mob.js +5 -2
  8. package/dist/ai/llmprompts/systemPrompts/getActionExtractorPrompt.js +4 -2
  9. package/dist/ai/llmprompts/systemPrompts/getActionExtractorPromptMob.js +3 -1
  10. package/dist/ai/llmprompts/systemPrompts/inputContextPrompt.d.ts +2 -0
  11. package/dist/ai/llmprompts/systemPrompts/inputContextPrompt.js +54 -0
  12. package/dist/ai/llmprompts/systemPrompts/mobileKeywordExtractor.js +53 -8
  13. package/dist/ai/llmprompts/systemPrompts/verifyActionExtractorPrompt.js +5 -4
  14. package/dist/ai/llmprompts/systemPrompts/verifyActionExtractorPromptMob.js +1 -1
  15. package/dist/ai/llmprompts/userPrompts/userPrompt.js +2 -0
  16. package/dist/automation/actions/executor.d.ts +14 -6
  17. package/dist/automation/actions/executor.js +970 -251
  18. package/dist/automation/actions/interaction/alert/enterDataToAlert.js +3 -1
  19. package/dist/automation/actions/interaction/alert/getTextPresentOnAlertPopup.js +4 -0
  20. package/dist/automation/actions/interaction/alert/verifyAlertPopUpMessageContainsString.js +1 -1
  21. package/dist/automation/actions/interaction/alert/verifyAlertPopupIsDisplayed.js +1 -1
  22. package/dist/automation/actions/interaction/alert/verifyTextPresentOnAlertPopup.js +1 -1
  23. package/dist/automation/actions/interaction/clear/clearAndEnter.js +6 -3
  24. package/dist/automation/actions/interaction/elementlessActions/getOtp.js +25 -24
  25. package/dist/automation/actions/interaction/enterActions/EnterInputIntoElementFromClipBoardInterface_mob.js +3 -1
  26. package/dist/automation/actions/interaction/enterActions/enterInput.js +5 -2
  27. package/dist/automation/actions/interaction/enterActions/enterInputAndPress.js +5 -2
  28. package/dist/automation/actions/interaction/enterActions/enterUrl.js +5 -2
  29. package/dist/automation/actions/interaction/enterActions/enterusingJs.js +3 -1
  30. package/dist/automation/actions/interaction/enterActions/waitAndEnter.js +5 -2
  31. package/dist/automation/actions/interaction/files/VerifyPDF.d.ts +2 -0
  32. package/dist/automation/actions/interaction/files/VerifyPDF.js +122 -0
  33. package/dist/automation/actions/interaction/get/MOB_GetADBLogsForGivenAppPackage.js +4 -1
  34. package/dist/automation/actions/interaction/get/MOB_GetAllContexts.js +5 -1
  35. package/dist/automation/actions/interaction/get/MOB_GetAllWindowHandles.d.ts +1 -1
  36. package/dist/automation/actions/interaction/get/MOB_GetAllWindowHandles.js +10 -6
  37. package/dist/automation/actions/interaction/get/MOB_GetAltitude.js +5 -1
  38. package/dist/automation/actions/interaction/get/MOB_GetBatteryPercentage.js +5 -1
  39. package/dist/automation/actions/interaction/get/MOB_GetBatteryStatus.d.ts +1 -1
  40. package/dist/automation/actions/interaction/get/MOB_GetBatteryStatus.js +7 -3
  41. package/dist/automation/actions/interaction/get/MOB_GetClipBoardText.js +5 -1
  42. package/dist/automation/actions/interaction/get/MOB_GetCurrentActivity.js +5 -1
  43. package/dist/automation/actions/interaction/get/MOB_GetCurrentAppPackage.js +5 -1
  44. package/dist/automation/actions/interaction/get/MOB_GetCurrentContext.js +5 -1
  45. package/dist/automation/actions/interaction/get/MOB_GetCurrentDeviceDate.js +5 -1
  46. package/dist/automation/actions/interaction/get/MOB_GetCurrentDeviceSettings.js +5 -1
  47. package/dist/automation/actions/interaction/get/MOB_GetCurrentDeviceStatus.js +5 -1
  48. package/dist/automation/actions/interaction/get/MOB_GetCurrentDeviceSystemBars.js +5 -2
  49. package/dist/automation/actions/interaction/get/MOB_GetCurrentDeviceTime.js +5 -1
  50. package/dist/automation/actions/interaction/get/MOB_GetCurrentOrientation.js +5 -1
  51. package/dist/automation/actions/interaction/get/MOB_GetCurrentSessionId.js +5 -1
  52. package/dist/automation/actions/interaction/get/MOB_GetDeviceLocation.js +5 -1
  53. package/dist/automation/actions/interaction/get/MOB_GetDeviceName.js +5 -1
  54. package/dist/automation/actions/interaction/get/MOB_GetDeviceOsVersion.js +5 -1
  55. package/dist/automation/actions/interaction/get/MOB_GetDeviceUdid.js +5 -1
  56. package/dist/automation/actions/interaction/get/MOB_GetHeightOfElement.js +5 -1
  57. package/dist/automation/actions/interaction/get/MOB_GetHeightOfScreen.js +4 -0
  58. package/dist/automation/actions/interaction/get/MOB_GetHourFromCurrentDeviceTime.js +5 -1
  59. package/dist/automation/actions/interaction/get/MOB_GetLatitude.js +5 -1
  60. package/dist/automation/actions/interaction/get/MOB_GetLongitude.js +5 -1
  61. package/dist/automation/actions/interaction/get/MOB_GetMinuteFromCurrentDeviceTime.js +5 -1
  62. package/dist/automation/actions/interaction/get/MOB_GetSecondFromCurrentDeviceTime.js +5 -1
  63. package/dist/automation/actions/interaction/get/MOB_GetSizeOfScreen.js +5 -1
  64. package/dist/automation/actions/interaction/get/MOB_GetSupportedPerformanceDataTypes.js +5 -1
  65. package/dist/automation/actions/interaction/get/MOB_GetTextFromElementAndSetToClipBoard.js +5 -1
  66. package/dist/automation/actions/interaction/get/MOB_GetWidthOfElement.js +5 -1
  67. package/dist/automation/actions/interaction/get/MOB_GetWidthOfScreen.js +5 -1
  68. package/dist/automation/actions/interaction/get/browserWindowGetPosition.js +5 -0
  69. package/dist/automation/actions/interaction/get/getAllBrokenImages.js +9 -0
  70. package/dist/automation/actions/interaction/get/getAllBrokenLinkCount.js +9 -0
  71. package/dist/automation/actions/interaction/get/getAllBrokenLinks.js +10 -1
  72. package/dist/automation/actions/interaction/get/getAllConsoleErrors.js +11 -0
  73. package/dist/automation/actions/interaction/get/getAllConsoleInformation.js +12 -1
  74. package/dist/automation/actions/interaction/get/getAllConsoleLogs.js +11 -1
  75. package/dist/automation/actions/interaction/get/getAllConsoleWarnings.js +12 -1
  76. package/dist/automation/actions/interaction/get/getAllCookieNames.js +6 -1
  77. package/dist/automation/actions/interaction/get/getAllCookieValues.js +6 -1
  78. package/dist/automation/actions/interaction/get/getAllSelectedOptions.js +8 -1
  79. package/dist/automation/actions/interaction/get/getAllTheOptionsFromListBoxAsText.js +4 -1
  80. package/dist/automation/actions/interaction/get/getAllTheOptionsFromListBoxAsTextInSortedOrder.js +4 -1
  81. package/dist/automation/actions/interaction/get/getAllTheSelectedOptionsFromListBoxAsText.js +4 -1
  82. package/dist/automation/actions/interaction/get/getAllWindowHandles.js +5 -1
  83. package/dist/automation/actions/interaction/get/getAttribute.js +19 -14
  84. package/dist/automation/actions/interaction/get/getAudioCurrentPlaybackRate.js +4 -1
  85. package/dist/automation/actions/interaction/get/getAudioCurrentSeekTime.js +4 -1
  86. package/dist/automation/actions/interaction/get/getAudioCurrentVolume.js +4 -1
  87. package/dist/automation/actions/interaction/get/getAudioDecodedByte.js +4 -1
  88. package/dist/automation/actions/interaction/get/getAudioDefaultPlaybackRate.js +4 -1
  89. package/dist/automation/actions/interaction/get/getAudioMediaLength.js +4 -1
  90. package/dist/automation/actions/interaction/get/getAudioMediaSource.js +4 -1
  91. package/dist/automation/actions/interaction/get/getBestPracticesScore.js +11 -3
  92. package/dist/automation/actions/interaction/get/getBrowserCount.js +5 -0
  93. package/dist/automation/actions/interaction/get/getBrowserVersion.js +5 -0
  94. package/dist/automation/actions/interaction/get/getCapabilityNames.js +5 -0
  95. package/dist/automation/actions/interaction/get/getClipBoardText.js +13 -0
  96. package/dist/automation/actions/interaction/get/getCollectiveApiResponseTime.js +4 -1
  97. package/dist/automation/actions/interaction/get/getCollectiveApiStatusCode.js +4 -1
  98. package/dist/automation/actions/interaction/get/getCssValue.js +5 -1
  99. package/dist/automation/actions/interaction/get/getCurrentDayOfTheWeek.js +4 -0
  100. package/dist/automation/actions/interaction/get/getCurrentSecondsFromCurrentSystemTime.js +5 -1
  101. package/dist/automation/actions/interaction/get/getCurrentSystemDate.js +4 -0
  102. package/dist/automation/actions/interaction/get/getCurrentSystemDay.js +5 -1
  103. package/dist/automation/actions/interaction/get/getCurrentSystemMonth.js +5 -1
  104. package/dist/automation/actions/interaction/get/getCurrentSystemTime.js +5 -1
  105. package/dist/automation/actions/interaction/get/getCurrentSystemYear.js +5 -1
  106. package/dist/automation/actions/interaction/get/getCurrentWindowHandle.js +13 -26
  107. package/dist/automation/actions/interaction/get/getDataFromApiRequestHeaderForJsonPath.js +5 -4
  108. package/dist/automation/actions/interaction/get/getDataFromApiResponseForJsonPath.js +5 -4
  109. package/dist/automation/actions/interaction/get/getDateWithGivenFormat.js +13 -16
  110. package/dist/automation/actions/interaction/get/getDriverInstance.js +13 -28
  111. package/dist/automation/actions/interaction/get/getFirstContentfulPaint.js +8 -1
  112. package/dist/automation/actions/interaction/get/getFirstSelectedOption.js +5 -1
  113. package/dist/automation/actions/interaction/get/getFullPaintTime.js +8 -1
  114. package/dist/automation/actions/interaction/get/getHTMLCodeOfPage.js +4 -0
  115. package/dist/automation/actions/interaction/get/getHeightOfBrowserWindow.js +5 -0
  116. package/dist/automation/actions/interaction/get/getHeightOfWebElement.js +4 -1
  117. package/dist/automation/actions/interaction/get/getHourFromCurrentSystemTime.js +4 -0
  118. package/dist/automation/actions/interaction/get/getImplicitTimeOut.js +15 -28
  119. package/dist/automation/actions/interaction/get/getLargestContentfulPaint.js +7 -0
  120. package/dist/automation/actions/interaction/get/getListBoxSize.d.ts +1 -1
  121. package/dist/automation/actions/interaction/get/getListBoxSize.js +4 -2
  122. package/dist/automation/actions/interaction/get/getListOfElementsFromLocatorTypeLocatorValue.js +7 -2
  123. package/dist/automation/actions/interaction/get/getLocation.js +14 -8
  124. package/dist/automation/actions/interaction/get/getMinuteFromCurrentSystemTime.js +4 -0
  125. package/dist/automation/actions/interaction/get/getNetworkRouteTime.js +7 -0
  126. package/dist/automation/actions/interaction/get/getNumberOfBrokenImages.js +7 -0
  127. package/dist/automation/actions/interaction/get/getNumberOfLinksPresentInCurrentPage.js +5 -0
  128. package/dist/automation/actions/interaction/get/getNumberOfWorkingLinksFromCurrentPage.js +9 -0
  129. package/dist/automation/actions/interaction/get/getOptions.js +4 -1
  130. package/dist/automation/actions/interaction/get/getPageTitle.js +5 -1
  131. package/dist/automation/actions/interaction/get/getPerformanceMetrics.js +12 -1
  132. package/dist/automation/actions/interaction/get/getPwaScore.js +11 -3
  133. package/dist/automation/actions/interaction/get/getRect.js +9 -2
  134. package/dist/automation/actions/interaction/get/getScreenshot.js +13 -28
  135. package/dist/automation/actions/interaction/get/getScreenshotAs.js +14 -44
  136. package/dist/automation/actions/interaction/get/getSeoScore.js +15 -3
  137. package/dist/automation/actions/interaction/get/getSingleApiRequestPayload.js +5 -3
  138. package/dist/automation/actions/interaction/get/getSingleApiResponse.js +9 -8
  139. package/dist/automation/actions/interaction/get/getSingleApiResponseTime.js +9 -9
  140. package/dist/automation/actions/interaction/get/getSingleApiStatusCode.d.ts +1 -1
  141. package/dist/automation/actions/interaction/get/getSingleApiStatusCode.js +10 -17
  142. package/dist/automation/actions/interaction/get/getSize.js +7 -2
  143. package/dist/automation/actions/interaction/get/getSizeOfBrowserWindow.js +5 -4
  144. package/dist/automation/actions/interaction/get/getStringDataFromLocalFile.js +10 -7
  145. package/dist/automation/actions/interaction/get/getSystemProperty.js +6 -4
  146. package/dist/automation/actions/interaction/get/getTagName.js +9 -2
  147. package/dist/automation/actions/interaction/get/getText.js +7 -2
  148. package/dist/automation/actions/interaction/get/getTheFirstSelectedOptionFromListBoxAsText.js +5 -1
  149. package/dist/automation/actions/interaction/get/getTotalNumberOfCookies.js +6 -1
  150. package/dist/automation/actions/interaction/get/getTunnelIdentifier.js +5 -8
  151. package/dist/automation/actions/interaction/get/getURLPresentInAddressBar.js +5 -1
  152. package/dist/automation/actions/interaction/get/getUserHomeDirectory.js +9 -1
  153. package/dist/automation/actions/interaction/get/getValueByCookieName.js +7 -4
  154. package/dist/automation/actions/interaction/get/getValueFromLocalStorage.js +6 -4
  155. package/dist/automation/actions/interaction/get/getValueOfSystemVariable.js +6 -4
  156. package/dist/automation/actions/interaction/get/getVideoCurrentPlaybackRate.js +4 -1
  157. package/dist/automation/actions/interaction/get/getVideoCurrentSeekTime.js +4 -1
  158. package/dist/automation/actions/interaction/get/getVideoCurrentVolume.js +4 -1
  159. package/dist/automation/actions/interaction/get/getVideoDecodedByte.js +4 -1
  160. package/dist/automation/actions/interaction/get/getVideoDefaultPlaybackRate.js +4 -1
  161. package/dist/automation/actions/interaction/get/getVideoMediaLength.js +4 -1
  162. package/dist/automation/actions/interaction/get/getVideoMediaSource.js +5 -1
  163. package/dist/automation/actions/interaction/get/getWidthOfBrowser.js +6 -1
  164. package/dist/automation/actions/interaction/get/getWidthOfWebElement.js +4 -1
  165. package/dist/automation/actions/interaction/get/getWorkingLinksFromCurrentPage.js +10 -1
  166. package/dist/automation/actions/interaction/get/getWrappedElement.js +5 -1
  167. package/dist/automation/actions/interaction/get/getWrappedOptionFromListBoxAsText.d.ts +1 -1
  168. package/dist/automation/actions/interaction/get/getWrappedOptionFromListBoxAsText.js +4 -2
  169. package/dist/automation/actions/interaction/get/getXLocationOfBrowserWindow.js +4 -3
  170. package/dist/automation/actions/interaction/get/getXLocationOfWebElement.js +7 -2
  171. package/dist/automation/actions/interaction/get/getYLocationOfBrowserWindow.js +6 -1
  172. package/dist/automation/actions/interaction/get/getYLocationOfWebElement.js +7 -2
  173. package/dist/automation/actions/interaction/shadowDom/shadowDomEnter.js +2 -0
  174. package/dist/automation/actions/interaction/shadowDom/shadowDomGetText.js +5 -2
  175. package/dist/automation/actions/interaction/verify/MOB_VerifyBatteryLevel.js +1 -1
  176. package/dist/automation/actions/interaction/verify/VerifyAttributeValue.js +2 -2
  177. package/dist/automation/actions/interaction/verify/VerifyBrowserHtmlCodeContainsString.js +1 -1
  178. package/dist/automation/actions/interaction/verify/VerifyBrowserWindowHeight.js +1 -1
  179. package/dist/automation/actions/interaction/verify/VerifyBrowserWindowTitleContainsString.js +1 -1
  180. package/dist/automation/actions/interaction/verify/VerifyBrowserWindowTitleIsString.js +1 -1
  181. package/dist/automation/actions/interaction/verify/VerifyBrowserWindowUrlContainsExpectedUrl.js +1 -1
  182. package/dist/automation/actions/interaction/verify/VerifyBrowserWindowUrlIsString.js +1 -1
  183. package/dist/automation/actions/interaction/verify/VerifyBrowserWindowWidth.js +1 -1
  184. package/dist/automation/actions/interaction/verify/VerifyBrowserWindowXLocation.js +1 -1
  185. package/dist/automation/actions/interaction/verify/VerifyBrowserWindowYLocation.js +1 -1
  186. package/dist/automation/actions/interaction/verify/VerifyCssAttributeValue.js +1 -1
  187. package/dist/automation/actions/interaction/verify/VerifyElementNotContainsText.js +2 -2
  188. package/dist/automation/actions/interaction/verify/VerifyHeightOfWebElement.js +2 -2
  189. package/dist/automation/actions/interaction/verify/VerifyHexCodeForGivenXYCoordinates.js +1 -1
  190. package/dist/automation/actions/interaction/verify/VerifyIfAllCookiesAreDeleted.js +1 -1
  191. package/dist/automation/actions/interaction/verify/VerifyIfCookieNameIsAdded.js +1 -1
  192. package/dist/automation/actions/interaction/verify/VerifyIfCookieNameIsDeleted.js +1 -1
  193. package/dist/automation/actions/interaction/verify/VerifyIfCookieObjectIsPresent.js +1 -1
  194. package/dist/automation/actions/interaction/verify/VerifyIfGivenOptionIsDuplicate.js +1 -1
  195. package/dist/automation/actions/interaction/verify/VerifyIfImageIsBroken.js +1 -1
  196. package/dist/automation/actions/interaction/verify/VerifyIfLinkIsBroken.js +1 -1
  197. package/dist/automation/actions/interaction/verify/VerifyIfLinkIsWorking.js +1 -1
  198. package/dist/automation/actions/interaction/verify/VerifyIfLinksAreBroken.js +1 -1
  199. package/dist/automation/actions/interaction/verify/VerifyIfLinksAreWorking.js +1 -1
  200. package/dist/automation/actions/interaction/verify/VerifyIfOptionWithTextIsDeselected.js +1 -1
  201. package/dist/automation/actions/interaction/verify/VerifyIfOptionWithValueIsDeselected.js +1 -1
  202. package/dist/automation/actions/interaction/verify/VerifyIfOptionWithValueIsSelected.js +1 -1
  203. package/dist/automation/actions/interaction/verify/VerifyIfOptionWithVisibleTextIsSelected.js +1 -1
  204. package/dist/automation/actions/interaction/verify/VerifyIfSpecifiedOptionIsSelected.js +1 -1
  205. package/dist/automation/actions/interaction/verify/VerifyNavigateURL.js +1 -1
  206. package/dist/automation/actions/interaction/verify/VerifyPartialAttributeValue.js +2 -2
  207. package/dist/automation/actions/interaction/verify/VerifyPartialTitleOfCurrentPage.js +1 -1
  208. package/dist/automation/actions/interaction/verify/VerifyTagName.js +1 -1
  209. package/dist/automation/actions/interaction/verify/VerifyThatSpecifiedOptionIsNotSelected.js +1 -1
  210. package/dist/automation/actions/interaction/verify/VerifyTitleInAllPage.js +1 -1
  211. package/dist/automation/actions/interaction/verify/VerifyTitleOfCurrentPage.js +1 -1
  212. package/dist/automation/actions/interaction/verify/VerifyValueOfElementContainsString.js +1 -1
  213. package/dist/automation/actions/interaction/verify/VerifyValueOfElementIsString.js +1 -1
  214. package/dist/automation/actions/interaction/verify/VerifyWidthOfElement.js +2 -2
  215. package/dist/automation/actions/interaction/verify/VerifyXLocationOfElement.js +2 -2
  216. package/dist/automation/actions/interaction/verify/VerifyYLocationOfElement.js +2 -2
  217. package/dist/automation/actions/interaction/verify/checkIfElementIsDisplayed.js +2 -2
  218. package/dist/automation/actions/interaction/verify/verifypartialtext.js +2 -2
  219. package/dist/automation/actions/interaction/verify/verifytext.js +2 -2
  220. package/dist/automation/actions/interface/FireFlinkResponseSchema.d.ts +39 -1
  221. package/dist/automation/actions/interface/FireFlinkResponseSchema.js +37 -3
  222. package/dist/automation/actions/interface/alertActionInterface.d.ts +11 -0
  223. package/dist/automation/actions/interface/clearActionInterface.d.ts +4 -0
  224. package/dist/automation/actions/interface/getActionInterface.d.ts +150 -141
  225. package/dist/automation/actions/interface/getOtpInterface.d.ts +5 -0
  226. package/dist/automation/actions/interface/interactionActionInterface.d.ts +14 -7
  227. package/dist/automation/actions/interface/shadowDomInterface.d.ts +10 -0
  228. package/dist/automation/actions/interface/verifyActionInterface.d.ts +102 -0
  229. package/dist/core/Errors/InvalidFileTypeError.d.ts +5 -0
  230. package/dist/core/Errors/InvalidFileTypeError.js +14 -0
  231. package/dist/core/constants/supportedActions.js +5 -0
  232. package/dist/core/helpers/elementSelectorResolver.d.ts +11 -0
  233. package/dist/core/helpers/elementSelectorResolver.js +102 -0
  234. package/dist/core/helpers/runnerDomPipeline.d.ts +9 -0
  235. package/dist/core/helpers/runnerDomPipeline.js +97 -0
  236. package/dist/core/helpers/runnerKafkaReporter.d.ts +17 -0
  237. package/dist/core/helpers/runnerKafkaReporter.js +71 -0
  238. package/dist/core/helpers/runnerPostActionHelper.d.ts +2 -0
  239. package/dist/core/helpers/runnerPostActionHelper.js +30 -0
  240. package/dist/core/helpers/stepActionInspector.d.ts +5 -0
  241. package/dist/core/helpers/stepActionInspector.js +113 -0
  242. package/dist/core/helpers/visionFallbackHandler.d.ts +3 -0
  243. package/dist/core/helpers/visionFallbackHandler.js +138 -0
  244. package/dist/core/interfaces/actionInterface.d.ts +7 -5
  245. package/dist/core/interfaces/automationRunnerInterface.d.ts +56 -1
  246. package/dist/core/interfaces/fireflinkScriptPayloadInterface.d.ts +2 -0
  247. package/dist/core/interfaces/llmResponseInterface.d.ts +5 -0
  248. package/dist/core/interfaces/promptInterface.d.ts +9 -2
  249. package/dist/core/interfaces/scriptGenrationDataInterface.d.ts +4 -0
  250. package/dist/core/main/actionHandlerFactory.js +48 -7
  251. package/dist/core/main/executionContext.d.ts +2 -1
  252. package/dist/core/main/executionContext.js +3 -2
  253. package/dist/core/main/runAutomationScript.d.ts +1 -0
  254. package/dist/core/main/runAutomationScript.js +392 -1008
  255. package/dist/core/types/llmResponseType.d.ts +2 -2
  256. package/dist/core/types/promptType.d.ts +3 -1
  257. package/dist/core/types/promptType.js +2 -0
  258. package/dist/fireflinkData/fireflinkScript/appendScriptData.js +3 -0
  259. package/dist/utils/browserCap/capability.js +11 -0
  260. package/dist/utils/browserCap/systemCapabilities.d.ts +6 -0
  261. package/dist/utils/browserCap/systemCapabilities.js +25 -0
  262. package/dist/utils/downloadWatcher/pdfDownloadWatcher.d.ts +8 -0
  263. package/dist/utils/downloadWatcher/pdfDownloadWatcher.js +61 -0
  264. package/dist/utils/helpers/getHelper.d.ts +8 -0
  265. package/dist/utils/helpers/getHelper.js +115 -0
  266. package/dist/utils/helpers/platformSyntax.d.ts +1 -1
  267. package/dist/utils/logger/logData.d.ts +2 -0
  268. package/dist/utils/logger/logData.js +4 -1
  269. package/dist/utils/textExtractor/pdfTextExtractor.d.ts +2 -0
  270. package/dist/utils/textExtractor/pdfTextExtractor.js +35 -0
  271. package/package.json +2 -1
  272. package/dist/ai/llmprompts/systemPrompts/combinedActionExtractorPrompt.d.ts +0 -2
  273. package/dist/ai/llmprompts/systemPrompts/combinedActionExtractorPrompt.js +0 -36
@@ -2,14 +2,16 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.enterDataToAlert = enterDataToAlert;
4
4
  const appendScriptData_js_1 = require("../../../../fireflinkData/fireflinkScript/appendScriptData.js");
5
+ const getHelper_js_1 = require("../../../../utils/helpers/getHelper.js");
5
6
  async function enterDataToAlert(args) {
6
7
  try {
7
8
  await args.driver.sendAlertText(args.value);
8
9
  (0, appendScriptData_js_1.appendScriptData)({
9
10
  scriptDataAppender: args.scriptDataAppender,
10
11
  nlpName: "EnterDataToAlert",
11
- stepInputs: [args.value],
12
+ stepInputs: [args.variableName ? `variable:${args.variableName}` : args.value],
12
13
  });
14
+ (0, getHelper_js_1.saveStepInputData)(args, args.value);
13
15
  }
14
16
  catch (error) {
15
17
  args.scriptDataAppender.setErrorNLP("EnterDataToAlert");
@@ -2,12 +2,16 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getTextPresentOnAlertPopup = getTextPresentOnAlertPopup;
4
4
  const appendScriptData_js_1 = require("../../../../fireflinkData/fireflinkScript/appendScriptData.js");
5
+ const getHelper_js_1 = require("../../../../utils/helpers/getHelper.js");
5
6
  async function getTextPresentOnAlertPopup(args) {
6
7
  try {
8
+ const text = await args.driver.getAlertText();
7
9
  (0, appendScriptData_js_1.appendScriptData)({
8
10
  scriptDataAppender: args.scriptDataAppender,
9
11
  nlpName: "GetTextPresentOnAlertPopup",
12
+ returnTypeVariableName: args.returnTypeVariableName
10
13
  });
14
+ (0, getHelper_js_1.saveStepInputData)(args, text);
11
15
  }
12
16
  catch (error) {
13
17
  args.scriptDataAppender.setErrorNLP("GetTextPresentOnAlertPopup");
@@ -9,7 +9,7 @@ async function verifyAlertPopUpMessageContainsString(args) {
9
9
  (0, appendScriptData_js_1.appendScriptData)({
10
10
  scriptDataAppender: args.scriptDataAppender,
11
11
  nlpName: "VerifyAlertPopUpMessageContainsString",
12
- stepInputs: [args.value],
12
+ stepInputs: [args.variableName ? `variable:${args.variableName}` : args.value]
13
13
  });
14
14
  }
15
15
  else {
@@ -12,7 +12,7 @@ async function verifyAlertPopupIsDisplayed(args) {
12
12
  (0, appendScriptData_js_1.appendScriptData)({
13
13
  scriptDataAppender: args.scriptDataAppender,
14
14
  nlpName: "VerifyAlertPopupIsDisplayed",
15
- stepInputs: [value],
15
+ stepInputs: [args.variableName ? `variable:${args.variableName}` : value]
16
16
  });
17
17
  }
18
18
  catch (error) {
@@ -9,7 +9,7 @@ async function verifyTextPresentOnAlertPopup(args) {
9
9
  (0, appendScriptData_js_1.appendScriptData)({
10
10
  scriptDataAppender: args.scriptDataAppender,
11
11
  nlpName: "VerifyTextPresentOnAlertPopup",
12
- stepInputs: [args.value],
12
+ stepInputs: [args.variableName ? `variable:${args.variableName}` : args.value]
13
13
  });
14
14
  }
15
15
  else {
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.clearAndEnter = clearAndEnter;
4
4
  const enterActionHelper_js_1 = require("../../../../utils/helpers/enterActionHelper.js");
5
5
  const appendScriptData_js_1 = require("../../../../fireflinkData/fireflinkScript/appendScriptData.js");
6
+ const getHelper_js_1 = require("../../../../utils/helpers/getHelper.js");
6
7
  async function clearAndEnter(args) {
7
8
  const nlpName = args.platform === "ios" ? "IOS_ClearThenEnterInput" : "MOB_ClearThenEnterInput";
8
9
  switch (args.platform) {
@@ -17,7 +18,7 @@ async function clearAndEnter(args) {
17
18
  (0, appendScriptData_js_1.appendScriptData)({
18
19
  scriptDataAppender: args.scriptDataAppender,
19
20
  nlpName: nlpName,
20
- stepInputs: [],
21
+ stepInputs: [args.variableName ? `variable:${args.variableName}` : args.value],
21
22
  pageDOM: args.pageDOM,
22
23
  elementGetter: args.elementGetter,
23
24
  ffNumber: ffElementNumber,
@@ -26,6 +27,7 @@ async function clearAndEnter(args) {
26
27
  selector: args.selector,
27
28
  platform: args.platform
28
29
  });
30
+ (0, getHelper_js_1.saveStepInputData)(args, args.value);
29
31
  }
30
32
  catch (error) {
31
33
  args.scriptDataAppender.setErrorNLP(nlpName);
@@ -42,8 +44,8 @@ async function clearAndEnter(args) {
42
44
  const ffElementNumber = `Fire-Flink-${ffNumber}`;
43
45
  (0, appendScriptData_js_1.appendScriptData)({
44
46
  scriptDataAppender: args.scriptDataAppender,
45
- nlpName: nlpName,
46
- stepInputs: [],
47
+ nlpName: "ClearThenEnterInput",
48
+ stepInputs: [args.variableName ? `variable:${args.variableName}` : args.value],
47
49
  pageDOM: args.pageDOM,
48
50
  elementGetter: args.elementGetter,
49
51
  ffNumber: ffElementNumber,
@@ -52,6 +54,7 @@ async function clearAndEnter(args) {
52
54
  selector: xpathPath,
53
55
  platform: args.platform
54
56
  });
57
+ (0, getHelper_js_1.saveStepInputData)(args, args.value);
55
58
  }
56
59
  catch (error) {
57
60
  args.scriptDataAppender.setErrorNLP("ClearThenEnterInput");
@@ -4,17 +4,18 @@ exports.GetOtpAction = GetOtpAction;
4
4
  const logData_js_1 = require("../../../../utils/logger/logData.js");
5
5
  const child_process_1 = require("child_process");
6
6
  const appendScriptData_js_1 = require("../../../../fireflinkData/fireflinkScript/appendScriptData.js");
7
+ const getHelper_js_1 = require("../../../../utils/helpers/getHelper.js");
7
8
  async function GetOtpAction(args) {
8
9
  try {
9
- const udid = args.driver.capabilities["appium:udid"] || args.driver.capabilities.udid;
10
- const cmdPrefix = udid
11
- ? `${args.adbPath} -s ${udid} shell`
12
- : `${args.adbPath} shell`;
10
+ // const udid = (args.driver.capabilities as any)["appium:udid"] || (args.driver.capabilities as any).udid;
11
+ const cmdPrefix = `${args.adbPath} shell`;
12
+ const timeFrom = Number(args.timeFrom) || 60;
13
+ const waitTime = Number(args.waitTime) || 60;
13
14
  const packageName = (0, child_process_1.execSync)(`${cmdPrefix} cmd role get-role-holders android.app.role.SMS`.trim(), { encoding: "utf8" });
14
15
  logData_js_1.logger.info("the default app is ", packageName);
15
16
  const expectedHeader = args.selector.trim().toLowerCase();
16
17
  const getLatestMatchingSms = () => {
17
- const inboxSms = (0, child_process_1.execSync)(`${cmdPrefix} "content query --uri content://sms/inbox --projection _id:date:address:body --sort 'date DESC'"`, { encoding: "utf8" }).trim();
18
+ const inboxSms = (0, child_process_1.execSync)(`${cmdPrefix} "content query --uri content://sms/inbox --projection _id:date:address:body --sort 'date DESC' | head -n 100"`, { encoding: "utf8" }).trim();
18
19
  const messages = [...inboxSms.matchAll(/(?:^|\r?\n)Row:\s*\d+\s+_id=(\d+),\s*date=(\d+),\s*address=(.*?),\s*body=(.*?)(?=\r?\nRow:|$)/gs)]
19
20
  .map((match) => ({
20
21
  id: match[1],
@@ -26,14 +27,16 @@ async function GetOtpAction(args) {
26
27
  };
27
28
  const existingSms = getLatestMatchingSms();
28
29
  const now = Date.now();
29
- if (existingSms && now - existingSms.date <= (Number(args.timeFrom) * 1000)) {
30
+ if (existingSms && now - existingSms.date <= (timeFrom * 1000)) {
30
31
  const smsBody = existingSms.body;
31
32
  logData_js_1.logger.info("SMS body:", smsBody);
32
33
  let regex;
34
+ let otpValue;
33
35
  if (args.otpExtractor) {
34
36
  const otpResult = await args.otpExtractor(smsBody);
35
37
  if (otpResult?.otp && otpResult.regex) {
36
38
  regex = otpResult.regex;
39
+ otpValue = otpResult.otp;
37
40
  logData_js_1.logger.info("Extracted OTP:", otpResult.otp, "Generated Regex:", otpResult.regex);
38
41
  }
39
42
  else {
@@ -43,21 +46,21 @@ async function GetOtpAction(args) {
43
46
  (0, appendScriptData_js_1.appendScriptData)({
44
47
  scriptDataAppender: args.scriptDataAppender,
45
48
  nlpName: "MOB_FetchOtpFromMessages",
46
- stepInputs: [existingSms.address, args.timeFrom, args.waitTime],
47
- platform: args.platform
48
- });
49
- (0, appendScriptData_js_1.appendScriptData)({
50
- scriptDataAppender: args.scriptDataAppender,
51
- nlpName: "StringSubStringUsingRegex",
52
- stepInputs: [smsBody, regex],
53
- platform: args.platform
49
+ stepInputs: [existingSms.address, timeFrom + "s", waitTime],
50
+ platform: "android",
51
+ returnTypeVariableName: args.returnTypeVariableName
54
52
  });
53
+ (0, getHelper_js_1.saveStepInputData)(args, otpValue || smsBody);
55
54
  return;
56
55
  }
57
56
  const baselineId = existingSms?.id;
58
57
  const pollingStartedAt = now;
59
- const pollingDeadline = pollingStartedAt + (Number(args.waitTime) * 1000);
58
+ const pollingDeadline = pollingStartedAt + (waitTime * 1000);
60
59
  while (Date.now() < pollingDeadline) {
60
+ if (args.isTerminated?.()) {
61
+ logData_js_1.logger.info("OTP polling aborted because session was terminated.");
62
+ return;
63
+ }
61
64
  const latestSms = getLatestMatchingSms();
62
65
  if (latestSms &&
63
66
  latestSms.id !== baselineId &&
@@ -65,11 +68,13 @@ async function GetOtpAction(args) {
65
68
  const smsBody = latestSms.body;
66
69
  logData_js_1.logger.info("SMS body:", smsBody);
67
70
  let regex;
71
+ let otpValue;
68
72
  if (args.otpExtractor) {
69
73
  const otpResult = await args.otpExtractor(smsBody);
70
74
  if (otpResult?.otp && otpResult.regex) {
71
75
  regex = otpResult.regex;
72
76
  regex = regex.replace(/\\+/g, "\\");
77
+ otpValue = otpResult.otp;
73
78
  logData_js_1.logger.info("Extracted OTP:", otpResult.otp, "Generated Regex:", otpResult.regex);
74
79
  }
75
80
  else {
@@ -79,20 +84,16 @@ async function GetOtpAction(args) {
79
84
  (0, appendScriptData_js_1.appendScriptData)({
80
85
  scriptDataAppender: args.scriptDataAppender,
81
86
  nlpName: "MOB_FetchOtpFromMessages",
82
- stepInputs: [latestSms.address, args.timeFrom, args.waitTime],
83
- platform: args.platform
84
- });
85
- (0, appendScriptData_js_1.appendScriptData)({
86
- scriptDataAppender: args.scriptDataAppender,
87
- nlpName: "StringSubStringUsingRegex",
88
- stepInputs: [smsBody, regex],
89
- platform: args.platform
87
+ stepInputs: [latestSms.address, timeFrom + "s", waitTime],
88
+ platform: "android",
89
+ returnTypeVariableName: args.returnTypeVariableName
90
90
  });
91
+ (0, getHelper_js_1.saveStepInputData)(args, otpValue || smsBody);
91
92
  return;
92
93
  }
93
94
  await new Promise((resolve) => setTimeout(resolve, 2000));
94
95
  }
95
- throw new Error(`Timed out waiting up to 60 seconds for an SMS with header: ${args.selector}`);
96
+ throw new Error(`Timed out waiting up to ${waitTime} seconds for an SMS with header: ${args.selector}`);
96
97
  }
97
98
  catch (error) {
98
99
  args.scriptDataAppender.setErrorNLP("getOtp");
@@ -4,6 +4,7 @@ exports.MOB_EnterInputIntoElementFromClipBoard = MOB_EnterInputIntoElementFromCl
4
4
  const appendScriptData_js_1 = require("../../../../fireflinkData/fireflinkScript/appendScriptData.js");
5
5
  const enterActionHelper_js_1 = require("../../../../utils/helpers/enterActionHelper.js");
6
6
  const logData_js_1 = require("../../../../utils/logger/logData.js");
7
+ const getHelper_js_1 = require("../../../../utils/helpers/getHelper.js");
7
8
  async function MOB_EnterInputIntoElementFromClipBoard(args) {
8
9
  try {
9
10
  const { ffNumber, xpathPath } = (0, enterActionHelper_js_1.enterActionHelperMob)(args.pageDOM, args.fireflinkIndex);
@@ -16,7 +17,7 @@ async function MOB_EnterInputIntoElementFromClipBoard(args) {
16
17
  (0, appendScriptData_js_1.appendScriptData)({
17
18
  scriptDataAppender: args.scriptDataAppender,
18
19
  nlpName: "MOB_EnterInputIntoElementFromClipBoard",
19
- stepInputs: [],
20
+ stepInputs: [value],
20
21
  pageDOM: args.pageDOM,
21
22
  elementGetter: args.elementGetter,
22
23
  ffNumber: ffElementNumber,
@@ -25,6 +26,7 @@ async function MOB_EnterInputIntoElementFromClipBoard(args) {
25
26
  selector: args.selector,
26
27
  platform: args.platform
27
28
  });
29
+ (0, getHelper_js_1.saveStepInputData)(args, value);
28
30
  }
29
31
  catch (error) {
30
32
  args.scriptDataAppender.setErrorNLP("MOB_EnterInputIntoElementFromClipBoard");
@@ -37,6 +37,7 @@ exports.enterInput = enterInput;
37
37
  const enterActionHelper_js_1 = require("../../../../utils/helpers/enterActionHelper.js");
38
38
  const logData_js_1 = require("../../../../utils/logger/logData.js");
39
39
  const appendScriptData_js_1 = require("../../../../fireflinkData/fireflinkScript/appendScriptData.js");
40
+ const getHelper_js_1 = require("../../../../utils/helpers/getHelper.js");
40
41
  async function enterInput(args) {
41
42
  const nlpName = args.platform === "ios" ? "IOS_SendKeys" : "MOB_SendKeys";
42
43
  switch (args.platform) {
@@ -69,7 +70,7 @@ async function enterInput(args) {
69
70
  (0, appendScriptData_js_1.appendScriptData)({
70
71
  scriptDataAppender: args.scriptDataAppender,
71
72
  nlpName: nlpName,
72
- stepInputs: [args.value],
73
+ stepInputs: [args.variableName ? `variable:${args.variableName}` : args.value],
73
74
  pageDOM: args.pageDOM,
74
75
  elementGetter: args.elementGetter,
75
76
  ffNumber: ffElementNumber,
@@ -78,6 +79,7 @@ async function enterInput(args) {
78
79
  selector: args.selector,
79
80
  platform: args.platform
80
81
  });
82
+ (0, getHelper_js_1.saveStepInputData)(args, args.value);
81
83
  }
82
84
  catch (error) {
83
85
  args.scriptDataAppender.setErrorNLP(nlpName);
@@ -100,7 +102,7 @@ async function enterInput(args) {
100
102
  (0, appendScriptData_js_1.appendScriptData)({
101
103
  scriptDataAppender: args.scriptDataAppender,
102
104
  nlpName: 'SendKeys',
103
- stepInputs: [args.value],
105
+ stepInputs: [args.variableName ? `variable:${args.variableName}` : args.value],
104
106
  pageDOM: args.pageDOM,
105
107
  elementGetter: args.elementGetter,
106
108
  ffNumber: ffElementNumber,
@@ -109,6 +111,7 @@ async function enterInput(args) {
109
111
  selector: xpathPath,
110
112
  platform: args.platform
111
113
  });
114
+ (0, getHelper_js_1.saveStepInputData)(args, args.value);
112
115
  }
113
116
  catch (error) {
114
117
  args.scriptDataAppender.setErrorNLP("SendKeys");
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.enterInputAndPress = enterInputAndPress;
4
4
  const enterActionHelper_js_1 = require("../../../../utils/helpers/enterActionHelper.js");
5
5
  const appendScriptData_js_1 = require("../../../../fireflinkData/fireflinkScript/appendScriptData.js");
6
+ const getHelper_js_1 = require("../../../../utils/helpers/getHelper.js");
6
7
  async function enterInputAndPress(args) {
7
8
  switch (args.platform) {
8
9
  case "android":
@@ -44,7 +45,7 @@ async function enterInputAndPress(args) {
44
45
  (0, appendScriptData_js_1.appendScriptData)({
45
46
  scriptDataAppender: args.scriptDataAppender,
46
47
  nlpName: "MOB_EnterDataAndPressKey",
47
- stepInputs: [inputValue, keyValue],
48
+ stepInputs: [args.variableName ? `variable:${args.variableName}` : inputValue, keyValue],
48
49
  pageDOM: args.pageDOM,
49
50
  elementGetter: args.elementGetter,
50
51
  ffNumber: ffElementNumber,
@@ -53,6 +54,7 @@ async function enterInputAndPress(args) {
53
54
  selector: args.selector,
54
55
  platform: args.platform
55
56
  });
57
+ (0, getHelper_js_1.saveStepInputData)(args, inputValue || args.value);
56
58
  }
57
59
  catch (error) {
58
60
  args.scriptDataAppender.setErrorNLP("MOB_EnterDataAndPressKey");
@@ -98,7 +100,7 @@ async function enterInputAndPress(args) {
98
100
  (0, appendScriptData_js_1.appendScriptData)({
99
101
  scriptDataAppender: args.scriptDataAppender,
100
102
  nlpName: "EnterDataAndPressKey",
101
- stepInputs: [inputValue, keyValue],
103
+ stepInputs: [args.variableName ? `variable:${args.variableName}` : inputValue, keyValue],
102
104
  pageDOM: args.pageDOM,
103
105
  elementGetter: args.elementGetter,
104
106
  ffNumber: ffElementNumber,
@@ -107,6 +109,7 @@ async function enterInputAndPress(args) {
107
109
  selector: xpathPath,
108
110
  platform: args.platform
109
111
  });
112
+ (0, getHelper_js_1.saveStepInputData)(args, inputValue || args.value);
110
113
  }
111
114
  catch (error) {
112
115
  args.scriptDataAppender.setErrorNLP("EnterDataAndPressKey");
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.enterUrl = enterUrl;
4
4
  const appendScriptData_js_1 = require("../../../../fireflinkData/fireflinkScript/appendScriptData.js");
5
+ const getHelper_js_1 = require("../../../../utils/helpers/getHelper.js");
5
6
  async function enterUrl(args) {
6
7
  const nlpName = args.platform === "ios" ? "IOS_EnterUrl" : "MOB_EnterUrl";
7
8
  switch (args.platform) {
@@ -21,8 +22,9 @@ async function enterUrl(args) {
21
22
  (0, appendScriptData_js_1.appendScriptData)({
22
23
  scriptDataAppender: args.scriptDataAppender,
23
24
  nlpName: nlpName,
24
- stepInputs: [args.value],
25
+ stepInputs: [args.variableName ? `variable:${args.variableName}` : args.value],
25
26
  });
27
+ (0, getHelper_js_1.saveStepInputData)(args, args.value);
26
28
  }
27
29
  catch (error) {
28
30
  args.scriptDataAppender.setErrorNLP(nlpName);
@@ -36,8 +38,9 @@ async function enterUrl(args) {
36
38
  (0, appendScriptData_js_1.appendScriptData)({
37
39
  scriptDataAppender: args.scriptDataAppender,
38
40
  nlpName: 'EnterURL',
39
- stepInputs: [args.value],
41
+ stepInputs: [args.variableName ? `variable:${args.variableName}` : args.value],
40
42
  });
43
+ (0, getHelper_js_1.saveStepInputData)(args, args.value);
41
44
  }
42
45
  catch (error) {
43
46
  args.scriptDataAppender.setErrorNLP("EnterURL");
@@ -4,6 +4,7 @@ exports.enterInputUsingJs = enterInputUsingJs;
4
4
  const enterActionHelper_js_1 = require("../../../../utils/helpers/enterActionHelper.js");
5
5
  const logData_js_1 = require("../../../../utils/logger/logData.js");
6
6
  const appendScriptData_js_1 = require("../../../../fireflinkData/fireflinkScript/appendScriptData.js");
7
+ const getHelper_js_1 = require("../../../../utils/helpers/getHelper.js");
7
8
  async function enterInputUsingJs(args) {
8
9
  try {
9
10
  const { ffNumber, xpathPath } = (0, enterActionHelper_js_1.enterActionHelper)(args.pageDOM, args.fireflinkIndex);
@@ -20,7 +21,7 @@ async function enterInputUsingJs(args) {
20
21
  (0, appendScriptData_js_1.appendScriptData)({
21
22
  scriptDataAppender: args.scriptDataAppender,
22
23
  nlpName: "EnterDataAndPressKey",
23
- stepInputs: [args.value],
24
+ stepInputs: [args.variableName ? `variable:${args.variableName}` : args.value],
24
25
  pageDOM: args.pageDOM,
25
26
  elementGetter: args.elementGetter,
26
27
  ffNumber: ffElementNumber,
@@ -29,6 +30,7 @@ async function enterInputUsingJs(args) {
29
30
  selector: xpathPath,
30
31
  platform: args.platform
31
32
  });
33
+ (0, getHelper_js_1.saveStepInputData)(args, args.value);
32
34
  }
33
35
  catch (error) {
34
36
  args.scriptDataAppender.setErrorNLP("EnterInputUsingJS");
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.waitAndEnter = waitAndEnter;
4
4
  const enterActionHelper_js_1 = require("../../../../utils/helpers/enterActionHelper.js");
5
5
  const appendScriptData_js_1 = require("../../../../fireflinkData/fireflinkScript/appendScriptData.js");
6
+ const getHelper_js_1 = require("../../../../utils/helpers/getHelper.js");
6
7
  async function waitAndEnter(args) {
7
8
  const DEFAULT_WAIT = 5;
8
9
  const parseValue = (value) => {
@@ -28,7 +29,7 @@ async function waitAndEnter(args) {
28
29
  (0, appendScriptData_js_1.appendScriptData)({
29
30
  scriptDataAppender: args.scriptDataAppender,
30
31
  nlpName: "MOB_WaitAndSendKeys",
31
- stepInputs: [inputValue, waitTimeSeconds.toString()],
32
+ stepInputs: [args.variableName ? `variable:${args.variableName}` : inputValue, waitTimeSeconds.toString()],
32
33
  pageDOM: args.pageDOM,
33
34
  elementGetter: args.elementGetter,
34
35
  ffNumber: ffElementNumber,
@@ -37,6 +38,7 @@ async function waitAndEnter(args) {
37
38
  selector: args.selector,
38
39
  platform: args.platform
39
40
  });
41
+ (0, getHelper_js_1.saveStepInputData)(args, inputValue || args.value);
40
42
  }
41
43
  catch (error) {
42
44
  args.scriptDataAppender.setErrorNLP("MOB_WaitAndSendKeys");
@@ -63,7 +65,7 @@ async function waitAndEnter(args) {
63
65
  (0, appendScriptData_js_1.appendScriptData)({
64
66
  scriptDataAppender: args.scriptDataAppender,
65
67
  nlpName: "WaitAndSendKeys",
66
- stepInputs: [inputValue, waitTimeSeconds.toString()],
68
+ stepInputs: [args.variableName ? `variable:${args.variableName}` : inputValue, waitTimeSeconds.toString()],
67
69
  pageDOM: args.pageDOM,
68
70
  elementGetter: args.elementGetter,
69
71
  ffNumber: ffElementNumber,
@@ -72,6 +74,7 @@ async function waitAndEnter(args) {
72
74
  selector: args.selector,
73
75
  platform: args.platform
74
76
  });
77
+ (0, getHelper_js_1.saveStepInputData)(args, inputValue || args.value);
75
78
  }
76
79
  catch (error) {
77
80
  args.scriptDataAppender.setErrorNLP("WaitAndSendKeys");
@@ -0,0 +1,2 @@
1
+ import { VerifyPDFInterface } from "../../interface/verifyActionInterface.js";
2
+ export declare function verifyPDF(args: VerifyPDFInterface): Promise<void>;
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.verifyPDF = verifyPDF;
7
+ const appendScriptData_js_1 = require("../../../../fireflinkData/fireflinkScript/appendScriptData.js");
8
+ const logData_js_1 = require("../../../../utils/logger/logData.js");
9
+ const pdfDownloadWatcher_js_1 = require("../../../../utils/downloadWatcher/pdfDownloadWatcher.js");
10
+ const pdfTextExtractor_js_1 = require("../../../../utils/textExtractor/pdfTextExtractor.js");
11
+ const fs_1 = __importDefault(require("fs"));
12
+ const path_1 = __importDefault(require("path"));
13
+ async function verifyPDF(args) {
14
+ let calculatedDuration = 2;
15
+ let fileName;
16
+ try {
17
+ let buffer;
18
+ if (args.isDownload) {
19
+ // isDownload = true → poll downloadDir until a PDF lands
20
+ const fileInfo = await (0, pdfDownloadWatcher_js_1.waitForDownloadComplete)(logData_js_1.downloadDir);
21
+ calculatedDuration = fileInfo.durationSeconds;
22
+ fileName = fileInfo.file.name;
23
+ buffer = fs_1.default.readFileSync(fileInfo.file.fullPath);
24
+ await logData_js_1.logger.info("VerifyPDF: found latest file", { file: fileName, dir: logData_js_1.downloadDir, durationSeconds: fileInfo.durationSeconds });
25
+ }
26
+ else {
27
+ // isDownload = false → use the explicit path directly
28
+ if (!args.filePath) {
29
+ throw new Error("VerifyPDF: isDownload is false but no filePath was provided.");
30
+ }
31
+ const normalizedPath = path_1.default.normalize(args.filePath);
32
+ if (!fs_1.default.existsSync(normalizedPath)) {
33
+ throw new Error(`VerifyPDF: file not found at path: ${normalizedPath}`);
34
+ }
35
+ buffer = fs_1.default.readFileSync(normalizedPath);
36
+ fileName = normalizedPath;
37
+ }
38
+ // Validate PDF header
39
+ const header = buffer.subarray(0, 5).toString("ascii");
40
+ if (!header.startsWith("%PDF")) {
41
+ throw new Error(`File does not have a valid PDF header (%PDF): ${fileName}`);
42
+ }
43
+ // Optional text content verification
44
+ const expectedText = args.value?.trim();
45
+ if (expectedText) {
46
+ const extractedText = await (0, pdfTextExtractor_js_1.extractTextFromPdf)(buffer);
47
+ const normalizedExtracted = (0, pdfTextExtractor_js_1.normalizeText)(extractedText).toLowerCase();
48
+ const normalizedExpected = (0, pdfTextExtractor_js_1.normalizeText)(expectedText).toLowerCase();
49
+ if (!normalizedExtracted.includes(normalizedExpected)) {
50
+ // Secondary check directly on raw buffer bytes
51
+ const rawContent = buffer.toString("latin1").toLowerCase();
52
+ if (!rawContent.includes(normalizedExpected)) {
53
+ throw new Error(`PDF "${fileName}" does not contain expected text: "${expectedText}"`);
54
+ }
55
+ }
56
+ }
57
+ await logData_js_1.logger.info("VerifyPDF passed", {
58
+ file: fileName,
59
+ expectedText: expectedText || "(none — structural check only)",
60
+ sizeBytes: buffer.length,
61
+ });
62
+ if (args.isDownload) {
63
+ // Download flow: emit full chain so the generated script can replay the wait
64
+ const downloadsFolder = process.platform === "win32" ? "\\Downloads" : "/Downloads";
65
+ (0, appendScriptData_js_1.appendScriptData)({
66
+ scriptDataAppender: args.scriptDataAppender,
67
+ nlpName: "Sleep",
68
+ stepInputs: [calculatedDuration],
69
+ });
70
+ (0, appendScriptData_js_1.appendScriptData)({
71
+ scriptDataAppender: args.scriptDataAppender,
72
+ nlpName: "GetUserHomeDirectory",
73
+ stepInputs: [],
74
+ returnTypeVariableName: "userHomeDirectory",
75
+ });
76
+ (0, appendScriptData_js_1.appendScriptData)({
77
+ scriptDataAppender: args.scriptDataAppender,
78
+ nlpName: "ConcatString",
79
+ stepInputs: ["variable:userHomeDirectory", downloadsFolder],
80
+ returnTypeVariableName: "finalpath",
81
+ });
82
+ (0, appendScriptData_js_1.appendScriptData)({
83
+ scriptDataAppender: args.scriptDataAppender,
84
+ nlpName: "GetLastModifiedFile",
85
+ stepInputs: ["variable:finalpath"],
86
+ returnTypeVariableName: "lastModifiedFilePath",
87
+ });
88
+ (0, appendScriptData_js_1.appendScriptData)({
89
+ scriptDataAppender: args.scriptDataAppender,
90
+ nlpName: "VerifyPDF",
91
+ stepInputs: ["variable:lastModifiedFilePath", args.value ?? ""],
92
+ });
93
+ }
94
+ else {
95
+ // Explicit path flow: emit VerifyPDF with the literal path the user provided
96
+ (0, appendScriptData_js_1.appendScriptData)({
97
+ scriptDataAppender: args.scriptDataAppender,
98
+ nlpName: "VerifyPDF",
99
+ stepInputs: [args.filePath ?? "", args.value ?? ""],
100
+ });
101
+ }
102
+ }
103
+ catch (error) {
104
+ args.scriptDataAppender.setErrorNLP("VerifyPDF");
105
+ await logData_js_1.logger.error("VerifyPDF action failed:", error);
106
+ throw new Error("VerifyPDF action failed", { cause: error });
107
+ }
108
+ finally {
109
+ // Clean up temp download directory if download flow was used
110
+ if (args.isDownload) {
111
+ try {
112
+ if (fs_1.default.existsSync(logData_js_1.downloadDir)) {
113
+ fs_1.default.rmSync(logData_js_1.downloadDir, { recursive: true, force: true });
114
+ await logData_js_1.logger.info(`Cleaned up temp download directory: ${logData_js_1.downloadDir}`);
115
+ }
116
+ }
117
+ catch (cleanupErr) {
118
+ await logData_js_1.logger.error("Error cleaning up temp download directory after VerifyPDF:", cleanupErr);
119
+ }
120
+ }
121
+ }
122
+ }
@@ -1,16 +1,19 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MOB_GetADBLogsForGivenAppPackage = void 0;
4
+ const getHelper_js_1 = require("../../../../utils/helpers/getHelper.js");
4
5
  const appendScriptData_1 = require("../../../../fireflinkData/fireflinkScript/appendScriptData");
5
6
  const MOB_GetADBLogsForGivenAppPackage = async (args) => {
6
7
  try {
7
8
  const packageName = args.value;
8
9
  const logs = await args.driver.getLogs("logcat");
9
10
  const _filteredLogs = logs.filter((log) => log.message && log.message.includes(packageName));
11
+ (0, getHelper_js_1.saveStepInputData)(args, logs);
10
12
  (0, appendScriptData_1.appendScriptData)({
11
13
  scriptDataAppender: args.scriptDataAppender,
12
14
  nlpName: "MOB_GetADBLogsForGivenAppPackage",
13
- stepInputs: [packageName]
15
+ stepInputs: [packageName],
16
+ returnTypeVariableName: args.returnTypeVariableName
14
17
  });
15
18
  }
16
19
  catch (error) {
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MOB_GetAllContexts = void 0;
4
+ const getHelper_js_1 = require("../../../../utils/helpers/getHelper.js");
4
5
  const appendScriptData_1 = require("../../../../fireflinkData/fireflinkScript/appendScriptData");
5
6
  const MOB_GetAllContexts = async (args) => {
6
7
  try {
@@ -8,8 +9,11 @@ const MOB_GetAllContexts = async (args) => {
8
9
  const _contexts = await args.driver.getContexts();
9
10
  (0, appendScriptData_1.appendScriptData)({
10
11
  scriptDataAppender: args.scriptDataAppender,
11
- nlpName: "MOB_GetAllContexts"
12
+ nlpName: "MOB_GetAllContexts",
13
+ returnTypeVariableName: args.returnTypeVariableName
12
14
  });
15
+ const __result = _contexts;
16
+ (0, getHelper_js_1.saveStepInputData)(args, __result);
13
17
  }
14
18
  catch (error) {
15
19
  args.scriptDataAppender.setErrorNLP("MOB_GetAllContexts");
@@ -1,2 +1,2 @@
1
- import { MOB_GetAllWindowHandlesInterface } from "../../interface/getActionInterface";
1
+ import { MOB_GetAllWindowHandlesInterface } from "../../interface/getActionInterface.js";
2
2
  export declare const MOB_GetAllWindowHandles: (args: MOB_GetAllWindowHandlesInterface) => Promise<void>;
@@ -1,25 +1,29 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MOB_GetAllWindowHandles = void 0;
4
- const appendScriptData_1 = require("../../../../fireflinkData/fireflinkScript/appendScriptData");
4
+ const getHelper_js_1 = require("../../../../utils/helpers/getHelper.js");
5
+ const appendScriptData_js_1 = require("../../../../fireflinkData/fireflinkScript/appendScriptData.js");
5
6
  const MOB_GetAllWindowHandles = async (args) => {
6
7
  try {
7
8
  const context = await args.driver.getContext();
8
9
  // Not supported in native
9
10
  if (context === "NATIVE_APP") {
10
- // still allow NLP to pass without failure
11
- (0, appendScriptData_1.appendScriptData)({
11
+ (0, appendScriptData_js_1.appendScriptData)({
12
12
  scriptDataAppender: args.scriptDataAppender,
13
13
  nlpName: "MOB_GetAllWindowHandles",
14
+ returnTypeVariableName: args.returnTypeVariableName
14
15
  });
15
- return;
16
+ const emptyHandles = [];
17
+ (0, getHelper_js_1.saveStepInputData)(args, emptyHandles);
16
18
  }
17
19
  // Only for WEBVIEW / WEB
18
20
  const _handles = await args.driver.getWindowHandles();
19
- (0, appendScriptData_1.appendScriptData)({
21
+ (0, appendScriptData_js_1.appendScriptData)({
20
22
  scriptDataAppender: args.scriptDataAppender,
21
- nlpName: "MOB_GetAllWindowHandles"
23
+ nlpName: "MOB_GetAllWindowHandles",
24
+ returnTypeVariableName: args.returnTypeVariableName
22
25
  });
26
+ (0, getHelper_js_1.saveStepInputData)(args, _handles);
23
27
  }
24
28
  catch (error) {
25
29
  args.scriptDataAppender.setErrorNLP("MOB_GetAllWindowHandles");