ff-automationv2 2.2.28 → 2.2.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ai/llmcalls/llmAction.d.ts +9 -4
- package/dist/ai/llmcalls/llmAction.js +173 -37
- package/dist/ai/llmcalls/parseLlmOputput.js +18 -6
- package/dist/ai/llmprompts/promptRegistry.js +11 -0
- package/dist/ai/llmprompts/systemPrompts/actionExtractorPrompt.js +19 -10
- package/dist/ai/llmprompts/systemPrompts/combinedActionExtractorPrompt.js +7 -6
- package/dist/ai/llmprompts/systemPrompts/combinedActionExtractorPromptMob.js +14 -13
- package/dist/ai/llmprompts/systemPrompts/errorDescriptionPrompt.js +6 -4
- package/dist/ai/llmprompts/systemPrompts/fireflinkElementIndexExtactors.js +120 -62
- package/dist/ai/llmprompts/systemPrompts/fireflinkElementIndexExtractor_Mob.js +33 -28
- package/dist/ai/llmprompts/systemPrompts/getActionExtractorPrompt.js +18 -16
- package/dist/ai/llmprompts/systemPrompts/getActionExtractorPromptMob.js +13 -13
- package/dist/ai/llmprompts/systemPrompts/mobileKeywordExtractor.js +13 -11
- package/dist/ai/llmprompts/systemPrompts/userStoryToListPrompt.js +1 -1
- package/dist/ai/llmprompts/systemPrompts/verifyActionExtractorPrompt.js +20 -18
- package/dist/ai/llmprompts/systemPrompts/verifyActionExtractorPromptMob.js +9 -9
- package/dist/ai/llmprompts/systemPrompts/visionPrompt.js +4 -2
- package/dist/ai/llmprompts/systemPrompts/visionPromptMobile.js +1 -0
- package/dist/ai/llmprompts/systemPrompts/waitActionExtractorPrompt.js +10 -9
- package/dist/ai/llmprompts/systemPrompts/waitActionExtractorPromptMob.js +8 -7
- package/dist/ai/llmprompts/userPrompts/userPrompt.js +7 -8
- package/dist/automation/actions/executor.d.ts +38 -34
- package/dist/automation/actions/executor.js +280 -166
- package/dist/automation/actions/interaction/alert/clickCancelOnAlertPopup.js +4 -4
- package/dist/automation/actions/interaction/alert/clickOkOnAlertPopup.js +4 -4
- package/dist/automation/actions/interaction/alert/enterDataToAlert.js +4 -3
- package/dist/automation/actions/interaction/alert/getTextPresentOnAlertPopup.js +4 -4
- package/dist/automation/actions/interaction/alert/verifyAlertPopUpMessageContainsString.js +4 -3
- package/dist/automation/actions/interaction/alert/verifyAlertPopupIsDisplayed.js +10 -4
- package/dist/automation/actions/interaction/alert/verifyTextPresentOnAlertPopup.js +4 -3
- package/dist/automation/actions/interaction/alert/waitTillAlertIsPresent.js +5 -5
- package/dist/automation/actions/interaction/clear/clear.js +33 -26
- package/dist/automation/actions/interaction/clear/clearAndEnter.js +33 -26
- package/dist/automation/actions/interaction/click/MOB_DoubleTapAtSpecifiedLocation.js +5 -6
- package/dist/automation/actions/interaction/click/click.js +57 -25
- package/dist/automation/actions/interaction/click/clickNtimes.js +29 -24
- package/dist/automation/actions/interaction/click/clickUsingJs.js +12 -12
- package/dist/automation/actions/interaction/click/doubleClick.js +32 -25
- package/dist/automation/actions/interaction/click/rightClick.js +18 -13
- package/dist/automation/actions/interaction/click/tapOnSpecifiedLocation.js +7 -5
- package/dist/automation/actions/interaction/click/waitAndClick.js +29 -27
- package/dist/automation/actions/interaction/dragAndDrop/dragAndDrop.js +2 -2
- package/dist/automation/actions/interaction/elementLessAction/MobCheckIfAppIsClosed.js +14 -9
- package/dist/automation/actions/interaction/elementLessAction/MobRunAppInBackgroundInterface.js +9 -9
- package/dist/automation/actions/interaction/elementlessActions/activateAppUsingAppPackage.d.ts +0 -3
- package/dist/automation/actions/interaction/elementlessActions/activateAppUsingAppPackage.js +8 -9
- package/dist/automation/actions/interaction/elementlessActions/installAPK.js +74 -33
- package/dist/automation/actions/interaction/elementlessActions/isAppInstalled.js +10 -8
- package/dist/automation/actions/interaction/elementlessActions/openAppWithApkFilePath.js +87 -68
- package/dist/automation/actions/interaction/elementlessActions/openMobileApplication.js +8 -6
- package/dist/automation/actions/interaction/elementlessActions/receiveMessageOnEmulator.js +4 -3
- package/dist/automation/actions/interaction/elementlessActions/terminateAppUsingAppPackage.js +8 -6
- package/dist/automation/actions/interaction/elementlessActions/uninstallAPK.js +76 -32
- package/dist/automation/actions/interaction/enterActions/EnterInputIntoElementFromClipBoardInterface_mob.js +17 -13
- package/dist/automation/actions/interaction/enterActions/enterInput.js +50 -30
- package/dist/automation/actions/interaction/enterActions/enterInputAndPress.js +32 -24
- package/dist/automation/actions/interaction/enterActions/enterUrl.js +22 -17
- package/dist/automation/actions/interaction/enterActions/enterusingJs.js +19 -13
- package/dist/automation/actions/interaction/enterActions/waitAndEnter.js +33 -26
- package/dist/automation/actions/interaction/find/MOB_FindElement.js +37 -21
- package/dist/automation/actions/interaction/find/findElements.js +49 -32
- package/dist/automation/actions/interaction/get/MOB_GetADBLogsForGivenAppPackage.js +5 -6
- package/dist/automation/actions/interaction/get/MOB_GetAllContexts.js +4 -6
- package/dist/automation/actions/interaction/get/MOB_GetAllWindowHandles.js +8 -9
- package/dist/automation/actions/interaction/get/MOB_GetAltitude.js +20 -10
- package/dist/automation/actions/interaction/get/MOB_GetBatteryPercentage.js +7 -9
- package/dist/automation/actions/interaction/get/MOB_GetBatteryStatus.js +4 -6
- package/dist/automation/actions/interaction/get/MOB_GetClipBoardText.js +4 -6
- package/dist/automation/actions/interaction/get/MOB_GetCurrentActivity.js +4 -6
- package/dist/automation/actions/interaction/get/MOB_GetCurrentAppPackage.js +4 -6
- package/dist/automation/actions/interaction/get/MOB_GetCurrentContext.js +4 -6
- package/dist/automation/actions/interaction/get/MOB_GetCurrentDeviceDate.js +4 -6
- package/dist/automation/actions/interaction/get/MOB_GetCurrentDeviceSettings.js +4 -6
- package/dist/automation/actions/interaction/get/MOB_GetCurrentDeviceStatus.js +4 -6
- package/dist/automation/actions/interaction/get/MOB_GetCurrentDeviceSystemBars.js +5 -6
- package/dist/automation/actions/interaction/get/MOB_GetCurrentDeviceTime.js +4 -6
- package/dist/automation/actions/interaction/get/MOB_GetCurrentOrientation.js +4 -6
- package/dist/automation/actions/interaction/get/MOB_GetCurrentSessionId.js +4 -6
- package/dist/automation/actions/interaction/get/MOB_GetDeviceLocation.js +20 -9
- package/dist/automation/actions/interaction/get/MOB_GetDeviceName.js +7 -8
- package/dist/automation/actions/interaction/get/MOB_GetDeviceOsVersion.js +4 -6
- package/dist/automation/actions/interaction/get/MOB_GetDeviceUdid.js +7 -8
- package/dist/automation/actions/interaction/get/MOB_GetHeightOfElement.js +12 -11
- package/dist/automation/actions/interaction/get/MOB_GetHeightOfScreen.js +4 -6
- package/dist/automation/actions/interaction/get/MOB_GetHourFromCurrentDeviceTime.js +4 -6
- package/dist/automation/actions/interaction/get/MOB_GetLatitude.js +20 -12
- package/dist/automation/actions/interaction/get/MOB_GetLongitude.js +20 -12
- package/dist/automation/actions/interaction/get/MOB_GetMinuteFromCurrentDeviceTime.js +4 -6
- package/dist/automation/actions/interaction/get/MOB_GetSecondFromCurrentDeviceTime.js +4 -6
- package/dist/automation/actions/interaction/get/MOB_GetSizeOfScreen.js +4 -6
- package/dist/automation/actions/interaction/get/MOB_GetSupportedPerformanceDataTypes.js +4 -6
- package/dist/automation/actions/interaction/get/MOB_GetTextFromElementAndSetToClipBoard.js +11 -8
- package/dist/automation/actions/interaction/get/MOB_GetWidthOfElement.js +12 -11
- package/dist/automation/actions/interaction/get/MOB_GetWidthOfScreen.js +4 -6
- package/dist/automation/actions/interaction/get/browserWindowGetPosition.js +4 -4
- package/dist/automation/actions/interaction/get/getAllBrokenImages.js +4 -4
- package/dist/automation/actions/interaction/get/getAllBrokenLinkCount.js +4 -4
- package/dist/automation/actions/interaction/get/getAllBrokenLinks.js +5 -5
- package/dist/automation/actions/interaction/get/getAllConsoleErrors.js +4 -4
- package/dist/automation/actions/interaction/get/getAllConsoleInformation.js +5 -5
- package/dist/automation/actions/interaction/get/getAllConsoleLogs.js +5 -5
- package/dist/automation/actions/interaction/get/getAllConsoleWarnings.js +5 -5
- package/dist/automation/actions/interaction/get/getAllCookieNames.js +5 -5
- package/dist/automation/actions/interaction/get/getAllCookieValues.js +5 -5
- package/dist/automation/actions/interaction/get/getAllSelectedOptions.js +12 -12
- package/dist/automation/actions/interaction/get/getAllTheOptionsFromListBoxAsText.js +12 -12
- package/dist/automation/actions/interaction/get/getAllTheOptionsFromListBoxAsTextInSortedOrder.js +12 -12
- package/dist/automation/actions/interaction/get/getAllTheSelectedOptionsFromListBoxAsText.js +12 -12
- package/dist/automation/actions/interaction/get/getAllWindowHandles.js +5 -5
- package/dist/automation/actions/interaction/get/getAttribute.js +27 -25
- package/dist/automation/actions/interaction/get/getAudioCurrentPlaybackRate.js +12 -12
- package/dist/automation/actions/interaction/get/getAudioCurrentSeekTime.js +12 -12
- package/dist/automation/actions/interaction/get/getAudioCurrentVolume.js +12 -12
- package/dist/automation/actions/interaction/get/getAudioDecodedByte.js +12 -12
- package/dist/automation/actions/interaction/get/getAudioDefaultPlaybackRate.js +12 -12
- package/dist/automation/actions/interaction/get/getAudioMediaLength.js +12 -12
- package/dist/automation/actions/interaction/get/getAudioMediaSource.js +12 -12
- package/dist/automation/actions/interaction/get/getBestPracticesScore.js +4 -3
- package/dist/automation/actions/interaction/get/getBrowserCount.js +4 -4
- package/dist/automation/actions/interaction/get/getBrowserVersion.js +4 -4
- package/dist/automation/actions/interaction/get/getCapabilityNames.js +4 -4
- package/dist/automation/actions/interaction/get/getClipBoardText.js +4 -4
- package/dist/automation/actions/interaction/get/getCollectiveApiResponseTime.js +5 -4
- package/dist/automation/actions/interaction/get/getCollectiveApiStatusCode.js +5 -4
- package/dist/automation/actions/interaction/get/getCssValue.js +12 -12
- package/dist/automation/actions/interaction/get/getCurrentDayOfTheWeek.js +4 -4
- package/dist/automation/actions/interaction/get/getCurrentSecondsFromCurrentSystemTime.js +5 -5
- package/dist/automation/actions/interaction/get/getCurrentSystemDate.js +4 -4
- package/dist/automation/actions/interaction/get/getCurrentSystemDay.js +5 -5
- package/dist/automation/actions/interaction/get/getCurrentSystemMonth.js +5 -5
- package/dist/automation/actions/interaction/get/getCurrentSystemTime.js +5 -5
- package/dist/automation/actions/interaction/get/getCurrentSystemYear.js +5 -5
- package/dist/automation/actions/interaction/get/getCurrentWindowHandle.js +9 -10
- package/dist/automation/actions/interaction/get/getDataFromApiRequestHeaderForJsonPath.js +5 -4
- package/dist/automation/actions/interaction/get/getDataFromApiResponseForJsonPath.js +5 -4
- package/dist/automation/actions/interaction/get/getDateWithGivenFormat.js +5 -4
- package/dist/automation/actions/interaction/get/getDriverInstance.js +12 -11
- package/dist/automation/actions/interaction/get/getFirstContentfulPaint.js +5 -5
- package/dist/automation/actions/interaction/get/getFirstSelectedOption.js +12 -12
- package/dist/automation/actions/interaction/get/getFullPaintTime.js +5 -5
- package/dist/automation/actions/interaction/get/getHTMLCodeOfPage.js +4 -4
- package/dist/automation/actions/interaction/get/getHeightOfBrowserWindow.js +4 -4
- package/dist/automation/actions/interaction/get/getHeightOfWebElement.js +12 -12
- package/dist/automation/actions/interaction/get/getHourFromCurrentSystemTime.js +4 -4
- package/dist/automation/actions/interaction/get/getImplicitTimeOut.js +11 -10
- package/dist/automation/actions/interaction/get/getLargestContentfulPaint.js +4 -4
- package/dist/automation/actions/interaction/get/getListBoxSize.js +12 -12
- package/dist/automation/actions/interaction/get/getListOfElementsFromLocatorTypeLocatorValue.js +90 -44
- package/dist/automation/actions/interaction/get/getLocation.js +32 -31
- package/dist/automation/actions/interaction/get/getMinuteFromCurrentSystemTime.js +4 -4
- package/dist/automation/actions/interaction/get/getNetworkRouteTime.js +4 -4
- package/dist/automation/actions/interaction/get/getNumberOfBrokenImages.js +4 -4
- package/dist/automation/actions/interaction/get/getNumberOfLinksPresentInCurrentPage.js +4 -4
- package/dist/automation/actions/interaction/get/getNumberOfWorkingLinksFromCurrentPage.js +4 -4
- package/dist/automation/actions/interaction/get/getOptions.js +12 -12
- package/dist/automation/actions/interaction/get/getPageTitle.js +5 -5
- package/dist/automation/actions/interaction/get/getPerformanceMetrics.js +5 -5
- package/dist/automation/actions/interaction/get/getPwaScore.js +5 -4
- package/dist/automation/actions/interaction/get/getRect.js +26 -23
- package/dist/automation/actions/interaction/get/getScreenshot.js +12 -18
- package/dist/automation/actions/interaction/get/getScreenshotAs.js +27 -32
- package/dist/automation/actions/interaction/get/getSeoScore.js +5 -4
- package/dist/automation/actions/interaction/get/getSingleApiRequestPayload.js +7 -6
- package/dist/automation/actions/interaction/get/getSingleApiResponse.js +12 -14
- package/dist/automation/actions/interaction/get/getSingleApiResponseTime.js +13 -13
- package/dist/automation/actions/interaction/get/getSingleApiStatusCode.d.ts +1 -1
- package/dist/automation/actions/interaction/get/getSingleApiStatusCode.js +21 -17
- package/dist/automation/actions/interaction/get/getSize.js +26 -24
- package/dist/automation/actions/interaction/get/getSizeOfBrowserWindow.js +5 -5
- package/dist/automation/actions/interaction/get/getStringDataFromLocalFile.js +11 -13
- package/dist/automation/actions/interaction/get/getSystemProperty.js +7 -33
- package/dist/automation/actions/interaction/get/getTagName.js +26 -24
- package/dist/automation/actions/interaction/get/getText.js +28 -25
- package/dist/automation/actions/interaction/get/getTheFirstSelectedOptionFromListBoxAsText.js +12 -12
- package/dist/automation/actions/interaction/get/getTotalNumberOfCookies.js +5 -5
- package/dist/automation/actions/interaction/get/getTunnelIdentifier.js +5 -4
- package/dist/automation/actions/interaction/get/getURLPresentInAddressBar.js +5 -5
- package/dist/automation/actions/interaction/get/getUserHomeDirectory.js +5 -5
- package/dist/automation/actions/interaction/get/getValueByCookieName.js +7 -11
- package/dist/automation/actions/interaction/get/getValueFromLocalStorage.js +7 -10
- package/dist/automation/actions/interaction/get/getValueOfSystemVariable.js +8 -6
- package/dist/automation/actions/interaction/get/getVideoCurrentPlaybackRate.js +12 -12
- package/dist/automation/actions/interaction/get/getVideoCurrentSeekTime.js +12 -12
- package/dist/automation/actions/interaction/get/getVideoCurrentVolume.js +12 -12
- package/dist/automation/actions/interaction/get/getVideoDecodedByte.js +12 -12
- package/dist/automation/actions/interaction/get/getVideoDefaultPlaybackRate.js +12 -12
- package/dist/automation/actions/interaction/get/getVideoMediaLength.js +12 -12
- package/dist/automation/actions/interaction/get/getVideoMediaSource.js +12 -12
- package/dist/automation/actions/interaction/get/getWidthOfBrowser.js +5 -5
- package/dist/automation/actions/interaction/get/getWidthOfWebElement.js +12 -12
- package/dist/automation/actions/interaction/get/getWorkingLinksFromCurrentPage.js +5 -5
- package/dist/automation/actions/interaction/get/getWrappedElement.js +12 -12
- package/dist/automation/actions/interaction/get/getWrappedOptionFromListBoxAsText.js +14 -14
- package/dist/automation/actions/interaction/get/getXLocationOfBrowserWindow.js +5 -4
- package/dist/automation/actions/interaction/get/getXLocationOfWebElement.js +26 -24
- package/dist/automation/actions/interaction/get/getYLocationOfBrowserWindow.js +5 -5
- package/dist/automation/actions/interaction/get/getYLocationOfWebElement.js +26 -24
- package/dist/automation/actions/interaction/iframe/switchToDefaultContent.js +5 -5
- package/dist/automation/actions/interaction/inputlessActions/AirplaneModeSwitchOff.js +5 -5
- package/dist/automation/actions/interaction/inputlessActions/AirplaneModeSwitchOn.js +5 -5
- package/dist/automation/actions/interaction/inputlessActions/Break.js +5 -5
- package/dist/automation/actions/interaction/inputlessActions/Continue.js +5 -5
- package/dist/automation/actions/interaction/inputlessActions/GpsSwitchOff.js +5 -5
- package/dist/automation/actions/interaction/inputlessActions/GpsSwitchOn.js +5 -5
- package/dist/automation/actions/interaction/inputlessActions/HideKeyboard.js +13 -7
- package/dist/automation/actions/interaction/inputlessActions/LockDevice.js +5 -5
- package/dist/automation/actions/interaction/inputlessActions/OpenChromeBrowser.js +18 -6
- package/dist/automation/actions/interaction/inputlessActions/OpenNotification.js +5 -5
- package/dist/automation/actions/interaction/inputlessActions/ResetApp.js +14 -7
- package/dist/automation/actions/interaction/inputlessActions/RestartCurrentDevice.js +5 -5
- package/dist/automation/actions/interaction/inputlessActions/SetDeviceOrientationAsLandscape.js +5 -5
- package/dist/automation/actions/interaction/inputlessActions/SetDeviceOrientationAsPortrait.js +5 -5
- package/dist/automation/actions/interaction/inputlessActions/SetEmulatorPowerStateOff.js +5 -5
- package/dist/automation/actions/interaction/inputlessActions/SetEmulatorPowerStateOn.js +5 -5
- package/dist/automation/actions/interaction/inputlessActions/WifiSwitchOff.js +5 -5
- package/dist/automation/actions/interaction/inputlessActions/WifiSwitchOn.js +5 -5
- package/dist/automation/actions/interaction/maximize/maximize.js +5 -5
- package/dist/automation/actions/interaction/maximize/minimize.js +5 -5
- package/dist/automation/actions/interaction/mouse/mouseClickOnCurrentCursorNTImes.d.ts +2 -0
- package/dist/automation/actions/interaction/mouse/mouseClickOnCurrentCursorNTImes.js +31 -0
- package/dist/automation/actions/interaction/mouse/mouseClickOnCurrentCursorPoint.d.ts +2 -0
- package/dist/automation/actions/interaction/mouse/mouseClickOnCurrentCursorPoint.js +27 -0
- package/dist/automation/actions/interaction/mouse/mouseDoubleClickAtCursorPoint.d.ts +2 -0
- package/dist/automation/actions/interaction/mouse/mouseDoubleClickAtCursorPoint.js +31 -0
- package/dist/automation/actions/interaction/mouse/mouseHover.d.ts +2 -0
- package/dist/automation/actions/interaction/mouse/mouseHover.js +36 -0
- package/dist/automation/actions/interaction/mouse/mouseReleaseLeftMouseButton.d.ts +2 -0
- package/dist/automation/actions/interaction/mouse/mouseReleaseLeftMouseButton.js +42 -0
- package/dist/automation/actions/interaction/mouse/pressAndHold.d.ts +2 -0
- package/dist/automation/actions/interaction/mouse/pressAndHold.js +47 -0
- package/dist/automation/actions/interaction/navigation/goBack.js +5 -5
- package/dist/automation/actions/interaction/navigation/navigate.js +5 -4
- package/dist/automation/actions/interaction/navigation/refresh.js +5 -5
- package/dist/automation/actions/interaction/pinch/PinchInByPercentMob.js +12 -13
- package/dist/automation/actions/interaction/pinch/PinchOutByPercentMob.js +12 -11
- package/dist/automation/actions/interaction/press/longPress.js +15 -11
- package/dist/automation/actions/interaction/press/mobPressBackKey.js +4 -6
- package/dist/automation/actions/interaction/press/mobPressBackSpaceKey.js +12 -8
- package/dist/automation/actions/interaction/press/mobPressSpaceKey.js +12 -8
- package/dist/automation/actions/interaction/press/pressAnyKey.js +25 -16
- package/dist/automation/actions/interaction/press/pressAnyKeyNTimes.js +23 -14
- package/dist/automation/actions/interaction/press/pressEnterKey.js +21 -14
- package/dist/automation/actions/interaction/press/pressHomeKey.js +16 -9
- package/dist/automation/actions/interaction/scroll/scrollHorizontallyTillElementIsVisible.js +20 -15
- package/dist/automation/actions/interaction/scroll/scrollPageToSpecificLocation.js +8 -7
- package/dist/automation/actions/interaction/scroll/scrollToElement.js +18 -13
- package/dist/automation/actions/interaction/scroll/scrollVerticallyTillElementIsVisible.js +20 -15
- package/dist/automation/actions/interaction/set/MOB_SetContext.js +5 -6
- package/dist/automation/actions/interaction/set/MOB_SetEmulatorPowerPercentage.js +5 -6
- package/dist/automation/actions/interaction/set/setClipBoardText.js +13 -13
- package/dist/automation/actions/interaction/shadowDom/shadowDomClick.js +5 -4
- package/dist/automation/actions/interaction/shadowDom/shadowDomEnter.js +5 -4
- package/dist/automation/actions/interaction/shadowDom/shadowDomGetText.js +6 -5
- package/dist/automation/actions/interaction/shadowDom/shadowDomUpload.js +13 -9
- package/dist/automation/actions/interaction/shadowDom/shadowDomVerifyPartialText.js +6 -5
- package/dist/automation/actions/interaction/shadowDom/shadowDomVerifyText.js +6 -5
- package/dist/automation/actions/interaction/swipe/swipeDirectionNTimes.js +12 -10
- package/dist/automation/actions/interaction/swipe/swipeDownToElement.js +13 -10
- package/dist/automation/actions/interaction/swipe/swipeIos.d.ts +2 -0
- package/dist/automation/actions/interaction/swipe/swipeIos.js +52 -0
- package/dist/automation/actions/interaction/swipe/swipeLeftToElement.js +16 -11
- package/dist/automation/actions/interaction/swipe/swipeRightToElement.js +15 -10
- package/dist/automation/actions/interaction/swipe/swipeUpToElement.js +12 -10
- package/dist/automation/actions/interaction/swipe/swipeUpToElementForMWeb.js +16 -13
- package/dist/automation/actions/interaction/swipe/swipeUsingReferenceElement.js +19 -16
- package/dist/automation/actions/interaction/switch/switchToNewTabBasedOnTitle.js +7 -6
- package/dist/automation/actions/interaction/switch/switchToNewWindowBasedOnTitle.js +6 -5
- package/dist/automation/actions/interaction/switch/switchToParentWindow.js +6 -6
- package/dist/automation/actions/interaction/switch/switchToTabBasedOnUrl.js +6 -5
- package/dist/automation/actions/interaction/switch/switchToWindowBasedOnURL.js +5 -4
- package/dist/automation/actions/interaction/switch/switchToWindowIfTitleContainsString.js +7 -6
- package/dist/automation/actions/interaction/switch/switchToWindowIfUrlContainsString.js +6 -5
- package/dist/automation/actions/interaction/upload/uploadfile.js +21 -18
- package/dist/automation/actions/interaction/verify/MOB_VerifyBatteryLevel.js +8 -8
- package/dist/automation/actions/interaction/verify/MOB_VerifyIfAirplaneModeOff.js +7 -7
- package/dist/automation/actions/interaction/verify/MOB_VerifyIfAirplaneModeOn.js +7 -7
- package/dist/automation/actions/interaction/verify/MOB_VerifyIfAppIsClosed.js +19 -10
- package/dist/automation/actions/interaction/verify/MOB_VerifyIfDeviceIsLocked.js +7 -6
- package/dist/automation/actions/interaction/verify/MOB_VerifyIfDeviceIsUnlocked.js +7 -7
- package/dist/automation/actions/interaction/verify/MOB_VerifyIfGpsOff.js +12 -8
- package/dist/automation/actions/interaction/verify/MOB_VerifyIfGpsOn.js +12 -8
- package/dist/automation/actions/interaction/verify/MOB_VerifyIfKeyboardIsHidden.js +7 -7
- package/dist/automation/actions/interaction/verify/MOB_VerifyIfKeyboardIsShown.js +8 -7
- package/dist/automation/actions/interaction/verify/MOB_VerifyIfWifiOff.js +8 -7
- package/dist/automation/actions/interaction/verify/MOB_VerifyIfWifiOn.js +8 -7
- package/dist/automation/actions/interaction/verify/VerifyAccessibilityScore.js +8 -7
- package/dist/automation/actions/interaction/verify/VerifyAllBrokenImages.js +6 -6
- package/dist/automation/actions/interaction/verify/VerifyAllBrowserWindowsClosed.js +12 -10
- package/dist/automation/actions/interaction/verify/VerifyAllOptionsAreDeSelected.js +19 -19
- package/dist/automation/actions/interaction/verify/VerifyAllOptionsAreSelected.js +12 -12
- package/dist/automation/actions/interaction/verify/VerifyAttributeValue.js +35 -53
- package/dist/automation/actions/interaction/verify/VerifyBestPracticesScore.js +6 -5
- package/dist/automation/actions/interaction/verify/VerifyBrowserHtmlCodeContainsString.js +6 -5
- package/dist/automation/actions/interaction/verify/VerifyBrowserWindowHeight.js +7 -6
- package/dist/automation/actions/interaction/verify/VerifyBrowserWindowTitleContainsString.js +7 -6
- package/dist/automation/actions/interaction/verify/VerifyBrowserWindowTitleIsString.js +7 -6
- package/dist/automation/actions/interaction/verify/VerifyBrowserWindowUrlContainsExpectedUrl.js +6 -5
- package/dist/automation/actions/interaction/verify/VerifyBrowserWindowUrlIsString.js +5 -4
- package/dist/automation/actions/interaction/verify/VerifyBrowserWindowWidth.js +6 -5
- package/dist/automation/actions/interaction/verify/VerifyBrowserWindowXLocation.js +6 -5
- package/dist/automation/actions/interaction/verify/VerifyBrowserWindowYLocation.js +7 -6
- package/dist/automation/actions/interaction/verify/VerifyCheckBoxIsNotSelected.js +12 -12
- package/dist/automation/actions/interaction/verify/VerifyCheckBoxIsSelected.js +12 -12
- package/dist/automation/actions/interaction/verify/VerifyCssAttributeValue.js +20 -14
- package/dist/automation/actions/interaction/verify/VerifyElementIsClickable.js +28 -25
- package/dist/automation/actions/interaction/verify/VerifyElementIsDisabled.js +29 -27
- package/dist/automation/actions/interaction/verify/VerifyElementIsDisplayed.js +26 -24
- package/dist/automation/actions/interaction/verify/VerifyElementIsEnabled.js +26 -24
- package/dist/automation/actions/interaction/verify/VerifyElementIsEnabledInSpecifiedTime.d.ts +2 -0
- package/dist/automation/actions/interaction/verify/VerifyElementIsEnabledInSpecifiedTime.js +84 -0
- package/dist/automation/actions/interaction/verify/VerifyElementIsNotDisplayed.js +51 -28
- package/dist/automation/actions/interaction/verify/VerifyElementIsSelected.js +39 -27
- package/dist/automation/actions/interaction/verify/VerifyElementIsSelectedInSpecifiedTime.d.ts +2 -0
- package/dist/automation/actions/interaction/verify/VerifyElementIsSelectedInSpecifiedTime.js +83 -0
- package/dist/automation/actions/interaction/verify/VerifyElementNotContainsText.js +23 -23
- package/dist/automation/actions/interaction/verify/VerifyHeightOfWebElement.js +23 -23
- package/dist/automation/actions/interaction/verify/VerifyHexCodeForGivenXYCoordinates.js +44 -14
- package/dist/automation/actions/interaction/verify/VerifyIfAllCookiesAreDeleted.js +4 -4
- package/dist/automation/actions/interaction/verify/VerifyIfAudioEnded.js +12 -12
- package/dist/automation/actions/interaction/verify/VerifyIfAudioIsMuted.js +12 -12
- package/dist/automation/actions/interaction/verify/VerifyIfAudioIsPaused.js +12 -12
- package/dist/automation/actions/interaction/verify/VerifyIfAudioIsPlaying.js +12 -12
- package/dist/automation/actions/interaction/verify/VerifyIfBrowserWindowIsClosed.js +8 -9
- package/dist/automation/actions/interaction/verify/VerifyIfCookieNameIsAdded.js +6 -5
- package/dist/automation/actions/interaction/verify/VerifyIfCookieNameIsDeleted.js +5 -4
- package/dist/automation/actions/interaction/verify/VerifyIfCookieObjectIsPresent.js +5 -5
- package/dist/automation/actions/interaction/verify/VerifyIfGivenOptionIsDuplicate.js +14 -14
- package/dist/automation/actions/interaction/verify/VerifyIfImageIsBroken.js +6 -5
- package/dist/automation/actions/interaction/verify/VerifyIfLinkIsBroken.js +6 -5
- package/dist/automation/actions/interaction/verify/VerifyIfLinkIsWorking.js +6 -5
- package/dist/automation/actions/interaction/verify/VerifyIfLinksAreBroken.js +5 -4
- package/dist/automation/actions/interaction/verify/VerifyIfLinksAreWorking.js +5 -4
- package/dist/automation/actions/interaction/verify/VerifyIfOptionWithIndexIsDeselectedInElement.js +13 -13
- package/dist/automation/actions/interaction/verify/VerifyIfOptionWithIndexIsSelectedInListBox.js +13 -13
- package/dist/automation/actions/interaction/verify/VerifyIfOptionWithTextIsDeselected.js +12 -12
- package/dist/automation/actions/interaction/verify/VerifyIfOptionWithValueIsDeselected.js +12 -12
- package/dist/automation/actions/interaction/verify/VerifyIfOptionWithValueIsSelected.js +12 -12
- package/dist/automation/actions/interaction/verify/VerifyIfOptionWithVisibleTextIsSelected.js +12 -12
- package/dist/automation/actions/interaction/verify/VerifyIfSpecifiedOptionIsSelected.js +12 -12
- package/dist/automation/actions/interaction/verify/VerifyIfStatusCodeOfALinkIsStatusCode.js +7 -6
- package/dist/automation/actions/interaction/verify/VerifyIfStatusCodesOfLinks.js +30 -22
- package/dist/automation/actions/interaction/verify/VerifyIfVideoEnded.js +12 -12
- package/dist/automation/actions/interaction/verify/VerifyIfVideoIsMuted.js +12 -12
- package/dist/automation/actions/interaction/verify/VerifyIfVideoIsPaused.js +12 -12
- package/dist/automation/actions/interaction/verify/VerifyIfVideoIsPlaying.js +12 -12
- package/dist/automation/actions/interaction/verify/VerifyIfVideoPlayingInMute.js +12 -12
- package/dist/automation/actions/interaction/verify/VerifyIfVideoPlayingInUnmute.js +12 -12
- package/dist/automation/actions/interaction/verify/VerifyIfXAndYCoordinateOfElement.js +25 -23
- package/dist/automation/actions/interaction/verify/VerifyLinkNavigatesToTitle.js +7 -6
- package/dist/automation/actions/interaction/verify/VerifyListBoxOptionsAreSorted.js +12 -12
- package/dist/automation/actions/interaction/verify/VerifyNavigateURL.js +6 -5
- package/dist/automation/actions/interaction/verify/VerifyNumberOfElementsByTagName.js +7 -5
- package/dist/automation/actions/interaction/verify/VerifyNumberOfElementsByXpath.js +13 -7
- package/dist/automation/actions/interaction/verify/VerifyPartialAttributeValue.js +33 -42
- package/dist/automation/actions/interaction/verify/VerifyPartialTitleOfCurrentPage.js +7 -6
- package/dist/automation/actions/interaction/verify/VerifyPerformanceScore.js +7 -6
- package/dist/automation/actions/interaction/verify/VerifyPwaScore.js +6 -5
- package/dist/automation/actions/interaction/verify/VerifyRadioButtonIsNotSelected.js +12 -12
- package/dist/automation/actions/interaction/verify/VerifyRadioButtonIsSelected.js +12 -12
- package/dist/automation/actions/interaction/verify/VerifySeoScore.js +6 -5
- package/dist/automation/actions/interaction/verify/VerifyTagName.js +12 -12
- package/dist/automation/actions/interaction/verify/VerifyThatSpecifiedOptionIsNotSelected.js +20 -31
- package/dist/automation/actions/interaction/verify/VerifyTitleInAllPage.js +8 -7
- package/dist/automation/actions/interaction/verify/VerifyTitleOfCurrentPage.js +6 -5
- package/dist/automation/actions/interaction/verify/VerifyValueOfElementContainsString.js +12 -12
- package/dist/automation/actions/interaction/verify/VerifyValueOfElementIsCleared.js +12 -12
- package/dist/automation/actions/interaction/verify/VerifyValueOfElementIsString.js +12 -12
- package/dist/automation/actions/interaction/verify/VerifyWidthOfElement.js +23 -23
- package/dist/automation/actions/interaction/verify/VerifyXLocationOfElement.js +23 -23
- package/dist/automation/actions/interaction/verify/VerifyYLocationOfElement.js +26 -23
- package/dist/automation/actions/interaction/verify/checkIfElementIsDisplayed.js +26 -22
- package/dist/automation/actions/interaction/verify/verifyElementIsDisplayedWithinSpecifiedTime.d.ts +2 -0
- package/dist/automation/actions/interaction/verify/verifyElementIsDisplayedWithinSpecifiedTime.js +85 -0
- package/dist/automation/actions/interaction/verify/verifypartialtext.js +28 -25
- package/dist/automation/actions/interaction/verify/verifytext.js +30 -30
- package/dist/automation/actions/interaction/wait/MOB_WaitTillAllElementsAreInvisible.ts.js +5 -6
- package/dist/automation/actions/interaction/wait/MOB_WaitTillAttributeOfElementContainsString.js +17 -14
- package/dist/automation/actions/interaction/wait/MOB_WaitTillElementIsEnabled.js +12 -11
- package/dist/automation/actions/interaction/wait/MOB_WaitTillElementIsInvisible.js +14 -12
- package/dist/automation/actions/interaction/wait/MOB_WaitTillElementIsSelected.js +12 -11
- package/dist/automation/actions/interaction/wait/MOB_WaitTillElementIsVisible.js +15 -13
- package/dist/automation/actions/interaction/wait/MOB_WaitTillStalenessOfElement.js +12 -11
- package/dist/automation/actions/interaction/wait/wait.js +5 -4
- package/dist/automation/actions/interaction/wait/waitTillAttributeOfElementIsString.js +26 -24
- package/dist/automation/actions/interaction/wait/waitTillElementContainsText.js +26 -24
- package/dist/automation/actions/interaction/wait/waitTillElementHasText.js +26 -24
- package/dist/automation/actions/interaction/wait/waitTillElementIsClickable.js +28 -25
- package/dist/automation/actions/interaction/wait/waitTillPresenceOfAllElements.js +32 -22
- package/dist/automation/actions/interaction/wait/waitTillPresenceOfElement.js +26 -24
- package/dist/automation/actions/interface/FireFlinkResponseSchema.d.ts +148 -0
- package/dist/automation/actions/interface/FireFlinkResponseSchema.js +209 -0
- package/dist/automation/actions/interface/alertActionInterface.d.ts +1 -0
- package/dist/automation/actions/interface/findActionInterface.d.ts +3 -0
- package/dist/automation/actions/interface/getActionInterface.d.ts +76 -66
- package/dist/automation/actions/interface/interactionActionInterface.d.ts +5 -0
- package/dist/automation/actions/interface/mouseActionsinterface.d.ts +51 -0
- package/dist/automation/actions/interface/mouseActionsinterface.js +2 -0
- package/dist/automation/actions/interface/pinchActionInterface.d.ts +7 -0
- package/dist/automation/actions/interface/pressActionInterface.d.ts +4 -0
- package/dist/automation/actions/interface/swipeActionInterface.d.ts +25 -10
- package/dist/automation/actions/interface/verifyActionInterface.d.ts +36 -0
- package/dist/automation/actions/interface/waitActionInterface.d.ts +19 -0
- package/dist/automation/browserSession/initiateBrowserSession.d.ts +1 -1
- package/dist/automation/browserSession/initiateBrowserSession.js +4 -4
- package/dist/automation/cloudSession/initiateCloudSession.js +3 -1
- package/dist/automation/mobileSession/initiateMobileSession.d.ts +25 -1
- package/dist/automation/mobileSession/initiateMobileSession.js +23 -10
- package/dist/core/constants/allAction.js +2 -1
- package/dist/core/constants/supportedActions.d.ts +1 -0
- package/dist/core/constants/supportedActions.js +17 -9
- package/dist/core/interfaces/actionInterface.d.ts +34 -33
- package/dist/core/interfaces/fireflinkScriptPayloadInterface.d.ts +4 -1
- package/dist/core/interfaces/llmConfigurationInterface.d.ts +3 -2
- package/dist/core/interfaces/llmResponseInterface.d.ts +10 -10
- package/dist/core/interfaces/scriptGenrationDataInterface.d.ts +14 -0
- package/dist/core/interfaces/simplifyAndFlattenInterface.d.ts +5 -0
- package/dist/core/main/actionHandlerFactory.js +134 -64
- package/dist/core/main/executionContext.d.ts +1 -1
- package/dist/core/main/executionContext.js +1 -1
- package/dist/core/main/runAutomationScript.d.ts +1 -0
- package/dist/core/main/runAutomationScript.js +207 -88
- package/dist/core/main/stepProcessor.d.ts +2 -1
- package/dist/core/main/stepProcessor.js +2 -2
- package/dist/core/types/scriptTypesType.d.ts +1 -1
- package/dist/core/types/visionllmInputType.d.ts +4 -5
- package/dist/domAnalysis/getRelaventElements.d.ts +5 -1
- package/dist/domAnalysis/getRelaventElements.js +14 -5
- package/dist/domAnalysis/relativeElementsFromDom.d.ts +2 -1
- package/dist/domAnalysis/relativeElementsFromDom.js +66 -1
- package/dist/domAnalysis/searchBest.d.ts +5 -1
- package/dist/domAnalysis/searchBest.js +153 -50
- package/dist/domAnalysis/simplifyAndFlatten.d.ts +3 -2
- package/dist/domAnalysis/simplifyAndFlatten.js +109 -16
- package/dist/fireflinkData/fireflinkLocators/getListOfLocators.js +17 -11
- package/dist/fireflinkData/fireflinkLocators/{elementsFromHTML.d.ts → parser/getElementsFromHTML.d.ts} +3 -9
- package/dist/fireflinkData/fireflinkLocators/parser/getElementsFromHTML.js +557 -0
- package/dist/fireflinkData/fireflinkLocators/types/locator.d.ts +17 -0
- package/dist/fireflinkData/fireflinkLocators/types/locator.js +2 -0
- package/dist/fireflinkData/fireflinkLocators/utils/androidSelector.d.ts +2 -0
- package/dist/fireflinkData/fireflinkLocators/utils/androidSelector.js +31 -0
- package/dist/fireflinkData/fireflinkLocators/utils/cssSelector.d.ts +19 -0
- package/dist/fireflinkData/fireflinkLocators/utils/cssSelector.js +192 -0
- package/dist/fireflinkData/fireflinkLocators/utils/iosSelector.d.ts +2 -0
- package/dist/fireflinkData/fireflinkLocators/utils/iosSelector.js +159 -0
- package/dist/fireflinkData/fireflinkLocators/utils/referenceXpath.d.ts +35 -0
- package/dist/fireflinkData/fireflinkLocators/utils/referenceXpath.js +590 -0
- package/dist/fireflinkData/fireflinkLocators/utils/xpath.d.ts +38 -0
- package/dist/fireflinkData/fireflinkLocators/utils/xpath.js +1182 -0
- package/dist/fireflinkData/fireflinkLocators/utils/xpathHelpers.d.ts +137 -0
- package/dist/fireflinkData/fireflinkLocators/utils/xpathHelpers.js +1647 -0
- package/dist/fireflinkData/fireflinkScript/appendScriptData.d.ts +2 -0
- package/dist/fireflinkData/fireflinkScript/appendScriptData.js +51 -0
- package/dist/fireflinkData/fireflinkScript/scriptGenrationData.js +4 -0
- package/dist/imageAnalysisMobile/annotatedScreenshotMobile.d.ts +4 -0
- package/dist/imageAnalysisMobile/annotatedScreenshotMobile.js +115 -7
- package/dist/imageAnalysisWeb/annotateScreenshot.js +4 -4
- package/dist/imageAnalysisWeb/generateAnnotatedScreenshots.d.ts +4 -1
- package/dist/imageAnalysisWeb/generateAnnotatedScreenshots.js +15 -17
- package/dist/llmConfig/llmConfiguration.d.ts +4 -3
- package/dist/llmConfig/llmConfiguration.js +41 -18
- package/dist/service/fireflink.service.d.ts +1 -1
- package/dist/service/fireflink.service.js +4 -4
- package/dist/tests/poc.d.ts +0 -1
- package/dist/tests/poc.js +211 -226
- package/dist/tests/test.d.ts +1 -0
- package/dist/tests/test.js +26 -0
- package/dist/tests/test12.js +19 -408
- package/dist/tests/testss.d.ts +1 -0
- package/dist/tests/testss.js +23 -0
- package/dist/utils/DomExtraction/jsForAttributeInjection.d.ts +2 -0
- package/dist/utils/DomExtraction/jsForAttributeInjection.js +220 -8
- package/dist/utils/InstancesDetails/getInstancesInfo.d.ts +26 -1
- package/dist/utils/InstancesDetails/getInstancesInfo.js +11 -5
- package/dist/utils/browserCap/capability.d.ts +10 -10
- package/dist/utils/browserCap/capability.js +21 -16
- package/dist/utils/frameWorkDetector/frameWorkDetector.d.ts +6 -0
- package/dist/utils/frameWorkDetector/frameWorkDetector.js +43 -0
- package/dist/utils/frameWorkDetector/frameWorkDetectorInterface.d.ts +10 -0
- package/dist/utils/frameWorkDetector/frameWorkDetectorInterface.js +2 -0
- package/dist/utils/helpers/enterActionHelper.d.ts +1 -0
- package/dist/utils/helpers/enterActionHelper.js +2 -1
- package/dist/utils/helpers/platformContext.d.ts +3 -0
- package/dist/utils/helpers/platformContext.js +11 -0
- package/dist/utils/helpers/platformSyntax.d.ts +1 -0
- package/dist/utils/helpers/platformSyntax.js +17 -0
- package/dist/utils/helpers/sameActionsHelper.js +7 -2
- package/dist/utils/helpers/xpathcreation.d.ts +5 -1
- package/dist/utils/helpers/xpathcreation.js +43 -4
- package/dist/utils/iframesExtraction/findElementUsingFF.js +12 -9
- package/dist/utils/iframesExtraction/iframeInterface.d.ts +4 -0
- package/dist/utils/javascript/jsForShadowRoot.d.ts +1 -1
- package/dist/utils/javascript/jsForShadowRoot.js +4 -0
- package/dist/utils/javascript/jsForVision.d.ts +2 -2
- package/dist/utils/javascript/jsForVision.js +17 -5
- package/dist/utils/logger/logData.d.ts +1 -0
- package/dist/utils/logger/logData.js +19 -0
- package/dist/utils/sslConfig/apiCallPatch.d.ts +1 -0
- package/dist/utils/sslConfig/apiCallPatch.js +33 -0
- package/dist/utils/sslConfig/getSecureAgent.d.ts +2 -0
- package/dist/utils/sslConfig/getSecureAgent.js +30 -0
- package/dist/utils/swipe/domSearchHelper.d.ts +1 -1
- package/dist/utils/swipe/domSearchHelper.js +43 -42
- package/dist/utils/swipe/swipeMovement.js +28 -19
- package/package.json +21 -6
- package/dist/automation/actions/interaction/get/getAudioDimension.d.ts +0 -2
- package/dist/automation/actions/interaction/get/getAudioDimension.js +0 -34
- package/dist/automation/actions/interaction/get/getAudioHeight.d.ts +0 -2
- package/dist/automation/actions/interaction/get/getAudioHeight.js +0 -30
- package/dist/automation/actions/interaction/get/getAudioWidth.d.ts +0 -2
- package/dist/automation/actions/interaction/get/getAudioWidth.js +0 -30
- package/dist/automation/actions/interaction/get/getVideoDimension.d.ts +0 -2
- package/dist/automation/actions/interaction/get/getVideoDimension.js +0 -31
- package/dist/automation/actions/interaction/get/getVideoHeight.d.ts +0 -2
- package/dist/automation/actions/interaction/get/getVideoHeight.js +0 -28
- package/dist/automation/actions/interaction/get/getVideoWidth.d.ts +0 -2
- package/dist/automation/actions/interaction/get/getVideoWidth.js +0 -28
- package/dist/fireflinkData/fireflinkLocators/elementsFromHTML.js +0 -514
- package/dist/fireflinkData/fireflinkLocators/typeList.d.ts +0 -1
- package/dist/fireflinkData/fireflinkLocators/typeList.js +0 -33
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.ffInspectorNumExtractor = ffInspectorNumExtractor;
|
|
4
4
|
async function ffInspectorNumExtractor({ stepAction, extractedDomJson, priorAndNextSteps, isAlert = false, isDrag = false, }) {
|
|
5
5
|
const switchActions = ["SwitchToNewTabBasedOnTitle", "SwitchToNewTabBasedOnUrl", "SwitchToNewWindowBasedOnTitle", "SwitchToNewWindowBasedOnURL", "SwitchToParentWindow", "SwitchToWindowIfTitleContainsString", "SwitchToNewWindowIfUrlContainsString"];
|
|
6
|
+
const mouseAction = ["MouseClickOnCurrentCursorPoint", "MouseDoubleClickAtCursorPoint", "ReleaseLeftMouseButton", "PressAndHoldLeftMouseButton", "MouseHover", "MouseClickOnCurrentCursorPointNTimes"];
|
|
6
7
|
const clickActions = ["Click", "DoubleClick", "RightClick", "WaitAndClick", "ClickNTimes", "ClickUsingJS"];
|
|
7
8
|
const alertActions = [
|
|
8
9
|
"ClickOkOnAlertPopup",
|
|
@@ -14,7 +15,7 @@ async function ffInspectorNumExtractor({ stepAction, extractedDomJson, priorAndN
|
|
|
14
15
|
"WaitTillAlertIsPresent",
|
|
15
16
|
"VerifyTextPresentOnAlertPopup"
|
|
16
17
|
];
|
|
17
|
-
const scrollActions = ["ScrollToElement", "ScrollVerticallyTillElementIsVisible", "ScrollHorizontallyTillElementIsVisible"];
|
|
18
|
+
const scrollActions = ["ScrollToElement", "ScrollVerticallyTillElementIsVisible", "ScrollHorizontallyTillElementIsVisible", "ScrollPageToSpecificLocation"];
|
|
18
19
|
const elementType = ['link', 'textfield', 'icon', 'button', 'radioButton', 'text', 'textarea', 'image', 'dropdown', 'checkbox', 'tab', 'action overflow button', 'hamburger icon', 'toggle button', 'suggestion', 'time picker', 'date picker', 'toaster message', 'card', 'tooltip', 'option', 'calender', 'sliders', 'visual testing'];
|
|
19
20
|
const enterActions = ["SendKeys", "ClearThenEnterInput", "WaitAndSendKeys", "EnterInputUsingJS", "EnterDataAndPressKey"];
|
|
20
21
|
let prompt;
|
|
@@ -24,16 +25,18 @@ async function ffInspectorNumExtractor({ stepAction, extractedDomJson, priorAndN
|
|
|
24
25
|
You are given a manual test step that requires interaction with a browser alert popup.
|
|
25
26
|
Based on the step, return the required alert element with input in the following JSON format only:
|
|
26
27
|
Rules:
|
|
27
|
-
- if the alert requires entering text inpt alert or for verification if we need compare text
|
|
28
|
-
-
|
|
29
|
-
-
|
|
28
|
+
- if the alert requires entering text inpt alert or for verification if we need compare text then extract that text and give as inputText.
|
|
29
|
+
- if step about VerifyAlertPopupIsDisplayed and if step consists of time in step then extract time and give as inputText ex : "Verify Alert popup is displayed within 5 sec" -> inputText: "5" no need to extract any element just return the inputText.
|
|
30
|
+
- If no input is needed, set "inputText" to "None".
|
|
31
|
+
- if step is about verify text present then map to VerifyTextPresentOnAlertPopup.and if step is about verify text contains than map to VerifyAlertPopUpMessageContainsString.
|
|
30
32
|
- Do not add explanations, comments, or extra text.
|
|
31
33
|
- send one action from this list only ${alertActions} witch is related to step.
|
|
34
|
+
- Return ONLY a valid JSON object; the response must start with '{' and end with '}', with no markdown, code fences, explanations, or extra text.
|
|
32
35
|
- Output must be valid JSON.
|
|
33
36
|
Respond only with JSON using this format:
|
|
34
37
|
{
|
|
35
38
|
"action": x,
|
|
36
|
-
"
|
|
39
|
+
"inputText": "text to enter" | "time" | "None"
|
|
37
40
|
}
|
|
38
41
|
|
|
39
42
|
`;
|
|
@@ -56,10 +59,10 @@ Rules:
|
|
|
56
59
|
- If not found, return Fire-Flink-0 for both.
|
|
57
60
|
- Extract element names from step if possible.
|
|
58
61
|
- Respond with JSON only.
|
|
59
|
-
- The element type should be from this list ${elementType}, check for both drag and drop element type.
|
|
62
|
+
- The element type should be from this list ${elementType.join("|")}, check for both drag and drop element type.
|
|
60
63
|
Simplified JSON:
|
|
61
64
|
${extractedDomJson}
|
|
62
|
-
|
|
65
|
+
- Return ONLY a valid JSON object; the response must start with '{' and end with '}', with no markdown, code fences, explanations, or extra text.
|
|
63
66
|
Respond only with JSON using this format:
|
|
64
67
|
{
|
|
65
68
|
"drag": "Fire-Flink-x",
|
|
@@ -81,27 +84,28 @@ You are an intelligent assistant that extracts structured UI action data.
|
|
|
81
84
|
|
|
82
85
|
Rules:
|
|
83
86
|
- Step: for the given step
|
|
84
|
-
- Use context from
|
|
85
|
-
-
|
|
86
|
-
-
|
|
87
|
+
- Use context from the ${JSON.stringify(priorAndNextSteps)}, keyword and filtered dom to search for FF-inspecter.
|
|
88
|
+
- Simplified JSON: ${extractedDomJson} — if it is empty, null, or has no valid data, return strictly "attributeValue":"Fire-Flink-0" and never use any other Fire-Flink-x value.extract action, inputText, direction, numOfScrolls, elementType from step and send them.
|
|
89
|
+
**Find the FF-inspecter attribute value of the element in the Simplified JSON whose text or attributes best match the step.**
|
|
90
|
+
- Select the closest semantic match to step and return only its attributeValue, else Fire-Flink-0.
|
|
87
91
|
- based on step and context choose the most related action from ${scrollActions}
|
|
88
92
|
- Default direction is down.
|
|
89
93
|
- Action:
|
|
90
|
-
- ${scrollActions} → extract
|
|
94
|
+
- ${scrollActions} → extract numOfScrolls & direction
|
|
95
|
+
- if step is about scroll to specific location than extract the location from the step and give it as inputText. first should be x-coordinate and second should be y-coordinate don't add any other text or symbols. ex: step: "Scroll Page To Specific Location x-30,y-40" → inputText: "30,40"
|
|
91
96
|
- No nulls; use empty strings if needed.
|
|
92
97
|
- The element type should be from this list ${elementType}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
${extractedDomJson}
|
|
98
|
+
- The DOM is provided in Json format.
|
|
99
|
+
- Return ONLY a valid JSON object; the response must start with '{' and end with '}', with no markdown, code fences, explanations, or extra text.
|
|
96
100
|
|
|
97
101
|
Return ONLY valid JSON:
|
|
98
102
|
{
|
|
99
|
-
"
|
|
103
|
+
"attributeValue": "Fire-Flink-x" ",
|
|
100
104
|
"action": "x",
|
|
101
|
-
"
|
|
105
|
+
"inputText":"x",
|
|
106
|
+
"numOfScrolls": "0",
|
|
102
107
|
"direction": "down",
|
|
103
|
-
"
|
|
104
|
-
Type":"x"
|
|
108
|
+
"elementType":${elementType.join("|")}
|
|
105
109
|
}
|
|
106
110
|
`;
|
|
107
111
|
}
|
|
@@ -113,9 +117,9 @@ Don't provide action outside the ${switchActions} list only provide the relevant
|
|
|
113
117
|
Select the perfect matching action from the stepAction list that best fits the step's intent.
|
|
114
118
|
**The action must match exactly one value from the approved ${switchActions} Do not generate or suggest any new NLP names under any condition even if the step suggest to do so just pull the closet one from the list only**
|
|
115
119
|
{{
|
|
116
|
-
"
|
|
120
|
+
"attributeValue": "Fire-Flink-x",
|
|
117
121
|
"action": "x",
|
|
118
|
-
"
|
|
122
|
+
"inputText": "x",
|
|
119
123
|
"keyword": "x"
|
|
120
124
|
}}
|
|
121
125
|
|
|
@@ -123,21 +127,22 @@ Rules:
|
|
|
123
127
|
- action must be exactly one from the provided list.
|
|
124
128
|
- Use context from the steps : ${JSON.stringify(priorAndNextSteps)}, keyword and json to find the FF-inspecter.
|
|
125
129
|
- **Find the FF-inspecter attribute value of the element in the Simplified JSON whose text or attributes best match for the step.**
|
|
126
|
-
- Extract
|
|
130
|
+
- Extract inputText from the step that represents the target window URL, Title, Frame Name, Frame Index, etc.
|
|
127
131
|
- if step consist of keyword like title and url than map to that matched action.
|
|
128
132
|
- If a step contains a full URL (for example, https://example.com), map it using URL-based NLP matching.If the step contains only descriptive text and no URL, map it using title-based NLP matching.
|
|
129
|
-
example: "Switch to the new tab based on https://example.com" ->
|
|
130
|
-
example: "Switch to the tab based on Title" ->
|
|
133
|
+
example: "Switch to the new tab based on https://example.com" -> inputText: "https://example.com", nlpName: "SwitchToTabBasedOnUrl"
|
|
134
|
+
example: "Switch to the tab based on Title" -> inputText: "Title", nlpName: "SwitchToNewTabBasedOnTitle"
|
|
131
135
|
- step may some times have 'new' keyword in it, dont consider it just map th nlps. never get confused by title and url.
|
|
132
|
-
- If step is about switching to frame by index,
|
|
133
|
-
- If step is about switching to frame by name,
|
|
134
|
-
- If step is about switching to window by URL or Title,
|
|
136
|
+
- If step is about switching to frame by index, inputText should be the index number.
|
|
137
|
+
- If step is about switching to frame by name, inputText should be the frame name.
|
|
138
|
+
- If step is about switching to window by URL or Title, inputText should be the url or title string.
|
|
135
139
|
- If no explicit input is found, attempt to infer it or leave empty if the NLP implies a specific action without input (e.g. SwitchToParentWindow).
|
|
140
|
+
- Return ONLY a valid JSON object; the response must start with '{' and end with '}', with no markdown, code fences, explanations, or extra text.
|
|
136
141
|
- **Respond with valid JSON only. don't return any other text or don't return response in list format**
|
|
137
142
|
`;
|
|
138
143
|
}
|
|
139
144
|
// ---------------- DEFAULT (CLICK / cleartext etc.) ----------------
|
|
140
|
-
else if (stepAction === "
|
|
145
|
+
else if (stepAction === "mouseAction") {
|
|
141
146
|
prompt = `
|
|
142
147
|
|
|
143
148
|
-You are an intelligent assistant that extracts structured UI action data.
|
|
@@ -147,17 +152,58 @@ Rules:
|
|
|
147
152
|
|
|
148
153
|
Return **only valid JSON** in the following format:
|
|
149
154
|
{
|
|
150
|
-
"
|
|
155
|
+
"attributeValue": "Fire-Flink-x",
|
|
151
156
|
"action": "x",
|
|
152
|
-
"
|
|
153
|
-
"elementType": "
|
|
157
|
+
"inputText": "x",
|
|
158
|
+
"elementType": ${elementType.join("|")}
|
|
154
159
|
}
|
|
155
160
|
|
|
156
161
|
Rules:
|
|
157
162
|
You are an AI assistant. For the step, extract the element keyword from the step (the field name like 'Leaving from', 'Going To').
|
|
158
163
|
- Use context from the ${JSON.stringify(priorAndNextSteps)}, keyword and filtered dom to search for FF-inspecter.
|
|
159
|
-
- Simplified JSON: ${extractedDomJson} — if it is empty, null, or has no valid data, return strictly "
|
|
164
|
+
- Simplified JSON: ${extractedDomJson} — if it is empty, null, or has no valid data, return strictly "attributeValue":"Fire-Flink-0" and never use any other Fire-Flink-x value.extract action, inputText, keyword, elementType from step and send them.
|
|
165
|
+
- Select the closest semantic match to step and return only its attributeValue, else Fire-Flink-0
|
|
160
166
|
- **Find the FF-inspecter attribute value of the element in the Simplified JSON whose text or attributes best match the atep.**
|
|
167
|
+
- If multiple matches exist, use the reference element and choose the closest match by ff-inspect distance.
|
|
168
|
+
|
|
169
|
+
**important example: step: "mouce click on login below user login"
|
|
170
|
+
simplified json:
|
|
171
|
+
login - ff-inspect-300
|
|
172
|
+
user login - ff-inspect-790
|
|
173
|
+
login - ff-inspect-803
|
|
174
|
+
then should return login - ff-inspect-803 witch is near to user reference element user login - ff-inspect-790**
|
|
175
|
+
- Do not return elements far away from the reference.
|
|
176
|
+
- These are actions: ${mouseAction}. action should be exactly one from the provided list.
|
|
177
|
+
- Select the closest semantic match to step and return only its attributeValue, else Fire-Flink-0.
|
|
178
|
+
- example: step: "mouse click on login below user login" -> should return the attributeValue of the login element.
|
|
179
|
+
- for mouse click on current cursor point n times in that case provide input text as number of clicks only.
|
|
180
|
+
- Based on step give most relevant type of element. use this list to choose elementType: ${elementType.join("|")} and Never change syntax of elementType, follow the syntax of elementType in list.if elementType is not there in list return 'link'.
|
|
181
|
+
- Return ONLY a valid JSON object; the response must start with '{' and end with '}', with no markdown, code fences, explanations, or extra text.
|
|
182
|
+
- Respond with valid JSON only.Don
|
|
183
|
+
`;
|
|
184
|
+
}
|
|
185
|
+
else if (stepAction === "click" || stepAction === "cleartext") {
|
|
186
|
+
prompt = `
|
|
187
|
+
|
|
188
|
+
-You are an intelligent assistant that extracts structured UI action data.
|
|
189
|
+
-Given a structured UI JSON representation with uniquely identified elements (ff-inspect values like Fire-Flink-0, Fire-Flink-1, Fire-Flink-2, Fire-Flink-3... in DOM order),
|
|
190
|
+
-locate the most appropriate element for an automation step by performing keyword-based matching using exact, partial, and fuzzy strategies, and
|
|
191
|
+
return the identifier of the best match.
|
|
192
|
+
|
|
193
|
+
Return **only valid JSON** in the following format:
|
|
194
|
+
{
|
|
195
|
+
"attributeValue": "Fire-Flink-x",
|
|
196
|
+
"action": "x",
|
|
197
|
+
"inputText": "x",
|
|
198
|
+
"elementType": ${elementType.join("|")}
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
Rules:
|
|
202
|
+
You are an AI assistant. For the step, extract the element keyword from the step (the field name like 'Leaving from', 'Going To').
|
|
203
|
+
- Use context from the ${JSON.stringify(priorAndNextSteps)}, keyword and filtered dom to search for FF-inspecter.
|
|
204
|
+
- **Simplified JSON: ${extractedDomJson} — if it is empty, null, or has no valid data, return strictly "attributeValue":"Fire-Flink-0" and never use any other Fire-Flink-x value.extract action, inputText, elementType from step and send them.**
|
|
205
|
+
- Select the closest semantic match to step and return only its attributeValue, else Fire-Flink-0
|
|
206
|
+
- **Find the FF-inspecter attribute value of the element in the Simplified JSON whose text or attributes best match the step.**
|
|
161
207
|
- If multiple matches exist, use the reference element and choose the closest match by ff-inspect distance.
|
|
162
208
|
**important example: step: "click on login below user login"
|
|
163
209
|
simplified json:
|
|
@@ -166,16 +212,20 @@ You are an AI assistant. For the step, extract the element keyword from the step
|
|
|
166
212
|
login - ff-inspect-803
|
|
167
213
|
then should return login - ff-inspect-803 witch is near to user reference element user login - ff-inspect-790**
|
|
168
214
|
- Do not return elements far away from the reference.
|
|
169
|
-
- These are actions: ${clickActions}.
|
|
170
|
-
- For wait and click step check in the step the time of wait in seconds will be mentioned take provide it has the
|
|
215
|
+
- These are actions: ${clickActions}. action should be exactly one from the provided list.
|
|
216
|
+
- For wait and click step check in the step the time of wait in seconds will be mentioned take provide it has the inputText in the output and action as waitandclick as mention in the clickactionlist similarly for the click n times n will the inputText in the output and action as clickntimes as mention in the clickactionlist.
|
|
171
217
|
- If it is like wait and click in the step then send the wait time as the value as provided in the step and then for click n times provide the n as the value in the output.
|
|
172
|
-
- Select the closest semantic match to step and return only its
|
|
173
|
-
-
|
|
174
|
-
-
|
|
175
|
-
- For
|
|
218
|
+
- Select the closest semantic match to step and return only its attributeValue, else Fire-Flink-0.
|
|
219
|
+
- If a step involves a select action, you MUST first check for a matching option tag (exact or fuzzy) and return its attributeValue; ONLY if no option exists, return the related select element. example: step: "select state India" -> should return the attributeValue of the option tag with text 'India'.
|
|
220
|
+
- If a matching option is found, returning the select element is strictly invalid unless the step explicitly says to click the select dropdown itself.
|
|
221
|
+
- For WaitAndClick take action as WaitAndClick and inputText as the wait time as provided in the step.
|
|
222
|
+
- For ClickNTimes take action as ClickNTimes and inputText as the n as provided in the step.
|
|
223
|
+
- For ClickUsingJS take action as ClickUsingJS and inputText as the empty string and select this click action only if the step is about clicking an element using javascript.
|
|
176
224
|
- Action: ${clickActions} for clicking or selecting,'Clear' for clearing text based on the step.
|
|
177
|
-
- For Click action, if only step involving 'clicking on icon' then try to return related svg tags
|
|
178
|
-
- Based on step give most relevant type of element. use this list to choose
|
|
225
|
+
- For Click action, if only step involving 'clicking on icon' then try to return related svg tags attributeValue, if they are available in simplified json.
|
|
226
|
+
- Based on step give most relevant type of element. use this list to choose elementType: ${elementType.join("|")} and Never change syntax of elementType, follow the syntax of elementType in list.if elementType is not there in list return 'link'.
|
|
227
|
+
- Return ONLY a valid JSON object; the response must start with '{' and end with '}', with no markdown, code fences, explanations, or extra text.
|
|
228
|
+
- **Respond with valid JSON only. don't return any other text or don't return response in list format**
|
|
179
229
|
|
|
180
230
|
`;
|
|
181
231
|
}
|
|
@@ -190,44 +240,52 @@ return the identifier of the best match.
|
|
|
190
240
|
|
|
191
241
|
Return **only valid JSON** in the following format:
|
|
192
242
|
{
|
|
193
|
-
"
|
|
243
|
+
"attributeValue": "Fire-Flink-x",
|
|
194
244
|
"action": "x",
|
|
195
|
-
"
|
|
196
|
-
"elementType": "
|
|
245
|
+
"inputText": "x",
|
|
246
|
+
"elementType": ${elementType.join("|")}
|
|
197
247
|
}
|
|
198
248
|
|
|
199
249
|
Rules:
|
|
200
250
|
You are an AI assistant. For the step, extract the element keyword from the step (the field name like 'Leaving from', 'Going To').
|
|
201
251
|
- Use context from the ${JSON.stringify(priorAndNextSteps)}, keyword and filtered dom to search for FF-inspecter.
|
|
202
|
-
- Simplified JSON: ${extractedDomJson} — if it is empty, null, or has no valid data, return strictly "
|
|
203
|
-
-
|
|
252
|
+
- **Simplified JSON: ${extractedDomJson} — if it is empty, null, or has no valid data, return strictly "attributeValue":"Fire-Flink-0" and never use any other Fire-Flink-x value.extract action, inputText, elementType from step and send them.**
|
|
253
|
+
- If no input tag is present in the simplified JSON, select the element most relevant to the step (regardless of tag type), i will use that to enter the data.
|
|
254
|
+
- Select the closest semantic match to step and return only its attributeValue, else Fire-Flink-0.
|
|
204
255
|
- **Find the FF-inspecter attribute value of the element in the Simplified JSON whose text or attributes best match the atep.**
|
|
205
|
-
- If multiple matches exist,
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
256
|
+
- If multiple matches exist, identify the reference element from the step and select the matching element with the smallest ff-inspect distance relative to that reference (i.e., the closest in position).
|
|
257
|
+
Example:
|
|
258
|
+
Step: "Enter input in Username below Confirm", "harry"
|
|
259
|
+
Simplified JSON:
|
|
260
|
+
Username - ff-inspect-300
|
|
261
|
+
Confirm - ff-inspect-790
|
|
262
|
+
Username - ff-inspect-811
|
|
263
|
+
Reference element: Confirm - ff-inspect-790
|
|
264
|
+
Closest match: Username - ff-inspect-811 (nearest to 790)
|
|
265
|
+
Final selection: Username - ff-inspect-811
|
|
212
266
|
- Respect direction (up/down), default is down.
|
|
213
267
|
- Do not return elements far away from the reference.
|
|
214
|
-
- Select the closest semantic match to step and return only its
|
|
215
|
-
-
|
|
268
|
+
- Select the closest semantic match to step and return only its attributeValue
|
|
269
|
+
- **Never directly select a input tag if should be realted to step; if u can't find input tag related to step then prefer the closest label/span/div/b/i/tr/td etc, it can be any tag related to the step. i will use that to enter the data.**
|
|
270
|
+
- Action:SendKeys for entering text, EnterDataAndPressKey for entering data and pressing the key, 'upload' for uploading file.
|
|
271
|
+
- Use ClearThenEnterInput only when the step explicitly involves clearing existing text before entering new input.
|
|
216
272
|
- Action:EnterDataAndPressKey if step is about entering data and pressing a key, then select this action.
|
|
217
273
|
- Action:EnterInputUsingJS if step is about entering input using js,WaitAndSendKeys for waiting for some time and then entring.
|
|
218
|
-
-
|
|
219
|
-
-
|
|
274
|
+
- Action:WaitAndSendKeys for waiting for some time and then entring input.if wait is present in step.
|
|
275
|
+
- If action is waitAndSendkeys then in the inputText provide output with the input and then the wait time in seconds as "inputText = " input, waittime" input is input for that step and waittime is time in seconds mentioned in steps only for wiat and enter step and also the attributeValue should be the attributeValue of the element in the simplified json.
|
|
276
|
+
- For click action, if only step involving 'clicking on icon' then try to return related svg tags attributeValue, if they are available in simplified json.
|
|
220
277
|
- For Action ${enterActions} extract input text from step.
|
|
221
278
|
- **For ${enterActions} actions, never directly select a input tag if should be realted to step; if u can't find input tag related to step then prefer the closest label/span/div/b/i etc, it can be any tag related to the step.**
|
|
222
|
-
- **For ${enterActions} step if you can't find perfect matching element return
|
|
223
|
-
- For ${enterActions} step, If the step implies autogenerated data or random data(email, phone, credentials, identifiers, etc.), generate a valid dummy
|
|
279
|
+
- **For ${enterActions} step if you can't find perfect matching element return attributeValue as Fire-Flink-0 for the step. it should be exact match for the step.**
|
|
280
|
+
- For ${enterActions} step, If the step implies autogenerated data or random data(email, phone, credentials, identifiers, etc.), generate a valid dummy inputText suitable for the field.
|
|
224
281
|
example: step: "Enter sss.@gmail.com in email field" and step :
|
|
225
|
-
you should check only for email in Simplified JSON and
|
|
282
|
+
you should check only for email in Simplified JSON and inputText should be "sss.@gmail.com" dont add any extra text.
|
|
226
283
|
- For Action "upload" extract file path from step. and add extra //// for path.like "C:////Users/////User/////Downloads/////fireflinkElementIndexExtactors.ts"
|
|
227
|
-
- For Action "EnterDataAndPressKey" extract input text from step. and also extract the key to be pressed from the step. and return the key to be pressed as the
|
|
228
|
-
- if u cant find any
|
|
229
|
-
- 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'.
|
|
230
|
-
|
|
284
|
+
- For Action "EnterDataAndPressKey" extract input text from step. and also extract the key to be pressed from the step. and return the key to be pressed as the inputText in the form of inputText, key_to_be_pressed.ex(inputText = "input","key_to_be_pressed" )
|
|
285
|
+
- if u cant find any inputText or any other dont give null just return them "" empty.
|
|
286
|
+
- Based on step give most relevant type of element. use this list to choose element_type: ${elementType.join("|")} 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'.
|
|
287
|
+
- Return ONLY a valid JSON object; the response must start with '{' and end with '}', with no markdown, code fences, explanations, or extra text.
|
|
288
|
+
- **Respond with valid JSON only. don't return any other text or don't return response in list format**
|
|
231
289
|
|
|
232
290
|
`;
|
|
233
291
|
}
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ffInspectorNumExtractorMob = ffInspectorNumExtractorMob;
|
|
4
4
|
async function ffInspectorNumExtractorMob({ stepAction, extractedDomJson, priorAndNextSteps, }) {
|
|
5
|
-
const SwipeActions = ["MOB_SwipeToElement", "MOB_SwipeUpToElement", "MOB_SwipeDownToElement", "MOB_SwipeLeftToElement", "MOB_SwipeRightToElement", "MOB_SwipeNTimes", "MOB_Builtin_Swipe", "MOB_SwipeDirectionNTimes", "MOB_SwipeToElementForMWeb", "MOB_SwipeUsingReferenceElement"];
|
|
5
|
+
const SwipeActions = ["MOB_SwipeToElement", "MOB_SwipeUpToElement", "MOB_SwipeDownToElement", "MOB_SwipeLeftToElement", "MOB_SwipeRightToElement", "MOB_SwipeNTimes", "MOB_Builtin_Swipe", "MOB_SwipeDirectionNTimes", "MOB_SwipeToElementForMWeb", "MOB_SwipeUsingReferenceElement", "SwipeUp", "SwipeDown", "SwipeLeft", "SwipeRight", "Swipe"];
|
|
6
6
|
const Actions = ["MOB_Tap", "MOB_TapNTimes", "MOB_DoubleTap", "MOB_DoubleTapAtSpecifiedLocation", "MOB_TapOnSpecifiedLocation",
|
|
7
|
-
"MOB_Enter", "MOB_EnterDataAndPressKey", "MOB_EnterInputIntoElementFromClipBoard", "MOB_EnterUrl", "MOB_ClearThenEnterInput",
|
|
7
|
+
"MOB_Enter", "MOB_EnterDataAndPressKey", "MOB_EnterInputIntoElementFromClipBoard", "MOB_EnterUrl", "MOB_Clear", "MOB_ClearThenEnterInput",
|
|
8
8
|
"MOB_LongPress", "MOB_PressEnterKey", "MOB_PressSpaceKey", "MOB_PressBackSpaceKey", "MOB_PressAnyKey", "MOB_PressAnyKeyNTimes", "MOB_EnterDataAndPressKey", "MOB_PressHomeKey", "MOB_PressBackKey"];
|
|
9
9
|
const elementType = ["link", "textfield", "icon", "button", "radiobutton", "checkbox", "tab", "action overflow button", "hamburger menu", "toggle button", "steppers", "sliders"];
|
|
10
10
|
let prompt = "";
|
|
@@ -14,8 +14,8 @@ You are an intelligent assistant that extracts structured UI action data.\n
|
|
|
14
14
|
Return **only valid JSON** in the following format:\n
|
|
15
15
|
**Dont give any extra explanation or text**
|
|
16
16
|
{
|
|
17
|
-
"
|
|
18
|
-
"
|
|
17
|
+
"attributeValue": "Fire-Flink-x",
|
|
18
|
+
"inputText": "x",
|
|
19
19
|
"keyword": "x",
|
|
20
20
|
"elementType": "x",
|
|
21
21
|
"nlpName": "x"
|
|
@@ -25,24 +25,24 @@ Rules:\n
|
|
|
25
25
|
You are an AI assistant. For the step, extract the element keyword from the step (the field name like 'Leaving from', 'Going To').
|
|
26
26
|
- Use context from all steps: ${JSON.stringify(priorAndNextSteps)}, keyword and filtered dom to search for FF-inspecter.
|
|
27
27
|
**nlpName: MOB_PressBackKey or MOB_PressHomeKey for mobile navigation respective buttons like back and home**
|
|
28
|
-
- **
|
|
28
|
+
- **For step if you can't find perfect matching element or no attribute in filtered dom JSON is related to step return attributeValue as Fire-Flink-0.**
|
|
29
29
|
- If step is enter input into element try to find ff inspector attribute value of element not input text.
|
|
30
|
-
- **For step if you can't find perfect matching element or no attribute in filtered dom JSON is related to step return attribute_value as Fire-Flink-0.**
|
|
31
30
|
- Don't think if type of element is found it is exact element, check with keyword and step.If it is not matched return Fire-Flink-0.
|
|
31
|
+
- If step is tap on element of referenece element,if multiple elements are there ,choose element which is related to reference element.The element can be reference element's before or after sibling nodes in filtered dom json,if siblings also same return element which ff-inspect value is close to reference element.
|
|
32
32
|
**important example: step: "click on login below user login"
|
|
33
|
-
simplified json: login - ff-inspect-
|
|
34
|
-
user login - ff-inspect-
|
|
35
|
-
login - ff-inspect-
|
|
36
|
-
then should return login - ff-inspect-
|
|
37
|
-
- **Find the FF-inspecter attribute value of the element in the filtered dom JSON whose text or content-desc or other attributes best or perfect match for the step.**
|
|
33
|
+
simplified json: login - ff-inspect-320
|
|
34
|
+
user login - ff-inspect-330
|
|
35
|
+
login - ff-inspect-350
|
|
36
|
+
then should return login - ff-inspect-320 witch is near to user reference element user login - ff-inspect-330**
|
|
37
|
+
- **Find the FF-inspecter attribute value of the element in the filtered dom JSON whose text or content-desc or name or label or other attributes best or perfect match for the step.**
|
|
38
38
|
- nlpName: Extract nlpName from the list of nlps: ${Actions} based on the step.If step is enter url, nlpName should be MOB_EnterUrl.
|
|
39
|
-
- For taping action dont take
|
|
40
|
-
- For some steps you can see two inputs but you need to uderstand step and send the requred
|
|
39
|
+
- For taping action dont take attributeValue of the node contining edittext in class, resource-id.
|
|
40
|
+
- For some steps you can see two inputs but you need to uderstand step and send the requred inputText.
|
|
41
41
|
ex:Double tap on the 30,50
|
|
42
42
|
here here input:30,50
|
|
43
|
-
- and for this MOB_TapNTimes nlps send number of times to tap as
|
|
44
|
-
- If step is press any key and if the step contains any key name like ENTER,SPACE,BACKSPACE etc and give keyname of the given key as
|
|
45
|
-
- nlpName: wait for wait action, and in
|
|
43
|
+
- and for this MOB_TapNTimes nlps send number of times to tap as inputText.
|
|
44
|
+
- If step is press any key and if the step contains any key name like ENTER,SPACE,BACKSPACE etc and give keyname of the given key as inputText if they mention key and how many times to press key 'keyname,number of times' or if step is enter input and press key keep it as 'input,keyname'.
|
|
45
|
+
- nlpName: wait for wait action, and in inputText give time to wait. like sleep for 30 seconds, here nlpName is wait and inputText is 30.
|
|
46
46
|
- Extract input text from step for all actions,if input is not there give empty string "".
|
|
47
47
|
- Based on step give most relevant type of element. use this list to choose elementType: ${elementType} and Never change syntax of elementType, follow the syntax of elementType in list.if elementType is not there in list return 'link'.
|
|
48
48
|
- Respond with valid JSON only.
|
|
@@ -59,34 +59,39 @@ Select the perfect matching NLP name from the list that best fits the step's int
|
|
|
59
59
|
|
|
60
60
|
Return **only valid JSON** in the following format:
|
|
61
61
|
{{
|
|
62
|
-
"
|
|
62
|
+
"attributeValue": "Fire-Flink-x",
|
|
63
63
|
"nlpName": "x",
|
|
64
|
-
"
|
|
64
|
+
"inputText": "x",
|
|
65
65
|
"keyword": "x",
|
|
66
66
|
"type": "x",
|
|
67
|
-
"
|
|
67
|
+
"numOfScrolls": "x",
|
|
68
68
|
"direction": "x"
|
|
69
69
|
}}
|
|
70
70
|
|
|
71
71
|
Rules:
|
|
72
72
|
- nlpName must be exactly one from the provided list.
|
|
73
|
+
- If the step is provided with the coordinates like (x1,y1,x2,y2) and direction is not mentioned but coordinates are there means then map to swipe of direction is given then it must match to swipe up, swipe down,swipe left, swipe right don't go with the MOB_ one's
|
|
74
|
+
- **If the step is saying 'swipe up, down, left, right' with the coordinates specified in the step, then give coordintates in inputText like (x1,y1,x2,y2) and map to nlp's like swipe up, swipe down,swipe left, swipe right if direction is not mentioned but coordinates are there means then map to swipe.**
|
|
73
75
|
- Use cont2ext from the steps : ${JSON.stringify(priorAndNextSteps)}, keyword and json to search for FF-inspecter.
|
|
74
|
-
- If direction is not specified, then match to "MOB_SwipeToElement".
|
|
76
|
+
- If direction is not specified and also coordinates are not specified, then match to "MOB_SwipeToElement".
|
|
75
77
|
- If direction is Not specified and element is not specified, then match to "MOB_SwipeNTimes".
|
|
76
|
-
- If direction is specified and
|
|
77
|
-
- If step has a reference element, then match to "MOB_SwipeUsingReferenceElement". and give
|
|
78
|
+
- If direction is specified and direction word is there and no of times is given, then match to "MOB_SwipeDirectionNTimes" ex: swipe up direction 2 times.
|
|
79
|
+
- If step has a reference element, then match to "MOB_SwipeUsingReferenceElement". and give inputText: "reference element -> <next element>"
|
|
78
80
|
example: swipe up to "Contact Us" using "Settings" as reference.
|
|
79
|
-
|
|
81
|
+
inputText: "Settings -> Contact Us"
|
|
80
82
|
- If the step is saying 'up to' or 'till' element, then return the number of scrolls as 0. and also don't take 'up' as direction in this case, give direction as "none" ".
|
|
83
|
+
- **If the step is saying 'swipe up, down, left, right' with the coordinates specified in the step, then give coordintates in inputText like (x1,y1,x2,y2) and map to nlp's like swipe up, swipe down,swipe left, swipe right if direction is not mentioned but coordinates are there means then map to swipe.**
|
|
84
|
+
|
|
81
85
|
- **Extraction**:
|
|
82
|
-
-
|
|
86
|
+
- inputText: The target element in the step.e.g., "swipe to submit text",then input text must be "submit",Dont include its type in inputText like text,button,icon etc...Leave empty if just swiping N times, if coordinates are specified then give coordinates in inputText like (x1,y1,x2,y2) where x1,y1 is starting coordinate and x2,y2 is ending coordinate.**
|
|
83
87
|
- keyword: Crucial keyword from step (e.g., "Settings").
|
|
84
|
-
-
|
|
88
|
+
- nomOfScrolls: Extract count if specified (e.g., "scroll 3 times"). Default to 0 if not specified but action implies generic scroll.
|
|
85
89
|
- direction: "up", "down", "left", "right". Infer from step (e.g., "Scroll down" -> "down"). If direction is not specified, default direction to "none".
|
|
86
|
-
-
|
|
87
|
-
- type: Based on step give most relevant type of element. use this list to choose
|
|
90
|
+
- attributeValue: If an element is visible and matches the target, provide its FF-inspecter. Otherwise "Fire-Flink-2".
|
|
91
|
+
- type: Based on step give most relevant type of element. use this list to choose elementType: ${elementType} and Never change syntax of elementType, follow the syntax of elementType in list.if elementType is not there in list return 'link'.
|
|
92
|
+
- Return ONLY a valid JSON object; the response must start with '{' and end with '}', with no markdown, code fences, explanations, or extra text.
|
|
88
93
|
|
|
89
|
-
-
|
|
94
|
+
- response:valid json only.`;
|
|
90
95
|
}
|
|
91
96
|
return prompt;
|
|
92
97
|
}
|
|
@@ -4,10 +4,10 @@ exports.getActionExtractorPrompt = getActionExtractorPrompt;
|
|
|
4
4
|
async function getActionExtractorPrompt({ extractedDomJson, priorAndNextSteps, }) {
|
|
5
5
|
const nlpList = `"GetAllTheOptionsFromListBoxAsTextInSortedOrder", "GetScreenshot", "GetAllTheOptionsFromListBoxAsText", "GetTheFirstSelectedOptionFromListBoxAsText", "GetAllTheSelectedOptionsFromListBoxAsText", "GetAttribute", "GetTagName", "GetListBoxSize",
|
|
6
6
|
"GetWrappedOptionFromListBoxAsText", "GetTextFromListOfWebElements", "GetCssValue", "GetScreenshotAs", "GetFirstSelectedOption", "GetText", "GetOptions", "GetAllSelectedOptions", "GetSize", "GetWrappedElement", "GetRect", "GetLocation",
|
|
7
|
-
"GetXLocationOfWebElement", "GetYLocationOfWebElement", "GetVideoMediaSource", "GetListOfElementsFromLocatorTypeLocatorValue", "GetVideoCurrentSeekTime", "GetVideoMediaLength", "GetVideoDefaultPlaybackRate", "
|
|
8
|
-
"GetAudioDecodedByte", "GetVideoCurrentPlaybackRate", "GetVideoCurrentVolume", "
|
|
7
|
+
"GetXLocationOfWebElement", "GetYLocationOfWebElement", "GetVideoMediaSource", "GetListOfElementsFromLocatorTypeLocatorValue", "GetVideoCurrentSeekTime", "GetVideoMediaLength", "GetVideoDefaultPlaybackRate", "GetAudioCurrentPlaybackRate",
|
|
8
|
+
"GetAudioDecodedByte", "GetVideoCurrentPlaybackRate", "GetVideoCurrentVolume", "GetAudioDefaultPlaybackRate", "GetSingleApiStatusCode", "GetSingleApiResponseTime", "GetAudioCurrentVolume", "GetSingleApiResponse",
|
|
9
9
|
"GetCollectiveApiStatusCode", "GetVideoDecodedByte", "GetDataFromApiResponseForJsonPath", "GetAudioMediaSource", "GetCollectiveApiResponseTime", "GetStatusCodeOfALink", "GetValueFromLocalStorage", "GetHeightOfWebElement", "GetTunnelIdentifier",
|
|
10
|
-
"GetWidthOfWebElement", "GetValueByCookieName",
|
|
10
|
+
"GetWidthOfWebElement", "GetValueByCookieName", "GetHexCodeForGivenXYCoordinatesOfImage", "GetAudioCurrentSeekTime", "GetAudioMediaLength", "GetDateWithGivenFormat",
|
|
11
11
|
|
|
12
12
|
"GetBestPracticesScore", "GetPwaScore", "GetDataFromApiRequestHeaderForJsonPath", "GetSeoScore", "GetValueOfSystemVariable", "GetStringDataFromLocalFile", "GetAccessibilityScore", "GetPerformanceScore", "GetSystemProperty", "GetValueFromXmlPath",
|
|
13
13
|
"RobotGetXLocationOfWebElement", "RobotGetYLocationOfWebElement", "GetSingleApiRequestPayload","GetAllBrokenLinks", "GetHeightOfBrowserWindow", "GetXLocationOfBrowserWindow", "GetAllBrokenLinkCount", "GetWidthOfBrowser", "GetCurrentWindowHandle",
|
|
@@ -24,9 +24,9 @@ Select the perfect matching NLP name from the list that best fits the step's int
|
|
|
24
24
|
**The NLP name must match exactly one value from the approved NLP list. Do not generate or suggest any new NLP names under any condition.**
|
|
25
25
|
|
|
26
26
|
{
|
|
27
|
-
"
|
|
27
|
+
"attributeValue": "Fire-Flink-x",
|
|
28
28
|
"nlpName": "x",
|
|
29
|
-
"
|
|
29
|
+
"inputText":"x",
|
|
30
30
|
"elementType": "x"
|
|
31
31
|
}
|
|
32
32
|
Rules:
|
|
@@ -34,22 +34,24 @@ Rules:
|
|
|
34
34
|
- Use context from the steps : ${priorAndNextSteps}, keyword and json to search for FF-inspecter.
|
|
35
35
|
- **Find the FF-inspecter attribute value of the element in the Simplified JSON whose text or attributes best match the step.**
|
|
36
36
|
- **CRITICAL: For media actions (GetVideo..., GetAudio...), ALWAYS prioritize the actual <video> or <audio> element. DO NOT select container <div>, <span> or code block elements that merely contain the media tag as text. If you see a code block and a real media element, choose the real media element.**
|
|
37
|
-
- For some steps you can see two inputs but you need to understand step and send the required
|
|
38
|
-
ex: get the flights matches the flight, Get Single Api Response of url- 'https://app.talentscan.ai/login' and request url-'https://app.talentscan.ai/sign up', if they give x-30,y-50 just send 30,50 and for this nlps GetDataFromApiRequestHeaderForJsonPath and Get Data From Api Response of url- 'https://app.talentscan.ai/login' and request url-'https://app.talentscan.ai/sign up' For JsonPath - c:jsonpath format than fill
|
|
37
|
+
- For some steps you can see two inputs but you need to understand step and send the required inputText. inputText can be string, number, url or xpath.
|
|
38
|
+
ex: get the flights matches the flight, Get Single Api Response of url- 'https://app.talentscan.ai/login' and request url-'https://app.talentscan.ai/sign up', if they give x-30,y-50 just send 30,50 and for this nlps GetDataFromApiRequestHeaderForJsonPath and Get Data From Api Response of url- 'https://app.talentscan.ai/login' and request url-'https://app.talentscan.ai/sign up' For JsonPath - c:jsonpath format than fill inputText in this order "https://app.talentscan.ai/login,https://app.talentscan.ai/sign up,c:jsonpath"
|
|
39
39
|
here keyword : "flights" , input : "flight", here input:"https://app.talentscan.ai/login,https://app.talentscan.ai/sign up" first input is url and second input is request url
|
|
40
|
-
- If step is about getting text from list of web elements from locator type locator value then always follow this format first type next value
|
|
41
|
-
and also If a step is about getting value from element or some kind of locator type then provide the input in the format
|
|
42
|
-
- If step is about getting attribute value then map to attribute nlps and
|
|
43
|
-
- if step is about tag name then
|
|
40
|
+
- If step is about getting text from list of web elements from locator type locator value then always follow this format first type next value inputText: "locator_type, locator_value". if they didn't give locator type then based on locator value find locator type.
|
|
41
|
+
and also If a step is about getting value from element or some kind of locator type then provide the input in the format inputText: "locator_type, locator_value".
|
|
42
|
+
- If step is about getting attribute value then map to attribute nlps and inputText: "attribute_name".
|
|
43
|
+
- if step is about tag name then inputText: "tag name". and if step is about getting tag name and with count then inputText: "tag name,count".
|
|
44
44
|
- if step is about getting screenshot of element then than map to GetScreenshotAs.
|
|
45
|
-
- If step is
|
|
46
|
-
- If a step refers to location, use X-location or Y-location NLP only when X or Y is explicitly mentioned; otherwise
|
|
45
|
+
- If step is mapped to GetTunnelIdentifier nlp than inputText must have 4 values separated by comma.first will be datacenter second will be username third will be access key and fourth will be tunnel id. they must follow this order. if they miss any value than return all values except that value.
|
|
46
|
+
- If a step refers to location, use "X-location" or "Y-location" NLP only when "X" or "Y" is explicitly mentioned; otherwise it should be "GetLocation" NLP.
|
|
47
47
|
- if step is about getting options than map to option nlps.
|
|
48
|
-
- for nlp GetBestPracticesScore,GetPwaScore and GetSeoScore
|
|
48
|
+
- for nlp GetBestPracticesScore,GetPwaScore and GetSeoScore inputText must have 2 values separated by comma.first will be url second will be device type. they must follow this order. if they miss any value than return all values except that value.
|
|
49
|
+
- If the step is about to get any api response, status code or anything related to api then in input Text give me url of that api and also the target url in the format "url,target_url".
|
|
49
50
|
- If no explicit option is mentioned in the step, map it to the most relevant non-option getting NLP based on the intent of the step.
|
|
50
|
-
- Extract
|
|
51
|
-
- Use the closest semantic match for the step; return
|
|
51
|
+
- Extract inputText from the step that is which is being getting in the step, if you can't find any input text in the step, return keyword as inputText.
|
|
52
|
+
- Use the closest semantic match for the step; return attributeValue as Fire-Flink-0, only if nothing is found.and never return Fire-Flink-x.
|
|
52
53
|
- Based on step give most relevant type of element. use this list to choose elementType: ${elementType} and Never change syntax of elementType, follow the syntax of elementType in list.if elementType is not there in list return 'link'.
|
|
54
|
+
- Return ONLY a valid JSON object; the response must start with '{' and end with '}', with no markdown, code fences, explanations, or extra text.
|
|
53
55
|
- **Respond with valid JSON only. don't return any other text* or or don't return response in list format*.
|
|
54
56
|
`;
|
|
55
57
|
return prompt;
|
|
@@ -5,10 +5,10 @@ async function getActionExtractorPromptMob({ extractedDomJson, priorAndNextSteps
|
|
|
5
5
|
const nlpList = `"MOB_GetDeviceLocation","MOB_GetBatteryPercentage","MOB_GetLongitude","MOB_GetAltitude","MOB_GetLatitude",
|
|
6
6
|
"MOB_GetCurrentDeviceDate","MOB_GetMinuteFromCurrentDeviceTime","MOB_GetCurrentAppPackage","MOB_GetAllContexts",
|
|
7
7
|
"MOB_GetHourFromCurrentDeviceTime","MOB_GetSecondFromCurrentDeviceTime","MOB_GetSupportedPerformanceDataTypes",
|
|
8
|
-
"MOB_GetCurrentOrientation","MOB_GetCurrentDeviceTime","MOB_GetCurrentContext","MOB_GetCurrentDeviceSettings","GetCurrentSystemDay",
|
|
8
|
+
"MOB_GetCurrentOrientation","MOB_GetCurrentDeviceTime","MOB_GetDriverInstance","MOB_GetCurrentContext","MOB_GetCurrentDeviceSettings","GetCurrentSystemDay",
|
|
9
9
|
"MOB_GetClipBoardText","GetCurrentSystemMonth","MOB_GetCurrentDeviceStatus","MOB_GetSizeOfScreen","MOB_GetAllWindowHandles","MOB_GetWidthOfScreen",
|
|
10
10
|
"MOB_GetBatteryStatus","MOB_GetCurrentActivity","MOB_GetDeviceOsVersion","MOB_GetDeviceUdid","MOB_GetDeviceName","MOB_GetImplicitTimeOut",
|
|
11
|
-
"
|
|
11
|
+
"MOB_GetCurrentWindowHandle","MOB_GetCurrentSessionId","MOB_GetHeightOfScreen","MOB_GetCurrentDeviceSystemBars",
|
|
12
12
|
"MOB_GetAttributeValueFromListOfWebElements","MOB_GetTagName","MOB_GetListOfElementsFromLocatorTypeLocatorValue","MOB_GetScreenshot","MOB_GetTextFromElementAndSetToClipBoard",
|
|
13
13
|
"MOB_GetHeightOfElement","MOB_GetTextFromListOfWebElements","MOB_GetHexCodeForGivenXYCoordinatesOfImage","MOB_GetADBLogsForGivenAppPackage","MOB_GetScreenshotOfElement","MOB_GetWidthOfElement",
|
|
14
14
|
"MOB_GetX", "MOB_GetLocation","MOB_GetY","MOB_GetPerformanceData","MOB_GetRect","MOB_GetText","GetSize","MOB_GetAttribute"`;
|
|
@@ -20,30 +20,30 @@ Select the perfect matching NLP name from the list that best fits the step's int
|
|
|
20
20
|
|
|
21
21
|
Return **only valid JSON** in the following format:
|
|
22
22
|
{
|
|
23
|
-
"
|
|
23
|
+
"attributeValue": "Fire-Flink-x",
|
|
24
24
|
"nlpName": "x",
|
|
25
|
-
"
|
|
26
|
-
"keyword": "x",
|
|
25
|
+
"inputText":"x",
|
|
27
26
|
"elementType": "x",
|
|
28
27
|
"locator_type": "x",
|
|
29
|
-
"
|
|
28
|
+
"attributeType": "x"
|
|
30
29
|
}
|
|
31
30
|
Rules:
|
|
32
31
|
- nlpName must be exactly one from the provided list.
|
|
33
|
-
- for screenshots, extract the
|
|
34
|
-
- Use context from the steps : ${priorAndNextSteps},
|
|
32
|
+
- for screenshots, extract the inputText from the step. like what they what to name image.if not present then leave it empty.
|
|
33
|
+
- Use context from the steps : ${priorAndNextSteps}, json to search for FF-inspecter.
|
|
35
34
|
- **Find the FF-inspecter attribute value of the element in the Simplified JSON whose text or attributes best match the step.**
|
|
36
|
-
- Extract
|
|
35
|
+
- Extract inputText from the step, if you can't find any input text in the step leave it empty.
|
|
37
36
|
ex:Fetch the ADB logs for the abhibus
|
|
38
37
|
here input: abhibus
|
|
39
|
-
-
|
|
38
|
+
- **Extract inputText from the step that is which need to be get in the step ,if they mention anything in string it can be one or two values take it as input text. ex:get elements for this locator type and value 'name,login' ,inputtext:'name,login'.**
|
|
40
39
|
- Extract keyword from the step, if the step contains any keyword.
|
|
41
|
-
- Use the closest semantic match for the step; return
|
|
40
|
+
- Use the closest semantic match for the step; return attributeValue as Fire-Flink-0, only if nothing is found.
|
|
42
41
|
- if step is get location of device or get device location then map to MOB_GetDeviceLocation nlp.
|
|
43
42
|
- Based on step give most relevant type of element. use this list to choose elementType: ${elementType} and Never change syntax of elementType, follow the syntax of elementType in list.if elementType is not there in list return 'link'.
|
|
44
|
-
- Extract
|
|
45
|
-
-
|
|
43
|
+
- Extract locatorType if mentioned in the step, like(text,resource-id,content-desc,xpath)
|
|
44
|
+
- If attribute is mentioned in step then Extract attributeType from the step, like (text,resource-id,content-desc,className) and should map to attribute containing nlp only.
|
|
46
45
|
- if the step is getText or getTextFromElement map to MOB_GetText nlp similarly for getSize or GetSizeOfElement map to MOB_GetSize.
|
|
46
|
+
- Return ONLY a valid JSON object; the response must start with '{' and end with '}', with no markdown, code fences, explanations, or extra text.
|
|
47
47
|
- Respond with valid JSON only.
|
|
48
48
|
`;
|
|
49
49
|
return prompt;
|