ff-automationv2 2.2.33 → 2.2.34-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/dist/automation/actions/interaction/clear/clear.js +4 -1
  2. package/dist/automation/actions/interaction/clear/clearAndEnter.js +4 -1
  3. package/dist/automation/actions/interaction/elementlessActions/getOtp.js +2 -2
  4. package/dist/automation/actions/interaction/enterActions/EnterInputIntoElementFromClipBoardInterface_mob.js +4 -1
  5. package/dist/automation/actions/interaction/enterActions/enterInput.js +5 -2
  6. package/dist/automation/actions/interaction/enterActions/enterInputAndPress.js +4 -1
  7. package/dist/automation/actions/interaction/enterActions/waitAndEnter.js +4 -1
  8. package/dist/automation/actions/interaction/get/getText.js +9 -2
  9. package/dist/automation/actions/interaction/iframe/switchToDefaultContent.js +1 -1
  10. package/dist/automation/actions/interaction/verify/VerifyElementNotContainsText.js +4 -1
  11. package/dist/automation/actions/interaction/verify/verifypartialtext.js +9 -2
  12. package/dist/automation/actions/interaction/verify/verifytext.js +9 -2
  13. package/dist/core/helpers/elementSelectorResolver.d.ts +1 -1
  14. package/dist/core/helpers/elementSelectorResolver.js +3 -2
  15. package/dist/core/helpers/runnerDomPipeline.d.ts +2 -2
  16. package/dist/core/helpers/runnerDomPipeline.js +20 -9
  17. package/dist/core/helpers/visionFallbackHandler.js +4 -4
  18. package/dist/core/interfaces/automationRunnerInterface.d.ts +1 -0
  19. package/dist/core/main/runAutomationScript.js +13 -3
  20. package/dist/fireflinkData/fireflinkLocators/getListOfLocators.d.ts +2 -1
  21. package/dist/fireflinkData/fireflinkLocators/getListOfLocators.js +2 -2
  22. package/dist/fireflinkData/fireflinkScript/appendScriptData.js +42 -6
  23. package/dist/fireflinkData/fireflinkScript/scriptGenrationData.d.ts +1 -0
  24. package/dist/fireflinkData/fireflinkScript/scriptGenrationData.js +1 -0
  25. package/dist/imageAnalysisWeb/annotateScreenshot.d.ts +1 -1
  26. package/dist/imageAnalysisWeb/annotateScreenshot.js +24 -10
  27. package/dist/imageAnalysisWeb/generateAnnotatedScreenshots.js +5 -2
  28. package/dist/tests/senario.d.ts +0 -0
  29. package/dist/tests/senario.js +1120 -0
  30. package/dist/tests/test12.d.ts +1 -0
  31. package/dist/tests/test12.js +34 -65
  32. package/dist/utils/DomExtraction/jsForAttributeInjection.js +23 -0
  33. package/dist/utils/helpers/xpathcreation.js +3 -0
  34. package/dist/utils/iframesExtraction/findElementUsingFF.js +1 -2
  35. package/dist/utils/iframesExtraction/switchToIframeByMeta.js +1 -1
  36. package/dist/utils/workers/locatorWorker.js +3 -1
  37. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ export {};
@@ -1,66 +1,35 @@
1
1
  "use strict";
2
- // import { AutomationRunner } from "../index.js"
3
- // import express from "express";
4
- // const runner = new AutomationRunner();
5
- // const app = express();
6
- // app.use(express.json())
7
- // app.post("/user-story", (req, res) => {
8
- // const userStory = req.body.userStory;
9
- // const kafkaMessageKey = req.body.kafkaMessageKey
10
- // runner.run({
11
- // userStory: userStory,
12
- // platform: "web",
13
- // pageDetails: {
14
- // Web: {
15
- // pageId: "PAG73a7a0ad-c092-4351-8a93-68647f60e343",
16
- // pageName: "ai-Page"
17
- // }
18
- // },
19
- // sessionPath: "./session",
20
- // env: "",
21
- // broker: ["localhost:9092"],
22
- // sslConfig: "",
23
- // serverHost: "https://us-app.fireflink.com",
24
- // webSocketId: "",
25
- // generatedBy: "",
26
- // licenseType: "C-Professional",
27
- // licenseId: "LIC1026612",
28
- // userId: "USR10150300",
29
- // projectType: "Web",
30
- // browserName: "Microsoft Edge",
31
- // kafkaMessageKey: kafkaMessageKey,
32
- // serverData: {},
33
- // type: "sdfg",
34
- // scriptName: "url",
35
- // scriptType: "android",
36
- // projectId: "PJT1001",
37
- // testCaseId: "SCR1208",
38
- // promptId: "3f6e123c-8ec6-47c1-90e1-1a2f53b49251",
39
- // userName: "default-user",
40
- // appiumPort: 0,
41
- // platformVersion: "",
42
- // realDeviceId: "",
43
- // isTerminate: false,
44
- // isCloud: false,
45
- // cloudConfig: {
46
- // accessKey: "yfAa_w199cJge2Gezsgb2Jnu7hKdqER1tExY5kKvgSvXfi1lRUelFsbTFI5pMq7zQuwwNXXnsLTkjKhvWcKDWsUoGLi9KjUV6gbUNDhqj0jWYFyW9h_0LIDEg5qXigwZdqzQqAvWwHin3gBhzGndeROtixv_VFhnseGSWRAHTajZzE-Zl0d8BP6gl0TEBUfoNgqBtAQVDLP6wAQzPfcyjjGFsdHkXWeHFkKmA78D7rKlnNuN2WgjIUlhYheDRDeqZ98Ig_PyS1GbUvjwJ73L38sr_cD4Y9lrKyWJV-m5RmtKhmkqRM8uk5gEfjzgwy30",
47
- // hostname: "devicefarm.fireflink.com",
48
- // licenseId: "LIC1026612",
49
- // projectName: "demo",
50
- // protocol: "https",
51
- // path: "backend/fireflinkcloud/wd/hub"
52
- // },
53
- // capabilities: {
54
- // browserName: "chrome",
55
- // platformName: "Windows 11",
56
- // browserVersion: "146"
57
- // },
58
- // token: "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJNTnNvS1VYQkxLS3BPblpWUUxaZWhwcGhobHdJSldCYUF4dDRkaXMwNlcwIn0.eyJleHAiOjE3ODA0Njk3OTEsImlhdCI6MTc4MDM4MzM5MSwianRpIjoib25ydHJvOjc3YjJjZDNmLWQwOTMtNDA3Yy04ODk1LTVmMWQ3NTIyMjE3NSIsImlzcyI6Imh0dHBzOi8vYXBwLnYzLmZpcmVmbGluay5jb206MzAxMDEvcmVhbG1zL0ZpcmVGbGluayIsImF1ZCI6InRhcmdldC1jbGllbnQiLCJzdWIiOiJmOjg4OTI5YjAwLTczYjgtNDc0Zi1iYmJjLWRiMmUxYTNlMDc5ODpyYXNobWkudEBmaXJlZmxpbmsuY29tIiwidHlwIjoiQmVhcmVyIiwiYXpwIjoiZmxpbmstc2VydmljZSIsInNpZCI6ImUzNjE2MzFiLWJkMjItNGZiMS1hOWY1LTQ4YzU3MjQ0NWNhNCIsImFjciI6IjEiLCJhbGxvd2VkLW9yaWdpbnMiOlsiIl0sInJlYWxtX2FjY2VzcyI6eyJyb2xlcyI6WyJvZmZsaW5lX2FjY2VzcyIsInVtYV9hdXRob3JpemF0aW9uIl19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjdXJyZW50TGljZW5zZUlkIjoiTElDMjYxMTAiLCJlbWFpbF92ZXJpZmllZCI6ZmFsc2UsImN1cnJlbnRQcml2aWxlZ2UiOiJBZG1pbiIsImZ1bGxOYW1lIjoiUmFzaG1pIiwiYWN0aXZhdGlvblN0YXR1cyI6IkFDVElWRSIsInByaXZpbGVnZSI6IkFkbWluIiwibGljZW5zZU5hbWUiOiJGaXJlZmxpbmtfQnVsay1MSUMyNjExMCIsInByZWZlcnJlZF91c2VybmFtZSI6IlJhc2htaSIsInVzZXJOYW1lIjoicmFzaG1pLnRAZmlyZWZsaW5rLmNvbSIsImJpbGxpbmdDeWNsZSI6IlllYXJseSIsImlkIjoiVVNSMTAxNTAzMTQiLCJsaWNlbnNlSWQiOiJMSUMyNjExMCIsImVtYWlsIjoicmFzaG1pLnRAZmlyZWZsaW5rLmNvbSJ9.RcOhUQMtDAd6LibDR0Iws5WWK4EwfgXiTWxn1GP-bHz3W4CFd1ap_LIzAFX2RLe2dbKpbhiVfDAdU7MmYt10wQdz3PArWVXolpBQWNJecJhibYZCp9dQwMvBiDBQ_5i6AS4K_PhDlpwXkh2o0vuBfrYu4jVl1vOPfbLodxq3Tj8SfngD8_1q0_CXKbmBTXmsVESs43f4XXT2T7wa6t2ErbIwW38FLur2UmLab3UnVYJdqv7fjkrBrGqQBMzLDeQZwAWmtAWpWFGf9dMWhJyBxu-Al88VOIVZVxDwVnXLMg-DeIv_H1lk8x2AlyG_WVxlFVRkWNTztKMvXtc2GXB5ug"
59
- // })
60
- // res.json({
61
- // message: "User story received successfully",
62
- // });
63
- // });
64
- // app.listen(3000, () => {
65
- // console.log("Server running on port 3000");
66
- // });
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
+ });
@@ -136,6 +136,7 @@ async function getReactAnnotatedDOM(browser) {
136
136
  path = framePath + path;
137
137
  }
138
138
  }
139
+ path = path.replace(/\/div\[0\]\/div\[0\]/g, "/div[1]").replace(/\/div\[0\]/g, "/div[1]");
139
140
  return path;
140
141
  }
141
142
  // ==========================================================
@@ -219,6 +220,27 @@ async function getReactAnnotatedDOM(browser) {
219
220
  logData_js_1.logger.error("Attribute injection failed", error);
220
221
  }
221
222
  }
223
+ const voidElements = new Set([
224
+ "area",
225
+ "base",
226
+ "br",
227
+ "col",
228
+ "embed",
229
+ "hr",
230
+ "img",
231
+ "input",
232
+ "link",
233
+ "meta",
234
+ "param",
235
+ "source",
236
+ "track",
237
+ "wbr"
238
+ ]);
239
+ // Void elements cannot have children or closing tags
240
+ if (voidElements.has(tag)) {
241
+ return html;
242
+ }
243
+ // Normal children
222
244
  el.childNodes.forEach(child => {
223
245
  html += serializeNode(child);
224
246
  });
@@ -355,6 +377,7 @@ function isSelectRelated(node) {
355
377
  path = framePath + path;
356
378
  }
357
379
  }
380
+ path = path.replace(/\/div\[0\]\/div\[0\]/g, "/div[1]").replace(/\/div\[0\]/g, "/div[1]");
358
381
  return path;
359
382
  }
360
383
  function walk(root) {
@@ -32,6 +32,9 @@ function getWebXPathByFFIndex(annotatedDom, fireflinkIndex) {
32
32
  }
33
33
  function getFFIndexAndXPath(annotatedDom, fireflinkIndex, platform) {
34
34
  try {
35
+ if (annotatedDom?.includes("ff-inspect")) {
36
+ return getWebXPathByFFIndex(annotatedDom, fireflinkIndex);
37
+ }
35
38
  const parser = new xmldom_1.DOMParser();
36
39
  const xmlDoc = parser.parseFromString(annotatedDom, "text/xml");
37
40
  let xpathQuery = "";
@@ -4,7 +4,7 @@ exports.findElementUsingFF = void 0;
4
4
  const appendScriptData_js_1 = require("../../fireflinkData/fireflinkScript/appendScriptData.js");
5
5
  const switchToIframeByMeta_js_1 = require("./switchToIframeByMeta.js");
6
6
  const findElementUsingFF = async (args) => {
7
- await args.driver.switchToFrame(null);
7
+ await args.driver.switchFrame(null);
8
8
  const usedElementNames = [];
9
9
  for (const frameMeta of args.frames) {
10
10
  const xpathUsed = await (0, switchToIframeByMeta_js_1.switchToIframeByMeta)(args.driver, frameMeta);
@@ -27,7 +27,6 @@ const findElementUsingFF = async (args) => {
27
27
  stepInputs: [],
28
28
  pageDOM: args.pageDOM,
29
29
  elementGetter: args.elementGetter,
30
- ffNumber: args.fireflinkIndex,
31
30
  elementName: finalElementName,
32
31
  elementType: args.elementType,
33
32
  selector: xpathUsed,
@@ -13,7 +13,7 @@ async function switchToIframeByMeta(driver, frameMeta) {
13
13
  try {
14
14
  const iframe = await driver.$(selector);
15
15
  if (await iframe.isExisting()) {
16
- await driver.switchToFrame(iframe);
16
+ await driver.switchFrame(iframe);
17
17
  return selector;
18
18
  }
19
19
  }
@@ -15,7 +15,9 @@ port.on("message", (data) => {
15
15
  (0, logData_js_1.initLogger)(sessionPath);
16
16
  loggerInitialized = true;
17
17
  }
18
- const formattedAttribute = attribute.replace("[", "//*[@");
18
+ const formattedAttribute = attribute.startsWith("[")
19
+ ? attribute.replace("[", "//*[@")
20
+ : attribute;
19
21
  const result = (0, getElementsFromHTML_js_1.getAiElementsFromHTML)({
20
22
  locators: [
21
23
  {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ff-automationv2",
3
- "version": "2.2.33",
3
+ "version": "2.2.34-beta.0",
4
4
  "private": false,
5
5
  "type": "commonjs",
6
6
  "description": "This lib is used to automate the manual testcase",