ff-automationv2 2.1.3 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (362) hide show
  1. package/.env +1 -0
  2. package/.husky/pre-commit +5 -0
  3. package/ARCHITECTURE.md +6 -3
  4. package/Note.md +7 -0
  5. package/RELEASE_GUIDE.md +1 -1
  6. package/bitbucket-pipelines.yml +4 -25
  7. package/eslint.config.ts +4 -0
  8. package/package.json +21 -9
  9. package/src/ai/llmcalls/decodeApiKey.ts +1 -1
  10. package/src/ai/llmcalls/llmAction.ts +154 -47
  11. package/src/ai/llmprompts/llmPromptTypes/systemPromptTypes.ts +45 -0
  12. package/src/ai/llmprompts/promptRegistry.ts +34 -8
  13. package/src/ai/llmprompts/systemPrompts/actionExtractorPrompt.ts +4 -7
  14. package/src/ai/llmprompts/systemPrompts/combinedActionExtractorPrompt.ts +41 -0
  15. package/src/ai/llmprompts/systemPrompts/combinedActionExtractorPromptMob.ts +53 -0
  16. package/src/ai/llmprompts/systemPrompts/errorDescriptionPrompt.ts +43 -14
  17. package/src/ai/llmprompts/systemPrompts/fireflinkElementIndexExtactors.ts +111 -36
  18. package/src/ai/llmprompts/systemPrompts/fireflinkElementIndexExtractor_Mob.ts +53 -0
  19. package/src/ai/llmprompts/systemPrompts/getActionExtractorPrompt.ts +62 -0
  20. package/src/ai/llmprompts/systemPrompts/getActionExtractorPromptMob.ts +54 -0
  21. package/src/ai/llmprompts/systemPrompts/mobileKeywordExtractor.ts +39 -0
  22. package/src/ai/llmprompts/systemPrompts/userStoryToListPrompt.ts +48 -11
  23. package/src/ai/llmprompts/systemPrompts/verifyActionExtractorPrompt.ts +82 -0
  24. package/src/ai/llmprompts/systemPrompts/verifyActionExtractorPromptMob.ts +58 -0
  25. package/src/ai/llmprompts/systemPrompts/visionPrompt.ts +8 -14
  26. package/src/ai/llmprompts/systemPrompts/visionPromptMobile.ts +25 -0
  27. package/src/ai/llmprompts/systemPrompts/waitActionExtractorPrompt.ts +65 -0
  28. package/src/ai/llmprompts/systemPrompts/waitActionExtractorPromptMob.ts +45 -0
  29. package/src/ai/llmprompts/userPrompts/userPrompt.ts +28 -4
  30. package/src/automation/actions/executor.ts +4478 -48
  31. package/src/automation/actions/interaction/alert/clickCancelOnAlertPopup.ts +21 -0
  32. package/src/automation/actions/interaction/alert/clickOkOnAlertPopup.ts +20 -0
  33. package/src/automation/actions/interaction/alert/enterDataToAlert.ts +20 -0
  34. package/src/automation/actions/interaction/alert/getTextPresentOnAlertPopup.ts +19 -0
  35. package/src/automation/actions/interaction/alert/verifyAlertPopUpMessageContainsString.ts +32 -0
  36. package/src/automation/actions/interaction/alert/verifyAlertPopupIsDisplayed.ts +19 -0
  37. package/src/automation/actions/interaction/alert/verifyTextPresentOnAlertPopup.ts +33 -0
  38. package/src/automation/actions/interaction/alert/waitTillAlertIsPresent.ts +25 -0
  39. package/src/automation/actions/interaction/clear/clear.ts +61 -0
  40. package/src/automation/actions/interaction/clear/clearAndEnter.ts +58 -0
  41. package/src/automation/actions/interaction/click/click.ts +61 -0
  42. package/src/automation/actions/interaction/click/clickNtimes.ts +67 -0
  43. package/src/automation/actions/interaction/click/clickUsingJs.ts +33 -0
  44. package/src/automation/actions/interaction/click/doubleClick.ts +66 -0
  45. package/src/automation/actions/interaction/click/rightClick.ts +29 -0
  46. package/src/automation/actions/interaction/click/waitAndClick.ts +83 -0
  47. package/src/automation/actions/interaction/dragAndDrop/dragAndDrop.ts +46 -0
  48. package/src/automation/actions/interaction/enterActions/enterInput.ts +81 -0
  49. package/src/automation/actions/interaction/enterActions/enterInputAndPress.ts +134 -0
  50. package/src/automation/actions/interaction/enterActions/enterUrl.ts +52 -0
  51. package/src/automation/actions/interaction/enterActions/enterusingJs.ts +41 -0
  52. package/src/automation/actions/interaction/enterActions/waitAndEnter.ts +106 -0
  53. package/src/automation/actions/interaction/find/findElements.ts +57 -0
  54. package/src/automation/actions/interaction/get/browserWindowGetPosition.ts +15 -0
  55. package/src/automation/actions/interaction/get/getAllBrokenImages.ts +16 -0
  56. package/src/automation/actions/interaction/get/getAllBrokenLinkCount.ts +17 -0
  57. package/src/automation/actions/interaction/get/getAllBrokenLinks.ts +16 -0
  58. package/src/automation/actions/interaction/get/getAllConsoleErrors.ts +16 -0
  59. package/src/automation/actions/interaction/get/getAllConsoleInformation.ts +16 -0
  60. package/src/automation/actions/interaction/get/getAllConsoleLogs.ts +16 -0
  61. package/src/automation/actions/interaction/get/getAllConsoleWarnings.ts +18 -0
  62. package/src/automation/actions/interaction/get/getAllCookieNames.ts +16 -0
  63. package/src/automation/actions/interaction/get/getAllCookieValues.ts +16 -0
  64. package/src/automation/actions/interaction/get/getAllSelectedOptions.ts +43 -0
  65. package/src/automation/actions/interaction/get/getAllTheOptionsFromListBoxAsText.ts +46 -0
  66. package/src/automation/actions/interaction/get/getAllTheOptionsFromListBoxAsTextInSortedOrder.ts +54 -0
  67. package/src/automation/actions/interaction/get/getAllTheSelectedOptionsFromListBoxAsText.ts +43 -0
  68. package/src/automation/actions/interaction/get/getAllWindowHandles.ts +18 -0
  69. package/src/automation/actions/interaction/get/getAttribute.ts +83 -0
  70. package/src/automation/actions/interaction/get/getAudioCurrentPlaybackRate.ts +35 -0
  71. package/src/automation/actions/interaction/get/getAudioCurrentSeekTime.ts +36 -0
  72. package/src/automation/actions/interaction/get/getAudioCurrentVolume.ts +36 -0
  73. package/src/automation/actions/interaction/get/getAudioDecodedByte.ts +43 -0
  74. package/src/automation/actions/interaction/get/getAudioDefaultPlaybackRate.ts +36 -0
  75. package/src/automation/actions/interaction/get/getAudioDimension.ts +43 -0
  76. package/src/automation/actions/interaction/get/getAudioHeight.ts +38 -0
  77. package/src/automation/actions/interaction/get/getAudioMediaLength.ts +34 -0
  78. package/src/automation/actions/interaction/get/getAudioMediaSource.ts +44 -0
  79. package/src/automation/actions/interaction/get/getAudioWidth.ts +38 -0
  80. package/src/automation/actions/interaction/get/getBestPracticesScore.ts +20 -0
  81. package/src/automation/actions/interaction/get/getBrowserCount.ts +17 -0
  82. package/src/automation/actions/interaction/get/getBrowserVersion.ts +16 -0
  83. package/src/automation/actions/interaction/get/getCapabilityNames.ts +18 -0
  84. package/src/automation/actions/interaction/get/getClipBoardText.ts +16 -0
  85. package/src/automation/actions/interaction/get/getCollectiveApiResponseTime.ts +27 -0
  86. package/src/automation/actions/interaction/get/getCollectiveApiStatusCode.ts +29 -0
  87. package/src/automation/actions/interaction/get/getCssValue.ts +38 -0
  88. package/src/automation/actions/interaction/get/getCurrentDayOfTheWeek.ts +18 -0
  89. package/src/automation/actions/interaction/get/getCurrentSecondsFromCurrentSystemTime.ts +19 -0
  90. package/src/automation/actions/interaction/get/getCurrentSystemDate.ts +18 -0
  91. package/src/automation/actions/interaction/get/getCurrentSystemDay.ts +16 -0
  92. package/src/automation/actions/interaction/get/getCurrentSystemMonth.ts +16 -0
  93. package/src/automation/actions/interaction/get/getCurrentSystemTime.ts +18 -0
  94. package/src/automation/actions/interaction/get/getCurrentSystemYear.ts +18 -0
  95. package/src/automation/actions/interaction/get/getCurrentWindowHandle.ts +36 -0
  96. package/src/automation/actions/interaction/get/getDataFromApiRequestHeaderForJsonPath.ts +21 -0
  97. package/src/automation/actions/interaction/get/getDataFromApiResponseForJsonPath.ts +21 -0
  98. package/src/automation/actions/interaction/get/getDateWithGivenFormat.ts +35 -0
  99. package/src/automation/actions/interaction/get/getDriverInstance.ts +35 -0
  100. package/src/automation/actions/interaction/get/getFirstContentfulPaint.ts +16 -0
  101. package/src/automation/actions/interaction/get/getFirstSelectedOption.ts +44 -0
  102. package/src/automation/actions/interaction/get/getFullPaintTime.ts +16 -0
  103. package/src/automation/actions/interaction/get/getHTMLCodeOfPage.ts +18 -0
  104. package/src/automation/actions/interaction/get/getHeightOfBrowserWindow.ts +18 -0
  105. package/src/automation/actions/interaction/get/getHeightOfWebElement.ts +36 -0
  106. package/src/automation/actions/interaction/get/getHourFromCurrentSystemTime.ts +18 -0
  107. package/src/automation/actions/interaction/get/getImplicitTimeOut.ts +36 -0
  108. package/src/automation/actions/interaction/get/getLargestContentfulPaint.ts +16 -0
  109. package/src/automation/actions/interaction/get/getListBoxSize.ts +41 -0
  110. package/src/automation/actions/interaction/get/getListOfElementsFromLocatorTypeLocatorValue.ts +63 -0
  111. package/src/automation/actions/interaction/get/getLocation.ts +68 -0
  112. package/src/automation/actions/interaction/get/getMinuteFromCurrentSystemTime.ts +18 -0
  113. package/src/automation/actions/interaction/get/getNetworkRouteTime.ts +16 -0
  114. package/src/automation/actions/interaction/get/getNumberOfBrokenImages.ts +16 -0
  115. package/src/automation/actions/interaction/get/getNumberOfLinksPresentInCurrentPage.ts +18 -0
  116. package/src/automation/actions/interaction/get/getNumberOfWorkingLinksFromCurrentPage.ts +15 -0
  117. package/src/automation/actions/interaction/get/getOptions.ts +35 -0
  118. package/src/automation/actions/interaction/get/getPageTitle.ts +18 -0
  119. package/src/automation/actions/interaction/get/getPerformanceMetrics.ts +15 -0
  120. package/src/automation/actions/interaction/get/getPwaScore.ts +20 -0
  121. package/src/automation/actions/interaction/get/getRect.ts +87 -0
  122. package/src/automation/actions/interaction/get/getScreenshot.ts +41 -0
  123. package/src/automation/actions/interaction/get/getScreenshotAs.ts +64 -0
  124. package/src/automation/actions/interaction/get/getSeoScore.ts +20 -0
  125. package/src/automation/actions/interaction/get/getSingleApiRequestPayload.ts +22 -0
  126. package/src/automation/actions/interaction/get/getSingleApiResponse.ts +30 -0
  127. package/src/automation/actions/interaction/get/getSingleApiResponseTime.ts +28 -0
  128. package/src/automation/actions/interaction/get/getSingleApiStatusCode.ts +32 -0
  129. package/src/automation/actions/interaction/get/getSize.ts +68 -0
  130. package/src/automation/actions/interaction/get/getSizeOfBrowserWindow.ts +17 -0
  131. package/src/automation/actions/interaction/get/getStringDataFromLocalFile.ts +25 -0
  132. package/src/automation/actions/interaction/get/getSystemProperty.ts +46 -0
  133. package/src/automation/actions/interaction/get/getTagName.ts +67 -0
  134. package/src/automation/actions/interaction/get/getText.ts +68 -0
  135. package/src/automation/actions/interaction/get/getTheFirstSelectedOptionFromListBoxAsText.ts +44 -0
  136. package/src/automation/actions/interaction/get/getTotalNumberOfCookies.ts +16 -0
  137. package/src/automation/actions/interaction/get/getTunnelIdentifier.ts +25 -0
  138. package/src/automation/actions/interaction/get/getURLPresentInAddressBar.ts +18 -0
  139. package/src/automation/actions/interaction/get/getUserHomeDirectory.ts +16 -0
  140. package/src/automation/actions/interaction/get/getValueByCookieName.ts +27 -0
  141. package/src/automation/actions/interaction/get/getValueFromLocalStorage.ts +26 -0
  142. package/src/automation/actions/interaction/get/getValueOfSystemVariable.ts +20 -0
  143. package/src/automation/actions/interaction/get/getVideoCurrentPlaybackRate.ts +36 -0
  144. package/src/automation/actions/interaction/get/getVideoCurrentSeekTime.ts +36 -0
  145. package/src/automation/actions/interaction/get/getVideoCurrentVolume.ts +36 -0
  146. package/src/automation/actions/interaction/get/getVideoDecodedByte.ts +52 -0
  147. package/src/automation/actions/interaction/get/getVideoDefaultPlaybackRate.ts +36 -0
  148. package/src/automation/actions/interaction/get/getVideoDimension.ts +40 -0
  149. package/src/automation/actions/interaction/get/getVideoHeight.ts +36 -0
  150. package/src/automation/actions/interaction/get/getVideoMediaLength.ts +36 -0
  151. package/src/automation/actions/interaction/get/getVideoMediaSource.ts +46 -0
  152. package/src/automation/actions/interaction/get/getVideoWidth.ts +36 -0
  153. package/src/automation/actions/interaction/get/getWidthOfBrowser.ts +18 -0
  154. package/src/automation/actions/interaction/get/getWidthOfWebElement.ts +36 -0
  155. package/src/automation/actions/interaction/get/getWorkingLinksFromCurrentPage.ts +16 -0
  156. package/src/automation/actions/interaction/get/getWrappedElement.ts +36 -0
  157. package/src/automation/actions/interaction/get/getWrappedOptionFromListBoxAsText.ts +47 -0
  158. package/src/automation/actions/interaction/get/getXLocationOfBrowserWindow.ts +18 -0
  159. package/src/automation/actions/interaction/get/getXLocationOfWebElement.ts +71 -0
  160. package/src/automation/actions/interaction/get/getYLocationOfBrowserWindow.ts +18 -0
  161. package/src/automation/actions/interaction/get/getYLocationOfWebElement.ts +70 -0
  162. package/src/automation/actions/interaction/iframe/switchToDefaultContent.ts +15 -0
  163. package/src/automation/actions/interaction/maximize/maximize.ts +15 -0
  164. package/src/automation/actions/interaction/maximize/minimize.ts +17 -0
  165. package/src/automation/actions/interaction/navigation/goBack.ts +14 -0
  166. package/src/automation/actions/interaction/navigation/navigate.ts +16 -0
  167. package/src/automation/actions/interaction/navigation/refresh.ts +14 -0
  168. package/src/automation/actions/interaction/press/mobPressBackKey.ts +19 -0
  169. package/src/automation/actions/interaction/press/pressAnyKey.ts +89 -0
  170. package/src/automation/actions/interaction/press/pressAnyKeyNTimes.ts +100 -0
  171. package/src/automation/actions/interaction/press/pressEnterKey.ts +45 -0
  172. package/src/automation/actions/interaction/scroll/scrollHorizontallyTillElementIsVisible.ts +29 -0
  173. package/src/automation/actions/interaction/scroll/scrollPageToSpecificLocation.ts +37 -0
  174. package/src/automation/actions/interaction/scroll/scrollToElement.ts +28 -0
  175. package/src/automation/actions/interaction/scroll/scrollVerticallyTillElementIsVisible.ts +29 -0
  176. package/src/automation/actions/interaction/set/setClipBoardText.ts +46 -0
  177. package/src/automation/actions/interaction/shadowDom/shadowDomClick.ts +25 -0
  178. package/src/automation/actions/interaction/shadowDom/shadowDomEnter.ts +27 -0
  179. package/src/automation/actions/interaction/shadowDom/shadowDomGetText.ts +28 -0
  180. package/src/automation/actions/interaction/shadowDom/shadowDomUpload.ts +37 -0
  181. package/src/automation/actions/interaction/shadowDom/shadowDomVerifyPartialText.ts +29 -0
  182. package/src/automation/actions/interaction/shadowDom/shadowDomVerifyText.ts +22 -0
  183. package/src/automation/actions/interaction/switch/switchToNewTabBasedOnTitle.ts +16 -0
  184. package/src/automation/actions/interaction/switch/switchToNewWindowBasedOnTitle.ts +16 -0
  185. package/src/automation/actions/interaction/switch/switchToParentWindow.ts +19 -0
  186. package/src/automation/actions/interaction/switch/switchToTabBasedOnUrl.ts +16 -0
  187. package/src/automation/actions/interaction/switch/switchToWindowBasedOnURL.ts +16 -0
  188. package/src/automation/actions/interaction/switch/switchToWindowIfTitleContainsString.ts +18 -0
  189. package/src/automation/actions/interaction/switch/switchToWindowIfUrlContainsString.ts +18 -0
  190. package/src/automation/actions/interaction/upload/uploadfile.ts +41 -0
  191. package/src/automation/actions/interaction/verify/VerifyAccessibilityScore.ts +90 -0
  192. package/src/automation/actions/interaction/verify/VerifyAllBrokenImages.ts +54 -0
  193. package/src/automation/actions/interaction/verify/VerifyAllBrowserWindowsClosed.ts +27 -0
  194. package/src/automation/actions/interaction/verify/VerifyAllOptionsAreDeSelected.ts +55 -0
  195. package/src/automation/actions/interaction/verify/VerifyAllOptionsAreSelected.ts +66 -0
  196. package/src/automation/actions/interaction/verify/VerifyAttributeValue.ts +96 -0
  197. package/src/automation/actions/interaction/verify/VerifyBestPracticesScore.ts +87 -0
  198. package/src/automation/actions/interaction/verify/VerifyBrowserHtmlCodeContainsString.ts +35 -0
  199. package/src/automation/actions/interaction/verify/VerifyBrowserWindowHeight.ts +35 -0
  200. package/src/automation/actions/interaction/verify/VerifyBrowserWindowTitleContainsString.ts +31 -0
  201. package/src/automation/actions/interaction/verify/VerifyBrowserWindowTitleIsString.ts +30 -0
  202. package/src/automation/actions/interaction/verify/VerifyBrowserWindowUrlContainsExpectedUrl.ts +30 -0
  203. package/src/automation/actions/interaction/verify/VerifyBrowserWindowUrlIsString.ts +30 -0
  204. package/src/automation/actions/interaction/verify/VerifyBrowserWindowWidth.ts +35 -0
  205. package/src/automation/actions/interaction/verify/VerifyBrowserWindowXLocation.ts +36 -0
  206. package/src/automation/actions/interaction/verify/VerifyBrowserWindowYLocation.ts +35 -0
  207. package/src/automation/actions/interaction/verify/VerifyCheckBoxIsNotSelected.ts +46 -0
  208. package/src/automation/actions/interaction/verify/VerifyCheckBoxIsSelected.ts +43 -0
  209. package/src/automation/actions/interaction/verify/VerifyCssAttributeValue.ts +62 -0
  210. package/src/automation/actions/interaction/verify/VerifyElementIsClickable.ts +86 -0
  211. package/src/automation/actions/interaction/verify/VerifyElementIsDisabled.ts +91 -0
  212. package/src/automation/actions/interaction/verify/VerifyElementIsDisplayed.ts +87 -0
  213. package/src/automation/actions/interaction/verify/VerifyElementIsEnabled.ts +87 -0
  214. package/src/automation/actions/interaction/verify/VerifyElementIsNotDisplayed.ts +45 -0
  215. package/src/automation/actions/interaction/verify/VerifyElementIsSelected.ts +83 -0
  216. package/src/automation/actions/interaction/verify/VerifyElementNotContainsText.ts +129 -0
  217. package/src/automation/actions/interaction/verify/VerifyHeightOfWebElement.ts +101 -0
  218. package/src/automation/actions/interaction/verify/VerifyHexCodeForGivenXYCoordinates.ts +51 -0
  219. package/src/automation/actions/interaction/verify/VerifyIfAllCookiesAreDeleted.ts +27 -0
  220. package/src/automation/actions/interaction/verify/VerifyIfAudioEnded.ts +48 -0
  221. package/src/automation/actions/interaction/verify/VerifyIfAudioIsMuted.ts +48 -0
  222. package/src/automation/actions/interaction/verify/VerifyIfAudioIsPaused.ts +48 -0
  223. package/src/automation/actions/interaction/verify/VerifyIfAudioIsPlaying.ts +57 -0
  224. package/src/automation/actions/interaction/verify/VerifyIfBrowserWindowIsClosed.ts +27 -0
  225. package/src/automation/actions/interaction/verify/VerifyIfCookieNameIsAdded.ts +38 -0
  226. package/src/automation/actions/interaction/verify/VerifyIfCookieNameIsDeleted.ts +33 -0
  227. package/src/automation/actions/interaction/verify/VerifyIfCookieObjectIsPresent.ts +49 -0
  228. package/src/automation/actions/interaction/verify/VerifyIfGivenOptionIsDuplicate.ts +60 -0
  229. package/src/automation/actions/interaction/verify/VerifyIfImageIsBroken.ts +40 -0
  230. package/src/automation/actions/interaction/verify/VerifyIfLinkIsBroken.ts +38 -0
  231. package/src/automation/actions/interaction/verify/VerifyIfLinkIsWorking.ts +37 -0
  232. package/src/automation/actions/interaction/verify/VerifyIfLinksAreBroken.ts +46 -0
  233. package/src/automation/actions/interaction/verify/VerifyIfLinksAreWorking.ts +45 -0
  234. package/src/automation/actions/interaction/verify/VerifyIfOptionWithIndexIsDeselectedInElement.ts +75 -0
  235. package/src/automation/actions/interaction/verify/VerifyIfOptionWithIndexIsSelectedInListBox.ts +77 -0
  236. package/src/automation/actions/interaction/verify/VerifyIfOptionWithTextIsDeselected.ts +40 -0
  237. package/src/automation/actions/interaction/verify/VerifyIfOptionWithValueIsDeselected.ts +61 -0
  238. package/src/automation/actions/interaction/verify/VerifyIfOptionWithValueIsSelected.ts +58 -0
  239. package/src/automation/actions/interaction/verify/VerifyIfOptionWithVisibleTextIsSelected.ts +40 -0
  240. package/src/automation/actions/interaction/verify/VerifyIfSpecifiedOptionIsSelected.ts +78 -0
  241. package/src/automation/actions/interaction/verify/VerifyIfStatusCodeOfALinkIsStatusCode.ts +37 -0
  242. package/src/automation/actions/interaction/verify/VerifyIfStatusCodesOfLinks.ts +46 -0
  243. package/src/automation/actions/interaction/verify/VerifyIfVideoEnded.ts +49 -0
  244. package/src/automation/actions/interaction/verify/VerifyIfVideoIsMuted.ts +49 -0
  245. package/src/automation/actions/interaction/verify/VerifyIfVideoIsPaused.ts +49 -0
  246. package/src/automation/actions/interaction/verify/VerifyIfVideoIsPlaying.ts +50 -0
  247. package/src/automation/actions/interaction/verify/VerifyIfVideoPlayingInMute.ts +58 -0
  248. package/src/automation/actions/interaction/verify/VerifyIfVideoPlayingInUnmute.ts +58 -0
  249. package/src/automation/actions/interaction/verify/VerifyIfXAndYCoordinateOfElement.ts +101 -0
  250. package/src/automation/actions/interaction/verify/VerifyLinkNavigatesToTitle.ts +41 -0
  251. package/src/automation/actions/interaction/verify/VerifyListBoxOptionsAreSorted.ts +72 -0
  252. package/src/automation/actions/interaction/verify/VerifyNavigateURL.ts +34 -0
  253. package/src/automation/actions/interaction/verify/VerifyNumberOfElementsByTagName.ts +35 -0
  254. package/src/automation/actions/interaction/verify/VerifyNumberOfElementsByXpath.ts +52 -0
  255. package/src/automation/actions/interaction/verify/VerifyPartialAttributeValue.ts +94 -0
  256. package/src/automation/actions/interaction/verify/VerifyPartialTitleOfCurrentPage.ts +29 -0
  257. package/src/automation/actions/interaction/verify/VerifyPerformanceScore.ts +84 -0
  258. package/src/automation/actions/interaction/verify/VerifyPwaScore.ts +66 -0
  259. package/src/automation/actions/interaction/verify/VerifyRadioButtonIsNotSelected.ts +42 -0
  260. package/src/automation/actions/interaction/verify/VerifyRadioButtonIsSelected.ts +42 -0
  261. package/src/automation/actions/interaction/verify/VerifySeoScore.ts +79 -0
  262. package/src/automation/actions/interaction/verify/VerifyTagName.ts +44 -0
  263. package/src/automation/actions/interaction/verify/VerifyThatSpecifiedOptionIsNotSelected.ts +73 -0
  264. package/src/automation/actions/interaction/verify/VerifyTitleInAllPage.ts +51 -0
  265. package/src/automation/actions/interaction/verify/VerifyTitleOfCurrentPage.ts +30 -0
  266. package/src/automation/actions/interaction/verify/VerifyValueOfElementContainsString.ts +51 -0
  267. package/src/automation/actions/interaction/verify/VerifyValueOfElementIsCleared.ts +45 -0
  268. package/src/automation/actions/interaction/verify/VerifyValueOfElementIsString.ts +54 -0
  269. package/src/automation/actions/interaction/verify/VerifyWidthOfElement.ts +90 -0
  270. package/src/automation/actions/interaction/verify/VerifyXLocationOfElement.ts +89 -0
  271. package/src/automation/actions/interaction/verify/VerifyYLocationOfElement.ts +90 -0
  272. package/src/automation/actions/interaction/verify/checkIfElementIsDisplayed.ts +83 -0
  273. package/src/automation/actions/interaction/verify/verifypartialtext.ts +131 -0
  274. package/src/automation/actions/interaction/verify/verifytext.ts +143 -0
  275. package/src/automation/actions/interaction/wait/wait.ts +16 -0
  276. package/src/automation/actions/interaction/wait/waitTillAttributeOfElementIsString.ts +88 -0
  277. package/src/automation/actions/interaction/wait/waitTillElementContainsText.ts +79 -0
  278. package/src/automation/actions/interaction/wait/waitTillElementHasText.ts +71 -0
  279. package/src/automation/actions/interaction/wait/waitTillElementIsClickable.ts +72 -0
  280. package/src/automation/actions/interaction/wait/waitTillPresenceOfAllElements.ts +72 -0
  281. package/src/automation/actions/interaction/wait/waitTillPresenceOfElement.ts +67 -0
  282. package/src/automation/actions/interface/IframeInterface.ts +6 -0
  283. package/src/automation/actions/interface/alertActionInterface.ts +39 -0
  284. package/src/automation/actions/interface/clearActionInterface.ts +27 -0
  285. package/src/automation/actions/interface/clickActionInterface.ts +87 -0
  286. package/src/automation/actions/interface/dragAndDropToElementInterface.ts +18 -0
  287. package/src/automation/actions/interface/findActionInterface.ts +15 -0
  288. package/src/automation/actions/interface/getActionInterface.ts +873 -0
  289. package/src/automation/actions/interface/interactionActionInterface.ts +51 -3
  290. package/src/automation/actions/interface/maximizeAndMinimizeInterface.ts +12 -0
  291. package/src/automation/actions/interface/navigationActionInterface.ts +1 -1
  292. package/src/automation/actions/interface/pressActionInterface.ts +25 -0
  293. package/src/automation/actions/interface/scrollActionInterface.ts +45 -0
  294. package/src/automation/actions/interface/setActionInterface.ts +10 -0
  295. package/src/automation/actions/interface/shadowDomInterface.ts +78 -0
  296. package/src/automation/actions/interface/switchingActionInterface.ts +93 -0
  297. package/src/automation/actions/interface/uploadFile.ts +14 -0
  298. package/src/automation/actions/interface/verifyActionInterface.ts +743 -0
  299. package/src/automation/actions/interface/waitActionInterface.ts +75 -0
  300. package/src/automation/browserSession/initiateBrowserSession.ts +12 -40
  301. package/src/automation/mobileSession/initiateMobileSession.ts +81 -0
  302. package/src/core/constants/allAction.ts +21 -0
  303. package/src/core/constants/defaultValues.ts +1 -0
  304. package/src/core/constants/supportedActions.ts +27 -2
  305. package/src/core/interfaces/actionInterface.ts +238 -3
  306. package/src/core/interfaces/automationRunnerInterface.ts +2 -1
  307. package/src/core/interfaces/browserCapabilitiesInterface.ts +1 -3
  308. package/src/core/interfaces/errorInfoInterface.ts +7 -0
  309. package/src/core/interfaces/executionDetails.ts +10 -6
  310. package/src/core/interfaces/fireflinkScriptPayloadInterface.ts +17 -5
  311. package/src/core/interfaces/llmResponseInterface.ts +28 -4
  312. package/src/core/interfaces/promptInterface.ts +20 -0
  313. package/src/core/interfaces/scriptGenrationDataInterface.ts +2 -2
  314. package/src/core/interfaces/simplifyAndFlattenInterface.ts +13 -0
  315. package/src/core/main/actionHandlerFactory.ts +1528 -53
  316. package/src/core/main/executionContext.ts +5 -1
  317. package/src/core/main/runAutomationScript.ts +528 -123
  318. package/src/core/main/stepProcessor.ts +4 -2
  319. package/src/core/types/llmResponseType.ts +7 -3
  320. package/src/core/types/promptMap.ts +7 -4
  321. package/src/core/types/promptType.ts +6 -0
  322. package/src/core/types/scriptTypesType.ts +1 -0
  323. package/src/domAnalysis/getRelaventElements.ts +10 -1
  324. package/src/domAnalysis/relativeElementsFromDom.ts +205 -0
  325. package/src/domAnalysis/searchBest.ts +130 -17
  326. package/src/domAnalysis/simplifyAndFlatten.ts +139 -10
  327. package/src/fireflinkData/fireflinkLocators/getListOfLocators.ts +1 -2
  328. package/src/fireflinkData/fireflinkScript/scriptGenrationData.ts +70 -21
  329. package/src/imageAnalysisMobile/annotatedScreenshotMobile.ts +137 -0
  330. package/src/imageAnalysisMobile/annotatedScreenshotMobileInterface.ts +6 -0
  331. package/src/imageAnalysisWeb/annotateScreenshot.ts +196 -0
  332. package/src/imageAnalysisWeb/generateAnnotatedScreenshots.ts +43 -0
  333. package/src/imageAnalysisWeb/screenshotInterface.ts +18 -0
  334. package/src/index.ts +2 -2
  335. package/src/service/{fireflinkApi.service.ts → api/fireflinkApi.service.ts} +5 -7
  336. package/src/service/kafka/fireflinkKafka.service.ts +25 -0
  337. package/src/service/scriptRunner.service.ts +23 -42
  338. package/src/utils/DomExtraction/jsForAttributeInjection.ts +68 -12
  339. package/src/utils/InstancesDetails/getInstancesInfo.ts +12 -0
  340. package/src/utils/alertPopup/isAlertPresent.ts +20 -0
  341. package/src/utils/alertPopup/isAlertPresentInterface.ts +6 -0
  342. package/src/utils/helpers/enterActionHelper.ts +88 -2
  343. package/src/utils/helpers/imageUtils.ts +10 -0
  344. package/src/utils/helpers/sameActionsHelper.ts +52 -0
  345. package/src/utils/helpers/xpathcreation.ts +59 -0
  346. package/src/utils/iframesExtraction/findElementUsingFF.ts +45 -0
  347. package/src/utils/iframesExtraction/iframeInterface.ts +22 -0
  348. package/src/utils/iframesExtraction/switchToIframeByMeta.ts +23 -0
  349. package/src/utils/javascript/jsFindElement.ts +39 -31
  350. package/src/utils/javascript/jsForShadowRoot.ts +9 -9
  351. package/src/utils/javascript/jsForVision.ts +151 -0
  352. package/src/utils/logger/logData.ts +126 -47
  353. package/src/utils/mobileXpath/findXpathFromIndex.ts +87 -0
  354. package/src/utils/mobileXpath/findXpathFromIndexInterface.ts +4 -0
  355. package/src/utils/newTab/newTabTracker.ts +62 -0
  356. package/src/automation/actions/interaction/click.ts +0 -25
  357. package/src/automation/actions/interaction/enterInput.ts +0 -36
  358. package/src/automation/actions/navigation/getTitle.ts +0 -9
  359. package/src/automation/actions/navigation/goBack.ts +0 -9
  360. package/src/automation/actions/navigation/navigate.ts +0 -10
  361. package/src/automation/actions/navigation/refresh.ts +0 -9
  362. package/src/automation/actions/wait/wait.ts +0 -10
@@ -0,0 +1,35 @@
1
+ import { VerifyBrowserHtmlCodeContainsStringInterface } from "../../interface/verifyActionInterface.js";
2
+ import { logger } from "../../../../utils/logger/logData.js";
3
+ export async function verifyBrowserHtmlCodeContainsString(
4
+ args: VerifyBrowserHtmlCodeContainsStringInterface
5
+ ): Promise<void> {
6
+ try {
7
+
8
+
9
+
10
+ const expectedText = args.value.trim().toLowerCase();
11
+ const pageSource = (await args.driver.getPageSource()).toLowerCase();
12
+
13
+ const isMatched = pageSource.includes(expectedText);
14
+
15
+ logger.info("Browser HTML contains string verification result:", {
16
+ isMatched,
17
+ expectedText
18
+ });
19
+ if (isMatched === false) {
20
+ throw new Error(`Browser HTML does not contain the expected string: ${args.value}`);
21
+ }
22
+ args.scriptDataAppender.add(async () => ({
23
+ nlpName: 'VerifyBrowserHtmlCodeContainsString',
24
+ stepInputs: [args.value],
25
+ elementsData: []
26
+ }));
27
+
28
+
29
+
30
+
31
+ } catch (error: any) {
32
+ args.scriptDataAppender.setErrorNLP("VerifyBrowserHtmlCodeContainsString");
33
+ throw new Error(`VerifyBrowserHtmlCodeContainsString action failed`, { cause: error });
34
+ }
35
+ }
@@ -0,0 +1,35 @@
1
+ import { VerifyBrowserWindowHeightInterface } from "../../interface/verifyActionInterface.js";
2
+ import { logger } from "../../../../utils/logger/logData.js";
3
+ export async function verifyBrowserWindowHeight(
4
+ args: VerifyBrowserWindowHeightInterface
5
+ ): Promise<void> {
6
+ try {
7
+
8
+
9
+
10
+ const expectedHeight = parseInt(args.value, 10);
11
+ const windowSize = await args.driver.getWindowSize();
12
+
13
+ const isMatched = windowSize.height === expectedHeight;
14
+
15
+ logger.info("Browser window height verification result:", {
16
+ isMatched,
17
+ actualHeight: windowSize.height,
18
+ expectedHeight
19
+ });
20
+ if (isMatched === false) {
21
+ throw new Error(`Browser window height does not match. Expected: ${expectedHeight}, Actual: ${windowSize.height}`);
22
+ }
23
+ args.scriptDataAppender.add(async () => ({
24
+ nlpName: 'VerifyBrowserWindowHeight',
25
+ stepInputs: [args.value],
26
+ elementsData: []
27
+ }));
28
+
29
+
30
+
31
+ } catch (error: any) {
32
+ args.scriptDataAppender.setErrorNLP("VerifyBrowserWindowHeight");
33
+ throw new Error(`VerifyBrowserWindowHeight action failed`, { cause: error });
34
+ }
35
+ }
@@ -0,0 +1,31 @@
1
+ import { VerifyBrowserWindowTitleContainsStringInterface } from "../../interface/verifyActionInterface.js";
2
+ import { logger } from "../../../../utils/logger/logData.js";
3
+
4
+ export async function verifyBrowserWindowTitleContainsString(
5
+ args: VerifyBrowserWindowTitleContainsStringInterface
6
+ ): Promise<void> {
7
+ try {
8
+ logger.info(args.value);
9
+
10
+ const expectedText = args.value.trim().toLowerCase();
11
+ const actualTitle = (await args.driver.getTitle()).toLowerCase();
12
+
13
+ logger.info("Actual title:", actualTitle);
14
+ logger.info("Expected fragment:", expectedText);
15
+
16
+ if (!actualTitle.includes(expectedText)) {
17
+ logger.info("Title does not contain expected fragment:", expectedText);
18
+ throw new Error(`Title does not contain expected value.`);
19
+ }
20
+
21
+ args.scriptDataAppender.add(async () => ({
22
+ nlpName: 'VerifyBrowserWindowTitleContainsString',
23
+ stepInputs: [args.value],
24
+ elementsData: []
25
+ }));
26
+
27
+ } catch (error: any) {
28
+ args.scriptDataAppender.setErrorNLP("VerifyBrowserWindowTitleContainsString");
29
+ throw new Error(`VerifyBrowserWindowTitleContainsString action failed`, { cause: error });
30
+ }
31
+ }
@@ -0,0 +1,30 @@
1
+ import { VerifyBrowserWindowTitleIsStringInterface } from "../../interface/verifyActionInterface.js";
2
+ import { logger } from "../../../../utils/logger/logData.js";
3
+
4
+ export async function verifyBrowserWindowTitleIsString(
5
+ args: VerifyBrowserWindowTitleIsStringInterface
6
+ ): Promise<void> {
7
+ try {
8
+
9
+ const expectedTitle = args.value.trim().toLowerCase();
10
+ const actualTitle = (await args.driver.getTitle()).toLowerCase();
11
+
12
+ logger.info("Actual title:", actualTitle);
13
+ logger.info("Expected title:", expectedTitle);
14
+
15
+ if (actualTitle !== expectedTitle) {
16
+ logger.info("Browser title does not exactly match expected value.");
17
+ throw new Error("Browser title does not exactly match expected value.");
18
+ }
19
+
20
+ args.scriptDataAppender.add(async () => ({
21
+ nlpName: 'VerifyBrowserWindowTitleIsString',
22
+ stepInputs: [args.value],
23
+ elementsData: []
24
+ }));
25
+
26
+ } catch (error: any) {
27
+ args.scriptDataAppender.setErrorNLP("VerifyBrowserWindowTitleIsString");
28
+ throw new Error("VerifyBrowserWindowTitleIsString action failed", { cause: error });
29
+ }
30
+ }
@@ -0,0 +1,30 @@
1
+ import { VerifyBrowserWindowUrlContainsExpectedUrlInterface } from "../../interface/verifyActionInterface.js";
2
+ import { logger } from "../../../../utils/logger/logData.js";
3
+
4
+ export async function verifyBrowserWindowUrlContainsExpectedUrl(
5
+ args: VerifyBrowserWindowUrlContainsExpectedUrlInterface
6
+ ): Promise<void> {
7
+ try {
8
+
9
+ const expectedUrl = args.value.trim().toLowerCase();
10
+ const actualUrl = (await args.driver.getUrl()).toLowerCase();
11
+
12
+ logger.info("Actual URL:", actualUrl);
13
+ logger.info("Expected URL fragment:", expectedUrl);
14
+
15
+ if (!actualUrl.includes(expectedUrl)) {
16
+ logger.info("URL does not contain expected fragment:", expectedUrl);
17
+ throw new Error(`URL does not contain expected value.`);
18
+ }
19
+
20
+ args.scriptDataAppender.add(async () => ({
21
+ nlpName: 'VerifyBrowserWindowUrlContainsExpectedUrl',
22
+ stepInputs: [args.value],
23
+ elementsData: []
24
+ }));
25
+
26
+ } catch (error: any) {
27
+ args.scriptDataAppender.setErrorNLP("VerifyBrowserWindowUrlContainsExpectedUrl");
28
+ throw new Error(`VerifyBrowserWindowUrlContainsExpectedUrl action failed`, { cause: error });
29
+ }
30
+ }
@@ -0,0 +1,30 @@
1
+ import { VerifyBrowserWindowUrlIsStringInterface } from "../../interface/verifyActionInterface.js";
2
+ import { logger } from "../../../../utils/logger/logData.js";
3
+
4
+ export async function verifyBrowserWindowUrlIsString(
5
+ args: VerifyBrowserWindowUrlIsStringInterface
6
+ ): Promise<void> {
7
+ try {
8
+
9
+ const expectedUrl = args.value.trim().toLowerCase();
10
+ const actualUrl = (await args.driver.getUrl()).toLowerCase();
11
+
12
+ logger.info("Actual URL:", actualUrl);
13
+ logger.info("Expected URL:", expectedUrl);
14
+
15
+ if (actualUrl !== expectedUrl) {
16
+ logger.info("URL does not exactly match expected value. Actual URL:", actualUrl, "Expected URL:", expectedUrl);
17
+ throw new Error(`URL does not exactly match expected value.`);
18
+ }
19
+
20
+ args.scriptDataAppender.add(async () => ({
21
+ nlpName: 'VerifyBrowserWindowUrlIsString',
22
+ stepInputs: [args.value],
23
+ elementsData: []
24
+ }));
25
+
26
+ } catch (error: any) {
27
+ args.scriptDataAppender.setErrorNLP("VerifyBrowserWindowUrlIsString");
28
+ throw new Error(`VerifyBrowserWindowUrlIsString action failed`, { cause: error });
29
+ }
30
+ }
@@ -0,0 +1,35 @@
1
+ import { VerifyBrowserWindowWidthInterface } from "../../interface/verifyActionInterface.js";
2
+ import { logger } from "../../../../utils/logger/logData.js";
3
+ export async function verifyBrowserWindowWidth(
4
+ args: VerifyBrowserWindowWidthInterface
5
+ ): Promise<void> {
6
+ try {
7
+
8
+
9
+
10
+ const expectedWidth = parseInt(args.value, 10);
11
+ const windowSize = await args.driver.getWindowSize();
12
+
13
+ const isMatched = windowSize.width === expectedWidth;
14
+
15
+ logger.info("Browser window width verification result:", {
16
+ isMatched,
17
+ actualWidth: windowSize.width,
18
+ expectedWidth
19
+ });
20
+ if (isMatched === false) {
21
+ throw new Error(`Browser window width does not match. Expected: ${expectedWidth}, Actual: ${windowSize.width}`);
22
+ }
23
+ args.scriptDataAppender.add(async () => ({
24
+ nlpName: 'VerifyBrowserWindowWidth',
25
+ stepInputs: [args.value],
26
+ elementsData: []
27
+ }));
28
+
29
+
30
+
31
+ } catch (error: any) {
32
+ args.scriptDataAppender.setErrorNLP("VerifyBrowserWindowWidth");
33
+ throw new Error(`VerifyBrowserWindowWidth action failed`, { cause: error });
34
+ }
35
+ }
@@ -0,0 +1,36 @@
1
+ import { VerifyBrowserWindowXLocationInterface } from "../../interface/verifyActionInterface.js";
2
+ import { logger } from "../../../../utils/logger/logData.js";
3
+ export async function verifyBrowserWindowXLocation(
4
+ args: VerifyBrowserWindowXLocationInterface
5
+ ): Promise<void> {
6
+ try {
7
+
8
+
9
+
10
+ const expectedX = parseInt(args.value, 10);
11
+ const windowRect = await args.driver.getWindowRect();
12
+
13
+ const isMatched = windowRect.x === expectedX;
14
+
15
+ logger.info("Browser window X position verification result:", {
16
+ isMatched,
17
+ actualX: windowRect.x,
18
+ expectedX
19
+ });
20
+ if (isMatched === false) {
21
+ throw new Error(`Browser window X position does not match. Expected: ${expectedX}, Actual: ${windowRect.x}`);
22
+
23
+ }
24
+ args.scriptDataAppender.add(async () => ({
25
+ nlpName: 'VerifyBrowserWindowXLocation',
26
+ stepInputs: [args.value],
27
+ elementsData: []
28
+ }));
29
+
30
+
31
+
32
+ } catch (error: any) {
33
+ args.scriptDataAppender.setErrorNLP("VerifyBrowserWindowXLocation");
34
+ throw new Error(`VerifyBrowserWindowXLocation action failed`, { cause: error });
35
+ }
36
+ }
@@ -0,0 +1,35 @@
1
+ import { VerifyBrowserWindowYLocationInterface } from "../../interface/verifyActionInterface.js";
2
+ import { logger } from "../../../../utils/logger/logData.js";
3
+ export async function verifyBrowserWindowYLocation(
4
+ args: VerifyBrowserWindowYLocationInterface
5
+ ): Promise<void> {
6
+ try {
7
+
8
+
9
+
10
+ const expectedY = parseInt(args.value, 10);
11
+ const windowRect = await args.driver.getWindowRect();
12
+
13
+ const isMatched = windowRect.y === expectedY;
14
+
15
+ logger.info("Browser window Y position verification result:", {
16
+ isMatched,
17
+ actualY: windowRect.y,
18
+ expectedY
19
+ });
20
+ if (isMatched === false) {
21
+ throw new Error(`Browser window Y position does not match. Expected: ${expectedY}, Actual: ${windowRect.y}`);
22
+ }
23
+ args.scriptDataAppender.add(async () => ({
24
+ nlpName: 'VerifyBrowserWindowYLocation',
25
+ stepInputs: [args.value],
26
+ elementsData: []
27
+ }));
28
+
29
+
30
+
31
+ } catch (error: any) {
32
+ args.scriptDataAppender.setErrorNLP("VerifyBrowserWindowYLocation");
33
+ throw new Error(`VerifyBrowserWindowYLocation action failed`, { cause: error });
34
+ }
35
+ }
@@ -0,0 +1,46 @@
1
+ import { VerifyCheckBoxIsNotSelectedInterface } from "../../interface/verifyActionInterface.js";
2
+ import { logger } from "../../../../utils/logger/logData.js";
3
+
4
+ export async function verifyCheckboxIsNotSelected(
5
+ args: VerifyCheckBoxIsNotSelectedInterface
6
+ ): Promise<void> {
7
+ try {
8
+
9
+ const element = await args.driver.$(args.selector);
10
+
11
+ if (!(await element.isExisting())) {
12
+ // Same logic as Python: if not existing → treat as not selected
13
+ throw new Error(`Element with selector '${args.selector}' does not exist, treating as not selected.`);
14
+ } else {
15
+ const isSelected = await element.isSelected();
16
+ logger.info("Checkbox selection status:", isSelected);
17
+
18
+ if (isSelected === true) {
19
+ throw new Error(`Checkbox is selected but expected to be not selected.`);
20
+ }
21
+ }
22
+
23
+
24
+
25
+ args.scriptDataAppender.add(async () => {
26
+ const ffElement: any = await args.elementGetter.getFireFlinkElement(
27
+ args.pageDOM,
28
+ `[ff-inspect="${args.fireflinkIndex}"]`
29
+ );
30
+ return {
31
+ nlpName: 'VerifyCheckBoxIsNotSelected',
32
+ stepInputs: [],
33
+ elementsData: [{
34
+ name: args.elementName,
35
+ type: args.elementType,
36
+ locators: ffElement.locators,
37
+ platform: args.platform
38
+ }]
39
+ };
40
+ });
41
+
42
+ } catch (error: any) {
43
+ args.scriptDataAppender.setErrorNLP("VerifyCheckBoxIsNotSelected");
44
+ throw new Error(`VerifyCheckBoxIsNotSelected action failed`, { cause: error });
45
+ }
46
+ }
@@ -0,0 +1,43 @@
1
+ import { VerifyCheckBoxIsSelectedInterface } from "../../interface/verifyActionInterface.js";
2
+ import { logger } from "../../../../utils/logger/logData.js";
3
+ export async function verifyCheckboxIsSelected(
4
+ args: VerifyCheckBoxIsSelectedInterface
5
+ ): Promise<void> {
6
+ try {
7
+
8
+ const element = await args.driver.$(args.selector);
9
+
10
+ if (!(await element.isExisting())) {
11
+ throw new Error(`Element with selector '${args.selector}' does not exist.`);
12
+ }
13
+
14
+ const isSelected = await element.isSelected();
15
+ logger.info("Checkbox selection status:", isSelected);
16
+ if (isSelected === false) {
17
+ throw new Error(`Checkbox is not selected as expected.`);
18
+ }
19
+
20
+
21
+ args.scriptDataAppender.add(async () => {
22
+ const ffElement: any = await args.elementGetter.getFireFlinkElement(
23
+ args.pageDOM,
24
+ `[ff-inspect="${args.fireflinkIndex}"]`
25
+ );
26
+ return {
27
+ nlpName: 'VerifyCheckBoxIsSelected',
28
+ stepInputs: [],
29
+ elementsData: [{
30
+ name: args.elementName,
31
+ type: args.elementType,
32
+ locators: ffElement.locators,
33
+ platform: args.platform
34
+ }]
35
+ };
36
+ });
37
+
38
+
39
+ } catch (error: any) {
40
+ args.scriptDataAppender.setErrorNLP("VerifyCheckBoxIsSelected");
41
+ throw new Error(`VerifyCheckBoxIsSelected action failed`, { cause: error });
42
+ }
43
+ }
@@ -0,0 +1,62 @@
1
+ import { VerifyCssAttributeValueInterface } from "../../interface/verifyActionInterface.js";
2
+ import { logger } from "../../../../utils/logger/logData.js";
3
+ export async function verifyCssAttributeValue(
4
+ args: VerifyCssAttributeValueInterface
5
+ ): Promise<void> {
6
+ try {
7
+
8
+
9
+
10
+ const element = await args.driver.$(args.selector);
11
+
12
+
13
+ const parts = args.value.split(",");
14
+
15
+
16
+ const cssProperty = parts[0].trim();
17
+ const expectedValue = parts[1].trim();
18
+ const caseSensitive = false
19
+
20
+ const actualValue = (await element.getCSSProperty(cssProperty)).value || "";
21
+
22
+ const isMatched = caseSensitive
23
+ ? actualValue === expectedValue
24
+ : actualValue.toLowerCase() === expectedValue.toLowerCase();
25
+ logger.info("CSS attribute verification result:", {
26
+ isMatched,
27
+ actualValue,
28
+ expectedValue,
29
+ cssProperty,
30
+ caseSensitive
31
+ });
32
+ if (isMatched === false) {
33
+ throw new Error(`CSS attribute value does not match. Expected: ${expectedValue}, Actual: ${actualValue}`);
34
+ }
35
+
36
+
37
+ args.scriptDataAppender.add(async () => {
38
+ const ffElement: any = await args.elementGetter.getFireFlinkElement(
39
+ args.pageDOM,
40
+ `[ff-inspect="${args.fireflinkIndex}"]`
41
+ );
42
+ return {
43
+ nlpName: 'VerifyCssAttributeValue',
44
+ stepInputs: [cssProperty, expectedValue, caseSensitive],
45
+ elementsData: [{
46
+ name: args.elementName,
47
+ type: args.elementType,
48
+ locators: ffElement.locators,
49
+ platform: args.platform
50
+ }]
51
+ };
52
+ });
53
+
54
+
55
+
56
+
57
+
58
+ } catch (error: any) {
59
+ args.scriptDataAppender.setErrorNLP("VerifyCssAttributeValue");
60
+ throw new Error(`VerifyCssAttributeValue action failed`, { cause: error });
61
+ }
62
+ }
@@ -0,0 +1,86 @@
1
+ import { logger } from "../../../../utils/logger/logData.js";
2
+ import { verifyElementIsClickableInterface } from "../../interface/verifyActionInterface.js";
3
+
4
+
5
+ export async function verifyElementIsClickable(
6
+ args: verifyElementIsClickableInterface
7
+ ): Promise<void> {
8
+ switch (args.platform) {
9
+ case "android":
10
+ try {
11
+ const element = await args.driver.$(args.selector);
12
+
13
+
14
+ if (!element) {
15
+ throw new Error("Element not found");
16
+ }
17
+
18
+ const isClickable = await element.getAttribute("clickable");
19
+
20
+ logger.info("Element enabled status:", { isClickable });
21
+
22
+ if (isClickable !== "true") {
23
+ throw new Error(`Element is not enabled. Expected: true, Actual: ${isClickable}`);
24
+ }
25
+ args.scriptDataAppender.add(async () => {
26
+
27
+ return {
28
+ nlpName: 'MOB_VerifyElementIsClickable',
29
+ stepInputs: [],
30
+ elementsData: [{
31
+ name: args.elementName,
32
+ type: args.elementType,
33
+ locators: [{ "xpath": args.selector }],
34
+ platform: args.platform
35
+ }]
36
+ };
37
+ });
38
+
39
+
40
+
41
+
42
+ } catch (error: any) {
43
+ args.scriptDataAppender.setErrorNLP("MOB_VerifyElementIsClickable")
44
+ throw new Error(`VerifyElementIsClickable action failed `, { cause: error });
45
+ }
46
+ break;
47
+ case "web":
48
+ default:
49
+ try {
50
+ const element = await args.driver.$(args.selector);
51
+
52
+ const isClickable = await element.isClickable();
53
+ if (isClickable === false) {
54
+ throw new Error(`Element is not clickable. Expected: clickable, Actual: not clickable`);
55
+ }
56
+
57
+
58
+
59
+ args.scriptDataAppender.add(async () => {
60
+ const ffElement: any = await args.elementGetter.getFireFlinkElement(
61
+ args.pageDOM,
62
+ `[ff-inspect="${args.fireflinkIndex}"]`
63
+ );
64
+ return {
65
+ nlpName: 'VerifyElementIsClickable',
66
+ stepInputs: [],
67
+ elementsData: [{
68
+ name: args.elementName,
69
+ type: args.elementType,
70
+ locators: ffElement.locators,
71
+ platform: args.platform
72
+ }]
73
+ };
74
+ });
75
+
76
+
77
+
78
+
79
+ } catch (error: any) {
80
+ args.scriptDataAppender.setErrorNLP("VerifyElementIsClickable")
81
+ throw new Error(`VerifyElementIsClickable action failed `, { cause: error });
82
+ }
83
+ break;
84
+ }
85
+
86
+ }
@@ -0,0 +1,91 @@
1
+ import { VerifyElementIsDisabledInterface } from "../../interface/verifyActionInterface.js";
2
+ import { logger } from "../../../../utils/logger/logData.js";
3
+
4
+ export async function verifyElementIsDisabled(
5
+ args: VerifyElementIsDisabledInterface
6
+ ): Promise<void> {
7
+ switch (args.platform) {
8
+ case "android":
9
+ try {
10
+
11
+ const element = await args.driver.$(args.selector);
12
+
13
+ if (!element) {
14
+ logger.info("Element not found");
15
+ }
16
+
17
+ const enabled = await element.getAttribute("enabled");
18
+
19
+ logger.info("Element enabled status:", { enabled });
20
+
21
+ if (enabled !== "false") {
22
+ throw new Error(`Element is not enabled. Expected: true, Actual: ${enabled}`);
23
+ }
24
+
25
+
26
+ args.scriptDataAppender.add(async () => {
27
+
28
+ return {
29
+ nlpName: 'MOB_VerifyElementIsDisabled',
30
+ stepInputs: [],
31
+ elementsData: [{
32
+ name: args.elementName,
33
+ type: args.elementType,
34
+ locators: [{ "xpath": args.selector }],
35
+ platform: args.platform
36
+ }]
37
+ };
38
+ });
39
+
40
+
41
+
42
+ } catch (error: any) {
43
+ args.scriptDataAppender.setErrorNLP("MOB_VerifyElementIsDisabled")
44
+ throw new Error(`VerifyElementIsDisabled action failed `, { cause: error });
45
+ }
46
+ break;
47
+ case "web":
48
+ default:
49
+ try {
50
+
51
+ const element = await args.driver.$(args.selector);
52
+
53
+ if (!(await element.isExisting())) {
54
+ logger.info("Element not found in verifyElementIsDisabled");
55
+
56
+ }
57
+
58
+ const isEnabled = await element.isEnabled();
59
+ logger.info("Element enabled status in verifyElementIsDisabled:", !isEnabled);
60
+ if (isEnabled === true) {
61
+ throw new Error(`Element is not disabled. Expected: disabled, Actual: enabled`);
62
+ }
63
+
64
+
65
+ args.scriptDataAppender.add(async () => {
66
+ const ffElement: any = await args.elementGetter.getFireFlinkElement(
67
+ args.pageDOM,
68
+ `[ff-inspect="${args.fireflinkIndex}"]`
69
+ );
70
+ return {
71
+ nlpName: 'VerifyElementIsDisabled',
72
+ stepInputs: [],
73
+ elementsData: [{
74
+ name: args.elementName,
75
+ type: args.elementType,
76
+ locators: ffElement.locators,
77
+ platform: args.platform
78
+ }]
79
+ };
80
+ });
81
+
82
+
83
+
84
+ } catch (error: any) {
85
+ args.scriptDataAppender.setErrorNLP("VerifyElementIsDisabled")
86
+ throw new Error(`VerifyElementIsDisabled action failed `, { cause: error });
87
+ }
88
+ break;
89
+ }
90
+
91
+ }