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
@@ -1,2 +1,2 @@
1
- import { IKeywordAction, IDragDropAction, IAlertAction, IScrollOrAttributeAction, IManualSteps, IVisionAction, IWaitAction, IClickAction, IVerifyAction, IGetAction } from "../interfaces/llmResponseInterface.js";
2
- export type FireFlinkLLMResponse = IKeywordAction | IAlertAction | IDragDropAction | IScrollOrAttributeAction | IManualSteps | IVisionAction | IWaitAction | IClickAction | IVerifyAction | IGetAction | any;
1
+ import { IKeywordAction, IDragDropAction, IAlertAction, IScrollOrAttributeAction, IManualSteps, IVisionAction, IWaitAction, IClickAction, IVerifyAction, IGetAction, IInputTextExtractor } from "../interfaces/llmResponseInterface.js";
2
+ export type FireFlinkLLMResponse = IKeywordAction | IAlertAction | IDragDropAction | IScrollOrAttributeAction | IManualSteps | IVisionAction | IWaitAction | IClickAction | IVerifyAction | IGetAction | IInputTextExtractor | any;
@@ -8,5 +8,7 @@ export declare enum PromptType {
8
8
  GET_PROMPT = "getActionExtractorPrompt",
9
9
  WAIT_ACTION_EXTRACTOR_PROMPT = "waitActionExtractorPrompt",
10
10
  COMBINED_ACTION_EXTRACTOR_PROMPT = "combinedActionExtractorPrompt",
11
- OTP_EXTRACTOR = "otpExtractorPrompt"
11
+ OTP_EXTRACTOR = "otpExtractorPrompt",
12
+ FILE_VERIFY_PROMPT = "fileVerifyActionExtractorPrompt",
13
+ INPUT_CONTEXT_PROMPT = "inputContextPrompt"
12
14
  }
@@ -13,4 +13,6 @@ var PromptType;
13
13
  PromptType["WAIT_ACTION_EXTRACTOR_PROMPT"] = "waitActionExtractorPrompt";
14
14
  PromptType["COMBINED_ACTION_EXTRACTOR_PROMPT"] = "combinedActionExtractorPrompt";
15
15
  PromptType["OTP_EXTRACTOR"] = "otpExtractorPrompt";
16
+ PromptType["FILE_VERIFY_PROMPT"] = "fileVerifyActionExtractorPrompt";
17
+ PromptType["INPUT_CONTEXT_PROMPT"] = "inputContextPrompt";
16
18
  })(PromptType || (exports.PromptType = PromptType = {}));
@@ -42,6 +42,9 @@ async function appendScriptData(args) {
42
42
  else {
43
43
  data.elementsData = [];
44
44
  }
45
+ if (args.returnTypeVariableName) {
46
+ data.returnTypeVariableName = args.returnTypeVariableName;
47
+ }
45
48
  return data;
46
49
  });
47
50
  }
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getCapabilities = getCapabilities;
4
+ const logData_js_1 = require("../logger/logData.js");
4
5
  function getCapabilities(browserName, path, profile, customCaps = []) {
5
6
  const isLinux = process.platform === 'linux';
6
7
  const caps = customCaps.map(c => c.toLowerCase());
@@ -39,6 +40,10 @@ function getCapabilities(browserName, path, profile, customCaps = []) {
39
40
  };
40
41
  const getChromiumPrefs = () => {
41
42
  const prefs = {};
43
+ prefs["download.default_directory"] = logData_js_1.downloadDir;
44
+ prefs["download.prompt_for_download"] = false;
45
+ prefs["download.directory_upgrade"] = true;
46
+ prefs["safebrowsing.enabled"] = true;
42
47
  if (hasCap("geolocation"))
43
48
  prefs["profile.default_content_setting_values.geolocation"] = 2;
44
49
  if (hasCap("camera"))
@@ -67,6 +72,12 @@ function getCapabilities(browserName, path, profile, customCaps = []) {
67
72
  if (hasCap("disableExtensions"))
68
73
  args.push('-safe-mode');
69
74
  const prefs = {};
75
+ // Always redirect downloads to session/tempFile so VerifyPDF can reliably find them
76
+ prefs["browser.download.dir"] = logData_js_1.downloadDir;
77
+ prefs["browser.download.folderList"] = 2; // 2 = use custom download dir
78
+ prefs["browser.download.useDownloadDir"] = true;
79
+ prefs["browser.helperApps.neverAsk.saveToDisk"] = "application/pdf,application/octet-stream";
80
+ prefs["pdfjs.disabled"] = true; // prevent Firefox from opening PDFs inline
70
81
  if (hasCap("disableNotifications") || hasCap("notifications"))
71
82
  prefs["dom.webnotifications.enabled"] = false;
72
83
  if (hasCap("disablePopups") || hasCap("popups"))
@@ -0,0 +1,6 @@
1
+ export declare const systemCapability: {
2
+ chrome: string[];
3
+ edge: string[];
4
+ firefox: string[];
5
+ safari: never[];
6
+ };
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.systemCapability = void 0;
4
+ exports.systemCapability = {
5
+ chrome: [
6
+ "download.default_directory",
7
+ "download.prompt_for_download",
8
+ "download.directory_upgrade",
9
+ "safebrowsing.enabled"
10
+ ],
11
+ edge: [
12
+ "download.default_directory",
13
+ "download.prompt_for_download",
14
+ "download.directory_upgrade",
15
+ "safebrowsing.enabled"
16
+ ],
17
+ firefox: [
18
+ "browser.download.dir",
19
+ "browser.download.folderList",
20
+ "browser.download.useDownloadDir",
21
+ "browser.helperApps.neverAsk.saveToDisk",
22
+ "pdfjs.disabled"
23
+ ],
24
+ safari: []
25
+ };
@@ -0,0 +1,8 @@
1
+ export declare function waitForDownloadComplete(downloadDir: string, timeoutMs?: number): Promise<{
2
+ file: {
3
+ name: string;
4
+ fullPath: string;
5
+ mtime: number;
6
+ };
7
+ durationSeconds: number;
8
+ }>;
@@ -0,0 +1,61 @@
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.waitForDownloadComplete = waitForDownloadComplete;
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const path_1 = __importDefault(require("path"));
9
+ const DOWNLOAD_TIMEOUT_MS = 30000;
10
+ const POLL_INTERVAL_MS = 400;
11
+ const STABILITY_WAIT_MS = 250;
12
+ async function waitForDownloadComplete(downloadDir, timeoutMs = DOWNLOAD_TIMEOUT_MS) {
13
+ const startTime = Date.now();
14
+ while (Date.now() - startTime < timeoutMs) {
15
+ if (fs_1.default.existsSync(downloadDir)) {
16
+ const allEntries = fs_1.default.readdirSync(downloadDir);
17
+ let hasActiveDownload = false;
18
+ const pdfFiles = [];
19
+ // Single pass: early exit if active download is present, stat only PDF files
20
+ for (const file of allEntries) {
21
+ const lower = file.toLowerCase();
22
+ if (lower.endsWith(".crdownload") || lower.endsWith(".part") || lower.endsWith(".tmp")) {
23
+ hasActiveDownload = true;
24
+ break;
25
+ }
26
+ if (lower.endsWith(".pdf")) {
27
+ const fullPath = path_1.default.join(downloadDir, file);
28
+ try {
29
+ const stat = fs_1.default.statSync(fullPath);
30
+ if (stat.isFile()) {
31
+ pdfFiles.push({ name: file, fullPath, mtime: stat.mtimeMs, size: stat.size });
32
+ }
33
+ }
34
+ catch {
35
+ // File locked or in transition, skip for this cycle
36
+ }
37
+ }
38
+ }
39
+ if (!hasActiveDownload && pdfFiles.length > 0) {
40
+ pdfFiles.sort((a, b) => b.mtime - a.mtime);
41
+ const latest = pdfFiles[0];
42
+ if (latest.size > 0) {
43
+ await new Promise(res => setTimeout(res, STABILITY_WAIT_MS));
44
+ try {
45
+ const newStat = fs_1.default.statSync(latest.fullPath);
46
+ if (newStat.size === latest.size && newStat.size > 0) {
47
+ const durationSeconds = Math.max(1, Math.ceil((Date.now() - startTime) / 1000));
48
+ return { file: latest, durationSeconds };
49
+ }
50
+ }
51
+ catch {
52
+ // Retry on next cycle
53
+ }
54
+ }
55
+ }
56
+ }
57
+ await new Promise(res => setTimeout(res, POLL_INTERVAL_MS));
58
+ }
59
+ throw new Error(`PDF download did not complete within ${timeoutMs / 1000} seconds in directory: ${downloadDir}. ` +
60
+ `Ensure the download was triggered prior to VerifyPDF.`);
61
+ }
@@ -0,0 +1,8 @@
1
+ export interface StepInputDataArgs {
2
+ stepsInputData?: any[];
3
+ stepIndex?: any;
4
+ currentStep?: string;
5
+ manualStep?: string;
6
+ returnTypeVariableName?: string;
7
+ }
8
+ export declare function saveStepInputData(args: StepInputDataArgs | undefined, value: any): void;
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+ // import { logger } from "../logger/logData.js";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.saveStepInputData = saveStepInputData;
5
+ function saveStepInputData(args, value) {
6
+ if (!args || !args.stepsInputData || !Array.isArray(args.stepsInputData)) {
7
+ return;
8
+ }
9
+ const rawStepIndex = args.stepIndex !== undefined
10
+ ? args.stepIndex
11
+ : args.stepsInputData?.currentStepIndex;
12
+ const currentStep = args.currentStep || "";
13
+ const manualStep = args.manualStep ||
14
+ args.stepsInputData?.currentManualStep ||
15
+ currentStep;
16
+ const isOneToMany = typeof rawStepIndex === "string" && rawStepIndex.includes(".");
17
+ const baseStepIndex = isOneToMany
18
+ ? Number(rawStepIndex.split(".")[0])
19
+ : typeof rawStepIndex === "number"
20
+ ? rawStepIndex
21
+ : Number(rawStepIndex) || rawStepIndex;
22
+ let inputText;
23
+ if (value === null || value === undefined) {
24
+ inputText = "";
25
+ }
26
+ else if (typeof value === "object") {
27
+ try {
28
+ inputText = JSON.stringify(value);
29
+ }
30
+ catch {
31
+ inputText = String(value);
32
+ }
33
+ }
34
+ else {
35
+ inputText = String(value);
36
+ }
37
+ if (isOneToMany) {
38
+ const existingEntry = args.stepsInputData.find((entry) => entry && entry.stepindex === baseStepIndex);
39
+ if (existingEntry) {
40
+ if (manualStep && existingEntry.step !== manualStep) {
41
+ existingEntry.step = manualStep;
42
+ }
43
+ if (!Array.isArray(existingEntry.subSteps)) {
44
+ existingEntry.subSteps = [];
45
+ }
46
+ const alreadyRecorded = existingEntry.subSteps.some((s) => s.stepindex === String(rawStepIndex) &&
47
+ s.step === currentStep &&
48
+ s.value !== undefined);
49
+ if (alreadyRecorded) {
50
+ return;
51
+ }
52
+ existingEntry.subSteps.push({
53
+ stepindex: String(rawStepIndex),
54
+ step: currentStep,
55
+ inputText,
56
+ value,
57
+ ...(args.returnTypeVariableName ? { variableName: args.returnTypeVariableName } : {}),
58
+ });
59
+ // Do NOT store inputText or value on the parent object for one-to-many steps
60
+ delete existingEntry.inputText;
61
+ delete existingEntry.value;
62
+ // try {
63
+ // logger?.info(
64
+ // `[saveStepInputData] Appended sub-step ${rawStepIndex} to step ${baseStepIndex}:`,
65
+ // existingEntry
66
+ // )?.catch(() => { });
67
+ // } catch { }
68
+ return;
69
+ }
70
+ // First sub-step for this baseStepIndex
71
+ const record = {
72
+ stepindex: baseStepIndex,
73
+ step: manualStep,
74
+ subSteps: [
75
+ {
76
+ stepindex: String(rawStepIndex),
77
+ step: currentStep,
78
+ inputText,
79
+ value,
80
+ ...(args.returnTypeVariableName ? { variableName: args.returnTypeVariableName } : {}),
81
+ },
82
+ ],
83
+ };
84
+ args.stepsInputData.push(record);
85
+ // try {
86
+ // logger?.info(
87
+ // `[saveStepInputData] Stored sub-step ${rawStepIndex} in step ${baseStepIndex}:`,
88
+ // record
89
+ // )?.catch(() => { });
90
+ // } catch { }
91
+ return;
92
+ }
93
+ // Normal 1-to-1 step
94
+ const isAlreadyRecorded = args.stepsInputData.some((entry) => entry &&
95
+ entry.stepindex === baseStepIndex &&
96
+ entry.step === manualStep &&
97
+ entry.value !== undefined);
98
+ if (isAlreadyRecorded) {
99
+ return;
100
+ }
101
+ const record = {
102
+ stepindex: baseStepIndex,
103
+ step: manualStep,
104
+ inputText,
105
+ value,
106
+ ...(args.returnTypeVariableName ? { variableName: args.returnTypeVariableName } : {}),
107
+ };
108
+ args.stepsInputData.push(record);
109
+ // try {
110
+ // logger?.info(
111
+ // `[saveStepInputData] Stored step ${baseStepIndex}:`,
112
+ // record
113
+ // )?.catch(() => { });
114
+ // } catch { }
115
+ }
@@ -1 +1 @@
1
- export declare function getPlatformSyntax(platform: string): "Android" | "iOS" | "Web";
1
+ export declare function getPlatformSyntax(platform: string): "Web" | "Android" | "iOS";
@@ -1,4 +1,6 @@
1
+ export declare let downloadDir: string;
1
2
  export declare function initLogger(basePath: string): void;
3
+ export declare function ensureDirs(): Promise<void>;
2
4
  export declare const logger: {
3
5
  info: (...args: any[]) => Promise<void>;
4
6
  error: (...args: any[]) => Promise<void>;
@@ -3,8 +3,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.logger = void 0;
6
+ exports.logger = exports.downloadDir = void 0;
7
7
  exports.initLogger = initLogger;
8
+ exports.ensureDirs = ensureDirs;
8
9
  const promises_1 = __importDefault(require("fs/promises"));
9
10
  const path_1 = __importDefault(require("path"));
10
11
  const js_beautify_1 = __importDefault(require("js-beautify"));
@@ -17,6 +18,7 @@ function initLogger(basePath) {
17
18
  sessionPath = basePath;
18
19
  logsDir = path_1.default.resolve(sessionPath, "logs");
19
20
  domDir = path_1.default.resolve(sessionPath, "dom");
21
+ exports.downloadDir = path_1.default.resolve(sessionPath, "tempFile");
20
22
  screenshotsDir = path_1.default.resolve(sessionPath, "screenshots");
21
23
  logFilePath = path_1.default.join(logsDir, "ai-execution-logs.txt");
22
24
  }
@@ -26,6 +28,7 @@ async function ensureDirs() {
26
28
  await promises_1.default.mkdir(logsDir, { recursive: true });
27
29
  await promises_1.default.mkdir(domDir, { recursive: true });
28
30
  await promises_1.default.mkdir(screenshotsDir, { recursive: true });
31
+ await promises_1.default.mkdir(exports.downloadDir, { recursive: true });
29
32
  }
30
33
  function getISTDate() {
31
34
  return new Intl.DateTimeFormat("sv-SE", {
@@ -0,0 +1,2 @@
1
+ export declare function normalizeText(text: string): string;
2
+ export declare function extractTextFromPdf(buffer: Buffer): Promise<string>;
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.normalizeText = normalizeText;
4
+ exports.extractTextFromPdf = extractTextFromPdf;
5
+ const logData_js_1 = require("../logger/logData.js");
6
+ function normalizeText(text) {
7
+ return text.replace(/\s+/g, " ").trim();
8
+ }
9
+ async function extractTextFromPdf(buffer) {
10
+ try {
11
+ const dynamicImport = new Function("modulePath", "return import(modulePath)");
12
+ const pdfjs = await dynamicImport("pdfjs-dist/legacy/build/pdf.mjs").catch(() => dynamicImport("pdfjs-dist"));
13
+ const data = new Uint8Array(buffer);
14
+ const loadingTask = pdfjs.getDocument({
15
+ data,
16
+ useSystemFonts: true,
17
+ disableFontFace: true,
18
+ });
19
+ const pdfDoc = await loadingTask.promise;
20
+ const pageTexts = [];
21
+ for (let i = 1; i <= pdfDoc.numPages; i++) {
22
+ const page = await pdfDoc.getPage(i);
23
+ const textContent = await page.getTextContent();
24
+ const pageString = textContent.items
25
+ .map((item) => ("str" in item ? item.str : ""))
26
+ .join(" ");
27
+ pageTexts.push(pageString);
28
+ }
29
+ return pageTexts.join("\n");
30
+ }
31
+ catch (err) {
32
+ logData_js_1.logger.error("pdfjs-dist extraction failed, falling back to raw buffer string scan", err);
33
+ return buffer.toString("latin1");
34
+ }
35
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ff-automationv2",
3
- "version": "2.2.31",
3
+ "version": "2.2.32-beta.1",
4
4
  "private": false,
5
5
  "type": "commonjs",
6
6
  "description": "This lib is used to automate the manual testcase",
@@ -82,6 +82,7 @@
82
82
  "jsonrepair": "^3.14.1",
83
83
  "kafkajs": "^2.2.4",
84
84
  "openai": "6.18.0",
85
+ "pdfjs-dist": "^6.3.289",
85
86
  "plist": "^3.1.0",
86
87
  "uuid": "13.0.0",
87
88
  "webdriverio": "9.26.1",
@@ -1,2 +0,0 @@
1
- import { combinedActionArgs } from "../llmPromptTypes/systemPromptTypes";
2
- export declare function combinedActionExtractorPrompt({ extractedDomJson, priorAndNextSteps, }: combinedActionArgs): Promise<string>;
@@ -1,36 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.combinedActionExtractorPrompt = combinedActionExtractorPrompt;
4
- async function combinedActionExtractorPrompt({ extractedDomJson, priorAndNextSteps, }) {
5
- const nlpList = `"dummy"`;
6
- const elementType = ["link", "textfield", "icon", "button", "radiobutton", "checkbox", "tab", "action overflow button", "hamburger menu", "toggle button", "steppers", "sliders"];
7
- const prompt = `
8
- You are an intelligent assistant that extracts structured UI action data.
9
- Given the step, the simplified DOM: ${extractedDomJson}, and the list of NLP names: ${nlpList}.
10
-
11
- Select the perfect matching NLP name from the list that best fits the step's intent.
12
-
13
- Return **only valid JSON** in the following format:
14
- {
15
- "attributeValue": "Fire-Flink-x",
16
- "nlpName": "x",
17
- "inputText":"x",
18
- "keyword": "x",
19
- "elementType": "x",
20
- "keycode": "x"
21
- }
22
- Rules:
23
- - nlpName must be exactly one from the provided list.
24
- - Use context from the steps : ${priorAndNextSteps}, keyword and json to search for FF-inspecter.
25
- - **Find the FF-inspecter attribute value of the element in the Simplified JSON whose text or attributes best match the step.**
26
- - If step has mutipul inputs add all in inputText and all matched attributeValue also.
27
- - Extract inputText from the step, if you can't find any input text in the step, return keyword as inputText.input can be number, app package, apk file path.dont include extra words.
28
- - Extract keyword from the step, if the step contains any keyword.
29
- - Extract keycode of keys if the step contains any key name like ENTER,SPACE,BACKSPACE etc and give keycode of the given key.
30
- - Use the closest semantic match for the step; return attributeValue as Fire-Flink-0, only if nothing is found.
31
- - Based on step give most relevant type of element. use this list to choose element_type: ${elementType} and Never change syntax of element_type, follow the syntax of element_type in list.if element_type is not there in list return 'link'.
32
- - Return ONLY a valid JSON object; the response must start with '{' and end with '}', with no markdown, code fences, explanations, or extra text.
33
- - Respond with valid JSON only.
34
- `;
35
- return prompt;
36
- }