playwright-automation-core 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +225 -0
- package/dist/api/api.assertions.d.ts +196 -0
- package/dist/api/api.assertions.d.ts.map +1 -0
- package/dist/api/api.assertions.js +462 -0
- package/dist/api/api.assertions.js.map +1 -0
- package/dist/api/api.builder.d.ts +134 -0
- package/dist/api/api.builder.d.ts.map +1 -0
- package/dist/api/api.builder.js +273 -0
- package/dist/api/api.builder.js.map +1 -0
- package/dist/api/api.client.d.ts +157 -0
- package/dist/api/api.client.d.ts.map +1 -0
- package/dist/api/api.client.js +493 -0
- package/dist/api/api.client.js.map +1 -0
- package/dist/api/index.d.ts +8 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +17 -0
- package/dist/api/index.js.map +1 -0
- package/dist/core/base.driver.d.ts +130 -0
- package/dist/core/base.driver.d.ts.map +1 -0
- package/dist/core/base.driver.js +264 -0
- package/dist/core/base.driver.js.map +1 -0
- package/dist/core/driver.factory.d.ts +120 -0
- package/dist/core/driver.factory.d.ts.map +1 -0
- package/dist/core/driver.factory.js +222 -0
- package/dist/core/driver.factory.js.map +1 -0
- package/dist/core/element.actions.d.ts +119 -0
- package/dist/core/element.actions.d.ts.map +1 -0
- package/dist/core/element.actions.js +379 -0
- package/dist/core/element.actions.js.map +1 -0
- package/dist/core/hook.manager.d.ts +186 -0
- package/dist/core/hook.manager.d.ts.map +1 -0
- package/dist/core/hook.manager.js +297 -0
- package/dist/core/hook.manager.js.map +1 -0
- package/dist/core/index.d.ts +8 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +22 -0
- package/dist/core/index.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +128 -0
- package/dist/index.js.map +1 -0
- package/dist/mobile/index.d.ts +7 -0
- package/dist/mobile/index.d.ts.map +1 -0
- package/dist/mobile/index.js +14 -0
- package/dist/mobile/index.js.map +1 -0
- package/dist/mobile/mobile.assertions.d.ts +146 -0
- package/dist/mobile/mobile.assertions.d.ts.map +1 -0
- package/dist/mobile/mobile.assertions.js +333 -0
- package/dist/mobile/mobile.assertions.js.map +1 -0
- package/dist/mobile/mobile.driver.d.ts +297 -0
- package/dist/mobile/mobile.driver.d.ts.map +1 -0
- package/dist/mobile/mobile.driver.js +808 -0
- package/dist/mobile/mobile.driver.js.map +1 -0
- package/dist/types/common.types.d.ts +200 -0
- package/dist/types/common.types.d.ts.map +1 -0
- package/dist/types/common.types.js +3 -0
- package/dist/types/common.types.js.map +1 -0
- package/dist/types/config.types.d.ts +192 -0
- package/dist/types/config.types.d.ts.map +1 -0
- package/dist/types/config.types.js +3 -0
- package/dist/types/config.types.js.map +1 -0
- package/dist/types/driver.types.d.ts +500 -0
- package/dist/types/driver.types.d.ts.map +1 -0
- package/dist/types/driver.types.js +3 -0
- package/dist/types/driver.types.js.map +1 -0
- package/dist/types/enums.d.ts +53 -0
- package/dist/types/enums.d.ts.map +1 -0
- package/dist/types/enums.js +62 -0
- package/dist/types/enums.js.map +1 -0
- package/dist/types/index.d.ts +8 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +15 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/config.manager.d.ts +144 -0
- package/dist/utils/config.manager.d.ts.map +1 -0
- package/dist/utils/config.manager.js +473 -0
- package/dist/utils/config.manager.js.map +1 -0
- package/dist/utils/errors.d.ts +149 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +290 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/helpers.d.ts +124 -0
- package/dist/utils/helpers.d.ts.map +1 -0
- package/dist/utils/helpers.js +421 -0
- package/dist/utils/helpers.js.map +1 -0
- package/dist/utils/index.d.ts +9 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +78 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.d.ts +145 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +235 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/wait.utils.d.ts +95 -0
- package/dist/utils/wait.utils.d.ts.map +1 -0
- package/dist/utils/wait.utils.js +306 -0
- package/dist/utils/wait.utils.js.map +1 -0
- package/dist/web/index.d.ts +8 -0
- package/dist/web/index.d.ts.map +1 -0
- package/dist/web/index.js +16 -0
- package/dist/web/index.js.map +1 -0
- package/dist/web/web.assertions.d.ts +164 -0
- package/dist/web/web.assertions.d.ts.map +1 -0
- package/dist/web/web.assertions.js +427 -0
- package/dist/web/web.assertions.js.map +1 -0
- package/dist/web/web.driver.d.ts +174 -0
- package/dist/web/web.driver.d.ts.map +1 -0
- package/dist/web/web.driver.js +571 -0
- package/dist/web/web.driver.js.map +1 -0
- package/dist/web/web.page.d.ts +286 -0
- package/dist/web/web.page.d.ts.map +1 -0
- package/dist/web/web.page.js +570 -0
- package/dist/web/web.page.js.map +1 -0
- package/package.json +115 -0
|
@@ -0,0 +1,571 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.WebDriver = void 0;
|
|
37
|
+
const test_1 = require("@playwright/test");
|
|
38
|
+
const types_1 = require("../types");
|
|
39
|
+
const base_driver_1 = require("../core/base.driver");
|
|
40
|
+
const hook_manager_1 = require("../core/hook.manager");
|
|
41
|
+
const utils_1 = require("../utils");
|
|
42
|
+
const path = __importStar(require("path"));
|
|
43
|
+
/**
|
|
44
|
+
* Web Driver implementation using Playwright.
|
|
45
|
+
* Supports Chromium, Firefox, and WebKit browsers.
|
|
46
|
+
*/
|
|
47
|
+
class WebDriver extends base_driver_1.BaseDriver {
|
|
48
|
+
/** Playwright browser instance */
|
|
49
|
+
browser = null;
|
|
50
|
+
/** Browser context */
|
|
51
|
+
context = null;
|
|
52
|
+
/** Current active page */
|
|
53
|
+
page = null;
|
|
54
|
+
/** All pages in the context */
|
|
55
|
+
pages = [];
|
|
56
|
+
/** Web-specific configuration */
|
|
57
|
+
config;
|
|
58
|
+
/** Hook manager */
|
|
59
|
+
hooks;
|
|
60
|
+
/**
|
|
61
|
+
* Create a new WebDriver instance
|
|
62
|
+
*/
|
|
63
|
+
constructor(config, logger) {
|
|
64
|
+
super(types_1.Platform.WEB, config, logger);
|
|
65
|
+
this.config = config;
|
|
66
|
+
this.hooks = (0, hook_manager_1.getHookManager)();
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Initialize the browser and create a new page
|
|
70
|
+
*/
|
|
71
|
+
async initialize() {
|
|
72
|
+
if (this.initialized) {
|
|
73
|
+
this.logger.warn("WebDriver already initialized");
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
// Execute before init hooks
|
|
77
|
+
await this.hooks.execute(hook_manager_1.HookEvent.BEFORE_DRIVER_INIT, {
|
|
78
|
+
platform: this.platform,
|
|
79
|
+
data: { config: this.getSafeConfig() },
|
|
80
|
+
});
|
|
81
|
+
try {
|
|
82
|
+
this.logger.info("Initializing WebDriver", {
|
|
83
|
+
browser: this.config.browser,
|
|
84
|
+
headless: this.config.headless,
|
|
85
|
+
});
|
|
86
|
+
// Get browser type
|
|
87
|
+
const browserType = this.getBrowserType();
|
|
88
|
+
// Launch browser
|
|
89
|
+
this.browser = await browserType.launch({
|
|
90
|
+
headless: this.config.headless ?? true,
|
|
91
|
+
slowMo: this.config.slowMo,
|
|
92
|
+
args: this.config.launchArgs,
|
|
93
|
+
});
|
|
94
|
+
// Create browser context
|
|
95
|
+
this.context = await this.createContext();
|
|
96
|
+
// Create initial page
|
|
97
|
+
this.page = await this.context.newPage();
|
|
98
|
+
this.pages = [this.page];
|
|
99
|
+
// Set up page event listeners
|
|
100
|
+
this.setupPageListeners(this.page);
|
|
101
|
+
// Generate session ID and mark initialized
|
|
102
|
+
this.generateSessionId();
|
|
103
|
+
this.markInitialized();
|
|
104
|
+
// Execute after init hooks
|
|
105
|
+
await this.hooks.execute(hook_manager_1.HookEvent.AFTER_DRIVER_INIT, {
|
|
106
|
+
platform: this.platform,
|
|
107
|
+
driverStatus: this.getStatus(),
|
|
108
|
+
data: { browser: this.config.browser },
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
catch (error) {
|
|
112
|
+
const err = error;
|
|
113
|
+
this.logger.error("Failed to initialize WebDriver", {
|
|
114
|
+
error: err.message,
|
|
115
|
+
});
|
|
116
|
+
throw new utils_1.DriverInitializationError(this.platform, `Failed to initialize browser: ${err.message}`, { browser: this.config.browser });
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Get Playwright browser type based on configuration
|
|
121
|
+
*/
|
|
122
|
+
getBrowserType() {
|
|
123
|
+
switch (this.config.browser) {
|
|
124
|
+
case types_1.BrowserType.FIREFOX:
|
|
125
|
+
return test_1.firefox;
|
|
126
|
+
case types_1.BrowserType.WEBKIT:
|
|
127
|
+
return test_1.webkit;
|
|
128
|
+
case types_1.BrowserType.CHROMIUM:
|
|
129
|
+
default:
|
|
130
|
+
return test_1.chromium;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Create browser context with configuration options
|
|
135
|
+
*/
|
|
136
|
+
async createContext() {
|
|
137
|
+
if (!this.browser) {
|
|
138
|
+
throw new Error("Browser not initialized");
|
|
139
|
+
}
|
|
140
|
+
const contextOptions = {
|
|
141
|
+
ignoreHTTPSErrors: this.config.ignoreHTTPSErrors,
|
|
142
|
+
viewport: this.config.viewport,
|
|
143
|
+
locale: this.config.locale,
|
|
144
|
+
timezoneId: this.config.timezoneId,
|
|
145
|
+
geolocation: this.config.geolocation,
|
|
146
|
+
permissions: this.config.permissions,
|
|
147
|
+
colorScheme: this.config.colorScheme,
|
|
148
|
+
baseURL: this.config.baseURL,
|
|
149
|
+
extraHTTPHeaders: this.config.extraHTTPHeaders,
|
|
150
|
+
};
|
|
151
|
+
// Apply device emulation if specified
|
|
152
|
+
if (this.config.deviceEmulation && test_1.devices[this.config.deviceEmulation]) {
|
|
153
|
+
Object.assign(contextOptions, test_1.devices[this.config.deviceEmulation]);
|
|
154
|
+
}
|
|
155
|
+
// Load storage state if provided
|
|
156
|
+
if (this.config.storageState) {
|
|
157
|
+
contextOptions.storageState = this.config.storageState;
|
|
158
|
+
}
|
|
159
|
+
// Set up proxy if configured
|
|
160
|
+
if (this.config.proxy) {
|
|
161
|
+
contextOptions.proxy = {
|
|
162
|
+
server: this.config.proxy.server,
|
|
163
|
+
username: this.config.proxy.username,
|
|
164
|
+
password: this.config.proxy.password,
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
// Set up video recording if enabled
|
|
168
|
+
if (this.config.recordVideo) {
|
|
169
|
+
const videoDir = this.config.videoDir || "./videos";
|
|
170
|
+
(0, utils_1.ensureDir)(videoDir);
|
|
171
|
+
contextOptions.recordVideo = {
|
|
172
|
+
dir: videoDir,
|
|
173
|
+
size: this.config.viewport,
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
return await this.browser.newContext(contextOptions);
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Set up event listeners on a page
|
|
180
|
+
*/
|
|
181
|
+
setupPageListeners(page) {
|
|
182
|
+
// Log console messages
|
|
183
|
+
page.on("console", (msg) => {
|
|
184
|
+
this.logger.trace(`Browser console [${msg.type()}]: ${msg.text()}`);
|
|
185
|
+
});
|
|
186
|
+
// Log page errors
|
|
187
|
+
page.on("pageerror", (error) => {
|
|
188
|
+
this.logger.error(`Page error: ${error.message}`);
|
|
189
|
+
});
|
|
190
|
+
// Log request failures
|
|
191
|
+
page.on("requestfailed", (request) => {
|
|
192
|
+
this.logger.warn(`Request failed: ${request.url()} - ${request.failure()?.errorText}`);
|
|
193
|
+
});
|
|
194
|
+
// Track page close
|
|
195
|
+
page.on("close", () => {
|
|
196
|
+
this.pages = this.pages.filter((p) => p !== page);
|
|
197
|
+
if (page === this.page && this.pages.length > 0) {
|
|
198
|
+
this.page = this.pages[this.pages.length - 1];
|
|
199
|
+
}
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Get the underlying Playwright Page object
|
|
204
|
+
*/
|
|
205
|
+
getDriver() {
|
|
206
|
+
this.ensureInitialized("getDriver");
|
|
207
|
+
return this.page;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Get the current page
|
|
211
|
+
*/
|
|
212
|
+
getPage() {
|
|
213
|
+
this.ensureInitialized("getPage");
|
|
214
|
+
return this.page;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Get the browser instance
|
|
218
|
+
*/
|
|
219
|
+
getBrowser() {
|
|
220
|
+
this.ensureInitialized("getBrowser");
|
|
221
|
+
return this.browser;
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Get the browser context
|
|
225
|
+
*/
|
|
226
|
+
getContext() {
|
|
227
|
+
this.ensureInitialized("getContext");
|
|
228
|
+
return this.context;
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Navigate to a URL
|
|
232
|
+
*/
|
|
233
|
+
async navigateTo(url) {
|
|
234
|
+
this.ensureInitialized("navigateTo");
|
|
235
|
+
// Execute before navigate hooks
|
|
236
|
+
await this.hooks.execute(hook_manager_1.HookEvent.BEFORE_NAVIGATE, {
|
|
237
|
+
platform: this.platform,
|
|
238
|
+
data: { url },
|
|
239
|
+
});
|
|
240
|
+
const startTime = this.logActionStart("navigate", { url });
|
|
241
|
+
try {
|
|
242
|
+
this.logger.navigation(url);
|
|
243
|
+
await this.page.goto(url, {
|
|
244
|
+
timeout: this.getTimeout(),
|
|
245
|
+
waitUntil: "domcontentloaded",
|
|
246
|
+
});
|
|
247
|
+
this.logActionEnd("navigate", startTime, { url });
|
|
248
|
+
// Execute after navigate hooks
|
|
249
|
+
await this.hooks.execute(hook_manager_1.HookEvent.AFTER_NAVIGATE, {
|
|
250
|
+
platform: this.platform,
|
|
251
|
+
data: { url, success: true },
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
catch (error) {
|
|
255
|
+
const err = error;
|
|
256
|
+
this.logActionFailed("navigate", err, { url });
|
|
257
|
+
throw new utils_1.NavigationError(url, err.message);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Get current URL
|
|
262
|
+
*/
|
|
263
|
+
async getCurrentUrl() {
|
|
264
|
+
this.ensureInitialized("getCurrentUrl");
|
|
265
|
+
return this.page.url();
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Get page title
|
|
269
|
+
*/
|
|
270
|
+
async getTitle() {
|
|
271
|
+
this.ensureInitialized("getTitle");
|
|
272
|
+
return await this.page.title();
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Go back in browser history
|
|
276
|
+
*/
|
|
277
|
+
async goBack() {
|
|
278
|
+
this.ensureInitialized("goBack");
|
|
279
|
+
await this.executeAction("goBack", async () => {
|
|
280
|
+
await this.page.goBack({ timeout: this.getTimeout() });
|
|
281
|
+
});
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Go forward in browser history
|
|
285
|
+
*/
|
|
286
|
+
async goForward() {
|
|
287
|
+
this.ensureInitialized("goForward");
|
|
288
|
+
await this.executeAction("goForward", async () => {
|
|
289
|
+
await this.page.goForward({ timeout: this.getTimeout() });
|
|
290
|
+
});
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Refresh the current page
|
|
294
|
+
*/
|
|
295
|
+
async refresh() {
|
|
296
|
+
this.ensureInitialized("refresh");
|
|
297
|
+
await this.executeAction("refresh", async () => {
|
|
298
|
+
await this.page.reload({ timeout: this.getTimeout() });
|
|
299
|
+
});
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Create a new page/tab
|
|
303
|
+
*/
|
|
304
|
+
async newPage() {
|
|
305
|
+
this.ensureInitialized("newPage");
|
|
306
|
+
const page = await this.context.newPage();
|
|
307
|
+
this.setupPageListeners(page);
|
|
308
|
+
this.pages.push(page);
|
|
309
|
+
this.page = page;
|
|
310
|
+
this.logger.debug("Created new page", { totalPages: this.pages.length });
|
|
311
|
+
return page;
|
|
312
|
+
}
|
|
313
|
+
/**
|
|
314
|
+
* Close the current page
|
|
315
|
+
*/
|
|
316
|
+
async closePage() {
|
|
317
|
+
this.ensureInitialized("closePage");
|
|
318
|
+
if (this.pages.length <= 1) {
|
|
319
|
+
this.logger.warn("Cannot close the last page");
|
|
320
|
+
return;
|
|
321
|
+
}
|
|
322
|
+
await this.page.close();
|
|
323
|
+
this.logger.debug("Closed page", { remainingPages: this.pages.length });
|
|
324
|
+
}
|
|
325
|
+
/**
|
|
326
|
+
* Get all pages
|
|
327
|
+
*/
|
|
328
|
+
getAllPages() {
|
|
329
|
+
this.ensureInitialized("getAllPages");
|
|
330
|
+
return [...this.pages];
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* Switch to page by index
|
|
334
|
+
*/
|
|
335
|
+
async switchToPage(index) {
|
|
336
|
+
this.ensureInitialized("switchToPage");
|
|
337
|
+
if (index < 0 || index >= this.pages.length) {
|
|
338
|
+
throw new Error(`Invalid page index: ${index}. Available pages: ${this.pages.length}`);
|
|
339
|
+
}
|
|
340
|
+
this.page = this.pages[index];
|
|
341
|
+
await this.page.bringToFront();
|
|
342
|
+
this.logger.debug("Switched to page", { index, url: this.page.url() });
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* Wait for navigation to complete
|
|
346
|
+
*/
|
|
347
|
+
async waitForNavigation(options = {}) {
|
|
348
|
+
this.ensureInitialized("waitForNavigation");
|
|
349
|
+
await this.page.waitForNavigation({
|
|
350
|
+
timeout: options.timeout ?? this.getTimeout(),
|
|
351
|
+
});
|
|
352
|
+
}
|
|
353
|
+
/**
|
|
354
|
+
* Wait for page load state
|
|
355
|
+
*/
|
|
356
|
+
async waitForLoadState(state = "load") {
|
|
357
|
+
this.ensureInitialized("waitForLoadState");
|
|
358
|
+
await this.page.waitForLoadState(state);
|
|
359
|
+
}
|
|
360
|
+
/**
|
|
361
|
+
* Set viewport size
|
|
362
|
+
*/
|
|
363
|
+
async setViewportSize(width, height) {
|
|
364
|
+
this.ensureInitialized("setViewportSize");
|
|
365
|
+
await this.page.setViewportSize({ width, height });
|
|
366
|
+
this.logger.debug("Set viewport size", { width, height });
|
|
367
|
+
}
|
|
368
|
+
/**
|
|
369
|
+
* Take a screenshot
|
|
370
|
+
*/
|
|
371
|
+
async takeScreenshot(options = {}) {
|
|
372
|
+
this.ensureInitialized("takeScreenshot");
|
|
373
|
+
// Execute before screenshot hooks
|
|
374
|
+
await this.hooks.execute(hook_manager_1.HookEvent.BEFORE_SCREENSHOT, {
|
|
375
|
+
platform: this.platform,
|
|
376
|
+
data: { options },
|
|
377
|
+
});
|
|
378
|
+
const buffer = await this.page.screenshot({
|
|
379
|
+
fullPage: options.fullPage,
|
|
380
|
+
type: options.type || "png",
|
|
381
|
+
quality: options.type === "jpeg" ? options.quality : undefined,
|
|
382
|
+
clip: options.clip,
|
|
383
|
+
});
|
|
384
|
+
// Save to file if path specified or screenshotOnFailure is enabled
|
|
385
|
+
if (options.path) {
|
|
386
|
+
await this.saveScreenshot(buffer, options);
|
|
387
|
+
}
|
|
388
|
+
// Execute after screenshot hooks
|
|
389
|
+
await this.hooks.execute(hook_manager_1.HookEvent.AFTER_SCREENSHOT, {
|
|
390
|
+
platform: this.platform,
|
|
391
|
+
data: { options, path: options.path },
|
|
392
|
+
});
|
|
393
|
+
return buffer;
|
|
394
|
+
}
|
|
395
|
+
/**
|
|
396
|
+
* Execute JavaScript in the browser
|
|
397
|
+
*/
|
|
398
|
+
async executeScript(script, ...args) {
|
|
399
|
+
this.ensureInitialized("executeScript");
|
|
400
|
+
const result = await this.page.evaluate(script, ...args);
|
|
401
|
+
return result;
|
|
402
|
+
}
|
|
403
|
+
/**
|
|
404
|
+
* Get all cookies
|
|
405
|
+
*/
|
|
406
|
+
async getCookies() {
|
|
407
|
+
this.ensureInitialized("getCookies");
|
|
408
|
+
const cookies = await this.context.cookies();
|
|
409
|
+
return cookies.map((c) => ({
|
|
410
|
+
name: c.name,
|
|
411
|
+
value: c.value,
|
|
412
|
+
domain: c.domain,
|
|
413
|
+
path: c.path,
|
|
414
|
+
expires: c.expires,
|
|
415
|
+
httpOnly: c.httpOnly,
|
|
416
|
+
secure: c.secure,
|
|
417
|
+
sameSite: c.sameSite,
|
|
418
|
+
}));
|
|
419
|
+
}
|
|
420
|
+
/**
|
|
421
|
+
* Add a cookie
|
|
422
|
+
*/
|
|
423
|
+
async addCookie(cookie) {
|
|
424
|
+
this.ensureInitialized("addCookie");
|
|
425
|
+
await this.context.addCookies([
|
|
426
|
+
cookie,
|
|
427
|
+
]);
|
|
428
|
+
this.logger.debug("Added cookie", { name: cookie.name });
|
|
429
|
+
}
|
|
430
|
+
/**
|
|
431
|
+
* Clear all cookies
|
|
432
|
+
*/
|
|
433
|
+
async clearCookies() {
|
|
434
|
+
this.ensureInitialized("clearCookies");
|
|
435
|
+
await this.context.clearCookies();
|
|
436
|
+
this.logger.debug("Cleared all cookies");
|
|
437
|
+
}
|
|
438
|
+
/**
|
|
439
|
+
* Get local storage item
|
|
440
|
+
*/
|
|
441
|
+
async getLocalStorage(key) {
|
|
442
|
+
this.ensureInitialized("getLocalStorage");
|
|
443
|
+
return await this.page.evaluate((k) => localStorage.getItem(k), key);
|
|
444
|
+
}
|
|
445
|
+
/**
|
|
446
|
+
* Set local storage item
|
|
447
|
+
*/
|
|
448
|
+
async setLocalStorage(key, value) {
|
|
449
|
+
this.ensureInitialized("setLocalStorage");
|
|
450
|
+
await this.page.evaluate(({ k, v }) => localStorage.setItem(k, v), {
|
|
451
|
+
k: key,
|
|
452
|
+
v: value,
|
|
453
|
+
});
|
|
454
|
+
this.logger.debug("Set localStorage", { key });
|
|
455
|
+
}
|
|
456
|
+
/**
|
|
457
|
+
* Clear local storage
|
|
458
|
+
*/
|
|
459
|
+
async clearLocalStorage() {
|
|
460
|
+
this.ensureInitialized("clearLocalStorage");
|
|
461
|
+
await this.page.evaluate(() => localStorage.clear());
|
|
462
|
+
this.logger.debug("Cleared localStorage");
|
|
463
|
+
}
|
|
464
|
+
/**
|
|
465
|
+
* Get session storage item
|
|
466
|
+
*/
|
|
467
|
+
async getSessionStorage(key) {
|
|
468
|
+
this.ensureInitialized("getSessionStorage");
|
|
469
|
+
return await this.page.evaluate((k) => sessionStorage.getItem(k), key);
|
|
470
|
+
}
|
|
471
|
+
/**
|
|
472
|
+
* Set session storage item
|
|
473
|
+
*/
|
|
474
|
+
async setSessionStorage(key, value) {
|
|
475
|
+
this.ensureInitialized("setSessionStorage");
|
|
476
|
+
await this.page.evaluate(({ k, v }) => sessionStorage.setItem(k, v), {
|
|
477
|
+
k: key,
|
|
478
|
+
v: value,
|
|
479
|
+
});
|
|
480
|
+
this.logger.debug("Set sessionStorage", { key });
|
|
481
|
+
}
|
|
482
|
+
/**
|
|
483
|
+
* Clear session storage
|
|
484
|
+
*/
|
|
485
|
+
async clearSessionStorage() {
|
|
486
|
+
this.ensureInitialized("clearSessionStorage");
|
|
487
|
+
await this.page.evaluate(() => sessionStorage.clear());
|
|
488
|
+
this.logger.debug("Cleared sessionStorage");
|
|
489
|
+
}
|
|
490
|
+
/**
|
|
491
|
+
* Save storage state to file (cookies + localStorage)
|
|
492
|
+
*/
|
|
493
|
+
async saveStorageState(filePath) {
|
|
494
|
+
this.ensureInitialized("saveStorageState");
|
|
495
|
+
const absolutePath = path.resolve(filePath);
|
|
496
|
+
(0, utils_1.ensureDir)(path.dirname(absolutePath));
|
|
497
|
+
await this.context.storageState({ path: absolutePath });
|
|
498
|
+
this.logger.info("Saved storage state", { path: absolutePath });
|
|
499
|
+
}
|
|
500
|
+
/**
|
|
501
|
+
* Start tracing
|
|
502
|
+
*/
|
|
503
|
+
async startTracing(options) {
|
|
504
|
+
this.ensureInitialized("startTracing");
|
|
505
|
+
await this.context.tracing.start({
|
|
506
|
+
screenshots: options?.screenshots ?? true,
|
|
507
|
+
snapshots: options?.snapshots ?? true,
|
|
508
|
+
});
|
|
509
|
+
this.logger.debug("Started tracing");
|
|
510
|
+
}
|
|
511
|
+
/**
|
|
512
|
+
* Stop tracing and save to file
|
|
513
|
+
*/
|
|
514
|
+
async stopTracing(filePath) {
|
|
515
|
+
this.ensureInitialized("stopTracing");
|
|
516
|
+
const traceDir = this.config.traceDir || "./traces";
|
|
517
|
+
(0, utils_1.ensureDir)(traceDir);
|
|
518
|
+
const absolutePath = path.isAbsolute(filePath)
|
|
519
|
+
? filePath
|
|
520
|
+
: path.join(traceDir, filePath);
|
|
521
|
+
await this.context.tracing.stop({ path: absolutePath });
|
|
522
|
+
this.logger.info("Stopped tracing", { path: absolutePath });
|
|
523
|
+
}
|
|
524
|
+
/**
|
|
525
|
+
* Quit the driver and close the browser
|
|
526
|
+
*/
|
|
527
|
+
async quit() {
|
|
528
|
+
if (!this.initialized) {
|
|
529
|
+
return;
|
|
530
|
+
}
|
|
531
|
+
// Execute before quit hooks
|
|
532
|
+
await this.hooks.execute(hook_manager_1.HookEvent.BEFORE_DRIVER_QUIT, {
|
|
533
|
+
platform: this.platform,
|
|
534
|
+
driverStatus: this.getStatus(),
|
|
535
|
+
});
|
|
536
|
+
try {
|
|
537
|
+
// Close all pages
|
|
538
|
+
for (const page of this.pages) {
|
|
539
|
+
await page.close().catch(() => {
|
|
540
|
+
/* ignore errors */
|
|
541
|
+
});
|
|
542
|
+
}
|
|
543
|
+
this.pages = [];
|
|
544
|
+
this.page = null;
|
|
545
|
+
// Close context
|
|
546
|
+
if (this.context) {
|
|
547
|
+
await this.context.close().catch(() => {
|
|
548
|
+
/* ignore errors */
|
|
549
|
+
});
|
|
550
|
+
this.context = null;
|
|
551
|
+
}
|
|
552
|
+
// Close browser
|
|
553
|
+
if (this.browser) {
|
|
554
|
+
await this.browser.close();
|
|
555
|
+
this.browser = null;
|
|
556
|
+
}
|
|
557
|
+
await super.quit();
|
|
558
|
+
// Execute after quit hooks
|
|
559
|
+
await this.hooks.execute(hook_manager_1.HookEvent.AFTER_DRIVER_QUIT, {
|
|
560
|
+
platform: this.platform,
|
|
561
|
+
});
|
|
562
|
+
}
|
|
563
|
+
catch (error) {
|
|
564
|
+
this.logger.error("Error during WebDriver quit", {
|
|
565
|
+
error: error.message,
|
|
566
|
+
});
|
|
567
|
+
}
|
|
568
|
+
}
|
|
569
|
+
}
|
|
570
|
+
exports.WebDriver = WebDriver;
|
|
571
|
+
//# sourceMappingURL=web.driver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web.driver.js","sourceRoot":"","sources":["../../src/web/web.driver.ts"],"names":[],"mappings":"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"}
|