ff-automationv2 2.2.35 → 2.2.36-beta.2

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 (68) hide show
  1. package/dist/ai/llmcalls/llmAction.js +6 -5
  2. package/dist/ai/llmprompts/llmPromptTypes/systemPromptTypes.d.ts +3 -0
  3. package/dist/ai/llmprompts/promptRegistry.js +4 -0
  4. package/dist/ai/llmprompts/systemPrompts/actionExtractorPrompt.js +133 -133
  5. package/dist/ai/llmprompts/systemPrompts/arithmeticPrompt.js +40 -40
  6. package/dist/ai/llmprompts/systemPrompts/fileVerifyActionExtractorPrompt.js +36 -36
  7. package/dist/ai/llmprompts/systemPrompts/fireflinkElementIndexExtractor_Mob.js +4 -4
  8. package/dist/ai/llmprompts/systemPrompts/getActionExtractorPrompt.js +51 -51
  9. package/dist/ai/llmprompts/systemPrompts/inputContextPrompt.js +49 -49
  10. package/dist/ai/llmprompts/systemPrompts/mobileKeywordExtractor.js +86 -86
  11. package/dist/ai/llmprompts/systemPrompts/multichannelKeywordExtractor.js +47 -47
  12. package/dist/ai/llmprompts/systemPrompts/otpExtractorPrompt.js +16 -16
  13. package/dist/ai/llmprompts/systemPrompts/sliderSwipeVisionPrompt.d.ts +2 -0
  14. package/dist/ai/llmprompts/systemPrompts/sliderSwipeVisionPrompt.js +54 -0
  15. package/dist/ai/llmprompts/systemPrompts/verifyActionExtractorPromptMob.js +43 -43
  16. package/dist/ai/llmprompts/userPrompts/userPrompt.js +21 -0
  17. package/dist/automation/actions/executor.d.ts +1 -0
  18. package/dist/automation/actions/executor.js +23 -0
  19. package/dist/automation/actions/interaction/swipe/slider_Swipe.d.ts +2 -0
  20. package/dist/automation/actions/interaction/swipe/slider_Swipe.js +129 -0
  21. package/dist/automation/actions/interface/FireFlinkResponseSchema.d.ts +6 -0
  22. package/dist/automation/actions/interface/FireFlinkResponseSchema.js +8 -1
  23. package/dist/automation/actions/interface/swipeActionInterface.d.ts +15 -0
  24. package/dist/core/helpers/mobileSwipeHelper.d.ts +3 -0
  25. package/dist/core/helpers/mobileSwipeHelper.js +78 -0
  26. package/dist/core/helpers/visionFallbackHandler.js +5 -3
  27. package/dist/core/interfaces/actionInterface.d.ts +1 -0
  28. package/dist/core/interfaces/mobileSwipeSliderInterface.d.ts +25 -0
  29. package/dist/core/interfaces/mobileSwipeSliderInterface.js +2 -0
  30. package/dist/core/interfaces/promptInterface.d.ts +4 -0
  31. package/dist/core/main/actionHandlerFactory.js +2 -2
  32. package/dist/core/main/runAutomationScript.js +44 -1
  33. package/dist/core/types/promptType.d.ts +1 -0
  34. package/dist/core/types/promptType.js +1 -0
  35. package/dist/domAnalysis/searchBest.js +0 -1
  36. package/dist/utils/DomExtraction/jsForAttributeInjection.js +232 -232
  37. package/dist/utils/helpers/xpathcreation.js +18 -2
  38. package/package.json +91 -91
  39. package/dist/tests/Framework.d.ts +0 -0
  40. package/dist/tests/Framework.js +0 -62
  41. package/dist/tests/itertaion.d.ts +0 -1
  42. package/dist/tests/itertaion.js +0 -43
  43. package/dist/tests/multiBrowser.d.ts +0 -1
  44. package/dist/tests/multiBrowser.js +0 -34
  45. package/dist/tests/poc.d.ts +0 -0
  46. package/dist/tests/poc.js +0 -212
  47. package/dist/tests/senario.d.ts +0 -0
  48. package/dist/tests/senario.js +0 -1120
  49. package/dist/tests/start_iteration_suggestion.d.ts +0 -6
  50. package/dist/tests/start_iteration_suggestion.js +0 -46
  51. package/dist/tests/test.d.ts +0 -1
  52. package/dist/tests/test.js +0 -26
  53. package/dist/tests/test1.d.ts +0 -1
  54. package/dist/tests/test1.js +0 -30
  55. package/dist/tests/test12.d.ts +0 -1
  56. package/dist/tests/test12.js +0 -35
  57. package/dist/tests/test254.d.ts +0 -0
  58. package/dist/tests/test254.js +0 -87
  59. package/dist/tests/test3.d.ts +0 -1
  60. package/dist/tests/test3.js +0 -27
  61. package/dist/tests/testkaf.d.ts +0 -0
  62. package/dist/tests/testkaf.js +0 -52
  63. package/dist/tests/tests.data.d.ts +0 -1
  64. package/dist/tests/tests.data.js +0 -8
  65. package/dist/tests/testss.d.ts +0 -1
  66. package/dist/tests/testss.js +0 -23
  67. package/dist/tests/testwe.d.ts +0 -1
  68. package/dist/tests/testwe.js +0 -24
@@ -1,6 +0,0 @@
1
- declare function findMaxNonNestedPatterns<T>(arr: T[]): {
2
- pattern: T[];
3
- count: number;
4
- startIndexes: number[];
5
- }[];
6
- declare const arr: number[];
@@ -1,46 +0,0 @@
1
- "use strict";
2
- function findMaxNonNestedPatterns(arr) {
3
- const results = [];
4
- let i = 0;
5
- while (i < arr.length) {
6
- let best = null;
7
- for (let size = 1; size <= Math.floor((arr.length - i) / 2); size++) {
8
- const pattern = arr.slice(i, i + size);
9
- let j = i;
10
- let count = 0;
11
- const indexes = [];
12
- while (j + size <= arr.length) {
13
- let match = true;
14
- for (let k = 0; k < size; k++) {
15
- if (arr[j + k] !== pattern[k]) {
16
- match = false;
17
- break;
18
- }
19
- }
20
- if (!match)
21
- break;
22
- indexes.push(j);
23
- count++;
24
- j += size;
25
- }
26
- if (count > 1) {
27
- // 🔥 Keep ONLY longest pattern (removes nested duplicates)
28
- if (!best || pattern.length > best.pattern.length) {
29
- best = { pattern, count, startIndexes: indexes };
30
- }
31
- }
32
- }
33
- if (best) {
34
- results.push(best);
35
- // 🔥 Skip entire block (avoid re-detection)
36
- const last = best.startIndexes[best.startIndexes.length - 1];
37
- i = last + best.pattern.length;
38
- }
39
- else {
40
- i++;
41
- }
42
- }
43
- return results;
44
- }
45
- const arr = [1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 1, 2, 1, 2, 1, 2, 1, 2];
46
- console.log(findMaxNonNestedPatterns(arr));
@@ -1 +0,0 @@
1
- export {};
@@ -1,26 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- // import Groq from "groq-sdk";
7
- const openai_1 = __importDefault(require("openai"));
8
- async function runChat() {
9
- const groq = new openai_1.default({
10
- baseURL: "https://api.groq.com/openai/v1",
11
- apiKey: "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", // recommended instead of hardcoding
12
- });
13
- const chatCompletion = await groq.chat.completions.create({
14
- messages: [
15
- {
16
- role: "user",
17
- content: "hi",
18
- },
19
- ],
20
- model: "llama-3.1-8b-instant",
21
- });
22
- console.log(JSON.stringify(chatCompletion));
23
- }
24
- runChat().catch((err) => {
25
- console.error("Error running chat completion:", err);
26
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,30 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const openai_1 = __importDefault(require("openai"));
7
- const endpoint = "ai4automation";
8
- const deploymentName = "gpt-4.1-mini";
9
- const client = new openai_1.default({
10
- apiKey: "DCcGR0NEoopbPaszZ93cj0v14hVcPqSY3dkuwtOXMA2XxtiCWBqwJQQJ99CDACYeBjFXJ3w3AAABACOGrIjB", // use env variable
11
- baseURL: `https://${endpoint}.openai.azure.com/openai/v1/`,
12
- });
13
- async function run() {
14
- try {
15
- const completion = await client.chat.completions.create({
16
- model: deploymentName,
17
- messages: [
18
- {
19
- role: "user",
20
- content: "What is the capital of France?",
21
- },
22
- ],
23
- });
24
- console.log(completion.choices[0].message.content);
25
- }
26
- catch (err) {
27
- console.error("Error:", err.message);
28
- }
29
- }
30
- run();
@@ -1 +0,0 @@
1
- export {};
@@ -1,35 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- // import { verify } from "node:crypto";
7
- const index_js_1 = require("../index.js");
8
- const path_1 = __importDefault(require("path"));
9
- const fs_1 = __importDefault(require("fs"));
10
- const certPath = path_1.default.join("D:", "Bitbucket", "ai-chat-backend", "Certificates", "V3keystore.jks");
11
- const ssl = {
12
- ca: [fs_1.default.readFileSync(certPath, "utf-8")],
13
- rejectUnauthorized: false,
14
- };
15
- const runner = new index_js_1.AutomationRunner();
16
- runner.run({
17
- hasMoreSteps: false,
18
- userStory: [
19
- ["Launch the browser"],
20
- ["navigate to url https://www.indiamart.com"],
21
- ["wait for 20 seconds"],
22
- ["get otp from INDMRT message within 60 seconds and wait for 60 seconds"],
23
- ["Enter OTP into enter otp boxes"],
24
- ["wait for 10 seconds"],
25
- ["Close the browser"]
26
- ],
27
- scenario: false,
28
- sslConfig: ssl,
29
- scriptType: "android",
30
- broker: ["test3.fireflink.com:9092"], "scriptName": "script", "type": "Web & Mobile", "projectId": "PJT1006", "testCaseId": "SCR1806", kafkaMessageKey: 'lohit',
31
- "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": "android", "platformVersion": "", "env": "test1",
32
- "serverHost": "https://sg-app.fireflink.com", "adbPath": "C:\\FireFlinkClient\\resources\\bin\\win\\android-sdk\\platform-tools\\adb.exe",
33
- topic: "test-topic",
34
- aiExecutionAction: ""
35
- });
File without changes
@@ -1,87 +0,0 @@
1
- "use strict";
2
- // import { remote } from 'webdriverio'
3
- // import { encode } from '@toon-format/toon'
4
- // import * as cheerio from 'cheerio'
5
- // import fs from 'fs'
6
- // import { Tokenizer } from "@huggingface/tokenizers"
7
- // import { encoding_for_model } from "@dqbd/tiktoken"
8
- // // 🧠 Define proper type (fixes "never" error)
9
- // type NodeType = {
10
- // tag?: string
11
- // attrs?: Record<string, string>
12
- // children?: NodeType[]
13
- // text?: string
14
- // }
15
- // // 🔄 HTML → JSON
16
- // function htmlToJson(html: string): NodeType | null {
17
- // const $ = cheerio.load(html)
18
- // // 🧹 remove useless elements
19
- // $('script, style, noscript, iframe').remove()
20
- // function parseElement(elem: any, depth = 0): NodeType | null {
21
- // if (!elem || depth > 6) return null
22
- // const node: NodeType = {
23
- // tag: elem.name,
24
- // attrs: elem.attribs || {},
25
- // children: [] as NodeType[] // ✅ FIX
26
- // }
27
- // for (const child of elem.children || []) {
28
- // if (child.type === 'text') {
29
- // const text = child.data.trim()
30
- // if (text) {
31
- // node.children!.push({ text })
32
- // }
33
- // } else if (child.type === 'tag') {
34
- // const parsed = parseElement(child, depth + 1)
35
- // if (parsed) {
36
- // node.children!.push(parsed)
37
- // }
38
- // }
39
- // }
40
- // return node
41
- // }
42
- // return parseElement($('body')[0])
43
- // }
44
- // // 🚀 Main runner
45
- // async function run() {
46
- // const browser = await remote({
47
- // capabilities: {
48
- // browserName: 'chrome'
49
- // }
50
- // })
51
- // try {
52
- // // 🌐 Open Amazon
53
- // await browser.url('https://www.amzon.in/')
54
- // // ⏳ wait for search box
55
- // const searchBox = await browser.$('#twotabsearchtextbox')
56
- // await searchBox.waitForDisplayed({ timeout: 10000 })
57
- // // 📄 Get HTML
58
- // const html = await browser.getPageSource()
59
- // // 🔄 Convert HTML → JSON
60
- // const json = htmlToJson(html)
61
- // // 🔄 JSON → TOON
62
- // const start = performance.now()
63
- // const encoded = encode({ data: json })
64
- // const end = performance.now()
65
- // console.log('HTML :', html.length)
66
- // console.log('json size:', JSON.stringify(json).length)
67
- // console.log('Encoded length:', encoded.length)
68
- // console.log(`Time taken: ${(end - start).toFixed(2)} ms`)
69
- // // 💾 Save outputs (optional but useful)
70
- // fs.writeFileSync('output.json', JSON.stringify(json, null, 2))
71
- // fs.writeFileSync('output.toon', encoded)
72
- // const enc = encoding_for_model("gpt-4") // closest available
73
- // function countTokens(text: string) {
74
- // return enc.encode(text).length
75
- // }
76
- // const jsonString = JSON.stringify(json)
77
- // console.log("Token JSON count:", countTokens(jsonString))
78
- // const jsonStringencoded = JSON.stringify(encoded)
79
- // console.log("Token TOON count:", countTokens(jsonStringencoded))
80
- // } catch (err) {
81
- // console.error(err)
82
- // } finally {
83
- // await browser.deleteSession()
84
- // }
85
- // }
86
- // run()
87
- // console.log("hi")
@@ -1 +0,0 @@
1
- export {};
@@ -1,27 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const webdriverio_1 = require("webdriverio");
4
- async function runTest() {
5
- const browser = await (0, webdriverio_1.remote)({
6
- logLevel: "debug",
7
- protocol: "https",
8
- hostname: "devicefarm.fireflink.com",
9
- port: 443,
10
- path: "/backend/fireflinkcloud/wd/hub",
11
- capabilities: {
12
- browserName: "chrome",
13
- platformName: "Windows 11",
14
- browserVersion: "146",
15
- "devicefarm:networkLogEnable": false,
16
- "fireflink:deviceType": "public",
17
- // 🔹 Query params moved here
18
- "fireflink:accessKey": "yfAa_w199cJge2Gezsgb2Jnu7hKdqER1tExY5kKvgSvXfi1lRUelFsbTFI5pMq7zQuwwNXXnsLTkjKhvWcKDWsUoGLi9KjUV6gbUNDhqj0jWYFyW9h_0LIDEg5qXigwZdqzQqAvWwHin3gBhzGndeROtixv_VFhnseGSWRAHTajZzE-Zl0d8BP6gl0TEBUfoNgqBtAQVDLP6wAQzPfcyjjGFsdHkXWeHFkKmA78D7rKlnNuN2WgjIUlhYheDRDeqZ98Ig_PyS1GbUvjwJ73L38sr_cD4Y9lrKyWJV-m5RmtKhmkqRM8uk5gEfjzgwy30",
19
- "fireflink:licenseId": "LIC2026658",
20
- "fireflink:projectName": "Project-6",
21
- },
22
- });
23
- await browser.url("https://www.google.com");
24
- await browser.deleteSession();
25
- }
26
- runTest();
27
- console.log("hi");
File without changes
@@ -1,52 +0,0 @@
1
- "use strict";
2
- // import { KafkaProducerService } from "../service/kafka/fireflinkKafka.service.js"
3
- // import path from "path";
4
- // import fs from "fs";
5
- // const certPath = path.join("D:", "Bitbucket", "automationV2", "Certificates", "certificate.crt");
6
- // const ssl = {
7
- // ca: [fs.readFileSync(certPath, "utf-8")],
8
- // rejectUnauthorized: false,
9
- // }
10
- // const inst = new KafkaProducerService(["test.fireflink.com:9222"], ssl);
11
- // let payload = {
12
- // topic: `Topic-FIREFLINK-api-requests-test3`,
13
- // message: {
14
- // "stepData": [{
15
- // "nlpName": "OpenBrowser",
16
- // "elementsData": [],
17
- // "stepInputs": []
18
- // }
19
- // ],
20
- // "type": "web",
21
- // "scriptName": "NLPList6",
22
- // "version": "",
23
- // "scriptType": "Web & Mobile (Android & iOS)",
24
- // "projectId": "PJT1041",
25
- // "testCaseId": "SCR1930",
26
- // "promptId": "1f348fb3-b0f6-4eb4-b9a0-6c6cc33fea68",
27
- // "pageDetails": {
28
- // "Web": {
29
- // "pageId": "PAG025b6c68-9a55-46da-b353-0894f29c7f27",
30
- // "pageName": "ai-Page"
31
- // },
32
- // "Android": {
33
- // "pageId": "PAGb830f55d-077a-4d09-ae71-91fece6b0011",
34
- // "pageName": "ai-Android-Page"
35
- // },
36
- // "iOS": {
37
- // "pageId": "PAGcbb751fe-f056-4a09-a2ba-64c1092b5f89",
38
- // "pageName": "ai-Ios-Page"
39
- // }
40
- // },
41
- // "generatedBy": "",
42
- // "webSocketId": "",
43
- // "licenseType": "C-Professional",
44
- // "licenseId": "LIC3916",
45
- // "userId": "USR26696",
46
- // "projectType": "Web & Mobile",
47
- // "topic": "Topic-FIREFLINK-api-requests-performances",
48
- // "serverHost": "https://performances.fireflink.com",
49
- // "tokensConsumed": 1234,
50
- // }
51
- // }
52
- // inst.produceMessage(payload)
@@ -1 +0,0 @@
1
- export declare const testdata: Record<string, any>;
@@ -1,8 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.testdata = void 0;
4
- exports.testdata = {
5
- Data1: {
6
- startIteration1: [1, 2, 3],
7
- }
8
- };
@@ -1 +0,0 @@
1
- export {};
@@ -1,23 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const node_https_1 = __importDefault(require("node:https"));
7
- const node_tls_1 = __importDefault(require("node:tls"));
8
- const undici_1 = require("undici");
9
- // Augment tls type for getCACertificates (Node >= 22.14)
10
- const tlsWithNewAPI = node_tls_1.default;
11
- const existingCa = node_https_1.default.globalAgent.options.ca;
12
- const existingArr = Array.isArray(existingCa)
13
- ? existingCa
14
- : existingCa ? [existingCa] : [];
15
- const sysCerts = tlsWithNewAPI.getCACertificates?.("system") ?? [];
16
- const caBundle = [...new Set([...existingArr, ...node_tls_1.default.rootCertificates, ...sysCerts])];
17
- (0, undici_1.setGlobalDispatcher)(new undici_1.Agent({
18
- connect: {
19
- ca: caBundle,
20
- rejectUnauthorized: true
21
- }
22
- }));
23
- console.log("Done");
@@ -1 +0,0 @@
1
- export {};
@@ -1,24 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const webdriverio_1 = require("webdriverio");
4
- (async () => {
5
- const browser = await (0, webdriverio_1.remote)({
6
- automationProtocol: 'webdriver',
7
- capabilities: {
8
- browserName: 'chrome',
9
- 'goog:chromeOptions': {
10
- debuggerAddress: '127.0.0.1:9222'
11
- }
12
- }
13
- });
14
- // Use existing Chrome session
15
- const url = await browser.getUrl();
16
- console.log('Current URL:', url);
17
- // Navigate somewhere
18
- await browser.url('https://www.google.com');
19
- // Example action
20
- const title = await browser.getTitle();
21
- console.log('Page Title:', title);
22
- // Don't close Chrome (important)
23
- await browser.deleteSession();
24
- })();