pw-automation-framework 2.0.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 (111) hide show
  1. package/README.md +93 -0
  2. package/bin/lexxit-automation-framework.js +427 -0
  3. package/dist/app.d.ts +2 -0
  4. package/dist/app.js +26 -0
  5. package/dist/app.js.map +1 -0
  6. package/dist/controllers/controller.d.ts +57 -0
  7. package/dist/controllers/controller.js +263 -0
  8. package/dist/controllers/controller.js.map +1 -0
  9. package/dist/core/BrowserManager.d.ts +46 -0
  10. package/dist/core/BrowserManager.js +377 -0
  11. package/dist/core/BrowserManager.js.map +1 -0
  12. package/dist/core/PlaywrightEngine.d.ts +16 -0
  13. package/dist/core/PlaywrightEngine.js +246 -0
  14. package/dist/core/PlaywrightEngine.js.map +1 -0
  15. package/dist/core/ScreenshotManager.d.ts +10 -0
  16. package/dist/core/ScreenshotManager.js +28 -0
  17. package/dist/core/ScreenshotManager.js.map +1 -0
  18. package/dist/core/TestData.d.ts +12 -0
  19. package/dist/core/TestData.js +29 -0
  20. package/dist/core/TestData.js.map +1 -0
  21. package/dist/core/TestExecutor.d.ts +16 -0
  22. package/dist/core/TestExecutor.js +355 -0
  23. package/dist/core/TestExecutor.js.map +1 -0
  24. package/dist/core/handlers/AllHandlers.d.ts +116 -0
  25. package/dist/core/handlers/AllHandlers.js +648 -0
  26. package/dist/core/handlers/AllHandlers.js.map +1 -0
  27. package/dist/core/handlers/BaseHandler.d.ts +16 -0
  28. package/dist/core/handlers/BaseHandler.js +27 -0
  29. package/dist/core/handlers/BaseHandler.js.map +1 -0
  30. package/dist/core/handlers/ClickHandler.d.ts +34 -0
  31. package/dist/core/handlers/ClickHandler.js +359 -0
  32. package/dist/core/handlers/ClickHandler.js.map +1 -0
  33. package/dist/core/handlers/CustomCodeHandler.d.ts +35 -0
  34. package/dist/core/handlers/CustomCodeHandler.js +102 -0
  35. package/dist/core/handlers/CustomCodeHandler.js.map +1 -0
  36. package/dist/core/handlers/DropdownHandler.d.ts +43 -0
  37. package/dist/core/handlers/DropdownHandler.js +304 -0
  38. package/dist/core/handlers/DropdownHandler.js.map +1 -0
  39. package/dist/core/handlers/InputHandler.d.ts +24 -0
  40. package/dist/core/handlers/InputHandler.js +197 -0
  41. package/dist/core/handlers/InputHandler.js.map +1 -0
  42. package/dist/core/registry/ActionRegistry.d.ts +8 -0
  43. package/dist/core/registry/ActionRegistry.js +35 -0
  44. package/dist/core/registry/ActionRegistry.js.map +1 -0
  45. package/dist/installer/frameworkLauncher.d.ts +31 -0
  46. package/dist/installer/frameworkLauncher.js +198 -0
  47. package/dist/installer/frameworkLauncher.js.map +1 -0
  48. package/dist/queue/ExecutionQueue.d.ts +52 -0
  49. package/dist/queue/ExecutionQueue.js +175 -0
  50. package/dist/queue/ExecutionQueue.js.map +1 -0
  51. package/dist/routes/api.routes.d.ts +2 -0
  52. package/dist/routes/api.routes.js +16 -0
  53. package/dist/routes/api.routes.js.map +1 -0
  54. package/dist/server.d.ts +1 -0
  55. package/dist/server.js +30 -0
  56. package/dist/server.js.map +1 -0
  57. package/dist/types/types.d.ts +135 -0
  58. package/dist/types/types.js +4 -0
  59. package/dist/types/types.js.map +1 -0
  60. package/dist/utils/elementHighlight.d.ts +35 -0
  61. package/dist/utils/elementHighlight.js +136 -0
  62. package/dist/utils/elementHighlight.js.map +1 -0
  63. package/dist/utils/locatorHelper.d.ts +7 -0
  64. package/dist/utils/locatorHelper.js +53 -0
  65. package/dist/utils/locatorHelper.js.map +1 -0
  66. package/dist/utils/logger.d.ts +12 -0
  67. package/dist/utils/logger.js +35 -0
  68. package/dist/utils/logger.js.map +1 -0
  69. package/dist/utils/response.d.ts +4 -0
  70. package/dist/utils/response.js +25 -0
  71. package/dist/utils/response.js.map +1 -0
  72. package/dist/utils/responseFormatter.d.ts +78 -0
  73. package/dist/utils/responseFormatter.js +123 -0
  74. package/dist/utils/responseFormatter.js.map +1 -0
  75. package/dist/utils/sseManager.d.ts +32 -0
  76. package/dist/utils/sseManager.js +122 -0
  77. package/dist/utils/sseManager.js.map +1 -0
  78. package/lexxit-automation-framework-2.0.0.tgz +0 -0
  79. package/npmignore +5 -0
  80. package/package.json +36 -0
  81. package/scripts/postinstall.js +52 -0
  82. package/src/app.ts +27 -0
  83. package/src/controllers/controller.ts +282 -0
  84. package/src/core/BrowserManager.ts +398 -0
  85. package/src/core/PlaywrightEngine.ts +371 -0
  86. package/src/core/ScreenshotManager.ts +25 -0
  87. package/src/core/TestData.ts +25 -0
  88. package/src/core/TestExecutor.ts +436 -0
  89. package/src/core/handlers/AllHandlers.ts +626 -0
  90. package/src/core/handlers/BaseHandler.ts +41 -0
  91. package/src/core/handlers/ClickHandler.ts +482 -0
  92. package/src/core/handlers/CustomCodeHandler.ts +123 -0
  93. package/src/core/handlers/DropdownHandler.ts +438 -0
  94. package/src/core/handlers/InputHandler.ts +192 -0
  95. package/src/core/registry/ActionRegistry.ts +31 -0
  96. package/src/installer/frameworkLauncher.ts +242 -0
  97. package/src/installer/install.sh +107 -0
  98. package/src/public/dashboard.html +540 -0
  99. package/src/public/queue-monitor.html +190 -0
  100. package/src/queue/ExecutionQueue.ts +200 -0
  101. package/src/routes/api.routes.ts +16 -0
  102. package/src/server.ts +29 -0
  103. package/src/types/types.ts +169 -0
  104. package/src/utils/elementHighlight.ts +174 -0
  105. package/src/utils/locatorHelper.ts +49 -0
  106. package/src/utils/logger.ts +40 -0
  107. package/src/utils/response.ts +27 -0
  108. package/src/utils/responseFormatter.ts +167 -0
  109. package/src/utils/sseManager.ts +127 -0
  110. package/tsconfig.json +18 -0
  111. package/videos/fb1b94b6-6639-4c9a-82bb-63572606f403/page@5bd5c6c8b62baa700e9810cdd64f5c49.webm +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlaywrightEngine.js","sourceRoot":"","sources":["../../src/core/PlaywrightEngine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { Page } from "playwright";
2
+ import { ScreenshotMode } from "../types/types";
3
+ export declare class ScreenshotManager {
4
+ private readonly mode;
5
+ constructor(mode?: ScreenshotMode);
6
+ onPass(page?: Page | null): Promise<string | undefined>;
7
+ onFail(page?: Page | null): Promise<string | undefined>;
8
+ force(page?: Page | null): Promise<string | undefined>;
9
+ private capture;
10
+ }
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ScreenshotManager = void 0;
4
+ class ScreenshotManager {
5
+ constructor(mode = "on_failure") { this.mode = mode; }
6
+ async onPass(page) {
7
+ return this.mode === "always" ? this.capture(page) : undefined;
8
+ }
9
+ async onFail(page) {
10
+ return this.mode !== "never" ? this.capture(page) : undefined;
11
+ }
12
+ async force(page) {
13
+ return this.capture(page);
14
+ }
15
+ async capture(page) {
16
+ if (!page || page.isClosed())
17
+ return undefined;
18
+ try {
19
+ const buf = await page.screenshot({ type: "png", fullPage: false });
20
+ return buf.toString("base64");
21
+ }
22
+ catch {
23
+ return undefined;
24
+ }
25
+ }
26
+ }
27
+ exports.ScreenshotManager = ScreenshotManager;
28
+ //# sourceMappingURL=ScreenshotManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScreenshotManager.js","sourceRoot":"","sources":["../../src/core/ScreenshotManager.ts"],"names":[],"mappings":";;;AAGA,MAAa,iBAAiB;IAE5B,YAAY,OAAuB,YAAY,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;IAEtE,KAAK,CAAC,MAAM,CAAC,IAAkB;QAC7B,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACjE,CAAC;IACD,KAAK,CAAC,MAAM,CAAC,IAAkB;QAC7B,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAChE,CAAC;IACD,KAAK,CAAC,KAAK,CAAC,IAAkB;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,IAAkB;QACtC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE,OAAO,SAAS,CAAC;QAC/C,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;YACpE,OAAO,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,SAAS,CAAC;QAAC,CAAC;IAC/B,CAAC;CACF;AArBD,8CAqBC"}
@@ -0,0 +1,12 @@
1
+ import { ITestData } from "../types/types";
2
+ export declare class TestData implements ITestData {
3
+ private store;
4
+ set(key: string, value: unknown): void;
5
+ has(key: string): boolean;
6
+ getAll(): Record<string, unknown>;
7
+ delete(key: string): void;
8
+ clear(): void;
9
+ get(key: string): unknown;
10
+ /** Resolve testdata("key") references in arg strings */
11
+ resolve(value: unknown): unknown;
12
+ }
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TestData = void 0;
4
+ class TestData {
5
+ constructor() {
6
+ this.store = {};
7
+ }
8
+ set(key, value) { this.store[key] = value; }
9
+ has(key) { return key in this.store; }
10
+ getAll() { return { ...this.store }; }
11
+ delete(key) { delete this.store[key]; }
12
+ clear() { this.store = {}; }
13
+ get(key) {
14
+ if (!(key in this.store))
15
+ throw new Error(`TestData: key "${key}" not found. Available: [${Object.keys(this.store).join(", ")}]`);
16
+ return this.store[key];
17
+ }
18
+ /** Resolve testdata("key") references in arg strings */
19
+ resolve(value) {
20
+ if (typeof value !== "string")
21
+ return value;
22
+ const m = value.match(/^testdata\("(.+?)"\)$/i);
23
+ if (m)
24
+ return this.get(m[1]);
25
+ return value;
26
+ }
27
+ }
28
+ exports.TestData = TestData;
29
+ //# sourceMappingURL=TestData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TestData.js","sourceRoot":"","sources":["../../src/core/TestData.ts"],"names":[],"mappings":";;;AAEA,MAAa,QAAQ;IAArB;QACU,UAAK,GAA4B,EAAE,CAAC;IAqB9C,CAAC;IAnBC,GAAG,CAAC,GAAW,EAAE,KAAc,IAAa,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IACtE,GAAG,CAAC,GAAW,IAA6B,OAAO,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACvE,MAAM,KAAsC,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACvE,MAAM,CAAC,GAAW,IAA0B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACrE,KAAK,KAAuC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC;IAE9D,GAAG,CAAC,GAAW;QACb,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,kBAAkB,GAAG,4BAA4B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1G,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAED,wDAAwD;IACxD,OAAO,CAAC,KAAc;QACpB,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC5C,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAChD,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAtBD,4BAsBC"}
@@ -0,0 +1,16 @@
1
+ import { RequestPayload, ExecutionResult } from "../types/types";
2
+ type ProgressCallback = (update: Partial<{
3
+ completed_scripts: number;
4
+ completed_steps: number;
5
+ passed_steps: number;
6
+ failed_steps: number;
7
+ skipped_steps: number;
8
+ }>) => void;
9
+ type CancelCheck = () => boolean;
10
+ export declare class TestExecutor {
11
+ static run(payload: RequestPayload, executionId: string, onProgress?: ProgressCallback, isCancelled?: CancelCheck): Promise<ExecutionResult>;
12
+ private static runSequential;
13
+ private static runParallel;
14
+ private static runScript;
15
+ }
16
+ export {};
@@ -0,0 +1,355 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TestExecutor = void 0;
4
+ const TestData_1 = require("./TestData");
5
+ const PlaywrightEngine_1 = require("./PlaywrightEngine");
6
+ const sseManager_1 = require("../utils/sseManager");
7
+ const logger_1 = require("../utils/logger");
8
+ const log = logger_1.Logger.create("TestExecutor");
9
+ class TestExecutor {
10
+ static async run(payload, executionId, onProgress, isCancelled) {
11
+ const startTime = Date.now();
12
+ const stopOnFailure = payload.stop_on_failure ?? true;
13
+ const runParallel = payload.parallel ?? false;
14
+ const maxParallel = payload.max_parallel ?? 5;
15
+ const checkCancel = isCancelled ?? (() => false);
16
+ sseManager_1.sseManager.emit(executionId, "execution_start", {
17
+ message: "Execution started",
18
+ total_scripts: payload.scripts.length,
19
+ parallel: runParallel,
20
+ });
21
+ let scriptResults;
22
+ if (runParallel) {
23
+ scriptResults = await TestExecutor.runParallel(payload.scripts, executionId, stopOnFailure, maxParallel, onProgress, checkCancel);
24
+ }
25
+ else {
26
+ scriptResults = await TestExecutor.runSequential(payload.scripts, executionId, stopOnFailure, onProgress, checkCancel);
27
+ }
28
+ const wasCancelled = checkCancel();
29
+ const overall_status = wasCancelled
30
+ ? "CANCELLED"
31
+ : scriptResults.every(s => s.overall_status === "PASS") ? "PASS" : "FAIL";
32
+ const duration_ms = Date.now() - startTime;
33
+ const result = {
34
+ executionId,
35
+ overall_status: overall_status,
36
+ total_scripts: scriptResults.length,
37
+ passed: scriptResults.filter(s => s.overall_status === "PASS").length,
38
+ failed: scriptResults.filter(s => s.overall_status === "FAIL").length,
39
+ duration_ms,
40
+ results: scriptResults,
41
+ };
42
+ sseManager_1.sseManager.emit(executionId, "execution_complete", result);
43
+ log.info(`Execution ${executionId} → ${overall_status} (${duration_ms}ms)`);
44
+ return result;
45
+ }
46
+ // ─── Sequential ────────────────────────────────────────────────────────────
47
+ static async runSequential(scripts, executionId, stopOnFailure, onProgress, isCancelled) {
48
+ const results = [];
49
+ let completed = 0;
50
+ for (const script of scripts) {
51
+ if (isCancelled?.())
52
+ break;
53
+ const result = await TestExecutor.runScript(script, executionId, stopOnFailure, onProgress, isCancelled);
54
+ results.push(result);
55
+ onProgress?.({ completed_scripts: ++completed });
56
+ }
57
+ return results;
58
+ }
59
+ // ─── Parallel ──────────────────────────────────────────────────────────────
60
+ static async runParallel(scripts, executionId, stopOnFailure, maxParallel, onProgress, isCancelled) {
61
+ const results = new Array(scripts.length);
62
+ let running = 0, ptr = 0, completed = 0;
63
+ return new Promise((resolve) => {
64
+ const tryNext = () => {
65
+ while (running < maxParallel && ptr < scripts.length) {
66
+ if (isCancelled?.()) {
67
+ resolve(results.filter(Boolean));
68
+ return;
69
+ }
70
+ const script = scripts[ptr];
71
+ const idx = ptr++;
72
+ running++;
73
+ TestExecutor.runScript(script, executionId, stopOnFailure, onProgress, isCancelled)
74
+ .then((result) => {
75
+ results[idx] = result;
76
+ running--;
77
+ completed++;
78
+ onProgress?.({ completed_scripts: completed });
79
+ tryNext();
80
+ if (completed === scripts.length)
81
+ resolve(results);
82
+ })
83
+ .catch(() => {
84
+ running--;
85
+ completed++;
86
+ tryNext();
87
+ if (completed === scripts.length)
88
+ resolve(results.filter(Boolean));
89
+ });
90
+ }
91
+ };
92
+ tryNext();
93
+ });
94
+ }
95
+ // ─── Single Script ─────────────────────────────────────────────────────────
96
+ static async runScript(script, executionId, stopOnFailure, onProgress, isCancelled) {
97
+ const scriptName = script.test_case_name || script.test_script_uid;
98
+ const startTime = Date.now();
99
+ const scriptStop = script.stop_on_failure ?? stopOnFailure;
100
+ const tConfig = {
101
+ testData: new TestData_1.TestData(),
102
+ screenshot_mode: script.screenshot_mode || "on_failure",
103
+ record_video: script.record_video || false,
104
+ headless: script.headless || false,
105
+ executionId,
106
+ timeout: 30000,
107
+ };
108
+ const engine = new PlaywrightEngine_1.PlaywrightEngine(tConfig);
109
+ const stepResults = [];
110
+ sseManager_1.sseManager.emit(executionId, "script_start", {
111
+ test_script_uid: script.test_script_uid,
112
+ test_case_name: scriptName,
113
+ total_steps: script.steps.length,
114
+ browser: script.browser || "chromium",
115
+ });
116
+ log.info(`Script "${scriptName}" | ${script.steps.length} steps`);
117
+ let failureOccurred = false;
118
+ let failedStepName = "";
119
+ let passed = 0, failed = 0, skipped = 0;
120
+ for (let i = 0; i < script.steps.length; i++) {
121
+ const step = script.steps[i];
122
+ const stepNumber = i + 1;
123
+ const stepStart = Date.now();
124
+ // ── Cancellation check ─────────────────────────────────────────────────
125
+ if (isCancelled?.()) {
126
+ // Mark remaining steps as SKIP with cancel reason
127
+ const remaining = script.steps.slice(i);
128
+ for (let j = 0; j < remaining.length; j++) {
129
+ const s = remaining[j];
130
+ const r = {
131
+ uid: s.uid,
132
+ step_name: s.step_name,
133
+ step_script: s.step_script,
134
+ status: "SKIP",
135
+ comments: "Skipped — execution was cancelled",
136
+ skip_reason: "CANCELLED",
137
+ duration_ms: 0,
138
+ start_time: new Date().toISOString(),
139
+ label: s.label,
140
+ value: s.value,
141
+ };
142
+ stepResults.push(r);
143
+ skipped++;
144
+ sseManager_1.sseManager.emit(executionId, "step_complete", {
145
+ step_number: i + j + 1,
146
+ total_steps: script.steps.length,
147
+ step_name: s.step_name,
148
+ status: "SKIP",
149
+ comments: r.comments,
150
+ skip_reason: r.skip_reason,
151
+ duration_ms: 0,
152
+ label: s.label,
153
+ value: s.value,
154
+ });
155
+ }
156
+ break;
157
+ }
158
+ // ── Failure skip ───────────────────────────────────────────────────────
159
+ if (failureOccurred && stopOnFailure) {
160
+ const r = {
161
+ uid: step.uid,
162
+ step_name: step.step_name,
163
+ step_script: step.step_script,
164
+ status: "SKIP",
165
+ comments: `Skipped — "${failedStepName}" failed`,
166
+ skip_reason: `Predecessor "${failedStepName}" failed`,
167
+ duration_ms: 0,
168
+ start_time: new Date().toISOString(),
169
+ label: step.label,
170
+ value: step.value,
171
+ };
172
+ stepResults.push(r);
173
+ skipped++;
174
+ onProgress?.({ completed_steps: passed + failed + skipped, skipped_steps: skipped });
175
+ sseManager_1.sseManager.emit(executionId, "step_complete", {
176
+ step_number: stepNumber,
177
+ total_steps: script.steps.length,
178
+ step_name: step.step_name,
179
+ step_script: step.step_script,
180
+ label: step.label,
181
+ status: "SKIP",
182
+ comments: r.comments,
183
+ skip_reason: r.skip_reason,
184
+ duration_ms: 0,
185
+ });
186
+ log.warn(`SKIP #${stepNumber}: "${step.step_name}"`);
187
+ continue;
188
+ }
189
+ // ── Execute ────────────────────────────────────────────────────────────
190
+ sseManager_1.sseManager.emit(executionId, "step_start", {
191
+ step_number: stepNumber,
192
+ step_name: step.step_name,
193
+ step_script: step.step_script,
194
+ obj_uid: step.obj_uid,
195
+ page_uid: step.page_uid,
196
+ });
197
+ // let comments = "";
198
+ // let screenshot = "";
199
+ // let status: StepStatus = "FAIL";
200
+ // let expectedResult: string | undefined = undefined;
201
+ // try {
202
+ // const result = await engine.execute(step.step_script,step.label)
203
+ // comments = result?.comments || "";
204
+ // screenshot = result?.screenshot || "";
205
+ // status = result?.status === "Pass" ? "PASS" : "FAIL";
206
+ // expectedResult = result?.data?.expected_result || undefined;
207
+ // } catch (error: any) {
208
+ // comments = `Execution error: ${error instanceof Error ? error.message : String(error)}`;
209
+ // status = "FAIL";
210
+ // log.error(`CRASH #${stepNumber}: ${error.message}`);
211
+ // }
212
+ let comments = "";
213
+ let screenshot = "";
214
+ let status = "FAIL";
215
+ let expectedResult = undefined;
216
+ let result = undefined;
217
+ try {
218
+ result = await engine.execute(step.step_script, step.label);
219
+ comments = result?.comments || "";
220
+ screenshot = result?.screenshot || "";
221
+ status = result?.status === "Pass" ? "PASS" : "FAIL";
222
+ expectedResult = result?.data?.expected_result || undefined;
223
+ }
224
+ catch (error) {
225
+ comments = `Execution error: ${error instanceof Error ? error.message : String(error)}`;
226
+ status = "FAIL";
227
+ log.error(`CRASH #${stepNumber}: ${error.message}`);
228
+ }
229
+ console.log("🔴 status:", status, "| failure_type:", result?.data?.failure_type); // ← ADD HERE
230
+ const duration_ms = Date.now() - stepStart;
231
+ if (status === "PASS")
232
+ passed++;
233
+ else {
234
+ failed++;
235
+ if (!failureOccurred) {
236
+ failureOccurred = true;
237
+ failedStepName = step.step_name;
238
+ }
239
+ }
240
+ onProgress?.({
241
+ completed_steps: passed + failed + skipped,
242
+ passed_steps: passed,
243
+ failed_steps: failed,
244
+ skipped_steps: skipped,
245
+ });
246
+ const stepResult = {
247
+ uid: step.uid,
248
+ obj_uid: step.obj_uid,
249
+ step_name: step.step_name,
250
+ step_script: step.step_script,
251
+ status,
252
+ page_uid: step.page_uid,
253
+ comments,
254
+ screenshot,
255
+ duration_ms,
256
+ start_time: new Date(Date.now() - duration_ms).toISOString(),
257
+ expected_result: expectedResult,
258
+ };
259
+ // ── ELEMENT_NOT_FOUND: capture page source + call comparison API ────────
260
+ if (status === "FAIL" && result?.data?.failure_type === "ELEMENT_NOT_FOUND") {
261
+ console.log("🔍 page_uid:", step.page_uid, "| obj_uid:", step.obj_uid, "| app_id:", script.app_id);
262
+ try {
263
+ const pageSource = await engine.getPageSource();
264
+ const subUrl = await engine.getCurrentURL();
265
+ console.log(`🌐 Current URL: ${subUrl}`);
266
+ // if (pageSource) {
267
+ // const fs = require("fs");
268
+ // const path = require("path");
269
+ // const folder = "captured_pagesource";
270
+ // fs.mkdirSync(folder, { recursive: true });
271
+ // const timestamp = new Date().toISOString().replace(/[:.]/g, "-");
272
+ // const fileName = path.join(folder, `pagesource_${step.uid}_${timestamp}.html`);
273
+ // fs.writeFileSync(fileName, pageSource, "utf-8");
274
+ // console.log(`✅ Page source saved: ${fileName}`);
275
+ // }
276
+ if (step.page_uid && pageSource) {
277
+ console.log(`🔍 Step failed at index: ${i} | uid: ${step.uid} | obj_uid: ${step.obj_uid}`);
278
+ const diffResp = await fetch("http://localhost:5005/api/ui/compare", {
279
+ method: "POST",
280
+ headers: { "Content-Type": "application/json" },
281
+ body: JSON.stringify({
282
+ app_id: script.app_id,
283
+ uid: step.page_uid,
284
+ obj_uid: step.obj_uid,
285
+ new_pagesource: pageSource,
286
+ sub_url: subUrl,
287
+ mode: "html",
288
+ failed_step_index: i,
289
+ }),
290
+ signal: AbortSignal.timeout(60000),
291
+ });
292
+ console.log("📡 comparison API status:", diffResp.status);
293
+ const comparisonResult = await diffResp.json();
294
+ console.log("📦 comparison result:", JSON.stringify(comparisonResult));
295
+ stepResult.comparison_code = comparisonResult;
296
+ console.log("✅ comparison_code set:", JSON.stringify(stepResult.comparison_code));
297
+ // stepResult.comparison_code = await diffResp.json();
298
+ }
299
+ }
300
+ catch (err) {
301
+ stepResult.comparison_code = { success: false, error: err.message };
302
+ console.error(`❌ Page source capture failed: ${err.message}`);
303
+ }
304
+ }
305
+ // ────────────────────────────────────────────────────────────────────────
306
+ console.log("📦 stepResult before push:", JSON.stringify(stepResult));
307
+ stepResults.push(stepResult);
308
+ sseManager_1.sseManager.emit(executionId, "step_complete", {
309
+ step_number: stepNumber,
310
+ total_steps: script.steps.length,
311
+ step_name: step.step_name,
312
+ step_script: step.step_script,
313
+ status,
314
+ comments,
315
+ screenshot,
316
+ duration_ms,
317
+ obj_uid: step.obj_uid,
318
+ comparison_code: stepResult.comparison_code,
319
+ });
320
+ log.info(`${status.padEnd(4)} #${stepNumber}: "${step.step_name}" (${duration_ms}ms)`);
321
+ }
322
+ await engine.forceClose();
323
+ const overall_status = isCancelled?.() ? "FAIL"
324
+ : failed > 0 ? "FAIL" : "PASS";
325
+ const duration_ms = Date.now() - startTime;
326
+ const scriptResult = {
327
+ test_script_uid: script.test_script_uid || "",
328
+ test_case_name: scriptName,
329
+ step_results: stepResults,
330
+ overall_status: overall_status,
331
+ app_id: script.app_id,
332
+ duration_ms,
333
+ start_time: new Date(Date.now() - duration_ms).toISOString(),
334
+ browser: script.browser,
335
+ passed_steps: passed,
336
+ failed_steps: failed,
337
+ skipped_steps: skipped,
338
+ total_steps: script.steps.length,
339
+ };
340
+ sseManager_1.sseManager.emit(executionId, "script_complete", {
341
+ test_script_uid: script.test_script_uid,
342
+ test_case_name: scriptName,
343
+ overall_status,
344
+ duration_ms,
345
+ passed_steps: passed,
346
+ failed_steps: failed,
347
+ skipped_steps: skipped,
348
+ total_steps: script.steps.length,
349
+ });
350
+ log.info(`Script "${scriptName}" → ${overall_status} | ✅${passed} ❌${failed} ⏭${skipped}`);
351
+ return scriptResult;
352
+ }
353
+ }
354
+ exports.TestExecutor = TestExecutor;
355
+ //# sourceMappingURL=TestExecutor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TestExecutor.js","sourceRoot":"","sources":["../../src/core/TestExecutor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,116 @@
1
+ import { Page } from "playwright";
2
+ import { ActionResponse, TestCaseConfig } from "../../types/types";
3
+ import { BaseHandler } from "./BaseHandler";
4
+ export declare class AssertionHandler extends BaseHandler {
5
+ constructor(tConfig: TestCaseConfig, page: Page);
6
+ getActions(): {
7
+ verifytext: (args: string[]) => Promise<ActionResponse>;
8
+ verifytextcontains: (args: string[]) => Promise<ActionResponse>;
9
+ verifytextnotequal: (args: string[]) => Promise<ActionResponse>;
10
+ verifyvalue: (args: string[]) => Promise<ActionResponse>;
11
+ verifyvisible: (args: string[]) => Promise<ActionResponse>;
12
+ verifyhidden: (args: string[]) => Promise<ActionResponse>;
13
+ verifyenabled: (args: string[]) => Promise<ActionResponse>;
14
+ verifydisabled: (args: string[]) => Promise<ActionResponse>;
15
+ verifyurl: (args: string[]) => Promise<ActionResponse>;
16
+ verifypartialurl: (args: string[]) => Promise<ActionResponse>;
17
+ verifyelementcount: (args: string[]) => Promise<ActionResponse>;
18
+ verifyattribute: (args: string[]) => Promise<ActionResponse>;
19
+ verifychecked: (args: string[]) => Promise<ActionResponse>;
20
+ verifyunchecked: (args: string[]) => Promise<ActionResponse>;
21
+ gettext: (args: string[]) => Promise<ActionResponse>;
22
+ getattribute: (args: string[]) => Promise<ActionResponse>;
23
+ assertequal: (args: string[]) => Promise<ActionResponse>;
24
+ assertnotequal: (args: string[]) => Promise<ActionResponse>;
25
+ };
26
+ verifyText(args: string[]): Promise<ActionResponse>;
27
+ verifyTextContains(args: string[]): Promise<ActionResponse>;
28
+ verifyTextNotEqual(args: string[]): Promise<ActionResponse>;
29
+ verifyValue(args: string[]): Promise<ActionResponse>;
30
+ verifyVisible(args: string[]): Promise<ActionResponse>;
31
+ verifyHidden(args: string[]): Promise<ActionResponse>;
32
+ verifyEnabled(args: string[]): Promise<ActionResponse>;
33
+ verifyDisabled(args: string[]): Promise<ActionResponse>;
34
+ verifyURL(args: string[]): Promise<ActionResponse>;
35
+ verifyPartialURL(args: string[]): Promise<ActionResponse>;
36
+ verifyElementCount(args: string[]): Promise<ActionResponse>;
37
+ verifyAttribute(args: string[]): Promise<ActionResponse>;
38
+ verifyChecked(args: string[]): Promise<ActionResponse>;
39
+ verifyUnchecked(args: string[]): Promise<ActionResponse>;
40
+ getText(args: string[]): Promise<ActionResponse>;
41
+ getAttribute(args: string[]): Promise<ActionResponse>;
42
+ assertEqual(args: string[]): Promise<ActionResponse>;
43
+ assertNotEqual(args: string[]): Promise<ActionResponse>;
44
+ }
45
+ export declare class WaitHandler extends BaseHandler {
46
+ constructor(tConfig: TestCaseConfig, page: Page);
47
+ getActions(): {
48
+ waitforelement: (args: string[]) => Promise<ActionResponse>;
49
+ waitforelementhidden: (args: string[]) => Promise<ActionResponse>;
50
+ waitforurl: (args: string[]) => Promise<ActionResponse>;
51
+ waitfortitle: (args: string[]) => Promise<ActionResponse>;
52
+ waitforpageload: (args: string[]) => Promise<ActionResponse>;
53
+ waitfornetworkidle: (args: string[]) => Promise<ActionResponse>;
54
+ waitfortextpresent: (args: string[]) => Promise<ActionResponse>;
55
+ sleep: (args: string[]) => Promise<ActionResponse>;
56
+ };
57
+ waitForElement(args: string[]): Promise<ActionResponse>;
58
+ waitForElementHidden(args: string[]): Promise<ActionResponse>;
59
+ waitForURL(args: string[]): Promise<ActionResponse>;
60
+ waitForTitle(args: string[]): Promise<ActionResponse>;
61
+ waitForPageLoad(args: string[]): Promise<ActionResponse>;
62
+ waitForNetworkIdle(args: string[]): Promise<ActionResponse>;
63
+ waitForTextPresent(args: string[]): Promise<ActionResponse>;
64
+ sleep(args: string[]): Promise<ActionResponse>;
65
+ }
66
+ export declare class KeyboardHandler extends BaseHandler {
67
+ constructor(tConfig: TestCaseConfig, page: Page);
68
+ getActions(): {
69
+ presskey: (args: string[]) => Promise<ActionResponse>;
70
+ presskeyon: (args: string[]) => Promise<ActionResponse>;
71
+ keysendenter: (args: string[]) => Promise<ActionResponse>;
72
+ keysendtab: (args: string[]) => Promise<ActionResponse>;
73
+ keysendesc: (args: string[]) => Promise<ActionResponse>;
74
+ keycombo: (args: string[]) => Promise<ActionResponse>;
75
+ selectall: (args: string[]) => Promise<ActionResponse>;
76
+ copytext: (args: string[]) => Promise<ActionResponse>;
77
+ pastetext: (args: string[]) => Promise<ActionResponse>;
78
+ };
79
+ pressKey(args: string[]): Promise<ActionResponse>;
80
+ pressKeyOn(args: string[]): Promise<ActionResponse>;
81
+ sendEnter(args: string[]): Promise<ActionResponse>;
82
+ sendTab(args: string[]): Promise<ActionResponse>;
83
+ sendEsc(args: string[]): Promise<ActionResponse>;
84
+ keyCombo(args: string[]): Promise<ActionResponse>;
85
+ selectAll(args: string[]): Promise<ActionResponse>;
86
+ copyText(args: string[]): Promise<ActionResponse>;
87
+ pasteText(args: string[]): Promise<ActionResponse>;
88
+ }
89
+ export declare class CheckboxHandler extends BaseHandler {
90
+ constructor(tConfig: TestCaseConfig, page: Page);
91
+ getActions(): {
92
+ checkcheckbox: (args: string[]) => Promise<ActionResponse>;
93
+ uncheckcheckbox: (args: string[]) => Promise<ActionResponse>;
94
+ togglecheckbox: (args: string[]) => Promise<ActionResponse>;
95
+ selectradio: (args: string[]) => Promise<ActionResponse>;
96
+ };
97
+ check(args: string[]): Promise<ActionResponse>;
98
+ uncheck(args: string[]): Promise<ActionResponse>;
99
+ toggle(args: string[]): Promise<ActionResponse>;
100
+ selectRadio(args: string[]): Promise<ActionResponse>;
101
+ }
102
+ export declare class TableHandler extends BaseHandler {
103
+ constructor(tConfig: TestCaseConfig, page: Page);
104
+ getActions(): {
105
+ gettablerowcount: (args: string[]) => Promise<ActionResponse>;
106
+ gettablecellvalue: (args: string[]) => Promise<ActionResponse>;
107
+ verifytablecell: (args: string[]) => Promise<ActionResponse>;
108
+ clicktablerow: (args: string[]) => Promise<ActionResponse>;
109
+ gettablecolumnvalues: (args: string[]) => Promise<ActionResponse>;
110
+ };
111
+ getTableRowCount(args: string[]): Promise<ActionResponse>;
112
+ getTableCellValue(args: string[]): Promise<ActionResponse>;
113
+ verifyTableCell(args: string[]): Promise<ActionResponse>;
114
+ clickTableRow(args: string[]): Promise<ActionResponse>;
115
+ getTableColumnValues(args: string[]): Promise<ActionResponse>;
116
+ }