ff-automationv2 2.2.33 → 2.2.34-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/dist/ai/llmprompts/llmPromptTypes/systemPromptTypes.d.ts +2 -0
  2. package/dist/ai/llmprompts/promptRegistry.js +4 -0
  3. package/dist/ai/llmprompts/systemPrompts/multichannelKeywordExtractor.d.ts +6 -0
  4. package/dist/ai/llmprompts/systemPrompts/multichannelKeywordExtractor.js +86 -0
  5. package/dist/ai/llmprompts/userPrompts/userPrompt.js +1 -0
  6. package/dist/automation/actions/interaction/clear/clear.js +4 -1
  7. package/dist/automation/actions/interaction/clear/clearAndEnter.js +4 -1
  8. package/dist/automation/actions/interaction/elementlessActions/getOtp.js +2 -2
  9. package/dist/automation/actions/interaction/enterActions/EnterInputIntoElementFromClipBoardInterface_mob.js +4 -1
  10. package/dist/automation/actions/interaction/enterActions/enterInput.js +5 -2
  11. package/dist/automation/actions/interaction/enterActions/enterInputAndPress.js +4 -1
  12. package/dist/automation/actions/interaction/enterActions/waitAndEnter.js +4 -1
  13. package/dist/automation/actions/interaction/get/getText.js +9 -2
  14. package/dist/automation/actions/interaction/iframe/switchToDefaultContent.js +1 -1
  15. package/dist/automation/actions/interaction/shadowDom/shadowDomUpload.js +88 -10
  16. package/dist/automation/actions/interaction/verify/VerifyElementNotContainsText.js +4 -1
  17. package/dist/automation/actions/interaction/verify/verifypartialtext.js +9 -2
  18. package/dist/automation/actions/interaction/verify/verifytext.js +9 -2
  19. package/dist/automation/actions/interface/FireFlinkResponseSchema.d.ts +30 -0
  20. package/dist/automation/actions/interface/FireFlinkResponseSchema.js +8 -1
  21. package/dist/core/helpers/elementSelectorResolver.d.ts +1 -1
  22. package/dist/core/helpers/elementSelectorResolver.js +3 -2
  23. package/dist/core/helpers/runnerDomPipeline.d.ts +2 -2
  24. package/dist/core/helpers/runnerDomPipeline.js +20 -9
  25. package/dist/core/helpers/visionFallbackHandler.js +4 -4
  26. package/dist/core/interfaces/automationRunnerInterface.d.ts +1 -0
  27. package/dist/core/interfaces/executionDetails.d.ts +2 -1
  28. package/dist/core/interfaces/fireflinkScriptPayloadInterface.d.ts +1 -3
  29. package/dist/core/interfaces/promptInterface.d.ts +5 -0
  30. package/dist/core/main/actionHandlerFactory.js +3 -3
  31. package/dist/core/main/executionContext.d.ts +2 -0
  32. package/dist/core/main/executionContext.js +18 -3
  33. package/dist/core/main/runAutomationScript.d.ts +2 -0
  34. package/dist/core/main/runAutomationScript.js +78 -20
  35. package/dist/core/types/promptType.d.ts +1 -0
  36. package/dist/core/types/promptType.js +1 -0
  37. package/dist/fireflinkData/fireflinkLocators/getListOfLocators.d.ts +2 -1
  38. package/dist/fireflinkData/fireflinkLocators/getListOfLocators.js +2 -2
  39. package/dist/fireflinkData/fireflinkScript/appendScriptData.js +61 -14
  40. package/dist/fireflinkData/fireflinkScript/scriptGenrationData.d.ts +1 -0
  41. package/dist/fireflinkData/fireflinkScript/scriptGenrationData.js +1 -0
  42. package/dist/imageAnalysisWeb/annotateScreenshot.d.ts +1 -1
  43. package/dist/imageAnalysisWeb/annotateScreenshot.js +24 -10
  44. package/dist/imageAnalysisWeb/generateAnnotatedScreenshots.js +5 -2
  45. package/dist/tests/senario.d.ts +0 -0
  46. package/dist/tests/senario.js +1120 -0
  47. package/dist/tests/test12.js +30 -62
  48. package/dist/utils/DomExtraction/jsForAttributeInjection.js +23 -0
  49. package/dist/utils/JsPathGenerator/generateJsPath.d.ts +2 -0
  50. package/dist/utils/JsPathGenerator/generateJsPath.js +169 -0
  51. package/dist/utils/helpers/xpathcreation.js +3 -0
  52. package/dist/utils/iframesExtraction/findElementUsingFF.js +1 -2
  53. package/dist/utils/iframesExtraction/switchToIframeByMeta.js +1 -1
  54. package/dist/utils/workers/locatorWorker.js +3 -1
  55. package/package.json +1 -1
@@ -0,0 +1,1120 @@
1
+ "use strict";
2
+ // // import { verify } from "node:crypto";
3
+ // import { AutomationRunner } from "../index.js"
4
+ // import { Kafka, Producer } from "kafkajs";
5
+ // import path from "path";
6
+ // import fs from "fs";
7
+ // const certPath = path.join(
8
+ // "D:",
9
+ // "Bitbucket",
10
+ // "ai-chat-backend",
11
+ // "Certificates",
12
+ // "certificate.crt"
13
+ // );
14
+ // const ssl = {
15
+ // ca: [fs.readFileSync(certPath, "utf-8")],
16
+ // rejectUnauthorized: false,
17
+ // }
18
+ // const kafka = new Kafka({
19
+ // clientId: "automation-service",
20
+ // brokers: ["127.0.0.1:9092"],
21
+ // });
22
+ // const producer: Producer = kafka.producer();
23
+ // const runner = new AutomationRunner();
24
+ // runner.run({
25
+ // // // "userStory": [["launch mobile app", "App package: com.app.abhibus,app Activity: com.abhibus.mobile.ABMainActivity"], ["wait for 2 seconds"], ["Tap on leaving from text"], ["Enter text in search by boarding point or search by source", "bangalore"], ["Tap on Bangalore (All boarding points)"], ["Enter text in search by drop point or search by source", "Kakinada"], ["Tap on Kakinada (All dropping points)"], ["Tap on calender"], ["Tap on 17 text"], ["Tap on Search Busses button"], ["Tap on mayuri travels"], ["Tap on L1 seat"], ["Tap on next button"], ["Tap on bommasadra"], ["Tap on sarpavaram junction"], ["close app"]],
26
+ // // // sslConfig: ssl, scriptType: "android", broker: ["test3.fireflink.com:9092"],
27
+ // // // "scriptName": "abhibus", "type": "Mobile (Android & iOS)", "projectId": "PJT1206", "testCaseId": "SCR3247", "promptId": "48260c92-ac16-4f94-9058-1bce234daf35", "generatedBy": "", "webSocketId": "", "licenseType": "C-Professional", "licenseId": "LIC3922", "userId": "USR26752", "projectType": "Web & Mobile", "serverData": "https://performance.fireflink.com", "pageDetails": { "Android": { "pageId": "PAGf41876d0-9202-4048-8d01-b41319aa0d8c", "pageName": "ai-Android-Page" }, "iOS": { "pageId": "PAG2e8138fa-1073-45fb-8bfc-89783270b39b", "pageName": "ai-Ios-Page" } }, "userName": "jai", "isTerminate": false, "version": "phase_1", "appiumPort": 4723, "realDeviceId": "RZ8TB063Y6N", "browser": { "browserName": "Google Chrome" }, "token": "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJIUlpZV2NoTURZWXVQaDF3TDkxb3drS3Q1OUtuNC1sOFRJcXF3a2RBV2pjIn0.eyJleHAiOjE3ODEzNDMzMTcsImlhdCI6MTc4MTI1NjkxNywianRpIjoib25ydHJvOjI1MjJmMzM2LTg2ZWEtNGFmNy1iZGE1LTdjNWUzMmE1ODQ0MCIsImlzcyI6Imh0dHA6Ly8xNDguNzIuMTY4LjE2OjMwMTA3L3JlYWxtcy9GaXJlRmxpbmstdGVzdDEiLCJhdWQiOiJ0YXJnZXQtY2xpZW50Iiwic3ViIjoiZjo4ODkyOWIwMC03M2I4LTQ3NGYtYmJiYy1kYjJlMWEzZTA3OTg6amFpYWthc2hAeW9wbWFpbC5jb20iLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiJmbGluay1zZXJ2aWNlIiwic2lkIjoiYTVjNzU4NjEtZDljNC00YTFmLTg0NTItM2UyYzE0ZjE4YmUyIiwiYWNyIjoiMSIsImFsbG93ZWQtb3JpZ2lucyI6WyIiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInNjb3BlIjoicHJvZmlsZSBlbWFpbCIsImN1cnJlbnRMaWNlbnNlSWQiOiJMSUMzOTIyIiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJjdXJyZW50UHJpdmlsZWdlIjoiQWRtaW4iLCJmdWxsTmFtZSI6ImphaSIsImFjdGl2YXRpb25TdGF0dXMiOiJBQ1RJVkUiLCJwcml2aWxlZ2UiOiJBZG1pbiIsImxpY2Vuc2VOYW1lIjoiRmlyZUZsaW5rIC0gTElDMzkyMnciLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJqYWkiLCJ1c2VyTmFtZSI6ImphaWFrYXNoQHlvcG1haWwuY29tIiwiYmlsbGluZ0N5Y2xlIjoiWWVhcmx5IiwiaWQiOiJVU1IyNjc1MiIsImxpY2Vuc2VJZCI6IkxJQzM5MjIiLCJlbWFpbCI6ImphaWFrYXNoQHlvcG1haWwuY29tIn0.Noae2tUDOT9gnnY_cj03BuOeichKmFlWCj6UuNuYLegtvC-KlpmljrRDs7OwH3WDPYApUhnQlo-HSla2ZSUr-tkpt9vx0Xg-hav39AZS4TVHfhMs5zguo_UZC2u6tLPA2SR0iMbJv7MOFELkKCEqhLsD4SVVcsYZvjsl0X45LSxEHMag29zDKdRYimAi-3SHHLiWYKmLybnvxEH-eINjf58Gxc6nEk2vrVZup_HY7hV9GIuctzBmCrM00hAQmEHAhEDBcQvoECt-0sbEZtp_uU2m42A1Fmv-yQ0y06XJ7lFSw0C6r8wNQw51VRvzjtLiGnQhM1eSegtopG6cCWVZEA", "sessionPath": "session", "platform": "android", "platformVersion": "14", "env": "test1", "serverHost": "https://performance.fireflink.com", "adbPath": "C:\\FireFlinkClient\\resources\\bin\\win\\android-sdk\\platform-tools\\adb.exe"
28
+ // // // })
29
+ // // runner.run({
30
+ // // // userStory: [
31
+ // // // [
32
+ // // // "Open the browser"
33
+ // // // ],
34
+ // // // [
35
+ // // // "Maximize browser"
36
+ // // // ],
37
+ // // // [
38
+ // // // "Navigate to the URL",
39
+ // // // "https://testegs.edlog.com/"
40
+ // // // ],
41
+ // // // [
42
+ // // // "Enter username into the username field ,showkar.n@edlog.com"
43
+ // // // ],
44
+ // // // [
45
+ // // // "Enter password into the password field , Eliteinsn0501#"
46
+ // // // ],
47
+ // // // [
48
+ // // // "Click on the Login button"
49
+ // // // ],
50
+ // // // [
51
+ // // // "Wait for 15 seconds"
52
+ // // // ],
53
+ // // // [
54
+ // // // "Select date 2026-6-2 "
55
+ // // // ],
56
+ // // // [
57
+ // // // "Select date 2026-7-30 "
58
+ // // // ]
59
+ // // // ],
60
+ // // // userStory: [
61
+ // // // ["Open browser"],
62
+ // // // ["Navigate to https://www.saucedemo.com/"],
63
+ // // // ["Maximize the browser"],
64
+ // // // ["enter mobile number", "7992873847"],
65
+ // // // ["Enter Username", "standard_user"],
66
+ // // // ["Enter Password", "secret_sauce"],
67
+ // // // ["Click on Login"],
68
+ // // // ["Click on plus icon present next to the 'Proof of Address'"],
69
+ // // // ["Click on Add to cart of Sauce Labs Bike Light"],
70
+ // // // ["Click on Shopping cart icon"],
71
+ // // // ["Click on Checkout"],
72
+ // // // ["Enter First Name", "Jai"],
73
+ // // // ["Enter Last Name", "Akash"],
74
+ // // // ["Enter Zip/Postal Code", "560004"],
75
+ // // // ["Scroll until Continue button is displayed"],
76
+ // // // ["Wait for 2 seconds"],
77
+ // // // ["Click on Continue"],
78
+ // // // ["Click on Finish"],
79
+ // // // ["Click on Back Home"],
80
+ // // // ["Close browser"]
81
+ // // // ],
82
+ // userStory: [
83
+ // [
84
+ // "Open https://www.indiamart.com, get OTP from INDMRT message, enter the OTP, then close the browser"
85
+ // ]
86
+ // ],
87
+ // hasMoreSteps: false,
88
+ // scenario: true,
89
+ // sslConfig: ssl, scriptType: "android", broker: ["test3.fireflink.com:9092"], "scriptName": "{\"automationScriptName\":\"script 01\"}", "type": "Web & Mobile", "projectId": "PJT1006", "testCaseId": "SCR1806", kafkaMessageKey: 'lohit',
90
+ // "promptId": "a8fba64a-4d91-422c-bdfd-a7609576a63e", "generatedBy": "", "webSocketId": "", "licenseType": "C-Professional", "licenseId": "LIC2026980", "userId": "USR26860", "projectType": "Web", "serverData": "https://performance.fireflink.com", "pageDetails": { "Web": { "pageId": "PAG3e09350f-4917-4c80-8ce5-a08e97fe314e", "pageName": "ai-Page" } }, "userName": "jai", isTerminate: false, "appiumPort": 4723, "realDeviceId": "", "browserName": "Google Chrome", "token": "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJIUlpZV2NoTURZWXVQaDF3TDkxb3drS3Q1OUtuNC1sOFRJcXF3a2RBV2pjIn0.eyJleHAiOjE3ODA1NzkwNzEsImlhdCI6MTc4MDQ5MjY3MSwianRpIjoib25ydHJvOmYxYzJiNjg2LTJiZGMtNGIxOS04ZGVhLTMwMjhhNDkxZDY5NCIsImlzcyI6Imh0dHA6Ly8xNDguNzIuMTY4LjE2OjMwMTA3L3JlYWxtcy9GaXJlRmxpbmstdGVzdDEiLCJhdWQiOiJ0YXJnZXQtY2xpZW50Iiwic3ViIjoiZjo4ODkyOWIwMC03M2I4LTQ3NGYtYmJiYy1kYjJlMWEzZTA3OTg6amFpYWthc2hAeW9wbWFpbC5jb20iLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiJmbGluay1zZXJ2aWNlIiwic2lkIjoiZWRiMDgwZDctNzhiYi00NzU5LTgyM2EtMTM1ZDUzYTM5NmQzIiwiYWNyIjoiMSIsImFsbG93ZWQtb3JpZ2lucyI6WyIiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInNjb3BlIjoicHJvZmlsZSBlbWFpbCIsImN1cnJlbnRMaWNlbnNlSWQiOiJMSUMzOTIyIiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJjdXJyZW50UHJpdmlsZWdlIjoiQWRtaW4iLCJmdWxsTmFtZSI6ImphaSIsImFjdGl2YXRpb25TdGF0dXMiOiJBQ1RJVkUiLCJwcml2aWxlZ2UiOiJBZG1pbiIsImxpY2Vuc2VOYW1lIjoiRmlyZUZsaW5rIC0gTElDMzkyMnciLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJqYWkiLCJ1c2VyTmFtZSI6ImphaWFrYXNoQHlvcG1haWwuY29tIiwiYmlsbGluZ0N5Y2xlIjoiWWVhcmx5IiwiaWQiOiJVU1IyNjc1MiIsImxpY2Vuc2VJZCI6IkxJQzM5MjIiLCJlbWFpbCI6ImphaWFrYXNoQHlvcG1haWwuY29tIn0.LPBCnEKBi8Yi4Qktpd_oW46-P7s0iQ0AejZeXRMIa8aUwfwY8gNl3McIrKLBVqPL4NKYe_05aMaiepvjkolu7RWh120mX90ZdNJuMUjg0WuRaM90xNjmy1YK94mBt0mphKK04u1K4trvhvgW2hTt4rvGRq_oEvH2E_2YqYw310TuP-guqxuZqTv_IJ6HFtvMJkV9L3A579juICZfGdS53-KuZwqn7jA-73nJZBzPJyMucaPz42s36RWpDmfs7MX0-Fcv8LH7FvCjCs63GvCC-tdGoh5m0MRCiElJocWlw9jabsPHymEt5-nemnXIZIon2675wYbxVx99mHA1VBPD2w", "sessionPath": "session", "platform": "web", "platformVersion": "", "env": "test1",
91
+ // "serverHost": "https://sg-app.fireflink.com", "adbPath": "C:\\FireFlinkClient\\resources\\bin\\win\\android-sdk\\platform-tools\\adb.exe",
92
+ // topic: "test-topic",
93
+ // aiExecutionAction: ""
94
+ // });
95
+ // // // runner.run({
96
+ // // // userStory: [
97
+ // // // ["Open browser"],
98
+ // // // ["Navigate to https://testautomationpractice.blogspot.com/"],
99
+ // // // ["Maximize the browser"],
100
+ // // // ["Enter name", "santosh"],
101
+ // // // ["clear and enter name", 'sai'],
102
+ // // // // ["wait for 2 sec"],
103
+ // // // // ["Click on Simple Alert"],
104
+ // // // // ["Click ok"],
105
+ // // // // ["Click on Add to cart of Sauce Labs Bike Light"],
106
+ // // // // ["Click on Shopping cart icon"],
107
+ // // // // ["Click on Checkout"],
108
+ // // // // ["Enter First Name", "Jai"],
109
+ // // // // ["Enter Last Name", "Akash"],
110
+ // // // // ["Enter Zip/Postal Code", "560004"],
111
+ // // // // ["Scroll until Continue button is displayed"],
112
+ // // // // ["Wait for 2 seconds"],
113
+ // // // // ["Click on Continue"],
114
+ // // // // ["Click on Finish"],
115
+ // // // // ["Click on Back Home"],
116
+ // // // // ["Close browser"]
117
+ // // // ],
118
+ // // // userStory: [
119
+ // // // [
120
+ // // // "open browser"
121
+ // // // ],
122
+ // // // [
123
+ // // // "navigate to url , https://www.samsung.com/in/"
124
+ // // // ],
125
+ // // // [
126
+ // // // "maximize browser"
127
+ // // // ],
128
+ // // // [
129
+ // // // "click on shop tab"
130
+ // // // ],
131
+ // // // [
132
+ // // // "select mobile tab"
133
+ // // // ],
134
+ // // // [
135
+ // // // "click on s26 ultra"
136
+ // // // ],
137
+ // // // [
138
+ // // // "select storage of 256gb and 12 gb"
139
+ // // // ],
140
+ // // // [
141
+ // // // "select silver color"
142
+ // // // ],
143
+ // // // [
144
+ // // // "enter 560078 in to the pin code field"
145
+ // // // ],
146
+ // // // [
147
+ // // // "select No thanks for exchange"
148
+ // // // ],
149
+ // // // [
150
+ // // // "select no thatnks for samsung care plus"
151
+ // // // ]
152
+ // // // ]
153
+ // // userStory: [
154
+ // // ["Open browser"],
155
+ // // ["Navigate to https://www.saucedemo.com/"],
156
+ // // ["Maximize the browser"],
157
+ // // ["enter mobile number", "7992873847"],
158
+ // // ["Enter Username", "standard_user"],
159
+ // // ["Enter Password", "secret_sauce"],
160
+ // // ["Click on Login"],
161
+ // // ["Click on plus icon present next to the 'Proof of Address'"],
162
+ // // ["Click on Add to cart of Sauce Labs Bike Light"],
163
+ // // ["Click on Shopping cart icon"],
164
+ // // ["Click on Checkout"],
165
+ // // ["Enter First Name", "Jai"],
166
+ // // ["Enter Last Name", "Akash"],
167
+ // // ["Enter Zip/Postal Code", "560004"],
168
+ // // ["Scroll until Continue button is displayed"],
169
+ // // ["Wait for 2 seconds"],
170
+ // // ["Click on Continue"],
171
+ // // ["Click on Finish"],
172
+ // // ["Click on Back Home"],
173
+ // // ["Close browser"]
174
+ // // ],
175
+ // // // // userStory:
176
+ // // // // [
177
+ // // // // ["Open the browser"],
178
+ // // // // ["Maximize the browser window"],
179
+ // // // // ["Navigate to the URL", "http://49.249.29.4:8888/"],
180
+ // // // // ["Enter admin in Username field"],
181
+ // // // // ["Enter admin in Password field"],
182
+ // // // // ["Click on Login input"],
183
+ // // // // ["Click on Leads button"],
184
+ // // // // ["Click on Create Lead button"],
185
+ // // // // ["Select Mr. in First Name Prefix"],
186
+ // // // // ["Enter John in First Name"],
187
+ // // // // ["Enter Doe in Last Name"],
188
+ // // // // ["Enter Acme Corp in Company"],
189
+ // // // // ["Enter Manager in Title"],
190
+ // // // // ["Select Web in Lead Source"],
191
+ // // // // ["Select Technology in Industry"],
192
+ // // // // ["Enter 500000 in Annual Revenue"],
193
+ // // // // ["Enter 50 in Number of Employees"],
194
+ // // // // ["Enter john.doe@acme.com in Secondary Email"],
195
+ // // // // ["Enter 1234567890 in Phone"],
196
+ // // // // ["Enter 987654321 in Mobile"],
197
+ // // // // ["Enter 1122334455 in Fax"],
198
+ // // // // ["Enter john.doe@acme.com in Email"],
199
+ // // // // ["Enter http://acme.com in Website"],
200
+ // // // // ["Select Cold in Lead Status"],
201
+ // // // // ["Select Active in Rating"],
202
+ // // // // ["Enter 123 in PO Box"],
203
+ // // // // ["Enter 10001 in Postal Code"],
204
+ // // // // ["Enter Metropolis in City"],
205
+ // // // // ["Enter NY in State"],
206
+ // // // // ["Enter USA in Country"],
207
+ // // // // ["Enter 123 Main St in Street"],
208
+ // // // // ["Enter Lead from web test in Description"],
209
+ // // // // ["Click Save"],
210
+ // // // // ["Close the browser"]
211
+ // // // // ],
212
+ // // // // userStory: [
213
+ // // // // ["Open the browser"],
214
+ // // // // ["Maximize the browser window"],
215
+ // // // // ["Navigate to the URL", " https://canada.michaels.com/ "],
216
+ // // // // ["wait 5 seconds"],
217
+ // // // // ["Click the Menu "],
218
+ // // // // ["Click the Shop Categories button"],
219
+ // // // // ["Click the Everyday Value link"],
220
+ // // // // ["wait for 5 seconds"],
221
+ // // // // ["Click the All Everyday Value link"],
222
+ // // // // // ["wait for 5 seconds"],
223
+ // // // // ["Close the browser"]
224
+ // // // // ],
225
+ // // // sslConfig: ssl, scriptType: "android", broker: ["test3.fireflink.com:9092"], "scriptName": "script 01", "type": "Web", "projectId": "PJT1001", "testCaseId": "SCR1806",
226
+ // // // "promptId": "a8fba64a-4d91-422c-bdfd-a7609576a63e", "generatedBy": "", "webSocketId": "", "licenseType": "C-Professional", "licenseId": "LIC1026612", "userId": "USR26860", "projectType": "Web", "serverData": "https://performance.fireflink.com", "pageDetails": { "Web": { "pageId": "PAG3e09350f-4917-4c80-8ce5-a08e97fe314e", "pageName": "ai-Page" } }, "userName": "jai", isTerminate: false, "version": "phase_1", "appiumPort": 4723, "realDeviceId": "", "browser": { "browserName": "Google Chrome" }, "token": "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJIUlpZV2NoTURZWXVQaDF3TDkxb3drS3Q1OUtuNC1sOFRJcXF3a2RBV2pjIn0.eyJleHAiOjE3ODA1NzkwNzEsImlhdCI6MTc4MDQ5MjY3MSwianRpIjoib25ydHJvOmYxYzJiNjg2LTJiZGMtNGIxOS04ZGVhLTMwMjhhNDkxZDY5NCIsImlzcyI6Imh0dHA6Ly8xNDguNzIuMTY4LjE2OjMwMTA3L3JlYWxtcy9GaXJlRmxpbmstdGVzdDEiLCJhdWQiOiJ0YXJnZXQtY2xpZW50Iiwic3ViIjoiZjo4ODkyOWIwMC03M2I4LTQ3NGYtYmJiYy1kYjJlMWEzZTA3OTg6amFpYWthc2hAeW9wbWFpbC5jb20iLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiJmbGluay1zZXJ2aWNlIiwic2lkIjoiZWRiMDgwZDctNzhiYi00NzU5LTgyM2EtMTM1ZDUzYTM5NmQzIiwiYWNyIjoiMSIsImFsbG93ZWQtb3JpZ2lucyI6WyIiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInNjb3BlIjoicHJvZmlsZSBlbWFpbCIsImN1cnJlbnRMaWNlbnNlSWQiOiJMSUMzOTIyIiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJjdXJyZW50UHJpdmlsZWdlIjoiQWRtaW4iLCJmdWxsTmFtZSI6ImphaSIsImFjdGl2YXRpb25TdGF0dXMiOiJBQ1RJVkUiLCJwcml2aWxlZ2UiOiJBZG1pbiIsImxpY2Vuc2VOYW1lIjoiRmlyZUZsaW5rIC0gTElDMzkyMnciLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJqYWkiLCJ1c2VyTmFtZSI6ImphaWFrYXNoQHlvcG1haWwuY29tIiwiYmlsbGluZ0N5Y2xlIjoiWWVhcmx5IiwiaWQiOiJVU1IyNjc1MiIsImxpY2Vuc2VJZCI6IkxJQzM5MjIiLCJlbWFpbCI6ImphaWFrYXNoQHlvcG1haWwuY29tIn0.LPBCnEKBi8Yi4Qktpd_oW46-P7s0iQ0AejZeXRMIa8aUwfwY8gNl3McIrKLBVqPL4NKYe_05aMaiepvjkolu7RWh120mX90ZdNJuMUjg0WuRaM90xNjmy1YK94mBt0mphKK04u1K4trvhvgW2hTt4rvGRq_oEvH2E_2YqYw310TuP-guqxuZqTv_IJ6HFtvMJkV9L3A579juICZfGdS53-KuZwqn7jA-73nJZBzPJyMucaPz42s36RWpDmfs7MX0-Fcv8LH7FvCjCs63GvCC-tdGoh5m0MRCiElJocWlw9jabsPHymEt5-nemnXIZIon2675wYbxVx99mHA1VBPD2w", "sessionPath": "session", "platform": "web", "platformVersion": "", "env": "test1",
227
+ // // // "serverHost": "https://us-app.fireflink.com", "adbPath": "C:\\FireFlinkClient\\resources\\bin\\win\\android-sdk\\platform-tools\\adb.exe"
228
+ // // // })
229
+ // // // "projectId": "PJT1044"
230
+ // // // "licenseId": "LIC3985"
231
+ // // // runner.run({
232
+ // // // userStory: [
233
+ // // // ["Open browser"],
234
+ // // // ["Navigate to https://www.saucedemo.com/"],
235
+ // // // ["Maximize the browser"],
236
+ // // // ["Enter Username", "standard_user"],
237
+ // // // ["Enter input in mobile number ", "7993710677"],
238
+ // // // ["Click on Login"],
239
+ // // // ["Click on Add to cart of Sauce Labs Bike Light"],
240
+ // // // ["Click on Shopping cart icon"],
241
+ // // // ["Click on Checkout"],
242
+ // // // ["Enter First Name", "Jai"],
243
+ // // // ["Enter Last Name", "Akash"],
244
+ // // // ["Enter Zip/Postal Code", "560004"],
245
+ // // // ["Scroll until Continue button is displayed"],
246
+ // // // ["Wait for 2 seconds"],
247
+ // // // ["Click on Continue"],
248
+ // // // ["Click on Finish"],
249
+ // // // ["Click on Back Home"],
250
+ // // // ["Close browser"]
251
+ // // // ],
252
+ // // // env: "test1",
253
+ // // // platform: "web",
254
+ // // // pageDetails: {
255
+ // // // Web: {
256
+ // // // pageId: "PAG73a7a0ad-c092-4351-8a93-68647f60e343",
257
+ // // // pageName: "ai-Page"
258
+ // // // }
259
+ // // // },
260
+ // // // serverHost: "https://performance.fireflink.com",
261
+ // // // sessionPath: `session`,
262
+ // // // // sslConfig: {
263
+ // // // // ca: ["./Certificates/ca-cert.pem"],
264
+ // // // // key: ["./Certificates/client-key.pem"],
265
+ // // // // cert: ["./Certificates/client-cert.pem"]
266
+ // // // // },
267
+ // // // sslConfig: ssl,
268
+ // // // broker: ["test3.fireflink.com:9092"],
269
+ // // // webSocketId: "",
270
+ // // // generatedBy: "",
271
+ // // // licenseType: "C-Professional",
272
+ // // // licenseId: "LIC3922",
273
+ // // // userId: "USR25688",
274
+ // // // // topic: "Topic-FIREFLINK-aiAutomation-Updates-test3",
275
+ // // // projectType: "Web",
276
+ // // // browser: {
277
+ // // // browserName: "Google Chrome",
278
+ // // // },
279
+ // // // serverData: "https://performance.fireflink.com",
280
+ // // // version: "asdfg",
281
+ // // // type: "sdfg",
282
+ // // // scriptName: "url",
283
+ // // // scriptType: "android",
284
+ // // // projectId: "PJT1101",
285
+ // // // testCaseId: "SCR1003",
286
+ // // // promptId: "3f6e123c-8ec6-47c1-90e1-1a2f53b49251",
287
+ // // // userName: "default-user",
288
+ // // // appiumPort: 4723,
289
+ // // // platformVersion: "",
290
+ // // // realDeviceId: "RZ8TB054S2H",
291
+ // // // isTerminate: false,
292
+ // // // isCloud: false,
293
+ // // // cloudConfig: {
294
+ // // // accessKey: "yfAa_w199cJge2Gezsgb2Jnu7hKdqER1tExY5kKvgSvXfi1lRUelFsbTFI5pMq7zQuwwNXXnsLTkjKhvWcKDWsUoGLi9KjUV6gbUNDhqj0jWYFyW9h_0LIDEg5qXigwZdqzQqAvWwHin3gBhzGndeROtixv_VFhnseGSWRAHTajZzE-Zl0d8BP6gl0TEBUfoNgqBtAQVDLP6wAQzPfcyjjGFsdHkXWeHFkKmA78D7rKlnNuN2WgjIUlhYheDRDeqZ98Ig_PyS1GbUvjwJ73L38sr_cD4Y9lrKyWJV-m5RmtKhmkqRM8uk5gEfjzgwy30",
295
+ // // // hostname: "devicefarm.fireflink.com",
296
+ // // // licenseId: "LIC2026658",
297
+ // // // projectName: "Project-6",
298
+ // // // protocol: "https",
299
+ // // // path: "backend/fireflinkcloud/wd/hub"
300
+ // // // },
301
+ // // // capabilities: {
302
+ // // // browserName: "chrome",
303
+ // // // browserVersion: "136",
304
+ // // // platformName: "Windows 11",
305
+ // // // // "appium:platformVersion": "14",
306
+ // // // // "appium:deviceName": "Vivo V40 Pro",
307
+ // // // // "platformName": "Android",
308
+ // // // // "appium:app": "General-Store-final (4).apk",
309
+ // // // // "appium:deviceType": "public",
310
+ // // // // "appium:isVirtual": false
311
+ // // // },
312
+ // // // adbPath: "C:\\FireFlinkClient\\resources\\bin\\android-sdk\\win\\platform-tools\\adb.exe",
313
+ // // // token: "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJIUlpZV2NoTURZWXVQaDF3TDkxb3drS3Q1OUtuNC1sOFRJcXF3a2RBV2pjIn0.eyJleHAiOjE3ODA1ODAzMzEsImlhdCI6MTc4MDQ5MzkzMSwianRpIjoib25ydHJvOmY2ZmVkYWQ2LWRmMWQtNGQwZC04NmE0LWMzNmIwODcyZjBkZSIsImlzcyI6Imh0dHA6Ly8xNDguNzIuMTY4LjE2OjMwMTA3L3JlYWxtcy9GaXJlRmxpbmstdGVzdDEiLCJhdWQiOiJ0YXJnZXQtY2xpZW50Iiwic3ViIjoiZjo4ODkyOWIwMC03M2I4LTQ3NGYtYmJiYy1kYjJlMWEzZTA3OTg6amFpYWthc2hAeW9wbWFpbC5jb20iLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiJmbGluay1zZXJ2aWNlIiwic2lkIjoiNWU4YzExMzctZDNjMC00NDllLWJlYTAtMzVjYzNlNmI1NmZmIiwiYWNyIjoiMSIsImFsbG93ZWQtb3JpZ2lucyI6WyIiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInNjb3BlIjoicHJvZmlsZSBlbWFpbCIsImN1cnJlbnRMaWNlbnNlSWQiOiJMSUMzOTIyIiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJjdXJyZW50UHJpdmlsZWdlIjoiQWRtaW4iLCJmdWxsTmFtZSI6ImphaSIsImFjdGl2YXRpb25TdGF0dXMiOiJBQ1RJVkUiLCJwcml2aWxlZ2UiOiJBZG1pbiIsImxpY2Vuc2VOYW1lIjoiRmlyZUZsaW5rIC0gTElDMzkyMnciLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJqYWkiLCJ1c2VyTmFtZSI6ImphaWFrYXNoQHlvcG1haWwuY29tIiwiYmlsbGluZ0N5Y2xlIjoiWWVhcmx5IiwiaWQiOiJVU1IyNjc1MiIsImxpY2Vuc2VJZCI6IkxJQzM5MjIiLCJlbWFpbCI6ImphaWFrYXNoQHlvcG1haWwuY29tIn0.OQUWJ4zxwb4EBsWsyt9PP4cqDLlebtBU5n2kAtjeYUVS2YFUfgkbwpH1bjy9FFcFcegswsUZgfz6d60Fes2JlyzFxb_CemJbewFK4fkes9YoOF_JzqLiTYV9_MudkCfOH5ppTqwo4cgajtOXx3lcmekfCDsVABNbPcFRX2sLGfnRpaFwax3CdXuJSN5n6qyibi-SCMdVDA8IW9ITK8uQylHxoxdgJjL5aUZ6KK-LTP23U-gcOn_TOXMMcgl5EC0PrkSgjtvLPclJLxpITLSYh9Z1InsqgtuYbBBN2--6Z_kp-m7P4ktNE05zrBOkicxMCId_U1O34hAAuq42U0CvmQ"
314
+ // // // })
315
+ // // // runner.run({
316
+ // // // userStory: [['open FK Mobile App', 'com.flipkart.android', 'com.flipkart.android.SplashActivity'],
317
+ // // // ["wait for 20 sec"],
318
+ // // // ['Tap on heart icon'],
319
+ // // // // ['Enter text in source field, bangalore'],
320
+ // // // // ['Tap on item , Bangalore'],
321
+ // // // // ['Enter chennai in destination field'],
322
+ // // // // ['Tap on item , Chennai, tamil nadu'],
323
+ // // // // ['close app']
324
+ // // // ],
325
+ // // // scriptName: "MOB_VerifyElementIsDisplayed - Copy",
326
+ // // // type: "Android", projectId: "PJT1001",
327
+ // // // broker: ["test3.fireflink.com:9092"],
328
+ // // // sslConfig: ssl,
329
+ // // // scriptType: "android",
330
+ // // // testCaseId: "SCR4316",
331
+ // // // promptId: "d0d0757a-0039-4337-b9c3-57863f5851c8",
332
+ // // // generatedBy: "", webSocketId: "",
333
+ // // // licenseType: "C-Professional",
334
+ // // // licenseId: "LIC1026612", userId: "USR20150441",
335
+ // // // projectType: "Mobile", serverData: "https://v3demo.fireflink.com",
336
+ // // // pageDetails: { "Android": { "pageId": "PAGe0642fe7-20cd-4448-aef3-87ea7fe6e694", "pageName": "ai-Android-Page" } },
337
+ // // // userName: "Santosh", isTerminate: false, version: "phase_1", appiumPort: 4723,
338
+ // // // realDeviceId: "RZ8TB054S2H", browser: { "browserName": "Google Chrome" },
339
+ // // // token: "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICI3d0JOZzRzQUI5RHU5NURFYTNXTHhLNENUQjdZbTVHOE80QlpzRUlaVzhZIn0.eyJleHAiOjE3NzgzMDcyMjYsImlhdCI6MTc3ODIyMDgyNiwianRpIjoib25ydHJvOjM0Njk0M2FhLWY5ZjEtNGExMS1iNGJkLTQzM2JkNDg2NGUwMiIsImlzcyI6Imh0dHA6Ly8xNDguNzIuMTY4LjE2OjMwMTA3L3JlYWxtcy9maXJlZmxpbmstZGVtbyIsImF1ZCI6InRhcmdldC1jbGllbnQiLCJzdWIiOiJmOjc3MGMxZDQxLTJlMmQtNDUwMy1hZjliLWM3ZWIxMjRhMmE0ZTpzYW50b3NoLnNAZmlyZWZsaW5rLmNvbSIsInR5cCI6IkJlYXJlciIsImF6cCI6ImZsaW5rLXNlcnZpY2UiLCJzaWQiOiI4ZDI2OTYwNS1lZWU3LTQyZTAtYTVmNi0zZmIyZjI0ZDk2OWUiLCJhY3IiOiIxIiwiYWxsb3dlZC1vcmlnaW5zIjpbIioiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInNjb3BlIjoicHJvZmlsZSBlbWFpbCIsImN1cnJlbnRMaWNlbnNlSWQiOiJMSUMyMDI2NzU3IiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJjdXJyZW50UHJpdmlsZWdlIjoiQWRtaW4iLCJmdWxsTmFtZSI6IlNhbnRvc2giLCJhY3RpdmF0aW9uU3RhdHVzIjoiQUNUSVZFIiwicHJpdmlsZWdlIjoiQWRtaW4iLCJsaWNlbnNlTmFtZSI6IkZpcmVGbGluayAtIExJQzIwMjY3NTciLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJTYW50b3NoIiwidXNlck5hbWUiOiJzYW50b3NoLnNAZmlyZWZsaW5rLmNvbSIsImJpbGxpbmdDeWNsZSI6IlllYXJseSIsImlkIjoiVVNSMjAxNTA0NDEiLCJsaWNlbnNlSWQiOiJMSUMyMDI2NzU3IiwiZW1haWwiOiJzYW50b3NoLnNAZmlyZWZsaW5rLmNvbSJ9.fKccGs34ik-W6DTImfYxiUh6T3YjEK_tFX1WNpXIYxQPTG5ow4oQv26a0UXishNyQXkQMaKdFZYBgWbv5AvGyUj9G-J2NYeoo_UKquina9-NzOm3jMOl_sfCplvAULhZl_0pafguXlh7iS4WBfUuFykqvfEb9o1OWkYkVxI4bhiaL4V1YPmzOBCcb57gBwlenAdgIWKhgCSqK5e_ve-1NBilK6pqTsJ9XLcTCmHD1DDQ2F6MfdFKTJYIQ7QzsDyQrX-_jMANPnnacjz0BSn5crgZokrGDvIZ9YD96mN_ER9tSn_zqR9Cjo2U5DKkDkdPkzLarEUtcrEkCfEofschXw",
340
+ // // // sessionPath: `session`,
341
+ // // // platform: "android", platformVersion: "14", env: "demo", serverHost: "https://app.v3.fireflink.com", adbPath: "C:\\FireFlinkClient\\resources\\bin\\win\\android-sdk\\platform-tools\\adb.exe"
342
+ // // // })
343
+ // // // runner.run({
344
+ // // // "userStory":[["open browser"],["navigate to url","demoapps.qspiders.com"],["Maximize browser"],["wait for 3 seconds"],["click on UI Testing concepts"],["close browser"]],
345
+ // // // "scriptName":"test cases",
346
+ // // // "scriptType":"Web & Mobile (Android & iOS)",
347
+ // // // "projectId":"PJT1043",
348
+ // // // "testCaseId":"SCR1921",
349
+ // // // "promptId":"2d6487d8-4d23-4ef6-929c-e1748a599154",
350
+ // // // "generatedBy":"",
351
+ // // // "webSocketId":"",
352
+ // // // "licenseType":"C-Professional",
353
+ // // // "licenseId":"LIC3916",
354
+ // // // "userId":"USR26696",
355
+ // // // "projectType":"Web & Mobile",
356
+ // // // "serverData":"https://performance.fireflink.com",
357
+ // // // "pageDetails":{"Web":{"pageId":"PAG4a351de6-7267-43ce-8a69-22e637f40298","pageName":"ai-Page"},
358
+ // // // "Android":{"pageId":"PAG1b1af2a8-5540-43f4-b29c-87c3be415d77","pageName":"ai-Android-Page"},
359
+ // // // "iOS":{"pageId":"PAGe9ccd733-59cd-4765-b11d-6e45eb01521d","pageName":"ai-Ios-Page"}},
360
+ // // // "userName":"Rashmi",
361
+ // // // "isTerminate":false,
362
+ // // // "appiumPort":0,
363
+ // // // "realDeviceId":"5B2AB54C-197B-57F4-AA8A-A91E2DCDA736",
364
+ // // // "browser":{"browserName":"Google Chrome"},
365
+ // // // "token":"eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJIUlpZV2NoTURZWXVQaDF3TDkxb3drS3Q1OUtuNC1sOFRJcXF3a2RBV2pjIn0.eyJleHAiOjE3NzcxMDgyNDgsImlhdCI6MTc3NzAyMTg0OCwianRpIjoib25ydHJvOmRhZTg3NDUzLWRmZjYtNDRkMy04NzM5LTFjOTY0OGFmYjFkMSIsImlzcyI6Imh0dHA6Ly8xNDguNzIuMTY4LjE2OjMwMTA3L3JlYWxtcy9GaXJlRmxpbmstdGVzdDEiLCJhdWQiOiJ0YXJnZXQtY2xpZW50Iiwic3ViIjoiZjo4ODkyOWIwMC03M2I4LTQ3NGYtYmJiYy1kYjJlMWEzZTA3OTg6cmFzaG1pLnRAZmlyZWZsaW5rLmNvbSIsInR5cCI6IkJlYXJlciIsImF6cCI6ImZsaW5rLXNlcnZpY2UiLCJzaWQiOiJmMmFmYjI1ZS1jNGFkLTQyNDAtOTdlOS0xOGVlMTg2NzY1ODUiLCJhY3IiOiIxIiwiYWxsb3dlZC1vcmlnaW5zIjpbIiJdLCJyZWFsbV9hY2Nlc3MiOnsicm9sZXMiOlsib2ZmbGluZV9hY2Nlc3MiLCJ1bWFfYXV0aG9yaXphdGlvbiJdfSwic2NvcGUiOiJwcm9maWxlIGVtYWlsIiwiY3VycmVudExpY2Vuc2VJZCI6IkxJQzM5MTYiLCJlbWFpbF92ZXJpZmllZCI6ZmFsc2UsImN1cnJlbnRQcml2aWxlZ2UiOiJBZG1pbiIsImZ1bGxOYW1lIjoiUmFzaG1pIiwiYWN0aXZhdGlvblN0YXR1cyI6IkFDVElWRSIsInByaXZpbGVnZSI6IkFkbWluIiwibGljZW5zZU5hbWUiOiJGaXJlRmxpbmsgLSBMSUMzOTE2IiwicHJlZmVycmVkX3VzZXJuYW1lIjoiUmFzaG1pIiwidXNlck5hbWUiOiJyYXNobWkudEBmaXJlZmxpbmsuY29tIiwiYmlsbGluZ0N5Y2xlIjoiUXVhcnRlcmx5IiwiaWQiOiJVU1IyNjY5NiIsImxpY2Vuc2VJZCI6IkxJQzM5MTYiLCJlbWFpbCI6InJhc2htaS50QGZpcmVmbGluay5jb20ifQ.essxL7jivW4l-kDt1B_Gxg-JfRnz1XrTZU0sSvk-ZTFB8UNPFuGwjnr6Mz8fSZgtP_kXlZh0yPOd8Vvck92f7z0Y4kX5CHWfEQJbJN3TATMH41OJpJpXPOcZrl6uH-_Z8R9l3CwQuxjKjZUXIdz-O-CW8QdvSM8l-2rrnYG_09LLm8YhQsSMwqofQK-pNgwvtZYOVGsLM4J6hHR9xT8_x9suTCgy_3ZFwDji5ptDiIkUpMjqm0E-SJ3fsyVBzIZhOn3DNyiGnIx4LjBR8rmGoKxY-6VhGyHYfW70J4kHqEJKm6xW0n6nVkIKTZjqT546xlVT3i-giYaxGAT40t1muA",
366
+ // // // "sessionPath":"/Users/padmakant/Library/Application Support/fire-flink-client/logs/execution-logs",
367
+ // // // "version":"",
368
+ // // // "platform":"web",
369
+ // // // "platformVersion":"Air",
370
+ // // // "env":"test1",
371
+ // // // "serverHost":"https://performance.fireflink.com"})
372
+ // // // runner.run(
373
+ // // // {
374
+ // // // "userStory": [["open browser"], ["navigate to url", "https://demoapps.qspiders.com"], ["maximize the browser"], ["wait for 3 seconds"], ["Click on UI Testing concepts"], ["Click on Dropdown option"], ["Click on select country dropdown"], ["Verify If Given Option india Is Duplicate"], ["Close browser"]],
375
+ // // // "scriptName": "VerifyIfGivenOptionIsDuplicate",
376
+ // // // "scriptType": "Web & Mobile (Android & iOS)",
377
+ // // // "projectId": "PJT1041",
378
+ // // // "testCaseId": "SCR1900",
379
+ // // // "promptId": "70f62d35-7863-404b-8572-732453c4dec9",
380
+ // // // "generatedBy": "",
381
+ // // // "webSocketId": "",
382
+ // // // "licenseType": "C-Professional",
383
+ // // // "licenseId": "LIC3916",
384
+ // // // "userId": "USR26696",
385
+ // // // "projectType": "Web & Mobile",
386
+ // // // "serverData": "https://performance.fireflink.com",
387
+ // // // "pageDetails": { "Web": { "pageId": "PAG025b6c68-9a55-46da-b353-0894f29c7f27", "pageName": "ai-Page" },
388
+ // // // "Android": { "pageId": "PAGb830f55d-077a-4d09-ae71-91fece6b0011", "pageName": "ai-Android-Page" },
389
+ // // // "iOS": { "pageId": "PAGcbb751fe-f056-4a09-a2ba-64c1092b5f89", "pageName": "ai-Ios-Page" } },
390
+ // // // "userName": "Rashmi",
391
+ // // // "isTerminate": false,
392
+ // // // "appiumPort": 4723,
393
+ // // // "realDeviceId": "",
394
+ // // // "browser": { "browserName": "Google Chrome" },
395
+ // // // "token": "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJIUlpZV2NoTURZWXVQaDF3TDkxb3drS3Q1OUtuNC1sOFRJcXF3a2RBV2pjIn0.eyJleHAiOjE3NzcwOTgzNjksImlhdCI6MTc3NzAxMTk2OSwianRpIjoib25ydHJvOjY3Nzc1YjNkLTBmY2YtNGZjNy1hNzkwLTExYjdjNjZjNWMyOSIsImlzcyI6Imh0dHA6Ly8xNDguNzIuMTY4LjE2OjMwMTA3L3JlYWxtcy9GaXJlRmxpbmstdGVzdDEiLCJhdWQiOiJ0YXJnZXQtY2xpZW50Iiwic3ViIjoiZjo4ODkyOWIwMC03M2I4LTQ3NGYtYmJiYy1kYjJlMWEzZTA3OTg6cmFzaG1pLnRAZmlyZWZsaW5rLmNvbSIsInR5cCI6IkJlYXJlciIsImF6cCI6ImZsaW5rLXNlcnZpY2UiLCJzaWQiOiJkNTdmMmQ2ZC01YTdkLTQzYTgtYmFjYS02ZGZjYjJkZDIwY2UiLCJhY3IiOiIxIiwiYWxsb3dlZC1vcmlnaW5zIjpbIiJdLCJyZWFsbV9hY2Nlc3MiOnsicm9sZXMiOlsib2ZmbGluZV9hY2Nlc3MiLCJ1bWFfYXV0aG9yaXphdGlvbiJdfSwic2NvcGUiOiJwcm9maWxlIGVtYWlsIiwiY3VycmVudExpY2Vuc2VJZCI6IkxJQzM5MTYiLCJlbWFpbF92ZXJpZmllZCI6ZmFsc2UsImN1cnJlbnRQcml2aWxlZ2UiOiJBZG1pbiIsImZ1bGxOYW1lIjoiUmFzaG1pIiwiYWN0aXZhdGlvblN0YXR1cyI6IkFDVElWRSIsInByaXZpbGVnZSI6IkFkbWluIiwibGljZW5zZU5hbWUiOiJGaXJlRmxpbmsgLSBMSUMzOTE2IiwicHJlZmVycmVkX3VzZXJuYW1lIjoiUmFzaG1pIiwidXNlck5hbWUiOiJyYXNobWkudEBmaXJlZmxpbmsuY29tIiwiYmlsbGluZ0N5Y2xlIjoiUXVhcnRlcmx5IiwiaWQiOiJVU1IyNjY5NiIsImxpY2Vuc2VJZCI6IkxJQzM5MTYiLCJlbWFpbCI6InJhc2htaS50QGZpcmVmbGluay5jb20ifQ.QEnF16mduzL6YdIXwDYfqIQeuO9B_eWh7pqwxnhec6MFYp2DB4aXyDQgCuwhZ2FfKxxHkwpbqNYYJSetHy2xAxB2T_OlGExiEw_quedfpZuRFJZoOjF8ZW9nQCmyTnu_AREQ35s5ca8crl_TeQ8gBfhMw3inccqn8lz-_4Hjb9RMAI75Rm0Z6JApb_-b__dEpsAf3RYXl00pPiOzO5DClf3bmVJACZKRXtpzTLKoVu0ZuNlESx06X9pvN3FL1K75TXRwtJfws6bJDBBnhyGF5U05X-C8vj9p4yP6roVdPIk0QITgWqv88of97OKyixW7nO-vLYE7CiNsxq4wBr4Lbw",
396
+ // // // "sessionPath": "C:\\Users\\User\\AppData\\Roaming\\fire-flink-client\\logs\\execution-logs",
397
+ // // // "version": "",
398
+ // // // "platform": "web",
399
+ // // // "platformVersion": "",
400
+ // // // "env": "test1",
401
+ // // // "serverHost": "https://performance.fireflink.com"
402
+ // // // }
403
+ // // // )
404
+ // // // userStory: [
405
+ // // // ["Open browser"],
406
+ // // // ["Navigate to https://shoppersstack.com"],
407
+ // // // ["Maximize browser"],
408
+ // // // ["Wait for 10 seconds"],
409
+ // // // ["Click on Login button"],
410
+ // // // ["Click on Create Account button"],
411
+ // // // ["Enter First Name", "John"],
412
+ // // // ["Enter Last Name", "Doe"],
413
+ // // // ["Select Gender", "Male"],
414
+ // // // ["Enter Phone Number", "9876543210"],
415
+ // // // ["Enter Email", "john.doe@test.com"],
416
+ // // // ["Enter Password", "Test@123"],
417
+ // // // ["Enter Confirm Password", "Test@123"],
418
+ // // // ["Click on i agree to Accept Terms and Conditions checkbox"],
419
+ // // // ["Click on Register"],
420
+ // // // ["Close browser"]
421
+ // // // ],
422
+ // // // userStory: [
423
+ // // // ["Open browser"],
424
+ // // // ["navigate to URL','https://shoppersstack.com"],
425
+ // // // ["Maximize the browser"],
426
+ // // // ["wait for 10 seconds"],
427
+ // // // ['click Login button'],
428
+ // // // ['enter text', 'Email text field', 'raju123456789@gmail.com'],
429
+ // // // ['enter password', 'password text field', 'Raju@12345'],
430
+ // // // ['click login button'],
431
+ // // // ["Close browser", "NA"]
432
+ // // // ],
433
+ // // // userStory: [['launch mobile app', 'com.app.abhibus', 'com.abhibus.mobile.ABMainActivity'], ["wait for 2 sec"], ["click on allow"],
434
+ // // // // ['Tap on Leaving from'],
435
+ // // // // ["Verify Leaving Is Disabled"],
436
+ // // // // ["Verify Battery Level is 100"],
437
+ // // // // ["Get Attribute text of Leaving from "],
438
+ // // // ["Get X Location of leaving form"],
439
+ // // // // ["Get Device current Location"],
440
+ // // // // ['Enter text in source field, bangalore'], ['Tap on item , Bangalore'],
441
+ // // // // ['Enter chennai in destination field'], ["wait for 2 sec"],
442
+ // // // // ['Tap on item , Chennai, tamil nadu'], ['Tap on calender'], ['Tap on text 18'],
443
+ // // // // ['Tap on Search Busses button'], ["wait for 5 sec"],
444
+ // // // // ['Tap on yolo bus'], ['Tap on seat no Du2'], ['Tap on proceed button'],
445
+ // // // // ['Tap on tin factory'], ['Tap on ashok pillar'], ['Tap on back button'], ['Enter 123@gmail.com in email address field'],
446
+ // // // // ['enter 9642952548 in mobile number field'], ['enter ramesh in full name field'], ['enter 24 in age field'], ['tap on male button'],
447
+ // // // // ['Tap on close button'], ['Tap on yes,i want full refund'], ['Tap on proceed button']
448
+ // // // ["close app"]
449
+ // // // ],
450
+ // // // userStory: [
451
+ // // // ["Open browser"],
452
+ // // // ["Navigate to http://49.249.28.218:8888/"],
453
+ // // // ["maxmize browser"],
454
+ // // // ["Enter username", "admin"],
455
+ // // // ["Enter password", "admin"],
456
+ // // // ["Click on login"],
457
+ // // // ["Click on leads"],
458
+ // // // ["Click on create lead icon"],
459
+ // // // ["Select option 'Mr'"],
460
+ // // // ["Enter first name", "harris"],
461
+ // // // ["Enter last name", "jhones"],
462
+ // // // ["Enter company", "star wenchers"],
463
+ // // // ["Enter input in Title", "Star"],
464
+ // // // ["Select lead source", "cold call"],
465
+ // // // ["Select industry", "banking"],
466
+ // // // ["Enter annual revenue", "250"],
467
+ // // // ["Enter no of employees", "100"],
468
+ // // // ["Enter secondary email", "harries@gmail.com"],
469
+ // // // ["Enter phone", "8907654321"],
470
+ // // // ["Enter mobile", "8907654320"],
471
+ // // // ["Enter fax", "Tara#123"],
472
+ // // // ["Enter email", "harris@gmail.com"],
473
+ // // // ["Enter website", "www.ascid.com"],
474
+ // // // ["Select lead status", "cold"],
475
+ // // // ["Select rating", "active"],
476
+ // // // ["Enter input in po box", "training box"],
477
+ // // // ["Enter city", "Banglore"],
478
+ // // // ["Enter state", "Karnataka"],
479
+ // // // ["Enter postal code", "570000"],
480
+ // // // ["Enter country", "India"],
481
+ // // // ["Enter input in street", "#123 basavanagudi banglore"],
482
+ // // // ["Enter description", "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris."],
483
+ // // // ["Click on save"],
484
+ // // // ["close browser"]
485
+ // // // ],
486
+ // // // userStory: [
487
+ // // // ["Open browser, Navigate to https://www.saucedemo.com/, Maximize the browser"],
488
+ // // // // ["Enter standard_user as Username, Enter secret_sauce as Password and Click on Login"],
489
+ // // // ["Enter standard_user , secret_sauce as Username and Password and click on Login"],
490
+ // // // ["Click on Add to cart of Sauce Labs Bike Light, Click on Shopping cart icon and Click on Checkout"],
491
+ // // // // ["Add Sauce Labs Bike Light to cart, Click on Shopping cart icon and Click Checkout"],
492
+ // // // ["Enter Jai in First Name field, Enter Akash in Last Name, Enter 560004 in Zip/Postal Code, Scroll until Continue button is displayed"],
493
+ // // // ["Click on Continue, Click on Finish, Click on Back Home"],
494
+ // // // ['close browser']
495
+ // // // ],
496
+ // // // userStory: [
497
+ // // // ["Open browser"],
498
+ // // // ["Navigate to https://www.saucedemo.com/"],
499
+ // // // ["Maximize the browser"],
500
+ // // // ["Enter Username", "standard_user"],
501
+ // // // ["Enter Password", "secret_sauce"],
502
+ // // // ["Click on Login"],
503
+ // // // ["Click on Add to cart of Sauce Labs Bike Light"],
504
+ // // // ["Click on Shopping cart icon"],
505
+ // // // ["Click on Checkout"],
506
+ // // // ["Enter First Name", "Jai"],
507
+ // // // ["Enter Last Name", "Akash"],
508
+ // // // ["Enter Zip/Postal Code", "560004"],
509
+ // // // ["Scroll until Continue button is displayed"],
510
+ // // // ["Wait for 2 seconds"],
511
+ // // // ["Click on Continue"],
512
+ // // // ["Click on Finish"],
513
+ // // // ["Click on Back Home"],
514
+ // // // ["Close browser"]
515
+ // // // ]
516
+ // // // userStory: [
517
+ // // // ["Open browser"],
518
+ // // // ["Navigate to https://testautomationpractice.blogspot.com/"],
519
+ // // // ["Maximize the browser"],
520
+ // // // ["Enter Name", "Santosh"],
521
+ // // // ["Enter Email", "santosh@gmail.com"],
522
+ // // // ["Enter Phone", "1234567890"],
523
+ // // // ["In Address enter name from previos step"],
524
+ // // // // ["Scroll untill drag and drop text is visible"],
525
+ // // // // ["Drag and drop 'drag me to my target' to 'Drop here'"],
526
+ // // // ["Wait for 3 second"],
527
+ // // // // ["Close browser"]
528
+ // // // ],
529
+ // // // userStory: [['Open browser', 'NA'],
530
+ // // // ['Maximize the browser', 'NA'],
531
+ // // // ['Navigate to https://shoppersstack.com'],
532
+ // // // ['Verify if https://shoppersstack.com/ is loaded', 'NA'],
533
+ // // // ['Wait for 10 seconds', 'NA'],
534
+ // // // ['Click on Login button', 'NA'],
535
+ // // // ['Enter a valid email address in the Email input field', 'poornaprathu8@gmail.com'],
536
+ // // // ['Enter a valid password in the Password input field', 'Poornacl$1'],
537
+ // // // ['Click on Login button', 'NA'],
538
+ // // // ['Click on the Men products link', 'NA'],
539
+ // // // ['Click on the ADD TO CART button for a CROCS footwear product', 'NA'],
540
+ // // // ['Click on the Cart icon', 'NA'],
541
+ // // // ['Verify the product details in the cart', 'NA'],
542
+ // // // ['Click on the Buy Now button', 'NA'],
543
+ // // // ['Close browser', 'NA']
544
+ // // // ]
545
+ // // // userStory: [['Open browser'],
546
+ // // // ['Maximize the browser'],
547
+ // // // ['Navigate to https://the-internet.herokuapp.com/javascript_alerts?utm_source=chatgpt.com'],
548
+ // // // ['Wait for 2 seconds'],
549
+ // // // ['Click on js alert'],
550
+ // // // ['Click on ok'],
551
+ // // // ['Wait for 5 seconds'],
552
+ // // // ['Close browser']
553
+ // // // ]
554
+ // // // userStory: [
555
+ // // // ["Open browser"],
556
+ // // // ["Navigate to https://www.google.com/"],
557
+ // // // ["Maximize the browser"],
558
+ // // // ["start iteration using 'Data1' Dataprovider"],
559
+ // // // ["enter 'level1' in search field"],
560
+ // // // ["enter Diwa in search field"],
561
+ // // // ["start iteration using 'Data1' Dataprovider"],
562
+ // // // ["enter 'level2' in search field"],
563
+ // // // ["enter Diwa in search field"],
564
+ // // // ["End iteration"],
565
+ // // // ["End iteration"],
566
+ // // // ["start iteration using 'Data2' Dataprovider"],
567
+ // // // ["enter 'startIteration1' in search field"],
568
+ // // // ["enter Diwa in search field"],
569
+ // // // ["End iteration"],
570
+ // // // ["click on Gmail link"],
571
+ // // // ["Close browser"],
572
+ // // // ]
573
+ // // // userStory: [['launch mobile app', 'com.app.abhibus', 'com.abhibus.mobile.ABMainActivity'], ["click on allow"],
574
+ // // // ['Tap on Leaving from'], ['Enter text in source field, bangalore'], ['Tap on item , Bangalore'],
575
+ // // // ['Enter chennai in destination field'], ["wait for 2 sec"],
576
+ // // // ['Tap on item , Chennai, tamil nadu'], ['Tap on calender'], ['Tap on text 18'],
577
+ // // // ['Tap on Search Busses button'], ["wait for 5 sec"],
578
+ // // // ['Tap on yolo bus'], ['Tap on seat no Du2'], ['Tap on proceed button'],
579
+ // // // ['Tap on tin factory'], ['Tap on ashok pillar'], ['Tap on back button'], ['Enter 123@gmail.com in email address field'],
580
+ // // // ['enter 9642952548 in mobile number field'], ['enter ramesh in full name field'], ['enter 24 in age field'], ['tap on male button'],
581
+ // // // ['Tap on close button'], ['Tap on yes,i want full refund'], ['Tap on proceed button']],
582
+ // // // userStory: [
583
+ // // // ["Open browser"],
584
+ // // // ["Navigate to https://www.saucedemo.com/"],
585
+ // // // // ["verify navigated url is 'https://www.saucedemo.com/' "],
586
+ // // // ["Maximize the browser"],
587
+ // // // // ["enter input in phone number field, 7993710733"],
588
+ // // // // ["verify Username is dispayed"],
589
+ // // // // ["get hight of username"],
590
+ // // // // ["Wait for 10 sec and enter standard_user in username "],
591
+ // // // ["Enter Username", "standard_user"],
592
+ // // // ["Enter Password", "secret_sauce"],
593
+ // // // ["Click on Login"],
594
+ // // // ["scroll Vertically Till Sauce Labs Onesie Is Visible"]
595
+ // // // // ["Close browser"]
596
+ // // // ],
597
+ // // // userStory: [
598
+ // // // ["Open browser"],
599
+ // // // ["Navigate to Url https://parabank.parasoft.com/parabank/index.htm"],
600
+ // // // ["Maximize browser"],
601
+ // // // ["Click on register"],
602
+ // // // ["Enter First name", "harry"],
603
+ // // // ["Enter Last name", "potter"],
604
+ // // // ["Enter Address", "basvangudi 1st main cross Banglore"],
605
+ // // // ["Enter City", "Banglore"],
606
+ // // // ["Enter State", "karnataka"],
607
+ // // // ["Enter Zip code", "571124"],
608
+ // // // ["Enter Phone", "9045773662"],
609
+ // // // ["Enter SSN", "4576"],
610
+ // // // ["Enter input in Username below SSN", "harry"],
611
+ // // // ["Enter input in Password above Confirm", "Harry@123"],
612
+ // // // ["Enter input in Confirm", "Harry@123"],
613
+ // // // ["Click on register button"],
614
+ // // // ["Close browser"]
615
+ // // // ],
616
+ // // import { remote, Browser } from "webdriverio";
617
+ // // async function waitForInput(): Promise<string> {
618
+ // // return new Promise<string>((resolve) => {
619
+ // // process.stdin.once("data", (data) => {
620
+ // // resolve(data.toString().trim());
621
+ // // });
622
+ // // });
623
+ // // }
624
+ // // async function main() {
625
+ // // const browser: Browser = await remote({
626
+ // // hostname: "127.0.0.1",
627
+ // // port: 4444,
628
+ // // path: "/",
629
+ // // capabilities: {
630
+ // // browserName: "chrome",
631
+ // // "goog:chromeOptions": {
632
+ // // args: [
633
+ // // "--start-maximized",
634
+ // // "--disable-web-security",
635
+ // // "--disable-features=BlockInsecurePrivateNetworkRequests"
636
+ // // ]
637
+ // // }
638
+ // // }
639
+ // // });
640
+ // // console.log("\n========================================");
641
+ // // console.log("Browser opened.");
642
+ // // console.log("========================================");
643
+ // // console.log("Please login and navigate to the page manually.");
644
+ // // console.log("Reach the exact page where the scroll issue occurs.");
645
+ // // console.log("Then press ENTER here.");
646
+ // // await waitForInput();
647
+ // // const xpath =
648
+ // // "/html/body/one-root/one-main/mat-sidenav-container/mat-sidenav-content/div/one-policy-entry/one-search-backtitle/div/form/div[4]/mat-form-field/div[1]/div[2]/div/input";
649
+ // // while (true) {
650
+ // // console.log("\n----------------------------------------");
651
+ // // console.log("Finding element...");
652
+ // // console.log("----------------------------------------");
653
+ // // const element = await browser.$(xpath);
654
+ // // await element.waitForDisplayed({
655
+ // // timeout: 10000
656
+ // // });
657
+ // // console.log("Element found.");
658
+ // // console.log("\nRunning:");
659
+ // // console.log("block: center");
660
+ // // console.log("inline: center");
661
+ // // console.log("No click");
662
+ // // console.log("No focus");
663
+ // // console.log("No enter");
664
+ // // const before = await browser.execute(() => {
665
+ // // return {
666
+ // // devicePixelRatio: window.devicePixelRatio,
667
+ // // innerWidth: window.innerWidth,
668
+ // // innerHeight: window.innerHeight,
669
+ // // outerWidth: window.outerWidth,
670
+ // // outerHeight: window.outerHeight,
671
+ // // visualViewportScale: window.visualViewport
672
+ // // ? window.visualViewport.scale
673
+ // // : null,
674
+ // // scrollX: window.scrollX,
675
+ // // scrollY: window.scrollY,
676
+ // // documentWidth: document.documentElement.scrollWidth,
677
+ // // documentHeight: document.documentElement.scrollHeight
678
+ // // };
679
+ // // });
680
+ // // console.log("\n========== BEFORE SCROLL ==========");
681
+ // // console.log(before);
682
+ // // // TEST: CENTER + CENTER
683
+ // // await browser.execute((el) => {
684
+ // // el.scrollIntoView({
685
+ // // // behavior: "instant",
686
+ // // block: "center",
687
+ // // inline: "nearest"
688
+ // // });
689
+ // // }, element);
690
+ // // const after = await browser.execute(() => {
691
+ // // return {
692
+ // // devicePixelRatio: window.devicePixelRatio,
693
+ // // innerWidth: window.innerWidth,
694
+ // // innerHeight: window.innerHeight,
695
+ // // outerWidth: window.outerWidth,
696
+ // // outerHeight: window.outerHeight,
697
+ // // visualViewportScale: window.visualViewport
698
+ // // ? window.visualViewport.scale
699
+ // // : null,
700
+ // // scrollX: window.scrollX,
701
+ // // scrollY: window.scrollY,
702
+ // // documentWidth: document.documentElement.scrollWidth,
703
+ // // documentHeight: document.documentElement.scrollHeight
704
+ // // };
705
+ // // });
706
+ // // console.log("\n========== AFTER SCROLL ==========");
707
+ // // console.log(after);
708
+ // // console.log("\nScroll completed.");
709
+ // // console.log(">>> CHECK THE BROWSER UI NOW <<<");
710
+ // // console.log("\nPress ENTER to run the same test again.");
711
+ // // console.log("Press Q + ENTER to close the browser.");
712
+ // // const input = await waitForInput();
713
+ // // if (input.toLowerCase() === "q") {
714
+ // // break;
715
+ // // }
716
+ // // }
717
+ // // console.log("\nClosing browser...");
718
+ // // await browser.deleteSession();
719
+ // // console.log("Browser closed.");
720
+ // // }
721
+ // // main().catch(async (error) => {
722
+ // // console.error("Error:", error);
723
+ // // process.exit(1);
724
+ // // });
725
+ // // import { createOpenAI } from "@ai-sdk/openai";
726
+ // // import { generateText } from "ai";
727
+ // // import { readFile } from "fs/promises";
728
+ // // import path from "path";
729
+ // // // ============================================================
730
+ // // // OPENAI CONFIGURATION
731
+ // // // ============================================================
732
+ // // const API_KEY = "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";
733
+ // // if (!API_KEY) {
734
+ // // throw new Error(
735
+ // // "OPENAI_API_KEY is not set.\n" +
736
+ // // "Please set your OpenAI API key before running this test."
737
+ // // );
738
+ // // }
739
+ // // const openai = createOpenAI({
740
+ // // apiKey: API_KEY,
741
+ // // });
742
+ // // // ============================================================
743
+ // // // TEST INPUT
744
+ // // // ============================================================
745
+ // // // Put the exact Step/context you want to test here.
746
+ // // //
747
+ // // // Example:
748
+ // // // "Click on the Login button"
749
+ // // //
750
+ // // // Both GPT-4.1 and GPT-5.4-mini will receive EXACTLY the same
751
+ // // // value.
752
+ // // const PRIOR_AND_NEXT_STEPS = `
753
+ // // Click on the Login button
754
+ // // `.trim();
755
+ // // // ============================================================
756
+ // // // ANNOTATED SCREENSHOT
757
+ // // // ============================================================
758
+ // // //
759
+ // // // Keep your annotated screenshot in the same directory:
760
+ // // //
761
+ // // // test-vision-models.ts
762
+ // // // annotated-screenshot.png
763
+ // // //
764
+ // // // If your screenshot has another name, change it here.
765
+ // // //
766
+ // // const IMAGE_PATH = path.resolve(
767
+ // // process.cwd(),
768
+ // // "annotated-screenshot.png"
769
+ // // );
770
+ // // // ============================================================
771
+ // // // EXACT VISION PROMPT FROM visionPrompt.ts
772
+ // // // ============================================================
773
+ // // function getVisionPrompt(
774
+ // // priorAndNextSteps: string
775
+ // // ): string {
776
+ // // const customPromptText = `
777
+ // // You are a precise automation assistant.
778
+ // // Context: ${priorAndNextSteps}
779
+ // // - **Do not provide any additional text or explanation. The output must be strictly in this formate only Fire-Flink-x.**
780
+ // // - Use the context to understand the step and select the closest semantic match to Step and return only its index, else Fire-Flink-0.
781
+ // // - Select the Fire-Flink-X that best matches the step , understand the step, and return the target element's index.
782
+ // // - **If u can't find the element and also If there is no element with number, return Fire-Flink-0. dont return any other elements index.**
783
+ // // - Using the provided annotated screenshot and Step, identify the correct element index from the image.
784
+ // // - Match the index to the text or action described in Step as accurately as possible.
785
+ // // - Allow partial and case-insensitive matching. If a clear match exists, return its index.
786
+ // // - If the Chosen element has more than one index has been provided for it, return the index that smaller in number.
787
+ // // - Return only the Fire-Flink-x for the target element.
788
+ // // - **Never return Fire-Flink-1 only return Fire-Flink-0.**
789
+ // // - Return ONLY a valid JSON object; the response must start with '{' and end with '}', with no markdown, code fences, explanations, or extra text.
790
+ // // Respond only with JSON using this format:
791
+ // // {"fireflinkIndex": "Fire-Flink-x" | "Fire-Flink-0"}
792
+ // // `.trim();
793
+ // // return customPromptText;
794
+ // // }
795
+ // // // ============================================================
796
+ // // // LOAD ANNOTATED SCREENSHOT
797
+ // // // ============================================================
798
+ // // async function loadScreenshot(): Promise<string> {
799
+ // // console.log("\nLoading screenshot:");
800
+ // // console.log(IMAGE_PATH);
801
+ // // const imageBuffer = await readFile(
802
+ // // " C:\Users\User\Downloads\Ios_nlps\automationv2.0\session\screenshots\annotated_primary.png"
803
+ // // );
804
+ // // const base64Image =
805
+ // // imageBuffer.toString("base64");
806
+ // // return `data:image/png;base64,${base64Image}`;
807
+ // // }
808
+ // // // ============================================================
809
+ // // // RUN MODEL
810
+ // // // ============================================================
811
+ // // async function testModel(
812
+ // // modelName: string,
813
+ // // imageDataUrl: string,
814
+ // // systemPrompt: string
815
+ // // ) {
816
+ // // console.log("\n");
817
+ // // console.log("======================================================");
818
+ // // console.log(`MODEL: ${modelName}`);
819
+ // // console.log("======================================================");
820
+ // // const startTime = Date.now();
821
+ // // try {
822
+ // // const response = await generateText({
823
+ // // // ------------------------------------------------
824
+ // // // MODEL
825
+ // // // ------------------------------------------------
826
+ // // model: openai(modelName),
827
+ // // // ------------------------------------------------
828
+ // // // SAME SYSTEM PROMPT
829
+ // // // ------------------------------------------------
830
+ // // system: systemPrompt,
831
+ // // // ------------------------------------------------
832
+ // // // SAME ANNOTATED IMAGE + SAME USER INPUT
833
+ // // // ------------------------------------------------
834
+ // // messages: [
835
+ // // {
836
+ // // role: "user",
837
+ // // content: [
838
+ // // {
839
+ // // type: "text",
840
+ // // text: `Step:
841
+ // // ${PRIOR_AND_NEXT_STEPS}
842
+ // // Using the provided annotated screenshot, identify the correct Fire-Flink element index for this Step.`,
843
+ // // },
844
+ // // {
845
+ // // type: "image",
846
+ // // image: imageDataUrl,
847
+ // // },
848
+ // // ],
849
+ // // },
850
+ // // ],
851
+ // // });
852
+ // // const endTime = Date.now();
853
+ // // const latency =
854
+ // // endTime - startTime;
855
+ // // // ====================================================
856
+ // // // RESPONSE
857
+ // // // ====================================================
858
+ // // console.log("\n---------------- RESPONSE ----------------");
859
+ // // console.log(
860
+ // // response.text
861
+ // // );
862
+ // // // ====================================================
863
+ // // // TOKEN USAGE
864
+ // // // ====================================================
865
+ // // console.log("\n---------------- TOKEN USAGE ----------------");
866
+ // // console.log(
867
+ // // "Input tokens:",
868
+ // // response.usage?.inputTokens ?? "N/A"
869
+ // // );
870
+ // // console.log(
871
+ // // "Output tokens:",
872
+ // // response.usage?.outputTokens ?? "N/A"
873
+ // // );
874
+ // // console.log(
875
+ // // "Total tokens:",
876
+ // // response.usage?.totalTokens ?? "N/A"
877
+ // // );
878
+ // // // Depending on the Vercel AI SDK/provider version,
879
+ // // // reasoning tokens may be exposed separately.
880
+ // // console.log(
881
+ // // "Reasoning tokens:",
882
+ // // (response.usage as any)?.reasoningTokens ?? "N/A"
883
+ // // );
884
+ // // // ====================================================
885
+ // // // LATENCY
886
+ // // // ====================================================
887
+ // // console.log("\n---------------- PERFORMANCE ----------------");
888
+ // // console.log(
889
+ // // "Latency:",
890
+ // // `${latency} ms`
891
+ // // );
892
+ // // return {
893
+ // // model: modelName,
894
+ // // success: true,
895
+ // // response: response.text,
896
+ // // inputTokens:
897
+ // // response.usage?.inputTokens ?? null,
898
+ // // outputTokens:
899
+ // // response.usage?.outputTokens ?? null,
900
+ // // totalTokens:
901
+ // // response.usage?.totalTokens ?? null,
902
+ // // reasoningTokens:
903
+ // // (response.usage as any)?.reasoningTokens ?? null,
904
+ // // latency,
905
+ // // };
906
+ // // } catch (error: any) {
907
+ // // const endTime = Date.now();
908
+ // // console.log("\n---------------- ERROR ----------------");
909
+ // // console.error(
910
+ // // `❌ ${modelName} failed`
911
+ // // );
912
+ // // console.error(
913
+ // // error?.message ?? error
914
+ // // );
915
+ // // if (error?.status) {
916
+ // // console.error(
917
+ // // "HTTP status:",
918
+ // // error.status
919
+ // // );
920
+ // // }
921
+ // // return {
922
+ // // model: modelName,
923
+ // // success: false,
924
+ // // response: null,
925
+ // // error:
926
+ // // error?.message ??
927
+ // // String(error),
928
+ // // latency:
929
+ // // endTime - startTime,
930
+ // // };
931
+ // // }
932
+ // // }
933
+ // // // ============================================================
934
+ // // // MAIN
935
+ // // // ============================================================
936
+ // // async function main() {
937
+ // // console.log("\n");
938
+ // // console.log("======================================================");
939
+ // // console.log(" FIREFLINK VISION MODEL COMPARISON");
940
+ // // console.log("======================================================");
941
+ // // console.log("\nStep / Context:");
942
+ // // console.log(PRIOR_AND_NEXT_STEPS);
943
+ // // // --------------------------------------------------------
944
+ // // // Build EXACT SAME prompt for both models
945
+ // // // --------------------------------------------------------
946
+ // // const systemPrompt =
947
+ // // getVisionPrompt(
948
+ // // PRIOR_AND_NEXT_STEPS
949
+ // // );
950
+ // // // --------------------------------------------------------
951
+ // // // Load EXACT SAME screenshot
952
+ // // // --------------------------------------------------------
953
+ // // const imageDataUrl =
954
+ // // await loadScreenshot();
955
+ // // console.log(
956
+ // // "\n✅ Annotated screenshot loaded successfully."
957
+ // // );
958
+ // // // ========================================================
959
+ // // // TEST GPT-4.1
960
+ // // // ========================================================
961
+ // // const gpt41 =
962
+ // // await testModel(
963
+ // // "gpt-4.1",
964
+ // // imageDataUrl,
965
+ // // systemPrompt
966
+ // // );
967
+ // // // ========================================================
968
+ // // // TEST GPT-5.4 MINI
969
+ // // // ========================================================
970
+ // // const gpt54Mini =
971
+ // // await testModel(
972
+ // // "gpt-5.4-mini",
973
+ // // imageDataUrl,
974
+ // // systemPrompt
975
+ // // );
976
+ // // // ========================================================
977
+ // // // FINAL COMPARISON
978
+ // // // ========================================================
979
+ // // console.log("\n\n");
980
+ // // console.log("======================================================");
981
+ // // console.log(" FINAL COMPARISON");
982
+ // // console.log("======================================================");
983
+ // // // --------------------------------------------------------
984
+ // // // GPT-4.1
985
+ // // // --------------------------------------------------------
986
+ // // console.log("\n================ GPT-4.1 =================");
987
+ // // console.log(
988
+ // // "Response:",
989
+ // // gpt41.response ?? gpt41.error ?? "N/A"
990
+ // // );
991
+ // // console.log(
992
+ // // "Input tokens:",
993
+ // // gpt41.inputTokens ?? "N/A"
994
+ // // );
995
+ // // console.log(
996
+ // // "Output tokens:",
997
+ // // gpt41.outputTokens ?? "N/A"
998
+ // // );
999
+ // // console.log(
1000
+ // // "Total tokens:",
1001
+ // // gpt41.totalTokens ?? "N/A"
1002
+ // // );
1003
+ // // console.log(
1004
+ // // "Reasoning tokens:",
1005
+ // // gpt41.reasoningTokens ?? "N/A"
1006
+ // // );
1007
+ // // console.log(
1008
+ // // "Latency:",
1009
+ // // gpt41.latency != null
1010
+ // // ? `${gpt41.latency} ms`
1011
+ // // : "N/A"
1012
+ // // );
1013
+ // // // --------------------------------------------------------
1014
+ // // // GPT-5.4 MINI
1015
+ // // // --------------------------------------------------------
1016
+ // // console.log("\n=============== GPT-5.4-mini ===============");
1017
+ // // console.log(
1018
+ // // "Response:",
1019
+ // // gpt54Mini.response ??
1020
+ // // gpt54Mini.error ??
1021
+ // // "N/A"
1022
+ // // );
1023
+ // // console.log(
1024
+ // // "Input tokens:",
1025
+ // // gpt54Mini.inputTokens ?? "N/A"
1026
+ // // );
1027
+ // // console.log(
1028
+ // // "Output tokens:",
1029
+ // // gpt54Mini.outputTokens ?? "N/A"
1030
+ // // );
1031
+ // // console.log(
1032
+ // // "Total tokens:",
1033
+ // // gpt54Mini.totalTokens ?? "N/A"
1034
+ // // );
1035
+ // // console.log(
1036
+ // // "Reasoning tokens:",
1037
+ // // gpt54Mini.reasoningTokens ?? "N/A"
1038
+ // // );
1039
+ // // console.log(
1040
+ // // "Latency:",
1041
+ // // gpt54Mini.latency != null
1042
+ // // ? `${gpt54Mini.latency} ms`
1043
+ // // : "N/A"
1044
+ // // );
1045
+ // // // ========================================================
1046
+ // // // TOKEN COMPARISON
1047
+ // // // ========================================================
1048
+ // // if (
1049
+ // // gpt41.totalTokens != null &&
1050
+ // // gpt54Mini.totalTokens != null
1051
+ // // ) {
1052
+ // // const difference =
1053
+ // // gpt54Mini.totalTokens -
1054
+ // // gpt41.totalTokens;
1055
+ // // console.log("\n");
1056
+ // // console.log(
1057
+ // // "Token difference (5.4-mini - 4.1):",
1058
+ // // difference
1059
+ // // );
1060
+ // // }
1061
+ // // // ========================================================
1062
+ // // // LATENCY COMPARISON
1063
+ // // // ========================================================
1064
+ // // if (
1065
+ // // gpt41.latency != null &&
1066
+ // // gpt54Mini.latency != null
1067
+ // // ) {
1068
+ // // const difference =
1069
+ // // gpt54Mini.latency -
1070
+ // // gpt41.latency;
1071
+ // // console.log(
1072
+ // // "Latency difference (5.4-mini - 4.1):",
1073
+ // // `${difference} ms`
1074
+ // // );
1075
+ // // }
1076
+ // // // ========================================================
1077
+ // // // SIMPLE RESULT CHECK
1078
+ // // // ========================================================
1079
+ // // console.log("\n");
1080
+ // // console.log("======================================================");
1081
+ // // console.log(" SUMMARY");
1082
+ // // console.log("======================================================");
1083
+ // // console.log(
1084
+ // // "\nGPT-4.1 result:"
1085
+ // // );
1086
+ // // console.log(
1087
+ // // gpt41.response ?? "FAILED"
1088
+ // // );
1089
+ // // console.log(
1090
+ // // "\nGPT-5.4-mini result:"
1091
+ // // );
1092
+ // // console.log(
1093
+ // // gpt54Mini.response ?? "FAILED"
1094
+ // // );
1095
+ // // console.log("\n");
1096
+ // // console.log(
1097
+ // // "Compare the Fire-Flink-X returned by both models."
1098
+ // // );
1099
+ // // console.log(
1100
+ // // "If both return the same correct element, compare"
1101
+ // // );
1102
+ // // console.log(
1103
+ // // "tokens + latency to determine the better model."
1104
+ // // );
1105
+ // // console.log("\n======================================================");
1106
+ // // console.log(" TEST COMPLETE");
1107
+ // // console.log("======================================================");
1108
+ // // }
1109
+ // // // ============================================================
1110
+ // // // START
1111
+ // // // ============================================================
1112
+ // // main().catch(
1113
+ // // (error) => {
1114
+ // // console.error(
1115
+ // // "\n❌ Fatal error:"
1116
+ // // );
1117
+ // // console.error(error);
1118
+ // // process.exit(1);
1119
+ // // }
1120
+ // // );