ff-automationv2 2.2.26 → 2.2.28

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 (25) hide show
  1. package/dist/ai/llmcalls/llmAction.js +1 -1
  2. package/dist/ai/llmcalls/parseLlmOputput.js +3 -0
  3. package/dist/ai/llmprompts/systemPrompts/getActionExtractorPromptMob.js +2 -1
  4. package/dist/ai/llmprompts/systemPrompts/mobileKeywordExtractor.js +1 -1
  5. package/dist/automation/actions/executor.js +6 -0
  6. package/dist/automation/actions/interaction/enterActions/waitAndEnter.js +1 -1
  7. package/dist/automation/actions/interaction/get/getScreenshotAs.js +1 -1
  8. package/dist/automation/actions/interaction/verify/VerifyAllOptionsAreDeSelected.js +0 -6
  9. package/dist/automation/actions/interaction/verify/VerifyAttributeValue.js +1 -1
  10. package/dist/automation/actions/interaction/verify/VerifyPartialAttributeValue.js +1 -1
  11. package/dist/automation/actions/interaction/verify/checkIfElementIsDisplayed.js +1 -1
  12. package/dist/automation/actions/interaction/wait/MOB_WaitTillAttributeOfElementContainsString.js +1 -1
  13. package/dist/automation/actions/interaction/wait/waitTillAttributeOfElementIsString.js +1 -1
  14. package/dist/automation/actions/interaction/wait/waitTillElementContainsText.js +1 -1
  15. package/dist/automation/actions/interaction/wait/waitTillElementHasText.js +1 -1
  16. package/dist/automation/actions/interaction/wait/waitTillElementIsClickable.js +1 -1
  17. package/dist/automation/mobileSession/initiateMobileSession.js +1 -2
  18. package/dist/core/interfaces/errorInfoInterface.d.ts +1 -1
  19. package/dist/core/interfaces/fireflinkScriptPayloadInterface.d.ts +1 -1
  20. package/dist/core/main/actionHandlerFactory.js +5 -5
  21. package/dist/core/main/runAutomationScript.js +14 -5
  22. package/dist/tests/test12.d.ts +1 -0
  23. package/dist/tests/test12.js +406 -12
  24. package/dist/utils/helpers/sameActionsHelper.js +1 -1
  25. package/package.json +1 -1
@@ -19,7 +19,7 @@ class llmAction {
19
19
  baseURL: baseURL,
20
20
  });
21
21
  this.visionClient = new openai_1.default({
22
- apiKey: (0, decodeApiKey_js_1.decodeApiKey)(this.visionApiKey ?? apiKey),
22
+ apiKey: (0, decodeApiKey_js_1.decodeApiKey)(this.visionApiKey ?? "c2stcHJvai1HVTVlZGt4UDJEQXVBa29IbzB0MXdsTWFrWjljNnlQQjEtdUdGLXloZmhIclhEYnZubHo0M0l4QUoyME5Pc0hGYUw2OUFkdG5kOVQzQmxia0ZKQzUxTFJZX09aQzNzRHBOYjN5XzM5SUY4UXpBZElSU2ZBQ21wZjRtZG1OUzBlWXRhUjhudGhWdUktb2djeVBSMW1PdVpEdU83UUE="),
23
23
  });
24
24
  }
25
25
  async getLLMResponse(platform, type, args, userInput) {
@@ -15,6 +15,9 @@ class LLMResultParser {
15
15
  return JSON.parse(match[0]);
16
16
  }
17
17
  async fetchResult(llmOutput) {
18
+ if (typeof llmOutput?.error === "string" && llmOutput.error.includes("429")) {
19
+ throw llmOutput;
20
+ }
18
21
  try {
19
22
  const content = llmOutput?.choices?.[0]?.message?.content;
20
23
  if (!content) {
@@ -10,7 +10,7 @@ async function getActionExtractorPromptMob({ extractedDomJson, priorAndNextSteps
10
10
  "MOB_GetBatteryStatus","MOB_GetCurrentActivity","MOB_GetDeviceOsVersion","MOB_GetDeviceUdid","MOB_GetDeviceName","MOB_GetImplicitTimeOut",
11
11
  "MOB_GetDriverInstance","MOB_GetCurrentWindowHandle","MOB_GetCurrentSessionId","MOB_GetHeightOfScreen","MOB_GetCurrentDeviceSystemBars",
12
12
  "MOB_GetAttributeValueFromListOfWebElements","MOB_GetTagName","MOB_GetListOfElementsFromLocatorTypeLocatorValue","MOB_GetScreenshot","MOB_GetTextFromElementAndSetToClipBoard",
13
- "MOB_GetHeightOfElement","MOB_GetTextFromListOfWebElements","MOB_GetHexCodeForGivenXYCoordinatesOfImage","MOB_GetADBLogsForGivenAppPackage","MOB_GetScreenshotAs","MOB_GetWidthOfElement",
13
+ "MOB_GetHeightOfElement","MOB_GetTextFromListOfWebElements","MOB_GetHexCodeForGivenXYCoordinatesOfImage","MOB_GetADBLogsForGivenAppPackage","MOB_GetScreenshotOfElement","MOB_GetWidthOfElement",
14
14
  "MOB_GetX", "MOB_GetLocation","MOB_GetY","MOB_GetPerformanceData","MOB_GetRect","MOB_GetText","GetSize","MOB_GetAttribute"`;
15
15
  const elementType = ["link", "textfield", "icon", "button", "radiobutton", "checkbox", "tab", "action overflow button", "hamburger menu", "toggle button", "steppers", "sliders"];
16
16
  const prompt = `You are an intelligent assistant that extracts structured UI action data.
@@ -36,6 +36,7 @@ Rules:
36
36
  - Extract input_text from the step, if you can't find any input text in the step, return keyword as input_text.
37
37
  ex:Fetch the ADB logs for the abhibus
38
38
  here input: abhibus
39
+ - if step is get screenshot of element map it to MOB_GetScreenshotOfElement nlp.
39
40
  - Extract keyword from the step, if the step contains any keyword.
40
41
  - Use the closest semantic match for the step; return attribute_value as Fire-Flink-0, only if nothing is found.
41
42
  - if step is get location of device or get device location then map to MOB_GetDeviceLocation nlp.
@@ -21,7 +21,7 @@ If they mention package:com.app.android and activity:com.app.activity remove var
21
21
  - Do NOT include status/technical words (displayed, enabled, authenticate, visible).
22
22
  - If an element label contains multiple words (e.g., "Sign In", "Add to Cart"), keep them together as ONE keyword and do not split them and also for keywords you generated, do not split them.
23
23
  -** element_name: extract name of the element that mentioned in the step not from keywords or other steps.(eg:tap on x -> element_name:x). always try to retuen short and meaning full element name from step**
24
- - action: openApp for opening or launching of app, tap for taping or selecting or clicking or pressing, enter for entering input, wait for waiting or sleeping, verify for verifying or checking,scroll for scrolling and swiping, get for getting,fetching element, closeApp for closing the app.
24
+ - action: openApp for opening or launching of app, tap for taping or selecting or clicking or pressing, enter for entering input, wait for waiting or sleeping, verify for verifying or checking, scroll for scrolling and swiping, get for getting,fetching element, closeApp for closing the app.
25
25
  - If step is press any key give action as tap.
26
26
  - action must be one of from this list ${allowedActions}.if not one of them, return action as 'combined'. if step about set or find or open chrome browser or open app with apk path or install apk or uninstall apk or activate or terminate action pinch in or pinch out and running app in the backgroundaction return action as 'combined'
27
27
  - if the step action is about finding then provide action as combined.
@@ -360,6 +360,12 @@ class ActionExecutor {
360
360
  this.elementGetter = elementGetter;
361
361
  this.platform = platform;
362
362
  this.adbPath = adbPath;
363
+ if (this.platform.toLowerCase() == "web") {
364
+ this.platform = "Web";
365
+ }
366
+ else if (this.platform.toLowerCase() == "android") {
367
+ this.platform = "Android";
368
+ }
363
369
  }
364
370
  async navigate(url) {
365
371
  try {
@@ -30,7 +30,7 @@ async function waitAndEnter(args) {
30
30
  elementsData: [{
31
31
  name: args.elementName,
32
32
  type: args.elementType,
33
- locators: [{ xpath: args.selector }],
33
+ locators: [{ "name": "xpath", "value": args.selector }],
34
34
  platform: args.platform
35
35
  }]
36
36
  };
@@ -18,7 +18,7 @@ const getScreenshotAs = async (args) => {
18
18
  elementsData: [{
19
19
  name: args.elementName,
20
20
  type: args.elementType,
21
- locators: [{ xpath: args.selector }],
21
+ locators: [{ "name": "xpath", "value": args.selector }],
22
22
  platform: args.platform
23
23
  }]
24
24
  }));
@@ -15,12 +15,6 @@ async function verifyAllOptionsAreDeselected(args) {
15
15
  }
16
16
  }
17
17
  logData_js_1.logger.info("All options are deselected.");
18
- logData_js_1.logger.info("All options deselection verification result:", {
19
- pagedom: args.pageDOM,
20
- fireflinkIndex: args.fireflinkIndex,
21
- elementName: args.elementName,
22
- xpath: args.selector
23
- });
24
18
  if (result === false) {
25
19
  throw new Error("Not all options are deselected.");
26
20
  }
@@ -61,7 +61,7 @@ async function verifyAttributeValue(args) {
61
61
  elementsData: [{
62
62
  name: args.elementName,
63
63
  type: args.elementType,
64
- locators: [{ xpath: args.selector }],
64
+ locators: [{ "name": "xpath", "value": args.selector }],
65
65
  platform: args.platform
66
66
  }]
67
67
  };
@@ -60,7 +60,7 @@ async function verifyPartialAttributeValue(args) {
60
60
  elementsData: [{
61
61
  name: args.elementName,
62
62
  type: args.elementType,
63
- locators: [{ xpath: args.selector }],
63
+ locators: [{ "name": "xpath", "value": args.selector }],
64
64
  platform: args.platform
65
65
  }]
66
66
  }));
@@ -21,7 +21,7 @@ async function checkIfElementIsDisplayed(args) {
21
21
  elementsData: [{
22
22
  name: args.elementName,
23
23
  type: args.elementType,
24
- locators: [{ xpath: args.selector }],
24
+ locators: [{ "name": "xpath", "value": args.selector }],
25
25
  platform: args.platform
26
26
  }]
27
27
  }));
@@ -17,7 +17,7 @@ const MOB_WaitTillAttributeOfElementContainsString = async (args) => {
17
17
  elementsData: [{
18
18
  name: args.elementName,
19
19
  type: args.elementType,
20
- locators: [{ name: "xpath", value: args.selector }],
20
+ locators: [{ "name": "xpath", "value": args.selector }],
21
21
  platform: args.platform
22
22
  }]
23
23
  };
@@ -23,7 +23,7 @@ async function waitTillAttributeOfElementIsString(args) {
23
23
  elementsData: [{
24
24
  name: args.elementName,
25
25
  type: args.elementType,
26
- locators: [{ xpath: args.selector }],
26
+ locators: [{ "name": "xpath", "value": args.selector }],
27
27
  platform: args.platform
28
28
  }]
29
29
  };
@@ -20,7 +20,7 @@ async function waitTillElementContainsText(args) {
20
20
  elementsData: [{
21
21
  name: args.elementName,
22
22
  type: args.elementType,
23
- locators: [{ xpath: args.selector }],
23
+ locators: [{ "name": "xpath", "value": args.selector }],
24
24
  platform: args.platform
25
25
  }]
26
26
  };
@@ -17,7 +17,7 @@ async function waitTillElementHasText(args) {
17
17
  elementsData: [{
18
18
  name: args.elementName,
19
19
  type: args.elementType,
20
- locators: [{ xpath: args.selector }],
20
+ locators: [{ "name": "xpath", "value": args.selector }],
21
21
  platform: args.platform
22
22
  }]
23
23
  };
@@ -21,7 +21,7 @@ async function waitTillElementIsClickable(args) {
21
21
  elementsData: [{
22
22
  name: args.elementName,
23
23
  type: args.elementType,
24
- locators: [{ xpath: args.selector }],
24
+ locators: [{ "name": "xpath", "value": args.selector }],
25
25
  platform: args.platform
26
26
  }]
27
27
  };
@@ -43,7 +43,6 @@ class MobileSession {
43
43
  throw new Error("Appium server is not running or unreachable.", { cause: error });
44
44
  }
45
45
  try {
46
- logData_js_1.logger.info(this.adbPath);
47
46
  await (0, child_process_1.execSync)(`${this.adbPath} -s ${arg.capabilities["appium:udid"]} shell pm clear ${appPackage}`).toString();
48
47
  await (0, child_process_1.execSync)(`${this.adbPath} -s ${arg.capabilities["appium:udid"]} shell am start -n ${appPackage}/${appActivity}`).toString();
49
48
  }
@@ -60,7 +59,7 @@ class MobileSession {
60
59
  const startTime = Date.now();
61
60
  this.driver = this.isCloud
62
61
  ? await this.cloudSessionInstances.initialize() : await this.openApp({ capabilities: arg.capabilities });
63
- logData_js_1.logger.info(`Application started ',total time taken: ${Date.now() - startTime} ms`);
62
+ logData_js_1.logger.info(`Application started total time taken: ${Date.now() - startTime} ms`);
64
63
  }
65
64
  async close() {
66
65
  if (this.driver) {
@@ -2,6 +2,6 @@ export interface IErrorInfo {
2
2
  nlp?: string | null;
3
3
  error?: string;
4
4
  errorDescription?: string;
5
- erroredManualStep?: string;
5
+ errorManualStep?: string;
6
6
  rawError?: any;
7
7
  }
@@ -21,7 +21,7 @@ export interface IPayload {
21
21
  userId: string;
22
22
  projectType: string;
23
23
  tokensConsumed?: number;
24
- errorInfo?: IErrorInfo;
24
+ error?: IErrorInfo;
25
25
  }
26
26
  export interface IFireFlinkApiService {
27
27
  getInstancesDetailsApi(headers: Record<string, string>, url: string): Promise<any>;
@@ -50,11 +50,11 @@ function createActionHandlers(context) {
50
50
  "appium:ignoreUnimportantViews": false,
51
51
  "appium:disableAndroidWatcher": true,
52
52
  "appium:disableWindowAnimation": true,
53
- "appium:uiautomator2ServerLaunchTimeout": 60000,
54
- "appium:uiautomator2ServerReadTimeout": 60000,
55
- "appium:waitForIdleTimeout": 60000,
56
- "appium:waitForIdlePollingInterval": 60000,
57
- "appium:waitForSelectorTimeout": 60000,
53
+ "appium:uiautomator2ServerLaunchTimeout": 5000,
54
+ "appium:uiautomator2ServerReadTimeout": 5000,
55
+ "appium:waitForIdleTimeout": 5000,
56
+ "appium:waitForIdlePollingInterval": 5000,
57
+ "appium:waitForSelectorTimeout": 5000,
58
58
  },
59
59
  keywords: result.keywords
60
60
  });
@@ -529,15 +529,22 @@ class AutomationRunner {
529
529
  }
530
530
  catch (error) {
531
531
  logData_js_1.logger.error(`Error executing step "${step}":`, error);
532
- errorInfo = (await stepProcessor.getLLMResponse({ platform: platform, type: promptType_js_1.PromptType.ERROR_DESCRIPTION, args: {}, input: { error: logData_js_1.logger.getError(error) } })).response;
533
- if (errorInfo.error === "Context Length Exceeded (400)" ||
534
- errorInfo.error === "Rate Limit Exceeded (429)") {
532
+ if (error.error === "Context Length Exceeded (400)" ||
533
+ error.error === "Rate Limit Exceeded (429)") {
534
+ errorInfo.error = error.error;
535
+ errorInfo.errorDescription = error.errorDescription;
536
+ if (context.scriptAppender.getErrorNLP()) {
537
+ errorInfo.nlp = context.scriptAppender.getErrorNLP();
538
+ }
539
+ errorInfo.errorManualStep = step;
540
+ errorInfo.rawError = logData_js_1.logger.getError(error);
535
541
  break;
536
542
  }
543
+ errorInfo = (await stepProcessor.getLLMResponse({ platform: platform, type: promptType_js_1.PromptType.ERROR_DESCRIPTION, args: {}, input: { error: logData_js_1.logger.getError(error) } })).response;
537
544
  if (context.scriptAppender.getErrorNLP()) {
538
545
  errorInfo.nlp = context.scriptAppender.getErrorNLP();
539
546
  }
540
- errorInfo.erroredManualStep = step;
547
+ errorInfo.errorManualStep = step;
541
548
  errorInfo.rawError = logData_js_1.logger.getError(error);
542
549
  break;
543
550
  }
@@ -559,7 +566,9 @@ class AutomationRunner {
559
566
  userId: request.userId,
560
567
  projectType: request.projectType,
561
568
  tokensConsumed: (await stepProcessor.getResultTokenUsage()).totalTokens,
562
- ...(errorInfo && Object.keys(errorInfo).length > 0 && { errorInfo })
569
+ ...(errorInfo && Object.keys(errorInfo).length > 0
570
+ ? { error: errorInfo }
571
+ : {})
563
572
  };
564
573
  try {
565
574
  await context.scriptAppender.waitForAllSteps();
@@ -0,0 +1 @@
1
+ export {};
@@ -1,17 +1,23 @@
1
1
  "use strict";
2
- // console.log(new Date().getTime())
3
- // import { AutomationRunner } from "../index.js"
4
- // import path from "path";
5
- // import fs from "fs";
6
- // const certPath = path.join("D:", "Bitbucket", "automationV2", "Certificates", "certificate.crt");
7
- // const ssl = {
8
- // ca: [fs.readFileSync(certPath, "utf-8")],
9
- // rejectUnauthorized: false,
10
- // }
11
- // const runner = new AutomationRunner();
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
+ console.log(new Date().getTime());
7
+ const index_js_1 = require("../index.js");
8
+ const path_1 = __importDefault(require("path"));
9
+ const fs_1 = __importDefault(require("fs"));
10
+ const kafkajs_1 = require("kafkajs");
11
+ const certPath = path_1.default.join("D:", "Bitbucket", "automationV2", "Certificates", "certificate.crt");
12
+ const ssl = {
13
+ ca: [fs_1.default.readFileSync(certPath, "utf-8")],
14
+ rejectUnauthorized: false,
15
+ };
16
+ const runner = new index_js_1.AutomationRunner();
12
17
  // runner.run({
13
- // serviceAccounts: "",
14
- // topic: "TEst",
18
+ // env: "test1",
19
+ // broker: ["performances.fireflink.com:9022"],
20
+ // sslConfig: ssl,
15
21
  // userStory:
16
22
  // [
17
23
  // ["Open browser"],
@@ -72,3 +78,391 @@
72
78
  // isTerminate: false,
73
79
  // token: "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJRUFRfTnFuMkxxdDVmN09tOElWaW53dUJlR3ZVUUVBUkdxZkFuRHJxZU9NIn0.eyJleHAiOjE3NzY0MjU3ODQsImlhdCI6MTc3NjMzOTM4NCwianRpIjoib25ydHJvOmY1ZGE1NDljLWIwOWEtNDgyZi1hYmRiLWJlOGYzMGZmZjMxYyIsImlzcyI6Imh0dHA6Ly8xMDMuMTgyLjIxMC4yMjY6MzAxMDcvcmVhbG1zL0ZpcmVGbGluay10ZXN0MyIsImF1ZCI6InRhcmdldC1jbGllbnQiLCJzdWIiOiJmOmNhMzBmNDk3LTY1Y2YtNGU4Zi1iZGE3LTE0ZjM1NTNiYzZmNTpqYWlha2FzaEB5b3BtYWlsLmNvbSIsInR5cCI6IkJlYXJlciIsImF6cCI6ImZsaW5rLXNlcnZpY2UiLCJzaWQiOiI2MzkyMWU2My03MGJlLTQ1MTgtYWU5MS1hZjk3Y2Y2ZDE0ZDIiLCJhY3IiOiIxIiwiYWxsb3dlZC1vcmlnaW5zIjpbIioiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInNjb3BlIjoiZW1haWwgcHJvZmlsZSIsImN1cnJlbnRMaWNlbnNlSWQiOiJMSUMzOTg1IiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJjdXJyZW50UHJpdmlsZWdlIjoiU3VwZXIgQWRtaW4iLCJmdWxsTmFtZSI6ImphaSIsImFjdGl2YXRpb25TdGF0dXMiOiJBQ1RJVkUiLCJwcml2aWxlZ2UiOiJTdXBlciBBZG1pbiIsImxpY2Vuc2VOYW1lIjoiRmlyZUZsaW5rIC0gTElDMzk4NSIsInByZWZlcnJlZF91c2VybmFtZSI6ImphaSIsInVzZXJOYW1lIjoiamFpYWthc2hAeW9wbWFpbC5jb20iLCJiaWxsaW5nQ3ljbGUiOiJRdWFydGVybHkiLCJpZCI6IlVTUjI2OTM1IiwibGljZW5zZUlkIjoiTElDMzk4NSIsImVtYWlsIjoiamFpYWthc2hAeW9wbWFpbC5jb20ifQ.eO4c1JoekBHymCU7OpxdVVZhKysFdH5kLbb7HveZk7HyzaS4Bjc1fdmMBu-BuvUvxHUdWYlRZP_9Zc8LKHsqe0uF_qwTddT7QDWnnS0TgFHLHCIcd_uQ1KHrfPGvEyaxpylrbke9KOWG66N37h1JaBfyT-b5P_CxKn5K_MsSpJH3U8ceDk8F1cKoz_L_ArM1rPMAsJxCAANf3PJfTt8F4qlgxEW6CoqY1W-qba_Dw8PztU3uL0ERrIT0ZDI8u1Nj9LaN_j9NDruu2kB_KNa2n_pcFqq2hvu8Ac1dF5t6n_sU5TXElYSO5FOkLXRgkYpX4ClZuqDU8Oza1PaYxLGuLw"
74
80
  // })
81
+ const kafka = new kafkajs_1.Kafka({
82
+ clientId: "automation-service",
83
+ brokers: ["127.0.0.1:9092"],
84
+ });
85
+ const producer = kafka.producer();
86
+ runner.run({
87
+ // userStory: [
88
+ // ["Open browser"],
89
+ // ["Navigate to https://shoppersstack.com"],
90
+ // // ["Maximize the browser"],
91
+ // // ['wait for 2 sec'],
92
+ // // ['Verify If Audio Is Playing'],
93
+ // // ['Verify email CheckBox Is Not Selected'],
94
+ // ['click on video'],
95
+ // // ['Get List Of Elements From xpath- //*[@id="demoUI"]/main/section/article[1]/aside/div/section[2]/video']
96
+ // // ['Get Width Of video'],
97
+ // // ['Verify Width Of vedio is 459']
98
+ // // ['Verify X Location Of video is 454.03125']
99
+ // // ['Verify "Click for JS Alert" Is Not Displayed']
100
+ // // ['Verify Browser Window X Location is 10']
101
+ // // ['wait for 10 sec'],
102
+ // // ['Get Tag Name of Username'],
103
+ // // ["Verify Browser Window Height is 736"],
104
+ // // ["minimize the browser"],
105
+ // // ['navigate to back page'],
106
+ // // ["Enter Email", "santosh@gmail.com"],
107
+ // // ["Enter Phone", "1234567890"],
108
+ // // ["In Address enter name from previos step"],
109
+ // // ["Scroll untill drag and drop text is visible"],
110
+ // // ["Drag and drop 'drag me to my target' to 'Drop here'"],
111
+ // // ["Wait for 3 second"],
112
+ // // ["Close browser"]
113
+ // ],
114
+ userStory: [
115
+ ["Open browser"],
116
+ ["Navigate to https://www.saucedemo.com/"],
117
+ ["Maximize the browser"],
118
+ ["Enter Username", "standard_user"],
119
+ ["Enter Password", "secret_sauce"],
120
+ ["Click on Login"],
121
+ ["Click on Add to cart of Sauce Labs Bike Light"],
122
+ ["Click on Shopping cart icon"],
123
+ ["Click on Checkout"],
124
+ ["Enter First Name", "Jai"],
125
+ ["Enter Last Name", "Akash"],
126
+ ["Enter Zip/Postal Code", "560004"],
127
+ ["Scroll until Continue button is displayed"],
128
+ ["Wait for 2 seconds"],
129
+ ["Click on Continue"],
130
+ ["Click on Finish"],
131
+ ["Click on Back Home"],
132
+ ["Close browser"]
133
+ ],
134
+ env: "test3",
135
+ platform: "web",
136
+ pageDetails: {
137
+ Web: {
138
+ pageId: "PAG73a7a0ad-c092-4351-8a93-68647f60e343",
139
+ pageName: "ai-Page"
140
+ }
141
+ },
142
+ serverHost: "https://test3.fireflink.com",
143
+ sessionPath: `session`,
144
+ // sslConfig: {
145
+ // ca: ["./Certificates/ca-cert.pem"],
146
+ // key: ["./Certificates/client-key.pem"],
147
+ // cert: ["./Certificates/client-cert.pem"]
148
+ // },
149
+ sslConfig: ssl,
150
+ broker: ["test3.fireflink.com:9092"],
151
+ webSocketId: "",
152
+ generatedBy: "",
153
+ licenseType: "C-Professional",
154
+ licenseId: "LIC4002",
155
+ userId: "USR25688",
156
+ // topic: "Topic-FIREFLINK-aiAutomation-Updates-test3",
157
+ projectType: "Web",
158
+ browser: {
159
+ browserName: "Google Chrome",
160
+ },
161
+ serverData: "https://test3.fireflink.com",
162
+ version: "asdfg",
163
+ type: "sdfg",
164
+ scriptName: "url",
165
+ scriptType: "android",
166
+ projectId: "PJT1015",
167
+ testCaseId: "SCR1003",
168
+ promptId: "3f6e123c-8ec6-47c1-90e1-1a2f53b49251",
169
+ userName: "default-user",
170
+ appiumPort: 4723,
171
+ platformVersion: "",
172
+ realDeviceId: "RZ8TB063Y6N",
173
+ isTerminate: false,
174
+ isCloud: false,
175
+ cloudConfig: {
176
+ accessKey: "yfAa_w199cJge2Gezsgb2Jnu7hKdqER1tExY5kKvgSvXfi1lRUelFsbTFI5pMq7zQuwwNXXnsLTkjKhvWcKDWsUoGLi9KjUV6gbUNDhqj0jWYFyW9h_0LIDEg5qXigwZdqzQqAvWwHin3gBhzGndeROtixv_VFhnseGSWRAHTajZzE-Zl0d8BP6gl0TEBUfoNgqBtAQVDLP6wAQzPfcyjjGFsdHkXWeHFkKmA78D7rKlnNuN2WgjIUlhYheDRDeqZ98Ig_PyS1GbUvjwJ73L38sr_cD4Y9lrKyWJV-m5RmtKhmkqRM8uk5gEfjzgwy30",
177
+ hostname: "devicefarm.fireflink.com",
178
+ licenseId: "LIC2026658",
179
+ projectName: "Project-6",
180
+ protocol: "https",
181
+ path: "backend/fireflinkcloud/wd/hub"
182
+ },
183
+ capabilities: {
184
+ browserName: "chrome",
185
+ browserVersion: "136",
186
+ platformName: "Windows 11",
187
+ // "appium:platformVersion": "14",
188
+ // "appium:deviceName": "Vivo V40 Pro",
189
+ // "platformName": "Android",
190
+ // "appium:app": "General-Store-final (4).apk",
191
+ // "appium:deviceType": "public",
192
+ // "appium:isVirtual": false
193
+ },
194
+ token: "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJRUFRfTnFuMkxxdDVmN09tOElWaW53dUJlR3ZVUUVBUkdxZkFuRHJxZU9NIn0.eyJleHAiOjE3NzgxMzg2MDUsImlhdCI6MTc3ODA1MjIwNSwianRpIjoib25ydHJvOjlmZGE3ZjczLTcyZGYtNDM5YS1iOWI3LWEyYjBlMDZkZjliMCIsImlzcyI6Imh0dHA6Ly8xMDMuMTgyLjIxMC4yMjY6MzAxMDcvcmVhbG1zL0ZpcmVGbGluay10ZXN0MyIsImF1ZCI6InRhcmdldC1jbGllbnQiLCJzdWIiOiJmOmNhMzBmNDk3LTY1Y2YtNGU4Zi1iZGE3LTE0ZjM1NTNiYzZmNTpqYWlha2FzaC5iQHlvcG1haWwuY29tIiwidHlwIjoiQmVhcmVyIiwiYXpwIjoiZmxpbmstc2VydmljZSIsInNpZCI6IjFmNjM4MGM1LTk4YTctNGNmYS04YWQ1LTBlNzE5ODVlZTg2YSIsImFjciI6IjEiLCJhbGxvd2VkLW9yaWdpbnMiOlsiKiJdLCJyZWFsbV9hY2Nlc3MiOnsicm9sZXMiOlsib2ZmbGluZV9hY2Nlc3MiLCJ1bWFfYXV0aG9yaXphdGlvbiJdfSwic2NvcGUiOiJlbWFpbCBwcm9maWxlIiwiY3VycmVudExpY2Vuc2VJZCI6IkxJQzM5ODUiLCJlbWFpbF92ZXJpZmllZCI6ZmFsc2UsImN1cnJlbnRQcml2aWxlZ2UiOiJTdXBlciBBZG1pbiIsImZ1bGxOYW1lIjoiSmFpIEFrYXNoIiwiYWN0aXZhdGlvblN0YXR1cyI6IkFDVElWRSIsInByaXZpbGVnZSI6IlN1cGVyIEFkbWluIiwibGljZW5zZU5hbWUiOiJGaXJlRmxpbmsgLSBMSUMzOTg1IiwicHJlZmVycmVkX3VzZXJuYW1lIjoiSmFpIEFrYXNoIiwidXNlck5hbWUiOiJqYWlha2FzaC5iQHlvcG1haWwuY29tIiwiYmlsbGluZ0N5Y2xlIjoiUXVhcnRlcmx5IiwiaWQiOiJVU1IyNTY4OCIsImxpY2Vuc2VJZCI6IkxJQzM5ODUiLCJlbWFpbCI6ImphaWFrYXNoLmJAeW9wbWFpbC5jb20ifQ.l0JWtGBmYn-45SzQkRp_JeAsT-6_rAEkhlcGT6MrNE1e0M99kBZgePS2Md5TSlrh-giQ-Q8dq6AX8sX6AmJz0TXsun-mMcgVVj_lcCKVi1zFTkqoIIEV4UFAWr3estBz4IIDZDYvpWXuz7QYeQ5fpPDE08IHfhiWtWXdeWPigb055Wk_3IpWmr6qRgRHDYOZva9O13SvCnRbXzgndWmMJYJZ_uMH-PrHbU_AhJS9y0RQLzuJqZ-0SWzVpeIipDq8umf-2mBckicHrKsOIwqau2Y9n9lJ4ZX1JBtqgkmboLpzbSfDIMSqXuXg0M1v0i2Y8uXmYzOUlFaqVq6jIGC3Xg"
195
+ });
196
+ // runner.run({
197
+ // "userStory":[["open browser"],["navigate to url","demoapps.qspiders.com"],["Maximize browser"],["wait for 3 seconds"],["click on UI Testing concepts"],["close browser"]],
198
+ // "scriptName":"test cases",
199
+ // "scriptType":"Web & Mobile (Android & iOS)",
200
+ // "projectId":"PJT1043",
201
+ // "testCaseId":"SCR1921",
202
+ // "promptId":"2d6487d8-4d23-4ef6-929c-e1748a599154",
203
+ // "generatedBy":"",
204
+ // "webSocketId":"",
205
+ // "licenseType":"C-Professional",
206
+ // "licenseId":"LIC3916",
207
+ // "userId":"USR26696",
208
+ // "projectType":"Web & Mobile",
209
+ // "serverData":"https://performance.fireflink.com",
210
+ // "pageDetails":{"Web":{"pageId":"PAG4a351de6-7267-43ce-8a69-22e637f40298","pageName":"ai-Page"},
211
+ // "Android":{"pageId":"PAG1b1af2a8-5540-43f4-b29c-87c3be415d77","pageName":"ai-Android-Page"},
212
+ // "iOS":{"pageId":"PAGe9ccd733-59cd-4765-b11d-6e45eb01521d","pageName":"ai-Ios-Page"}},
213
+ // "userName":"Rashmi",
214
+ // "isTerminate":false,
215
+ // "appiumPort":0,
216
+ // "realDeviceId":"5B2AB54C-197B-57F4-AA8A-A91E2DCDA736",
217
+ // "browser":{"browserName":"Google Chrome"},
218
+ // "token":"eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJIUlpZV2NoTURZWXVQaDF3TDkxb3drS3Q1OUtuNC1sOFRJcXF3a2RBV2pjIn0.eyJleHAiOjE3NzcxMDgyNDgsImlhdCI6MTc3NzAyMTg0OCwianRpIjoib25ydHJvOmRhZTg3NDUzLWRmZjYtNDRkMy04NzM5LTFjOTY0OGFmYjFkMSIsImlzcyI6Imh0dHA6Ly8xNDguNzIuMTY4LjE2OjMwMTA3L3JlYWxtcy9GaXJlRmxpbmstdGVzdDEiLCJhdWQiOiJ0YXJnZXQtY2xpZW50Iiwic3ViIjoiZjo4ODkyOWIwMC03M2I4LTQ3NGYtYmJiYy1kYjJlMWEzZTA3OTg6cmFzaG1pLnRAZmlyZWZsaW5rLmNvbSIsInR5cCI6IkJlYXJlciIsImF6cCI6ImZsaW5rLXNlcnZpY2UiLCJzaWQiOiJmMmFmYjI1ZS1jNGFkLTQyNDAtOTdlOS0xOGVlMTg2NzY1ODUiLCJhY3IiOiIxIiwiYWxsb3dlZC1vcmlnaW5zIjpbIiJdLCJyZWFsbV9hY2Nlc3MiOnsicm9sZXMiOlsib2ZmbGluZV9hY2Nlc3MiLCJ1bWFfYXV0aG9yaXphdGlvbiJdfSwic2NvcGUiOiJwcm9maWxlIGVtYWlsIiwiY3VycmVudExpY2Vuc2VJZCI6IkxJQzM5MTYiLCJlbWFpbF92ZXJpZmllZCI6ZmFsc2UsImN1cnJlbnRQcml2aWxlZ2UiOiJBZG1pbiIsImZ1bGxOYW1lIjoiUmFzaG1pIiwiYWN0aXZhdGlvblN0YXR1cyI6IkFDVElWRSIsInByaXZpbGVnZSI6IkFkbWluIiwibGljZW5zZU5hbWUiOiJGaXJlRmxpbmsgLSBMSUMzOTE2IiwicHJlZmVycmVkX3VzZXJuYW1lIjoiUmFzaG1pIiwidXNlck5hbWUiOiJyYXNobWkudEBmaXJlZmxpbmsuY29tIiwiYmlsbGluZ0N5Y2xlIjoiUXVhcnRlcmx5IiwiaWQiOiJVU1IyNjY5NiIsImxpY2Vuc2VJZCI6IkxJQzM5MTYiLCJlbWFpbCI6InJhc2htaS50QGZpcmVmbGluay5jb20ifQ.essxL7jivW4l-kDt1B_Gxg-JfRnz1XrTZU0sSvk-ZTFB8UNPFuGwjnr6Mz8fSZgtP_kXlZh0yPOd8Vvck92f7z0Y4kX5CHWfEQJbJN3TATMH41OJpJpXPOcZrl6uH-_Z8R9l3CwQuxjKjZUXIdz-O-CW8QdvSM8l-2rrnYG_09LLm8YhQsSMwqofQK-pNgwvtZYOVGsLM4J6hHR9xT8_x9suTCgy_3ZFwDji5ptDiIkUpMjqm0E-SJ3fsyVBzIZhOn3DNyiGnIx4LjBR8rmGoKxY-6VhGyHYfW70J4kHqEJKm6xW0n6nVkIKTZjqT546xlVT3i-giYaxGAT40t1muA",
219
+ // "sessionPath":"/Users/padmakant/Library/Application Support/fire-flink-client/logs/execution-logs",
220
+ // "version":"",
221
+ // "platform":"web",
222
+ // "platformVersion":"Air",
223
+ // "env":"test1",
224
+ // "serverHost":"https://performance.fireflink.com"})
225
+ // runner.run(
226
+ // {
227
+ // "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"]],
228
+ // "scriptName": "VerifyIfGivenOptionIsDuplicate",
229
+ // "scriptType": "Web & Mobile (Android & iOS)",
230
+ // "projectId": "PJT1041",
231
+ // "testCaseId": "SCR1900",
232
+ // "promptId": "70f62d35-7863-404b-8572-732453c4dec9",
233
+ // "generatedBy": "",
234
+ // "webSocketId": "",
235
+ // "licenseType": "C-Professional",
236
+ // "licenseId": "LIC3916",
237
+ // "userId": "USR26696",
238
+ // "projectType": "Web & Mobile",
239
+ // "serverData": "https://performance.fireflink.com",
240
+ // "pageDetails": { "Web": { "pageId": "PAG025b6c68-9a55-46da-b353-0894f29c7f27", "pageName": "ai-Page" },
241
+ // "Android": { "pageId": "PAGb830f55d-077a-4d09-ae71-91fece6b0011", "pageName": "ai-Android-Page" },
242
+ // "iOS": { "pageId": "PAGcbb751fe-f056-4a09-a2ba-64c1092b5f89", "pageName": "ai-Ios-Page" } },
243
+ // "userName": "Rashmi",
244
+ // "isTerminate": false,
245
+ // "appiumPort": 4723,
246
+ // "realDeviceId": "",
247
+ // "browser": { "browserName": "Google Chrome" },
248
+ // "token": "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJIUlpZV2NoTURZWXVQaDF3TDkxb3drS3Q1OUtuNC1sOFRJcXF3a2RBV2pjIn0.eyJleHAiOjE3NzcwOTgzNjksImlhdCI6MTc3NzAxMTk2OSwianRpIjoib25ydHJvOjY3Nzc1YjNkLTBmY2YtNGZjNy1hNzkwLTExYjdjNjZjNWMyOSIsImlzcyI6Imh0dHA6Ly8xNDguNzIuMTY4LjE2OjMwMTA3L3JlYWxtcy9GaXJlRmxpbmstdGVzdDEiLCJhdWQiOiJ0YXJnZXQtY2xpZW50Iiwic3ViIjoiZjo4ODkyOWIwMC03M2I4LTQ3NGYtYmJiYy1kYjJlMWEzZTA3OTg6cmFzaG1pLnRAZmlyZWZsaW5rLmNvbSIsInR5cCI6IkJlYXJlciIsImF6cCI6ImZsaW5rLXNlcnZpY2UiLCJzaWQiOiJkNTdmMmQ2ZC01YTdkLTQzYTgtYmFjYS02ZGZjYjJkZDIwY2UiLCJhY3IiOiIxIiwiYWxsb3dlZC1vcmlnaW5zIjpbIiJdLCJyZWFsbV9hY2Nlc3MiOnsicm9sZXMiOlsib2ZmbGluZV9hY2Nlc3MiLCJ1bWFfYXV0aG9yaXphdGlvbiJdfSwic2NvcGUiOiJwcm9maWxlIGVtYWlsIiwiY3VycmVudExpY2Vuc2VJZCI6IkxJQzM5MTYiLCJlbWFpbF92ZXJpZmllZCI6ZmFsc2UsImN1cnJlbnRQcml2aWxlZ2UiOiJBZG1pbiIsImZ1bGxOYW1lIjoiUmFzaG1pIiwiYWN0aXZhdGlvblN0YXR1cyI6IkFDVElWRSIsInByaXZpbGVnZSI6IkFkbWluIiwibGljZW5zZU5hbWUiOiJGaXJlRmxpbmsgLSBMSUMzOTE2IiwicHJlZmVycmVkX3VzZXJuYW1lIjoiUmFzaG1pIiwidXNlck5hbWUiOiJyYXNobWkudEBmaXJlZmxpbmsuY29tIiwiYmlsbGluZ0N5Y2xlIjoiUXVhcnRlcmx5IiwiaWQiOiJVU1IyNjY5NiIsImxpY2Vuc2VJZCI6IkxJQzM5MTYiLCJlbWFpbCI6InJhc2htaS50QGZpcmVmbGluay5jb20ifQ.QEnF16mduzL6YdIXwDYfqIQeuO9B_eWh7pqwxnhec6MFYp2DB4aXyDQgCuwhZ2FfKxxHkwpbqNYYJSetHy2xAxB2T_OlGExiEw_quedfpZuRFJZoOjF8ZW9nQCmyTnu_AREQ35s5ca8crl_TeQ8gBfhMw3inccqn8lz-_4Hjb9RMAI75Rm0Z6JApb_-b__dEpsAf3RYXl00pPiOzO5DClf3bmVJACZKRXtpzTLKoVu0ZuNlESx06X9pvN3FL1K75TXRwtJfws6bJDBBnhyGF5U05X-C8vj9p4yP6roVdPIk0QITgWqv88of97OKyixW7nO-vLYE7CiNsxq4wBr4Lbw",
249
+ // "sessionPath": "C:\\Users\\User\\AppData\\Roaming\\fire-flink-client\\logs\\execution-logs",
250
+ // "version": "",
251
+ // "platform": "web",
252
+ // "platformVersion": "",
253
+ // "env": "test1",
254
+ // "serverHost": "https://performance.fireflink.com"
255
+ // }
256
+ // )
257
+ // userStory: [
258
+ // ["Open browser"],
259
+ // ["Navigate to https://shoppersstack.com"],
260
+ // ["Maximize browser"],
261
+ // ["Wait for 10 seconds"],
262
+ // ["Click on Login button"],
263
+ // ["Click on Create Account button"],
264
+ // ["Enter First Name", "John"],
265
+ // ["Enter Last Name", "Doe"],
266
+ // ["Select Gender", "Male"],
267
+ // ["Enter Phone Number", "9876543210"],
268
+ // ["Enter Email", "john.doe@test.com"],
269
+ // ["Enter Password", "Test@123"],
270
+ // ["Enter Confirm Password", "Test@123"],
271
+ // ["Click on i agree to Accept Terms and Conditions checkbox"],
272
+ // ["Click on Register"],
273
+ // ["Close browser"]
274
+ // ],
275
+ // userStory: [
276
+ // ["Open browser"],
277
+ // ["navigate to URL','https://shoppersstack.com"],
278
+ // ["Maximize the browser"],
279
+ // ["wait for 10 seconds"],
280
+ // ['click Login button'],
281
+ // ['enter text', 'Email text field', 'raju123456789@gmail.com'],
282
+ // ['enter password', 'password text field', 'Raju@12345'],
283
+ // ['click login button'],
284
+ // ["Close browser", "NA"]
285
+ // ],
286
+ // userStory: [['launch mobile app', 'com.app.abhibus', 'com.abhibus.mobile.ABMainActivity'], ["wait for 2 sec"], ["click on allow"],
287
+ // // ['Tap on Leaving from'],
288
+ // // ["Verify Leaving Is Disabled"],
289
+ // // ["Verify Battery Level is 100"],
290
+ // // ["Get Attribute text of Leaving from "],
291
+ // ["Get X Location of leaving form"],
292
+ // // ["Get Device current Location"],
293
+ // // ['Enter text in source field, bangalore'], ['Tap on item , Bangalore'],
294
+ // // ['Enter chennai in destination field'], ["wait for 2 sec"],
295
+ // // ['Tap on item , Chennai, tamil nadu'], ['Tap on calender'], ['Tap on text 18'],
296
+ // // ['Tap on Search Busses button'], ["wait for 5 sec"],
297
+ // // ['Tap on yolo bus'], ['Tap on seat no Du2'], ['Tap on proceed button'],
298
+ // // ['Tap on tin factory'], ['Tap on ashok pillar'], ['Tap on back button'], ['Enter 123@gmail.com in email address field'],
299
+ // // ['enter 9642952548 in mobile number field'], ['enter ramesh in full name field'], ['enter 24 in age field'], ['tap on male button'],
300
+ // // ['Tap on close button'], ['Tap on yes,i want full refund'], ['Tap on proceed button']
301
+ // ["close app"]
302
+ // ],
303
+ // userStory: [
304
+ // ["Open browser"],
305
+ // ["Navigate to http://49.249.28.218:8888/"],
306
+ // ["maxmize browser"],
307
+ // ["Enter username", "admin"],
308
+ // ["Enter password", "admin"],
309
+ // ["Click on login"],
310
+ // ["Click on leads"],
311
+ // ["Click on create lead icon"],
312
+ // ["Select option 'Mr'"],
313
+ // ["Enter first name", "harris"],
314
+ // ["Enter last name", "jhones"],
315
+ // ["Enter company", "star wenchers"],
316
+ // ["Enter input in Title", "Star"],
317
+ // ["Select lead source", "cold call"],
318
+ // ["Select industry", "banking"],
319
+ // ["Enter annual revenue", "250"],
320
+ // ["Enter no of employees", "100"],
321
+ // ["Enter secondary email", "harries@gmail.com"],
322
+ // ["Enter phone", "8907654321"],
323
+ // ["Enter mobile", "8907654320"],
324
+ // ["Enter fax", "Tara#123"],
325
+ // ["Enter email", "harris@gmail.com"],
326
+ // ["Enter website", "www.ascid.com"],
327
+ // ["Select lead status", "cold"],
328
+ // ["Select rating", "active"],
329
+ // ["Enter input in po box", "training box"],
330
+ // ["Enter city", "Banglore"],
331
+ // ["Enter state", "Karnataka"],
332
+ // ["Enter postal code", "570000"],
333
+ // ["Enter country", "India"],
334
+ // ["Enter input in street", "#123 basavanagudi banglore"],
335
+ // ["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."],
336
+ // ["Click on save"],
337
+ // ["close browser"]
338
+ // ],
339
+ // userStory: [
340
+ // ["Open browser, Navigate to https://www.saucedemo.com/, Maximize the browser"],
341
+ // // ["Enter standard_user as Username, Enter secret_sauce as Password and Click on Login"],
342
+ // ["Enter standard_user , secret_sauce as Username and Password and click on Login"],
343
+ // ["Click on Add to cart of Sauce Labs Bike Light, Click on Shopping cart icon and Click on Checkout"],
344
+ // // ["Add Sauce Labs Bike Light to cart, Click on Shopping cart icon and Click Checkout"],
345
+ // ["Enter Jai in First Name field, Enter Akash in Last Name, Enter 560004 in Zip/Postal Code, Scroll until Continue button is displayed"],
346
+ // ["Click on Continue, Click on Finish, Click on Back Home"],
347
+ // ['close browser']
348
+ // ],
349
+ // userStory: [
350
+ // ["Open browser"],
351
+ // ["Navigate to https://www.saucedemo.com/"],
352
+ // ["Maximize the browser"],
353
+ // ["Enter Username", "standard_user"],
354
+ // ["Enter Password", "secret_sauce"],
355
+ // ["Click on Login"],
356
+ // ["Click on Add to cart of Sauce Labs Bike Light"],
357
+ // ["Click on Shopping cart icon"],
358
+ // ["Click on Checkout"],
359
+ // ["Enter First Name", "Jai"],
360
+ // ["Enter Last Name", "Akash"],
361
+ // ["Enter Zip/Postal Code", "560004"],
362
+ // ["Scroll until Continue button is displayed"],
363
+ // ["Wait for 2 seconds"],
364
+ // ["Click on Continue"],
365
+ // ["Click on Finish"],
366
+ // ["Click on Back Home"],
367
+ // ["Close browser"]
368
+ // ]
369
+ // userStory: [
370
+ // ["Open browser"],
371
+ // ["Navigate to https://testautomationpractice.blogspot.com/"],
372
+ // ["Maximize the browser"],
373
+ // ["Enter Name", "Santosh"],
374
+ // ["Enter Email", "santosh@gmail.com"],
375
+ // ["Enter Phone", "1234567890"],
376
+ // ["In Address enter name from previos step"],
377
+ // // ["Scroll untill drag and drop text is visible"],
378
+ // // ["Drag and drop 'drag me to my target' to 'Drop here'"],
379
+ // ["Wait for 3 second"],
380
+ // // ["Close browser"]
381
+ // ],
382
+ // userStory: [['Open browser', 'NA'],
383
+ // ['Maximize the browser', 'NA'],
384
+ // ['Navigate to https://shoppersstack.com'],
385
+ // ['Verify if https://shoppersstack.com/ is loaded', 'NA'],
386
+ // ['Wait for 10 seconds', 'NA'],
387
+ // ['Click on Login button', 'NA'],
388
+ // ['Enter a valid email address in the Email input field', 'poornaprathu8@gmail.com'],
389
+ // ['Enter a valid password in the Password input field', 'Poornacl$1'],
390
+ // ['Click on Login button', 'NA'],
391
+ // ['Click on the Men products link', 'NA'],
392
+ // ['Click on the ADD TO CART button for a CROCS footwear product', 'NA'],
393
+ // ['Click on the Cart icon', 'NA'],
394
+ // ['Verify the product details in the cart', 'NA'],
395
+ // ['Click on the Buy Now button', 'NA'],
396
+ // ['Close browser', 'NA']
397
+ // ]
398
+ // userStory: [['Open browser'],
399
+ // ['Maximize the browser'],
400
+ // ['Navigate to https://the-internet.herokuapp.com/javascript_alerts?utm_source=chatgpt.com'],
401
+ // ['Wait for 2 seconds'],
402
+ // ['Click on js alert'],
403
+ // ['Click on ok'],
404
+ // ['Wait for 5 seconds'],
405
+ // ['Close browser']
406
+ // ]
407
+ // userStory: [
408
+ // ["Open browser"],
409
+ // ["Navigate to https://www.google.com/"],
410
+ // ["Maximize the browser"],
411
+ // ["start iteration using 'Data1' Dataprovider"],
412
+ // ["enter 'level1' in search field"],
413
+ // ["enter Diwa in search field"],
414
+ // ["start iteration using 'Data1' Dataprovider"],
415
+ // ["enter 'level2' in search field"],
416
+ // ["enter Diwa in search field"],
417
+ // ["End iteration"],
418
+ // ["End iteration"],
419
+ // ["start iteration using 'Data2' Dataprovider"],
420
+ // ["enter 'startIteration1' in search field"],
421
+ // ["enter Diwa in search field"],
422
+ // ["End iteration"],
423
+ // ["click on Gmail link"],
424
+ // ["Close browser"],
425
+ // ]
426
+ // userStory: [['launch mobile app', 'com.app.abhibus', 'com.abhibus.mobile.ABMainActivity'], ["click on allow"],
427
+ // ['Tap on Leaving from'], ['Enter text in source field, bangalore'], ['Tap on item , Bangalore'],
428
+ // ['Enter chennai in destination field'], ["wait for 2 sec"],
429
+ // ['Tap on item , Chennai, tamil nadu'], ['Tap on calender'], ['Tap on text 18'],
430
+ // ['Tap on Search Busses button'], ["wait for 5 sec"],
431
+ // ['Tap on yolo bus'], ['Tap on seat no Du2'], ['Tap on proceed button'],
432
+ // ['Tap on tin factory'], ['Tap on ashok pillar'], ['Tap on back button'], ['Enter 123@gmail.com in email address field'],
433
+ // ['enter 9642952548 in mobile number field'], ['enter ramesh in full name field'], ['enter 24 in age field'], ['tap on male button'],
434
+ // ['Tap on close button'], ['Tap on yes,i want full refund'], ['Tap on proceed button']],
435
+ // userStory: [
436
+ // ["Open browser"],
437
+ // ["Navigate to https://www.saucedemo.com/"],
438
+ // // ["verify navigated url is 'https://www.saucedemo.com/' "],
439
+ // ["Maximize the browser"],
440
+ // // ["enter input in phone number field, 7993710733"],
441
+ // // ["verify Username is dispayed"],
442
+ // // ["get hight of username"],
443
+ // // ["Wait for 10 sec and enter standard_user in username "],
444
+ // ["Enter Username", "standard_user"],
445
+ // ["Enter Password", "secret_sauce"],
446
+ // ["Click on Login"],
447
+ // ["scroll Vertically Till Sauce Labs Onesie Is Visible"]
448
+ // // ["Close browser"]
449
+ // ],
450
+ // userStory: [
451
+ // ["Open browser"],
452
+ // ["Navigate to Url https://parabank.parasoft.com/parabank/index.htm"],
453
+ // ["Maximize browser"],
454
+ // ["Click on register"],
455
+ // ["Enter First name", "harry"],
456
+ // ["Enter Last name", "potter"],
457
+ // ["Enter Address", "basvangudi 1st main cross Banglore"],
458
+ // ["Enter City", "Banglore"],
459
+ // ["Enter State", "karnataka"],
460
+ // ["Enter Zip code", "571124"],
461
+ // ["Enter Phone", "9045773662"],
462
+ // ["Enter SSN", "4576"],
463
+ // ["Enter input in Username below SSN", "harry"],
464
+ // ["Enter input in Password above Confirm", "Harry@123"],
465
+ // ["Enter input in Confirm", "Harry@123"],
466
+ // ["Click on register button"],
467
+ // ["Close browser"]
468
+ // ],
@@ -22,7 +22,7 @@ exports.sameActionHelper = {
22
22
  MOB_GetDriverInstance: "GetDriverInstance",
23
23
  MOB_GetCurrentWindowHandle: "GetCurrentWindowHandle",
24
24
  MOB_GetTagName: "GetTagName",
25
- MOB_GetScreenshotAs: "GetScreenshotAs",
25
+ MOB_GetScreenshotOfElement: "GetScreenshotAs",
26
26
  MOB_GetX: "GetXLocationOfWebElement",
27
27
  MOB_GetLocation: "GetLocation",
28
28
  MOB_GetY: "GetYLocationOfWebElement",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ff-automationv2",
3
- "version": "2.2.26",
3
+ "version": "2.2.28",
4
4
  "private": false,
5
5
  "type": "commonjs",
6
6
  "description": "This lib is used to automate the manual testcase",