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,263 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ApiController = void 0;
4
+ const ExecutionQueue_1 = require("../queue/ExecutionQueue");
5
+ const sseManager_1 = require("../utils/sseManager");
6
+ const responseFormatter_1 = require("../utils/responseFormatter");
7
+ const logger_1 = require("../utils/logger");
8
+ const log = logger_1.Logger.create("ApiController");
9
+ class ApiController {
10
+ /**
11
+ * POST /api/run-test
12
+ * ------------------
13
+ * Enqueues execution, returns 202 + executionId immediately.
14
+ * The caller opens the dashboard and subscribes to SSE for live updates.
15
+ * Call GET /api/result/:executionId when done to get the full formatted result.
16
+ */
17
+ static async runTest(req, res) {
18
+ const payload = req.body;
19
+ if (!payload?.scripts?.length) {
20
+ res.status(400).json({ error: "'scripts' array is required." });
21
+ return;
22
+ }
23
+ // Validate that steps have step_script
24
+ const missingSteps = [];
25
+ for (const script of payload.scripts) {
26
+ for (const step of (script.steps || [])) {
27
+ if (!step.step_script || step.step_script.trim() === "") {
28
+ missingSteps.push(step.step_name || "unnamed step");
29
+ }
30
+ }
31
+ }
32
+ if (missingSteps.length > 0) {
33
+ res.status(400).json({
34
+ error: "Steps are missing step_script field.",
35
+ detail: `Steps without step_script: ${missingSteps.slice(0, 5).join(", ")}`,
36
+ fix: "Call prepareSteps(uid) in your main app to resolve obj_uid → step_script before sending to the framework.",
37
+ });
38
+ return;
39
+ }
40
+ const executionId = ExecutionQueue_1.executionQueue.enqueue(payload);
41
+ const dashboardURL = `http://localhost:${process.env.PORT || 3000}/dashboard/${executionId}`;
42
+ const resultURL = `http://localhost:${process.env.PORT || 3000}/api/result/${executionId}`;
43
+ const streamURL = `http://localhost:${process.env.PORT || 3000}/api/stream/${executionId}`;
44
+ // const videoURL = `http://localhost:${process.env.PORT || 3000}/api/video/${executionId}`;
45
+ log.info(`Enqueued: ${executionId} | scripts=${payload.scripts.length}`);
46
+ res.status(202).json({
47
+ executionId,
48
+ dashboardURL,
49
+ resultURL, // Poll this for final result
50
+ streamURL, // Subscribe to this for live events
51
+ // videoURL,
52
+ status: "queued",
53
+ message: "Execution queued. Dashboard opening. Subscribe to streamURL for live updates, or poll resultURL for final result.",
54
+ });
55
+ }
56
+ /**
57
+ * GET /api/stream/:executionId
58
+ * ----------------------------
59
+ * SSE endpoint — dashboard subscribes here for live step events.
60
+ * Replays all past events immediately for late-connecting clients.
61
+ */
62
+ static stream(req, res) {
63
+ const { executionId } = req.params;
64
+ sseManager_1.sseManager.addClient(executionId, res);
65
+ }
66
+ /**
67
+ * GET /api/result/:executionId
68
+ * ----------------------------
69
+ * Returns the FULL formatted result once execution is complete.
70
+ * Returns 202 if still running (poll until 200).
71
+ *
72
+ * Response matches the standard format:
73
+ * {
74
+ * "status": "pass|fail",
75
+ * "results": [{ "test_script_uid": "...", "status": "...", "results": [...] }]
76
+ * }
77
+ */
78
+ static getResult(req, res) {
79
+ const { executionId } = req.params;
80
+ const job = ExecutionQueue_1.executionQueue.getJob(executionId);
81
+ if (!job) {
82
+ res.status(404).json({ error: `Execution ${executionId} not found` });
83
+ return;
84
+ }
85
+ if (job.status === "queued" || job.status === "running") {
86
+ res.status(202).json({
87
+ executionId,
88
+ status: job.status,
89
+ message: "Execution still in progress",
90
+ progress: job.progress,
91
+ });
92
+ return;
93
+ }
94
+ if (job.status === "cancelled") {
95
+ res.status(200).json({
96
+ executionId,
97
+ status: "cancelled",
98
+ message: "Execution was cancelled",
99
+ });
100
+ return;
101
+ }
102
+ if (!job.result) {
103
+ res.status(500).json({
104
+ executionId,
105
+ status: "failed",
106
+ error: job.error || "Execution failed with no result",
107
+ });
108
+ return;
109
+ }
110
+ // Return formatted result matching the standard API format
111
+ res.status(200).json((0, responseFormatter_1.formatExecutionResult)(job.result));
112
+ // console.log(formatExecutionResult(job.result));
113
+ }
114
+ /**
115
+ * GET /api/status/:executionId
116
+ * ----------------------------
117
+ * Lightweight status check (progress only, no full results).
118
+ */
119
+ static getStatus(req, res) {
120
+ const { executionId } = req.params;
121
+ const job = ExecutionQueue_1.executionQueue.getJob(executionId);
122
+ if (!job) {
123
+ res.status(404).json({ error: `Execution ${executionId} not found` });
124
+ return;
125
+ }
126
+ res.json({
127
+ executionId: job.executionId,
128
+ status: job.status,
129
+ queuedAt: job.queuedAt,
130
+ startedAt: job.startedAt,
131
+ completedAt: job.completedAt,
132
+ cancelledAt: job.cancelledAt,
133
+ progress: job.progress,
134
+ cancelRequested: job.cancelRequested,
135
+ error: job.error,
136
+ });
137
+ }
138
+ /**
139
+ * DELETE /api/cancel/:executionId
140
+ */
141
+ static cancelExecution(req, res) {
142
+ const { executionId } = req.params;
143
+ const result = ExecutionQueue_1.executionQueue.cancel(executionId);
144
+ res.status(result.success ? 200 : 400).json({ executionId, ...result });
145
+ }
146
+ /**
147
+ * DELETE /api/cancel-all
148
+ */
149
+ static cancelAll(_req, res) {
150
+ res.json(ExecutionQueue_1.executionQueue.cancelAll());
151
+ }
152
+ /**
153
+ * GET /api/queue
154
+ */
155
+ static getQueue(_req, res) {
156
+ res.json(ExecutionQueue_1.executionQueue.getQueueStats());
157
+ }
158
+ /**
159
+ * GET /api/health
160
+ */
161
+ static health(_req, res) {
162
+ res.json({
163
+ status: "ok",
164
+ version: "2.0.0",
165
+ ts: new Date().toISOString(),
166
+ queue: ExecutionQueue_1.executionQueue.getQueueStats(),
167
+ });
168
+ }
169
+ /**
170
+ * GET /api/actions
171
+ */
172
+ static listActions(_req, res) {
173
+ res.json({ total: ALL_ACTIONS.length, actions: ALL_ACTIONS });
174
+ }
175
+ }
176
+ exports.ApiController = ApiController;
177
+ const ALL_ACTIONS = [
178
+ // Browser
179
+ { name: "openBrowser", category: "browser", example: "tSetup.openBrowser('chrome')" },
180
+ { name: "closeBrowser", category: "browser", example: "tSetup.closeBrowser()" },
181
+ { name: "navigateToURL", category: "browser", example: "tSetup.navigateToURL('https://example.com')" },
182
+ { name: "navigateBack", category: "browser", example: "tSetup.navigateBack()" },
183
+ { name: "navigateForward", category: "browser", example: "tSetup.navigateForward()" },
184
+ { name: "refreshPage", category: "browser", example: "tSetup.refreshPage()" },
185
+ { name: "maximizeWindow", category: "browser", example: "tSetup.maximizeWindow()" },
186
+ { name: "setWindowSize", category: "browser", example: "tSetup.setWindowSize('1920', '1080')" },
187
+ { name: "switchToTab", category: "browser", example: "tSetup.switchToTab('1')" },
188
+ { name: "openNewTab", category: "browser", example: "tSetup.openNewTab('https://example.com')" },
189
+ { name: "closeCurrentTab", category: "browser", example: "tSetup.closeCurrentTab()" },
190
+ { name: "acceptAlert", category: "browser", example: "tSetup.acceptAlert()" },
191
+ { name: "dismissAlert", category: "browser", example: "tSetup.dismissAlert()" },
192
+ { name: "getAlertText", category: "browser", example: "tSetup.getAlertText('storeKey')" },
193
+ { name: "switchToFrame", category: "browser", example: "tSetup.switchToFrame('frameName')" },
194
+ { name: "executeScript", category: "browser", example: "tSetup.executeScript('return document.title')" },
195
+ { name: "scrollToBottom", category: "browser", example: "tSetup.scrollToBottom()" },
196
+ { name: "scrollToTop", category: "browser", example: "tSetup.scrollToTop()" },
197
+ { name: "deleteAllCookies", category: "browser", example: "tSetup.deleteAllCookies()" },
198
+ { name: "clearLocalStorage", category: "browser", example: "tSetup.clearLocalStorage()" },
199
+ { name: "clearSessionStorage", category: "browser", example: "tSetup.clearSessionStorage()" },
200
+ { name: "takeScreenshot", category: "browser", example: "tSetup.takeScreenshot()" },
201
+ { name: "getTitle", category: "browser", example: "tSetup.getTitle('storeKey')" },
202
+ { name: "verifyTitle", category: "browser", example: "tSetup.verifyTitle('Expected Title')" },
203
+ { name: "verifyPartialTitle", category: "browser", example: "tSetup.verifyPartialTitle('Expected')" },
204
+ { name: "getCurrentURL", category: "browser", example: "tSetup.getCurrentURL()" },
205
+ // Input
206
+ { name: "enterText", category: "input", example: "tSetup.enterText('xpath', '//input[...]', 'value')" },
207
+ { name: "typeText", category: "input", example: "tSetup.typeText('xpath', '//input[...]', 'value', '50')" },
208
+ { name: "clearText", category: "input", example: "tSetup.clearText('xpath', '//input[...]')" },
209
+ { name: "appendText", category: "input", example: "tSetup.appendText('xpath', '//input[...]', ' extra')" },
210
+ { name: "getInputValue", category: "input", example: "tSetup.getInputValue('xpath', '//input', 'storeKey')" },
211
+ { name: "setInputValue", category: "input", example: "tSetup.setInputValue('xpath', '//input', 'value')" },
212
+ { name: "uploadFile", category: "input", example: "tSetup.uploadFile('xpath', '//input[@type=\"file\"]', '/path/file.pdf')" },
213
+ // Click
214
+ { name: "clickElement", category: "click", example: "tSetup.clickElement('xpath', '//button[...]')" },
215
+ { name: "doubleClick", category: "click", example: "tSetup.doubleClick('xpath', '//div[...]')" },
216
+ { name: "rightClick", category: "click", example: "tSetup.rightClick('xpath', '//div[...]')" },
217
+ { name: "hover", category: "click", example: "tSetup.hover('xpath', '//div[...]')" },
218
+ { name: "clickByJS", category: "click", example: "tSetup.clickByJS('xpath', '//button[...]')" },
219
+ { name: "clickIfPresent", category: "click", example: "tSetup.clickIfPresent('xpath', '//button[...]')" },
220
+ { name: "dragAndDrop", category: "click", example: "tSetup.dragAndDrop('xpath', '//src', 'xpath', '//target')" },
221
+ { name: "clickByText", category: "click", example: "tSetup.clickByText('Sign In')" },
222
+ { name: "clickNthElement", category: "click", example: "tSetup.clickNthElement('xpath', '//li', '2')" },
223
+ { name: "scrollAndClick", category: "click", example: "tSetup.scrollAndClick('xpath', '//button[...]')" },
224
+ // Dropdown
225
+ { name: "selectDropdown", category: "dropdown", example: "tSetup.selectDropdown('xpath', '//select', 'Option Label')" },
226
+ { name: "selectByIndex", category: "dropdown", example: "tSetup.selectByIndex('xpath', '//select', '2')" },
227
+ { name: "selectByValue", category: "dropdown", example: "tSetup.selectByValue('xpath', '//select', 'optValue')" },
228
+ { name: "selectCustomDropdown", category: "dropdown", example: "tSetup.selectCustomDropdown('xpath', '//div.dd', 'xpath', '//li')" },
229
+ { name: "selectAutocomplete", category: "dropdown", example: "tSetup.selectAutocomplete('xpath', '//input', 'New York', 'xpath', '//li')" },
230
+ // Assertion
231
+ { name: "verifyText", category: "assertion", example: "tSetup.verifyText('xpath', '//h1', 'Welcome')" },
232
+ { name: "verifyTextContains", category: "assertion", example: "tSetup.verifyTextContains('xpath', '//p', 'success')" },
233
+ { name: "verifyVisible", category: "assertion", example: "tSetup.verifyVisible('xpath', '//div[...]')" },
234
+ { name: "verifyHidden", category: "assertion", example: "tSetup.verifyHidden('xpath', '//div[...]')" },
235
+ { name: "verifyEnabled", category: "assertion", example: "tSetup.verifyEnabled('xpath', '//button[...]')" },
236
+ { name: "verifyDisabled", category: "assertion", example: "tSetup.verifyDisabled('xpath', '//button[...]')" },
237
+ { name: "verifyURL", category: "assertion", example: "tSetup.verifyURL('https://example.com/dashboard')" },
238
+ { name: "verifyPartialURL", category: "assertion", example: "tSetup.verifyPartialURL('dashboard')" },
239
+ { name: "verifyElementCount", category: "assertion", example: "tSetup.verifyElementCount('xpath', '//li', '5')" },
240
+ { name: "verifyAttribute", category: "assertion", example: "tSetup.verifyAttribute('xpath', '//input', 'placeholder', 'Email')" },
241
+ { name: "getText", category: "assertion", example: "tSetup.getText('xpath', '//h1', 'storeKey')" },
242
+ // Wait
243
+ { name: "waitForElement", category: "wait", example: "tSetup.waitForElement('xpath', '//div', '10000')" },
244
+ { name: "waitForElementHidden", category: "wait", example: "tSetup.waitForElementHidden('xpath', '//div[@id=\"loader\"]', '10000')" },
245
+ { name: "waitForURL", category: "wait", example: "tSetup.waitForURL('dashboard', '10000')" },
246
+ { name: "waitForPageLoad", category: "wait", example: "tSetup.waitForPageLoad('10000')" },
247
+ { name: "waitForNetworkIdle", category: "wait", example: "tSetup.waitForNetworkIdle('10000')" },
248
+ { name: "sleep", category: "wait", example: "tSetup.sleep('2000')" },
249
+ // Keyboard
250
+ { name: "pressKey", category: "keyboard", example: "tSetup.pressKey('Enter')" },
251
+ { name: "pressKeyOn", category: "keyboard", example: "tSetup.pressKeyOn('xpath', '//input', 'Enter')" },
252
+ { name: "keyCombo", category: "keyboard", example: "tSetup.keyCombo('Control+A')" },
253
+ // Checkbox
254
+ { name: "checkCheckbox", category: "checkbox", example: "tSetup.checkCheckbox('xpath', '//input[@type=\"checkbox\"]')" },
255
+ { name: "uncheckCheckbox", category: "checkbox", example: "tSetup.uncheckCheckbox('xpath', '//input[@type=\"checkbox\"]')" },
256
+ { name: "selectRadio", category: "checkbox", example: "tSetup.selectRadio('xpath', '//input[@type=\"radio\"][@value=\"opt1\"]')" },
257
+ // Table
258
+ { name: "getTableRowCount", category: "table", example: "tSetup.getTableRowCount('xpath', '//table/tbody/tr', 'rowCount')" },
259
+ { name: "verifyTableCell", category: "table", example: "tSetup.verifyTableCell('xpath', '//table/tbody/tr[1]/td[2]', 'Expected')" },
260
+ { name: "clickTableRow", category: "table", example: "tSetup.clickTableRow('xpath', '//table/tbody/tr', '3')" },
261
+ { name: "runCustomCode", category: "customcode", example: "tSetup.runCustomCode('const result = \"LN\" + Math.floor(Math.random()*1000);', 'result', '//input[@id=\"ref\"]')" }, ,
262
+ ];
263
+ //# sourceMappingURL=controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"controller.js","sourceRoot":"","sources":["../../src/controllers/controller.ts"],"names":[],"mappings":";;;AACA,4DAAyD;AACzD,oDAAiD;AACjD,kEAAuF;AACvF,4CAAyC;AAEzC,MAAM,GAAG,GAAG,eAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;AAE3C,MAAa,aAAa;IAExB;;;;;;OAMG;IACH,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAY,EAAE,GAAa;QAC9C,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;YAC9B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,8BAA8B,EAAE,CAAC,CAAC;YAChE,OAAO;QACT,CAAC;QAED,uCAAuC;QACvC,MAAM,YAAY,GAAa,EAAE,CAAC;QAClC,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACrC,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;gBACxC,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;oBACxD,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,cAAc,CAAC,CAAC;gBACtD,CAAC;YACH,CAAC;QACH,CAAC;QACD,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACnB,KAAK,EAAE,sCAAsC;gBAC7C,MAAM,EAAE,8BAA8B,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBAC3E,GAAG,EAAE,2GAA2G;aACjH,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,MAAM,WAAW,GAAI,+BAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACrD,MAAM,YAAY,GAAG,oBAAoB,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,cAAc,WAAW,EAAE,CAAC;QAC7F,MAAM,SAAS,GAAM,oBAAoB,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,eAAe,WAAW,EAAE,CAAC;QAC9F,MAAM,SAAS,GAAM,oBAAoB,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,eAAe,WAAW,EAAE,CAAC;QAC9F,4FAA4F;QAE5F,GAAG,CAAC,IAAI,CAAC,aAAa,WAAW,cAAc,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAEzE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACnB,WAAW;YACX,YAAY;YACZ,SAAS,EAAK,6BAA6B;YAC3C,SAAS,EAAK,oCAAoC;YAClD,aAAa;YACb,MAAM,EAAQ,QAAQ;YACtB,OAAO,EAAO,mHAAmH;SAClI,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,MAAM,CAAC,GAAY,EAAE,GAAa;QACvC,MAAM,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QACnC,uBAAU,CAAC,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IACzC,CAAC;IAED;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,SAAS,CAAC,GAAY,EAAE,GAAa;QAC1C,MAAM,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QACnC,MAAM,GAAG,GAAG,+BAAc,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAE/C,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,aAAa,WAAW,YAAY,EAAE,CAAC,CAAC;YACtE,OAAO;QACT,CAAC;QAED,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACxD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACnB,WAAW;gBACX,MAAM,EAAI,GAAG,CAAC,MAAM;gBACpB,OAAO,EAAG,6BAA6B;gBACvC,QAAQ,EAAE,GAAG,CAAC,QAAQ;aACvB,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,IAAI,GAAG,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAC/B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACnB,WAAW;gBACX,MAAM,EAAG,WAAW;gBACpB,OAAO,EAAE,yBAAyB;aACnC,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;YAChB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACnB,WAAW;gBACX,MAAM,EAAE,QAAQ;gBAChB,KAAK,EAAG,GAAG,CAAC,KAAK,IAAI,iCAAiC;aACvD,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,2DAA2D;QAC3D,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAA,yCAAqB,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QACxD,kDAAkD;IACpD,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,SAAS,CAAC,GAAY,EAAE,GAAa;QAC1C,MAAM,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QACnC,MAAM,GAAG,GAAG,+BAAc,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAE/C,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,aAAa,WAAW,YAAY,EAAE,CAAC,CAAC;YACtE,OAAO;QACT,CAAC;QAED,GAAG,CAAC,IAAI,CAAC;YACP,WAAW,EAAM,GAAG,CAAC,WAAW;YAChC,MAAM,EAAW,GAAG,CAAC,MAAM;YAC3B,QAAQ,EAAS,GAAG,CAAC,QAAQ;YAC7B,SAAS,EAAQ,GAAG,CAAC,SAAS;YAC9B,WAAW,EAAM,GAAG,CAAC,WAAW;YAChC,WAAW,EAAM,GAAG,CAAC,WAAW;YAChC,QAAQ,EAAS,GAAG,CAAC,QAAQ;YAC7B,eAAe,EAAE,GAAG,CAAC,eAAe;YACpC,KAAK,EAAY,GAAG,CAAC,KAAK;SAC3B,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,GAAY,EAAE,GAAa;QAChD,MAAM,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QACnC,MAAM,MAAM,GAAG,+BAAc,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAClD,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,IAAa,EAAE,GAAa;QAC3C,GAAG,CAAC,IAAI,CAAC,+BAAc,CAAC,SAAS,EAAE,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAa,EAAE,GAAa;QAC1C,GAAG,CAAC,IAAI,CAAC,+BAAc,CAAC,aAAa,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,IAAa,EAAE,GAAa;QACxC,GAAG,CAAC,IAAI,CAAC;YACP,MAAM,EAAG,IAAI;YACb,OAAO,EAAE,OAAO;YAChB,EAAE,EAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACjC,KAAK,EAAI,+BAAc,CAAC,aAAa,EAAE;SACxC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,IAAa,EAAE,GAAa;QAC7C,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;IAChE,CAAC;CACF;AA1LD,sCA0LC;AAED,MAAM,WAAW,GAAG;IAClB,UAAU;IACV,EAAE,IAAI,EAAE,aAAa,EAAY,QAAQ,EAAE,SAAS,EAAI,OAAO,EAAE,8BAA8B,EAAE;IACjG,EAAE,IAAI,EAAE,cAAc,EAAW,QAAQ,EAAE,SAAS,EAAI,OAAO,EAAE,uBAAuB,EAAE;IAC1F,EAAE,IAAI,EAAE,eAAe,EAAU,QAAQ,EAAE,SAAS,EAAI,OAAO,EAAE,6CAA6C,EAAE;IAChH,EAAE,IAAI,EAAE,cAAc,EAAW,QAAQ,EAAE,SAAS,EAAI,OAAO,EAAE,uBAAuB,EAAE;IAC1F,EAAE,IAAI,EAAE,iBAAiB,EAAQ,QAAQ,EAAE,SAAS,EAAI,OAAO,EAAE,0BAA0B,EAAE;IAC7F,EAAE,IAAI,EAAE,aAAa,EAAY,QAAQ,EAAE,SAAS,EAAI,OAAO,EAAE,sBAAsB,EAAE;IACzF,EAAE,IAAI,EAAE,gBAAgB,EAAS,QAAQ,EAAE,SAAS,EAAI,OAAO,EAAE,yBAAyB,EAAE;IAC5F,EAAE,IAAI,EAAE,eAAe,EAAU,QAAQ,EAAE,SAAS,EAAI,OAAO,EAAE,sCAAsC,EAAE;IACzG,EAAE,IAAI,EAAE,aAAa,EAAY,QAAQ,EAAE,SAAS,EAAI,OAAO,EAAE,yBAAyB,EAAE;IAC5F,EAAE,IAAI,EAAE,YAAY,EAAa,QAAQ,EAAE,SAAS,EAAI,OAAO,EAAE,0CAA0C,EAAE;IAC7G,EAAE,IAAI,EAAE,iBAAiB,EAAQ,QAAQ,EAAE,SAAS,EAAI,OAAO,EAAE,0BAA0B,EAAE;IAC7F,EAAE,IAAI,EAAE,aAAa,EAAY,QAAQ,EAAE,SAAS,EAAI,OAAO,EAAE,sBAAsB,EAAE;IACzF,EAAE,IAAI,EAAE,cAAc,EAAW,QAAQ,EAAE,SAAS,EAAI,OAAO,EAAE,uBAAuB,EAAE;IAC1F,EAAE,IAAI,EAAE,cAAc,EAAW,QAAQ,EAAE,SAAS,EAAI,OAAO,EAAE,iCAAiC,EAAE;IACpG,EAAE,IAAI,EAAE,eAAe,EAAU,QAAQ,EAAE,SAAS,EAAI,OAAO,EAAE,mCAAmC,EAAE;IACtG,EAAE,IAAI,EAAE,eAAe,EAAU,QAAQ,EAAE,SAAS,EAAI,OAAO,EAAE,+CAA+C,EAAE;IAClH,EAAE,IAAI,EAAE,gBAAgB,EAAS,QAAQ,EAAE,SAAS,EAAI,OAAO,EAAE,yBAAyB,EAAE;IAC5F,EAAE,IAAI,EAAE,aAAa,EAAY,QAAQ,EAAE,SAAS,EAAI,OAAO,EAAE,sBAAsB,EAAE;IACzF,EAAE,IAAI,EAAE,kBAAkB,EAAO,QAAQ,EAAE,SAAS,EAAI,OAAO,EAAE,2BAA2B,EAAE;IAC9F,EAAE,IAAI,EAAE,mBAAmB,EAAM,QAAQ,EAAE,SAAS,EAAI,OAAO,EAAE,4BAA4B,EAAE;IAC/F,EAAE,IAAI,EAAE,qBAAqB,EAAI,QAAQ,EAAE,SAAS,EAAI,OAAO,EAAE,8BAA8B,EAAE;IACjG,EAAE,IAAI,EAAE,gBAAgB,EAAS,QAAQ,EAAE,SAAS,EAAI,OAAO,EAAE,yBAAyB,EAAE;IAC5F,EAAE,IAAI,EAAE,UAAU,EAAe,QAAQ,EAAE,SAAS,EAAI,OAAO,EAAE,6BAA6B,EAAE;IAChG,EAAE,IAAI,EAAE,aAAa,EAAY,QAAQ,EAAE,SAAS,EAAI,OAAO,EAAE,sCAAsC,EAAE;IACzG,EAAE,IAAI,EAAE,oBAAoB,EAAK,QAAQ,EAAE,SAAS,EAAI,OAAO,EAAE,uCAAuC,EAAE;IAC1G,EAAE,IAAI,EAAE,eAAe,EAAU,QAAQ,EAAE,SAAS,EAAI,OAAO,EAAE,wBAAwB,EAAE;IAC3F,QAAQ;IACR,EAAE,IAAI,EAAE,WAAW,EAAc,QAAQ,EAAE,OAAO,EAAM,OAAO,EAAE,oDAAoD,EAAE;IACvH,EAAE,IAAI,EAAE,UAAU,EAAe,QAAQ,EAAE,OAAO,EAAM,OAAO,EAAE,yDAAyD,EAAE;IAC5H,EAAE,IAAI,EAAE,WAAW,EAAc,QAAQ,EAAE,OAAO,EAAM,OAAO,EAAE,2CAA2C,EAAE;IAC9G,EAAE,IAAI,EAAE,YAAY,EAAa,QAAQ,EAAE,OAAO,EAAM,OAAO,EAAE,sDAAsD,EAAE;IACzH,EAAE,IAAI,EAAE,eAAe,EAAU,QAAQ,EAAE,OAAO,EAAM,OAAO,EAAE,sDAAsD,EAAE;IACzH,EAAE,IAAI,EAAE,eAAe,EAAU,QAAQ,EAAE,OAAO,EAAM,OAAO,EAAE,mDAAmD,EAAE;IACtH,EAAE,IAAI,EAAE,YAAY,EAAa,QAAQ,EAAE,OAAO,EAAM,OAAO,EAAE,yEAAyE,EAAE;IAC5I,QAAQ;IACR,EAAE,IAAI,EAAE,cAAc,EAAW,QAAQ,EAAE,OAAO,EAAM,OAAO,EAAE,+CAA+C,EAAE;IAClH,EAAE,IAAI,EAAE,aAAa,EAAY,QAAQ,EAAE,OAAO,EAAM,OAAO,EAAE,2CAA2C,EAAE;IAC9G,EAAE,IAAI,EAAE,YAAY,EAAa,QAAQ,EAAE,OAAO,EAAM,OAAO,EAAE,0CAA0C,EAAE;IAC7G,EAAE,IAAI,EAAE,OAAO,EAAkB,QAAQ,EAAE,OAAO,EAAM,OAAO,EAAE,qCAAqC,EAAE;IACxG,EAAE,IAAI,EAAE,WAAW,EAAc,QAAQ,EAAE,OAAO,EAAM,OAAO,EAAE,4CAA4C,EAAE;IAC/G,EAAE,IAAI,EAAE,gBAAgB,EAAS,QAAQ,EAAE,OAAO,EAAM,OAAO,EAAE,iDAAiD,EAAE;IACpH,EAAE,IAAI,EAAE,aAAa,EAAY,QAAQ,EAAE,OAAO,EAAM,OAAO,EAAE,2DAA2D,EAAE;IAC9H,EAAE,IAAI,EAAE,aAAa,EAAY,QAAQ,EAAE,OAAO,EAAM,OAAO,EAAE,+BAA+B,EAAE;IAClG,EAAE,IAAI,EAAE,iBAAiB,EAAQ,QAAQ,EAAE,OAAO,EAAM,OAAO,EAAE,8CAA8C,EAAE;IACjH,EAAE,IAAI,EAAE,gBAAgB,EAAS,QAAQ,EAAE,OAAO,EAAM,OAAO,EAAE,iDAAiD,EAAE;IACpH,WAAW;IACX,EAAE,IAAI,EAAE,gBAAgB,EAAS,QAAQ,EAAE,UAAU,EAAG,OAAO,EAAE,4DAA4D,EAAE;IAC/H,EAAE,IAAI,EAAE,eAAe,EAAU,QAAQ,EAAE,UAAU,EAAG,OAAO,EAAE,gDAAgD,EAAE;IACnH,EAAE,IAAI,EAAE,eAAe,EAAU,QAAQ,EAAE,UAAU,EAAG,OAAO,EAAE,uDAAuD,EAAE;IAC1H,EAAE,IAAI,EAAE,sBAAsB,EAAG,QAAQ,EAAE,UAAU,EAAG,OAAO,EAAE,mEAAmE,EAAE;IACtI,EAAE,IAAI,EAAE,oBAAoB,EAAK,QAAQ,EAAE,UAAU,EAAG,OAAO,EAAE,4EAA4E,EAAE;IAC/I,YAAY;IACZ,EAAE,IAAI,EAAE,YAAY,EAAa,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,+CAA+C,EAAE;IAClH,EAAE,IAAI,EAAE,oBAAoB,EAAK,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,sDAAsD,EAAE;IACzH,EAAE,IAAI,EAAE,eAAe,EAAU,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,6CAA6C,EAAE;IAChH,EAAE,IAAI,EAAE,cAAc,EAAW,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,4CAA4C,EAAE;IAC/G,EAAE,IAAI,EAAE,eAAe,EAAU,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,gDAAgD,EAAE;IACnH,EAAE,IAAI,EAAE,gBAAgB,EAAS,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,iDAAiD,EAAE;IACpH,EAAE,IAAI,EAAE,WAAW,EAAc,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,mDAAmD,EAAE;IACtH,EAAE,IAAI,EAAE,kBAAkB,EAAO,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,sCAAsC,EAAE;IACzG,EAAE,IAAI,EAAE,oBAAoB,EAAK,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,iDAAiD,EAAE;IACpH,EAAE,IAAI,EAAE,iBAAiB,EAAQ,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,oEAAoE,EAAE;IACvI,EAAE,IAAI,EAAE,SAAS,EAAgB,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,6CAA6C,EAAE;IAChH,OAAO;IACP,EAAE,IAAI,EAAE,gBAAgB,EAAS,QAAQ,EAAE,MAAM,EAAO,OAAO,EAAE,kDAAkD,EAAE;IACrH,EAAE,IAAI,EAAE,sBAAsB,EAAG,QAAQ,EAAE,MAAM,EAAO,OAAO,EAAE,wEAAwE,EAAE;IAC3I,EAAE,IAAI,EAAE,YAAY,EAAa,QAAQ,EAAE,MAAM,EAAO,OAAO,EAAE,yCAAyC,EAAE;IAC5G,EAAE,IAAI,EAAE,iBAAiB,EAAQ,QAAQ,EAAE,MAAM,EAAO,OAAO,EAAE,iCAAiC,EAAE;IACpG,EAAE,IAAI,EAAE,oBAAoB,EAAK,QAAQ,EAAE,MAAM,EAAO,OAAO,EAAE,oCAAoC,EAAE;IACvG,EAAE,IAAI,EAAE,OAAO,EAAkB,QAAQ,EAAE,MAAM,EAAO,OAAO,EAAE,sBAAsB,EAAE;IACzF,WAAW;IACX,EAAE,IAAI,EAAE,UAAU,EAAe,QAAQ,EAAE,UAAU,EAAG,OAAO,EAAE,0BAA0B,EAAE;IAC7F,EAAE,IAAI,EAAE,YAAY,EAAa,QAAQ,EAAE,UAAU,EAAG,OAAO,EAAE,gDAAgD,EAAE;IACnH,EAAE,IAAI,EAAE,UAAU,EAAe,QAAQ,EAAE,UAAU,EAAG,OAAO,EAAE,8BAA8B,EAAE;IACjG,WAAW;IACX,EAAE,IAAI,EAAE,eAAe,EAAU,QAAQ,EAAE,UAAU,EAAG,OAAO,EAAE,8DAA8D,EAAE;IACjI,EAAE,IAAI,EAAE,iBAAiB,EAAQ,QAAQ,EAAE,UAAU,EAAG,OAAO,EAAE,gEAAgE,EAAE;IACnI,EAAE,IAAI,EAAE,aAAa,EAAY,QAAQ,EAAE,UAAU,EAAG,OAAO,EAAE,0EAA0E,EAAE;IAC7I,QAAQ;IACR,EAAE,IAAI,EAAE,kBAAkB,EAAO,QAAQ,EAAE,OAAO,EAAM,OAAO,EAAE,kEAAkE,EAAE;IACrI,EAAE,IAAI,EAAE,iBAAiB,EAAQ,QAAQ,EAAE,OAAO,EAAM,OAAO,EAAE,0EAA0E,EAAE;IAC7I,EAAE,IAAI,EAAE,eAAe,EAAU,QAAQ,EAAE,OAAO,EAAM,OAAO,EAAE,wDAAwD,EAAE;IAC1H,EAAE,IAAI,EAAE,eAAe,EAAU,QAAQ,EAAE,YAAY,EAAG,OAAO,EAAE,mHAAmH,EAAE,EAAC;CAC3L,CAAC"}
@@ -0,0 +1,46 @@
1
+ import { Page } from "playwright";
2
+ import { ActionResponse, TestCaseConfig } from "../types/types";
3
+ export declare class BrowserManager {
4
+ private browser?;
5
+ private context?;
6
+ private page?;
7
+ private shots;
8
+ private log;
9
+ private headless;
10
+ private timeout;
11
+ private slowMo;
12
+ private recordVideo;
13
+ private videoDir;
14
+ constructor(tConfig: TestCaseConfig);
15
+ openBrowser(type?: string): Promise<ActionResponse>;
16
+ private getLauncher;
17
+ closeBrowser(): Promise<ActionResponse>;
18
+ navigateToURL(url: string): Promise<ActionResponse>;
19
+ navigateBack(): Promise<ActionResponse>;
20
+ navigateForward(): Promise<ActionResponse>;
21
+ refreshPage(): Promise<ActionResponse>;
22
+ maximizeWindow(): Promise<ActionResponse>;
23
+ setWindowSize(width: string, height: string): Promise<ActionResponse>;
24
+ switchToTab(indexStr: string): Promise<ActionResponse>;
25
+ openNewTab(url?: string): Promise<ActionResponse>;
26
+ closeCurrentTab(): Promise<ActionResponse>;
27
+ waitForNewTab(triggerAction: () => Promise<void>): Promise<ActionResponse>;
28
+ getTitle(storeKey?: string): Promise<ActionResponse>;
29
+ verifyTitle(expected: string): Promise<ActionResponse>;
30
+ verifyPartialTitle(partial: string): Promise<ActionResponse>;
31
+ getCurrentURL(): Promise<ActionResponse>;
32
+ getPageSource(): Promise<ActionResponse>;
33
+ acceptAlert(promptText?: string): Promise<ActionResponse>;
34
+ dismissAlert(): Promise<ActionResponse>;
35
+ getAlertText(storeKey?: string): Promise<ActionResponse>;
36
+ switchToFrame(nameOrSelector: string): Promise<ActionResponse>;
37
+ executeScript(script: string): Promise<ActionResponse>;
38
+ scrollToBottom(): Promise<ActionResponse>;
39
+ scrollToTop(): Promise<ActionResponse>;
40
+ deleteAllCookies(): Promise<ActionResponse>;
41
+ clearLocalStorage(): Promise<ActionResponse>;
42
+ clearSessionStorage(): Promise<ActionResponse>;
43
+ takeScreenshot(): Promise<ActionResponse>;
44
+ getPage(): Page;
45
+ hasPage(): boolean;
46
+ }