@testring/plugin-selenium-driver 0.8.6 → 0.8.8
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/dist/plugin/index.d.ts +4 -0
- package/dist/plugin/index.d.ts.map +1 -1
- package/dist/plugin/index.js +76 -42
- package/dist/plugin/index.js.map +1 -1
- package/package.json +7 -6
- package/src/plugin/index.ts +246 -115
package/dist/plugin/index.d.ts
CHANGED
|
@@ -45,6 +45,9 @@ export declare class SeleniumPlugin implements IBrowserProxyPlugin {
|
|
|
45
45
|
private traverseToLastParentSelector;
|
|
46
46
|
private traverseShadowDom;
|
|
47
47
|
end(applicant: string): Promise<void>;
|
|
48
|
+
private closeAllBrowserSessions;
|
|
49
|
+
private cleanupSeleniumProcess;
|
|
50
|
+
private killSeleniumProcessTree;
|
|
48
51
|
kill(): Promise<void>;
|
|
49
52
|
refresh(applicant: string): Promise<void>;
|
|
50
53
|
click(applicant: string, selector: Selector, options?: ClickOptions): Promise<void>;
|
|
@@ -100,6 +103,7 @@ export declare class SeleniumPlugin implements IBrowserProxyPlugin {
|
|
|
100
103
|
getText(applicant: string, selector: Selector): Promise<string>;
|
|
101
104
|
elementIdSelected(applicant: string, id: string): Promise<boolean>;
|
|
102
105
|
makeScreenshot(applicant: string): Promise<string | void>;
|
|
106
|
+
makeElementScreenshot(applicant: string, selector: Selector, scroll?: boolean): Promise<string | void>;
|
|
103
107
|
uploadFile(applicant: string, filePath: string): Promise<string | void>;
|
|
104
108
|
getCssProperty(applicant: string, selector: Selector, cssProperty: string): Promise<any>;
|
|
105
109
|
getSource(applicant: string): Promise<string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,oBAAoB,EAAkB,MAAM,UAAU,CAAC;AAC/D,OAAO,EACH,mBAAmB,EACnB,cAAc,EACd,oBAAoB,EAEpB,QAAQ,EAIX,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":"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"}
|
package/dist/plugin/index.js
CHANGED
|
@@ -36,6 +36,7 @@ const deepmerge = __importStar(require("deepmerge"));
|
|
|
36
36
|
const child_process_1 = require("@testring/child-process");
|
|
37
37
|
const logger_1 = require("@testring/logger");
|
|
38
38
|
const dwnld_collector_crx_1 = require("@testring/dwnld-collector-crx");
|
|
39
|
+
const tree_kill_1 = __importDefault(require("tree-kill"));
|
|
39
40
|
const webdriver_1 = __importDefault(require("webdriver"));
|
|
40
41
|
const DEFAULT_CONFIG = {
|
|
41
42
|
recorderExtension: false,
|
|
@@ -180,7 +181,8 @@ class SeleniumPlugin {
|
|
|
180
181
|
return mergedConfig;
|
|
181
182
|
}
|
|
182
183
|
initIntervals() {
|
|
183
|
-
if (this.config.workerLimit !== 'local' &&
|
|
184
|
+
if (this.config.workerLimit !== 'local' &&
|
|
185
|
+
!this.config.disableClientPing) {
|
|
184
186
|
if (this.config.clientCheckInterval > 0) {
|
|
185
187
|
this.clientCheckInterval = setInterval(() => this.checkClientsTimeout(), this.config.clientCheckInterval);
|
|
186
188
|
}
|
|
@@ -202,9 +204,18 @@ class SeleniumPlugin {
|
|
|
202
204
|
// Note: SIGKILL cannot be caught or handled - it immediately terminates the process
|
|
203
205
|
}
|
|
204
206
|
forceKillSelenium() {
|
|
205
|
-
if (this.localSelenium &&
|
|
206
|
-
this.
|
|
207
|
-
this.localSelenium.
|
|
207
|
+
if (this.localSelenium &&
|
|
208
|
+
!this.localSelenium.killed &&
|
|
209
|
+
this.localSelenium.pid) {
|
|
210
|
+
this.logger.debug('Force killing Selenium process tree due to signal');
|
|
211
|
+
(0, tree_kill_1.default)(this.localSelenium.pid, 'SIGKILL', (err) => {
|
|
212
|
+
if (err) {
|
|
213
|
+
this.logger.error(`Failed to force kill Selenium process tree: ${err.message}`);
|
|
214
|
+
}
|
|
215
|
+
else {
|
|
216
|
+
this.logger.debug('Selenium process tree force killed');
|
|
217
|
+
}
|
|
218
|
+
});
|
|
208
219
|
}
|
|
209
220
|
}
|
|
210
221
|
stopAllSessions() {
|
|
@@ -481,12 +492,7 @@ class SeleniumPlugin {
|
|
|
481
492
|
this.browserClients.delete(applicant);
|
|
482
493
|
this.customBrowserClientsConfigs.delete(applicant);
|
|
483
494
|
}
|
|
484
|
-
async
|
|
485
|
-
var _a, _b, _c, _d;
|
|
486
|
-
this.logger.debug('Kill command is called');
|
|
487
|
-
// Set killed flag to prevent new operations
|
|
488
|
-
this.killed = true;
|
|
489
|
-
// Close all browser sessions
|
|
495
|
+
async closeAllBrowserSessions() {
|
|
490
496
|
for (const applicant of this.browserClients.keys()) {
|
|
491
497
|
try {
|
|
492
498
|
await this.end(applicant);
|
|
@@ -495,6 +501,51 @@ class SeleniumPlugin {
|
|
|
495
501
|
this.logger.error(e);
|
|
496
502
|
}
|
|
497
503
|
}
|
|
504
|
+
}
|
|
505
|
+
cleanupSeleniumProcess() {
|
|
506
|
+
var _a, _b, _c, _d;
|
|
507
|
+
if (!this.localSelenium) {
|
|
508
|
+
return;
|
|
509
|
+
}
|
|
510
|
+
// remove listener
|
|
511
|
+
if (this.localSelenium.stderr) {
|
|
512
|
+
this.localSelenium.stderr.removeAllListeners('data');
|
|
513
|
+
(_a = this.localSelenium.stdout) === null || _a === void 0 ? void 0 : _a.removeAllListeners();
|
|
514
|
+
}
|
|
515
|
+
// Ensure all pipes are closed
|
|
516
|
+
(_b = this.localSelenium.stdout) === null || _b === void 0 ? void 0 : _b.destroy();
|
|
517
|
+
(_c = this.localSelenium.stderr) === null || _c === void 0 ? void 0 : _c.destroy();
|
|
518
|
+
(_d = this.localSelenium.stdin) === null || _d === void 0 ? void 0 : _d.destroy();
|
|
519
|
+
}
|
|
520
|
+
async killSeleniumProcessTree(pid) {
|
|
521
|
+
return new Promise((resolve) => {
|
|
522
|
+
(0, tree_kill_1.default)(pid, 'SIGTERM', (err) => {
|
|
523
|
+
if (err) {
|
|
524
|
+
this.logger.warn(`Failed to kill process tree with SIGTERM: ${err.message}`);
|
|
525
|
+
// Fallback to SIGKILL if SIGTERM fails
|
|
526
|
+
(0, tree_kill_1.default)(pid, 'SIGKILL', (killErr) => {
|
|
527
|
+
if (killErr) {
|
|
528
|
+
this.logger.error(`Failed to kill process tree with SIGKILL: ${killErr.message}`);
|
|
529
|
+
}
|
|
530
|
+
else {
|
|
531
|
+
this.logger.debug('Process tree killed with SIGKILL');
|
|
532
|
+
}
|
|
533
|
+
resolve();
|
|
534
|
+
});
|
|
535
|
+
}
|
|
536
|
+
else {
|
|
537
|
+
this.logger.debug('Process tree killed with SIGTERM');
|
|
538
|
+
resolve();
|
|
539
|
+
}
|
|
540
|
+
});
|
|
541
|
+
});
|
|
542
|
+
}
|
|
543
|
+
async kill() {
|
|
544
|
+
this.logger.debug('Kill command is called');
|
|
545
|
+
// Set killed flag to prevent new operations
|
|
546
|
+
this.killed = true;
|
|
547
|
+
// Close all browser sessions
|
|
548
|
+
await this.closeAllBrowserSessions();
|
|
498
549
|
// If using 'local' mode, stop all active sessions
|
|
499
550
|
if (this.config.workerLimit === 'local') {
|
|
500
551
|
await this.stopAllSessions();
|
|
@@ -505,40 +556,17 @@ class SeleniumPlugin {
|
|
|
505
556
|
this.logger.debug('Selenium process already killed');
|
|
506
557
|
return;
|
|
507
558
|
}
|
|
508
|
-
|
|
509
|
-
if (
|
|
510
|
-
this.
|
|
511
|
-
|
|
559
|
+
const pid = this.localSelenium.pid;
|
|
560
|
+
if (!pid) {
|
|
561
|
+
this.logger.warn('Selenium process has no PID, cannot kill process tree');
|
|
562
|
+
return;
|
|
512
563
|
}
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
this.logger.debug(`Stopping local Selenium server (PID: ${this.localSelenium.pid})`);
|
|
518
|
-
// Try SIGTERM first
|
|
519
|
-
this.localSelenium.kill('SIGTERM');
|
|
520
|
-
// Wait for exit event with a timeout (ensures it does not hang forever)
|
|
521
|
-
const waitForExit = new Promise((resolve) => {
|
|
522
|
-
var _a;
|
|
523
|
-
(_a = this.localSelenium) === null || _a === void 0 ? void 0 : _a.once('exit', () => {
|
|
524
|
-
this.logger.debug('Selenium process exited.');
|
|
525
|
-
resolve();
|
|
526
|
-
});
|
|
527
|
-
});
|
|
528
|
-
// Force kill if not exiting within 1 second (reduced from 3 seconds)
|
|
529
|
-
const forceKill = new Promise((resolve) => {
|
|
530
|
-
setTimeout(() => {
|
|
531
|
-
if (this.localSelenium && !this.localSelenium.killed) {
|
|
532
|
-
this.logger.warn(`Selenium did not exit in time. Sending SIGKILL.`);
|
|
533
|
-
this.localSelenium.kill('SIGKILL');
|
|
534
|
-
}
|
|
535
|
-
resolve();
|
|
536
|
-
}, 1000); // Reduced timeout for faster cleanup
|
|
537
|
-
});
|
|
538
|
-
// Wait for either normal exit or force kill
|
|
539
|
-
await Promise.race([waitForExit, forceKill]);
|
|
564
|
+
this.cleanupSeleniumProcess();
|
|
565
|
+
this.logger.debug(`Stopping local Selenium server and all child processes (PID: ${pid})`);
|
|
566
|
+
// Use tree-kill to properly terminate the process tree
|
|
567
|
+
await this.killSeleniumProcessTree(pid);
|
|
540
568
|
this.localSelenium.removeAllListeners();
|
|
541
|
-
this.logger.debug('Selenium process and all associated pipes closed.');
|
|
569
|
+
this.logger.debug('Selenium process tree and all associated pipes closed.');
|
|
542
570
|
}
|
|
543
571
|
}
|
|
544
572
|
async refresh(applicant) {
|
|
@@ -823,6 +851,12 @@ class SeleniumPlugin {
|
|
|
823
851
|
const client = this.getBrowserClient(applicant);
|
|
824
852
|
return client.takeScreenshot();
|
|
825
853
|
}
|
|
854
|
+
async makeElementScreenshot(applicant, selector, scroll = true) {
|
|
855
|
+
await this.createClient(applicant);
|
|
856
|
+
const client = this.getBrowserClient(applicant);
|
|
857
|
+
const element = await this.getElement(applicant, selector);
|
|
858
|
+
return client.takeElementScreenshot(await element.elementId, scroll);
|
|
859
|
+
}
|
|
826
860
|
async uploadFile(applicant, filePath) {
|
|
827
861
|
await this.createClient(applicant);
|
|
828
862
|
const client = this.getBrowserClient(applicant);
|
package/dist/plugin/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@testring/plugin-selenium-driver",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.8",
|
|
4
4
|
"main": "./dist/index.js",
|
|
5
5
|
"typings": "./src/index.ts",
|
|
6
6
|
"repository": {
|
|
@@ -13,11 +13,11 @@
|
|
|
13
13
|
"author": "RingCentral",
|
|
14
14
|
"license": "MIT",
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"@testring/child-process": "0.8.
|
|
17
|
-
"@testring/dwnld-collector-crx": "0.8.
|
|
18
|
-
"@testring/logger": "0.8.
|
|
19
|
-
"@testring/plugin-api": "0.8.
|
|
20
|
-
"@testring/types": "0.8.
|
|
16
|
+
"@testring/child-process": "0.8.8",
|
|
17
|
+
"@testring/dwnld-collector-crx": "0.8.8",
|
|
18
|
+
"@testring/logger": "0.8.8",
|
|
19
|
+
"@testring/plugin-api": "0.8.8",
|
|
20
|
+
"@testring/types": "0.8.8",
|
|
21
21
|
"@types/deepmerge": "2.2.3",
|
|
22
22
|
"@types/node": "22.8.5",
|
|
23
23
|
"@wdio/types": "9.2.2",
|
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
"deepmerge": "4.3.1",
|
|
26
26
|
"puppeteer-core": "22.3.0",
|
|
27
27
|
"selenium-server": "3.141.59",
|
|
28
|
+
"tree-kill": "1.2.2",
|
|
28
29
|
"webdriverio": "9.20.0"
|
|
29
30
|
}
|
|
30
31
|
}
|
package/src/plugin/index.ts
CHANGED
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
Selector,
|
|
8
8
|
ShadowCssSelector,
|
|
9
9
|
isXpathSelector,
|
|
10
|
-
isShadowCssSelector
|
|
10
|
+
isShadowCssSelector,
|
|
11
11
|
} from '@testring/types';
|
|
12
12
|
|
|
13
13
|
import {ChildProcess} from 'child_process';
|
|
@@ -20,6 +20,7 @@ import * as deepmerge from 'deepmerge';
|
|
|
20
20
|
import {spawnWithPipes} from '@testring/child-process';
|
|
21
21
|
import {loggerClient} from '@testring/logger';
|
|
22
22
|
import {getCrxBase64} from '@testring/dwnld-collector-crx';
|
|
23
|
+
import kill from 'tree-kill';
|
|
23
24
|
|
|
24
25
|
import type {Cookie} from '@wdio/protocols';
|
|
25
26
|
import type {ClickOptions, MockFilterOptions, WaitUntilOptions} from 'webdriverio';
|
|
@@ -77,17 +78,17 @@ function getSeleniumJarPath(version: SeleniumVersion): string {
|
|
|
77
78
|
if (version === 'v4') {
|
|
78
79
|
// For Selenium v4, we expect the JAR to be in a specific location
|
|
79
80
|
const seleniumV4Path = path.join(__dirname, '..', 'selenium-server-v4', 'selenium-server-4.34.0.jar');
|
|
80
|
-
|
|
81
|
+
|
|
81
82
|
if (!fs.existsSync(seleniumV4Path)) {
|
|
82
83
|
throw new Error(
|
|
83
84
|
`Selenium v4 JAR not found at expected path: ${seleniumV4Path}. ` +
|
|
84
|
-
'Please ensure selenium-server-4.34.0.jar is available in the package directory.'
|
|
85
|
+
'Please ensure selenium-server-4.34.0.jar is available in the package directory.',
|
|
85
86
|
);
|
|
86
87
|
}
|
|
87
|
-
|
|
88
|
+
|
|
88
89
|
return seleniumV4Path;
|
|
89
90
|
}
|
|
90
|
-
|
|
91
|
+
|
|
91
92
|
// For v3 and other versions, use the original logic
|
|
92
93
|
const seleniumServer = require('selenium-server');
|
|
93
94
|
return seleniumServer.path;
|
|
@@ -99,7 +100,7 @@ function setupProcessListeners(
|
|
|
99
100
|
resolve: () => void,
|
|
100
101
|
reject: (error: Error) => void,
|
|
101
102
|
version: SeleniumVersion,
|
|
102
|
-
logger: {
|
|
103
|
+
logger: {verbose: (message: string) => void},
|
|
103
104
|
) {
|
|
104
105
|
if (!seleniumProcess.stderr && !seleniumProcess.stdout) {
|
|
105
106
|
reject(new Error('There is no STDERR or STDOUT on selenium worker'));
|
|
@@ -119,9 +120,14 @@ function setupProcessListeners(
|
|
|
119
120
|
v3: 'SeleniumServer.boot',
|
|
120
121
|
};
|
|
121
122
|
|
|
122
|
-
const checkForReadyMessage = (
|
|
123
|
-
|
|
124
|
-
|
|
123
|
+
const checkForReadyMessage = (
|
|
124
|
+
message: string,
|
|
125
|
+
stream: 'stdout' | 'stderr',
|
|
126
|
+
) => {
|
|
127
|
+
logger.verbose(
|
|
128
|
+
`[Selenium ${version}] [${stream.toUpperCase()}] ${message.trim()}`,
|
|
129
|
+
);
|
|
130
|
+
|
|
125
131
|
if (message.includes(readyMessages[version])) {
|
|
126
132
|
isReady = true;
|
|
127
133
|
clearTimeout(timeout);
|
|
@@ -134,20 +140,24 @@ function setupProcessListeners(
|
|
|
134
140
|
seleniumProcess.stdout?.on('data', (data) => {
|
|
135
141
|
checkForReadyMessage(data.toString(), 'stdout');
|
|
136
142
|
});
|
|
137
|
-
|
|
143
|
+
|
|
138
144
|
// Also listen to stderr for error messages
|
|
139
145
|
seleniumProcess.stderr?.on('data', (data) => {
|
|
140
|
-
logger.verbose(
|
|
146
|
+
logger.verbose(
|
|
147
|
+
`[Selenium ${version}] [STDERR] ${data.toString().trim()}`,
|
|
148
|
+
);
|
|
141
149
|
});
|
|
142
150
|
} else {
|
|
143
151
|
// For v3, ready message appears in stderr
|
|
144
152
|
seleniumProcess.stderr?.on('data', (data) => {
|
|
145
153
|
checkForReadyMessage(data.toString(), 'stderr');
|
|
146
154
|
});
|
|
147
|
-
|
|
155
|
+
|
|
148
156
|
// Also listen to stdout for other messages
|
|
149
157
|
seleniumProcess.stdout?.on('data', (data) => {
|
|
150
|
-
logger.verbose(
|
|
158
|
+
logger.verbose(
|
|
159
|
+
`[Selenium ${version}] [STDOUT] ${data.toString().trim()}`,
|
|
160
|
+
);
|
|
151
161
|
});
|
|
152
162
|
}
|
|
153
163
|
|
|
@@ -159,7 +169,11 @@ function setupProcessListeners(
|
|
|
159
169
|
seleniumProcess.on('exit', (code) => {
|
|
160
170
|
if (!isReady) {
|
|
161
171
|
clearTimeout(timeout);
|
|
162
|
-
reject(
|
|
172
|
+
reject(
|
|
173
|
+
new Error(
|
|
174
|
+
`Selenium process exited with code ${code} before becoming ready`,
|
|
175
|
+
),
|
|
176
|
+
);
|
|
163
177
|
}
|
|
164
178
|
});
|
|
165
179
|
}
|
|
@@ -173,7 +187,8 @@ export class SeleniumPlugin implements IBrowserProxyPlugin {
|
|
|
173
187
|
|
|
174
188
|
private browserClients: Map<string, browserClientItem> = new Map();
|
|
175
189
|
|
|
176
|
-
private customBrowserClientsConfigs: Map<string, WebdriverIOConfig> =
|
|
190
|
+
private customBrowserClientsConfigs: Map<string, WebdriverIOConfig> =
|
|
191
|
+
new Map();
|
|
177
192
|
|
|
178
193
|
private waitForReadyState: Promise<void> = Promise.resolve();
|
|
179
194
|
|
|
@@ -227,7 +242,10 @@ export class SeleniumPlugin implements IBrowserProxyPlugin {
|
|
|
227
242
|
}
|
|
228
243
|
|
|
229
244
|
private initIntervals() {
|
|
230
|
-
if (
|
|
245
|
+
if (
|
|
246
|
+
this.config.workerLimit !== 'local' &&
|
|
247
|
+
!this.config.disableClientPing
|
|
248
|
+
) {
|
|
231
249
|
if (this.config.clientCheckInterval > 0) {
|
|
232
250
|
this.clientCheckInterval = setInterval(
|
|
233
251
|
() => this.checkClientsTimeout(),
|
|
@@ -248,18 +266,36 @@ export class SeleniumPlugin implements IBrowserProxyPlugin {
|
|
|
248
266
|
process.on('exit', () => this.forceKillSelenium());
|
|
249
267
|
process.on('SIGINT', () => this.forceKillSelenium());
|
|
250
268
|
process.on('SIGTERM', () => this.forceKillSelenium());
|
|
251
|
-
|
|
269
|
+
|
|
252
270
|
// Debug mode specific cleanup handlers
|
|
253
271
|
process.on('SIGUSR1', () => this.forceKillSelenium()); // Debugger disconnect
|
|
254
272
|
process.on('SIGUSR2', () => this.forceKillSelenium()); // Debugger disconnect alternative
|
|
255
|
-
|
|
273
|
+
|
|
256
274
|
// Note: SIGKILL cannot be caught or handled - it immediately terminates the process
|
|
257
275
|
}
|
|
258
276
|
|
|
259
277
|
private forceKillSelenium() {
|
|
260
|
-
if (
|
|
261
|
-
this.
|
|
262
|
-
this.localSelenium.
|
|
278
|
+
if (
|
|
279
|
+
this.localSelenium &&
|
|
280
|
+
!this.localSelenium.killed &&
|
|
281
|
+
this.localSelenium.pid
|
|
282
|
+
) {
|
|
283
|
+
this.logger.debug(
|
|
284
|
+
'Force killing Selenium process tree due to signal',
|
|
285
|
+
);
|
|
286
|
+
kill(
|
|
287
|
+
this.localSelenium.pid,
|
|
288
|
+
'SIGKILL',
|
|
289
|
+
(err: Error | undefined) => {
|
|
290
|
+
if (err) {
|
|
291
|
+
this.logger.error(
|
|
292
|
+
`Failed to force kill Selenium process tree: ${err.message}`,
|
|
293
|
+
);
|
|
294
|
+
} else {
|
|
295
|
+
this.logger.debug('Selenium process tree force killed');
|
|
296
|
+
}
|
|
297
|
+
},
|
|
298
|
+
);
|
|
263
299
|
}
|
|
264
300
|
}
|
|
265
301
|
|
|
@@ -287,7 +323,7 @@ export class SeleniumPlugin implements IBrowserProxyPlugin {
|
|
|
287
323
|
if (this.config.chromeDriverPath) {
|
|
288
324
|
return this.config.chromeDriverPath;
|
|
289
325
|
}
|
|
290
|
-
|
|
326
|
+
|
|
291
327
|
return require('chromedriver').path;
|
|
292
328
|
}
|
|
293
329
|
|
|
@@ -297,15 +333,20 @@ export class SeleniumPlugin implements IBrowserProxyPlugin {
|
|
|
297
333
|
return [`-Dwebdriver.chrome.driver=${chromeDriverPath}`];
|
|
298
334
|
}
|
|
299
335
|
|
|
300
|
-
private buildSeleniumArgs(
|
|
336
|
+
private buildSeleniumArgs(
|
|
337
|
+
seleniumJarPath: string,
|
|
338
|
+
version: SeleniumVersion,
|
|
339
|
+
port: number,
|
|
340
|
+
chromeDriverArgs: string[],
|
|
341
|
+
): string[] {
|
|
301
342
|
const args = [...chromeDriverArgs];
|
|
302
|
-
|
|
343
|
+
|
|
303
344
|
if (version === 'v4') {
|
|
304
345
|
args.push(
|
|
305
|
-
'-jar',
|
|
306
|
-
seleniumJarPath,
|
|
307
|
-
'standalone',
|
|
308
|
-
'--port',
|
|
346
|
+
'-jar',
|
|
347
|
+
seleniumJarPath,
|
|
348
|
+
'standalone',
|
|
349
|
+
'--port',
|
|
309
350
|
port.toString(),
|
|
310
351
|
'--host',
|
|
311
352
|
'127.0.0.1',
|
|
@@ -313,12 +354,12 @@ export class SeleniumPlugin implements IBrowserProxyPlugin {
|
|
|
313
354
|
} else {
|
|
314
355
|
args.push('-jar', seleniumJarPath, '-port', port.toString());
|
|
315
356
|
}
|
|
316
|
-
|
|
357
|
+
|
|
317
358
|
// Append custom selenium arguments if provided
|
|
318
359
|
if (this.config.seleniumArgs && this.config.seleniumArgs.length > 0) {
|
|
319
360
|
args.push(...this.config.seleniumArgs);
|
|
320
361
|
}
|
|
321
|
-
|
|
362
|
+
|
|
322
363
|
return args;
|
|
323
364
|
}
|
|
324
365
|
|
|
@@ -329,15 +370,30 @@ export class SeleniumPlugin implements IBrowserProxyPlugin {
|
|
|
329
370
|
try {
|
|
330
371
|
const seleniumJarPath = getSeleniumJarPath(version);
|
|
331
372
|
const chromeDriverArgs = this.getChromeDriverArgs();
|
|
332
|
-
const seleniumArgs = this.buildSeleniumArgs(
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
373
|
+
const seleniumArgs = this.buildSeleniumArgs(
|
|
374
|
+
seleniumJarPath,
|
|
375
|
+
version,
|
|
376
|
+
this.config.port || 4444,
|
|
377
|
+
chromeDriverArgs,
|
|
378
|
+
);
|
|
379
|
+
|
|
380
|
+
this.logger.debug(
|
|
381
|
+
`Starting Selenium with command: java ${seleniumArgs.join(
|
|
382
|
+
' ',
|
|
383
|
+
)}`,
|
|
384
|
+
);
|
|
385
|
+
|
|
336
386
|
this.localSelenium = spawnWithPipes('java', seleniumArgs);
|
|
337
387
|
|
|
338
388
|
this.waitForReadyState = new Promise((resolve, reject) => {
|
|
339
389
|
if (this.localSelenium) {
|
|
340
|
-
setupProcessListeners(
|
|
390
|
+
setupProcessListeners(
|
|
391
|
+
this.localSelenium,
|
|
392
|
+
resolve,
|
|
393
|
+
reject,
|
|
394
|
+
version,
|
|
395
|
+
this.logger,
|
|
396
|
+
);
|
|
341
397
|
} else {
|
|
342
398
|
reject(new Error('Failed to spawn Selenium process'));
|
|
343
399
|
}
|
|
@@ -346,9 +402,11 @@ export class SeleniumPlugin implements IBrowserProxyPlugin {
|
|
|
346
402
|
// Wait for the server to be ready
|
|
347
403
|
await this.waitForReadyState;
|
|
348
404
|
this.logger.debug(`Selenium server (${version}) is ready`);
|
|
349
|
-
|
|
350
405
|
} catch (err) {
|
|
351
|
-
this.logger.error(
|
|
406
|
+
this.logger.error(
|
|
407
|
+
`Local selenium server init failed (version: ${version})`,
|
|
408
|
+
err,
|
|
409
|
+
);
|
|
352
410
|
throw err; // Re-throw to allow upstream error handling
|
|
353
411
|
}
|
|
354
412
|
}
|
|
@@ -415,15 +473,10 @@ export class SeleniumPlugin implements IBrowserProxyPlugin {
|
|
|
415
473
|
applicant: string,
|
|
416
474
|
config: WebdriverIOConfig,
|
|
417
475
|
) {
|
|
418
|
-
this.customBrowserClientsConfigs.set(
|
|
419
|
-
applicant,
|
|
420
|
-
config
|
|
421
|
-
);
|
|
476
|
+
this.customBrowserClientsConfigs.set(applicant, config);
|
|
422
477
|
}
|
|
423
478
|
|
|
424
|
-
public getCustomBrowserClientConfig(
|
|
425
|
-
applicant: string,
|
|
426
|
-
) {
|
|
479
|
+
public getCustomBrowserClientConfig(applicant: string) {
|
|
427
480
|
return this.customBrowserClientsConfigs.get(applicant);
|
|
428
481
|
}
|
|
429
482
|
|
|
@@ -434,7 +487,7 @@ export class SeleniumPlugin implements IBrowserProxyPlugin {
|
|
|
434
487
|
if (this.killed) {
|
|
435
488
|
throw new Error('SeleniumPlugin is being killed');
|
|
436
489
|
}
|
|
437
|
-
|
|
490
|
+
|
|
438
491
|
await this.waitForReadyState;
|
|
439
492
|
const clientData = this.browserClients.get(applicant);
|
|
440
493
|
|
|
@@ -498,13 +551,16 @@ export class SeleniumPlugin implements IBrowserProxyPlugin {
|
|
|
498
551
|
} else if (isShadowCssSelector(selector)) {
|
|
499
552
|
return this.getElementFromShadowCss(client, selector);
|
|
500
553
|
}
|
|
501
|
-
|
|
554
|
+
|
|
502
555
|
throw new Error('Unknown selector type');
|
|
503
556
|
}
|
|
504
557
|
|
|
505
|
-
private async getElementFromShadowCss(
|
|
558
|
+
private async getElementFromShadowCss(
|
|
559
|
+
client: BrowserObjectCustom,
|
|
560
|
+
selector: ShadowCssSelector,
|
|
561
|
+
) {
|
|
506
562
|
const {css, parentSelectors} = selector;
|
|
507
|
-
|
|
563
|
+
|
|
508
564
|
// Error first: validate selector structure
|
|
509
565
|
this.validateShadowCssSelector(selector);
|
|
510
566
|
|
|
@@ -513,7 +569,11 @@ export class SeleniumPlugin implements IBrowserProxyPlugin {
|
|
|
513
569
|
} catch (error) {
|
|
514
570
|
// Provide more context in error messages
|
|
515
571
|
if (error instanceof Error) {
|
|
516
|
-
throw new Error(
|
|
572
|
+
throw new Error(
|
|
573
|
+
`Shadow DOM traversal failed: ${
|
|
574
|
+
error.message
|
|
575
|
+
}. Selector: ${JSON.stringify(selector)}`,
|
|
576
|
+
);
|
|
517
577
|
}
|
|
518
578
|
throw error;
|
|
519
579
|
}
|
|
@@ -521,43 +581,54 @@ export class SeleniumPlugin implements IBrowserProxyPlugin {
|
|
|
521
581
|
|
|
522
582
|
private validateShadowCssSelector(selector: ShadowCssSelector): void {
|
|
523
583
|
const {css, parentSelectors} = selector;
|
|
524
|
-
|
|
584
|
+
|
|
525
585
|
if (!css || typeof css !== 'string') {
|
|
526
586
|
throw new Error('Shadow CSS selector must have a valid CSS string');
|
|
527
587
|
}
|
|
528
|
-
|
|
588
|
+
|
|
529
589
|
if (!Array.isArray(parentSelectors) || parentSelectors.length === 0) {
|
|
530
|
-
throw new Error(
|
|
590
|
+
throw new Error(
|
|
591
|
+
'Shadow CSS selector must have at least one parent selector',
|
|
592
|
+
);
|
|
531
593
|
}
|
|
532
|
-
|
|
594
|
+
|
|
533
595
|
// Validate all parent selectors are non-empty strings
|
|
534
596
|
for (const [index, parentSelector] of parentSelectors.entries()) {
|
|
535
597
|
if (!parentSelector || typeof parentSelector !== 'string') {
|
|
536
|
-
throw new Error(
|
|
598
|
+
throw new Error(
|
|
599
|
+
`Parent selector at index ${index} must be a non-empty string`,
|
|
600
|
+
);
|
|
537
601
|
}
|
|
538
602
|
}
|
|
539
603
|
}
|
|
540
604
|
|
|
541
|
-
private async traverseToLastParentSelector(
|
|
605
|
+
private async traverseToLastParentSelector(
|
|
606
|
+
client: BrowserObjectCustom,
|
|
607
|
+
parentSelectors: string[],
|
|
608
|
+
) {
|
|
542
609
|
const [firstParentSelector, ...restParentSelectors] = parentSelectors;
|
|
543
|
-
|
|
610
|
+
|
|
544
611
|
// TypeScript assertion: we know firstParentSelector exists due to validation
|
|
545
612
|
if (!firstParentSelector) {
|
|
546
613
|
throw new Error('First parent selector is required');
|
|
547
614
|
}
|
|
548
|
-
|
|
615
|
+
|
|
549
616
|
// Get the first parent element
|
|
550
617
|
let currentElement = await client.$(firstParentSelector);
|
|
551
|
-
|
|
618
|
+
|
|
552
619
|
if (!currentElement) {
|
|
553
|
-
throw new Error(
|
|
620
|
+
throw new Error(
|
|
621
|
+
`Failed to find parent element with selector: ${firstParentSelector}`,
|
|
622
|
+
);
|
|
554
623
|
}
|
|
555
624
|
|
|
556
625
|
// Traverse through shadow DOM hierarchy
|
|
557
626
|
for (const parentSelector of restParentSelectors) {
|
|
558
627
|
const shadowElement = await currentElement.shadow$(parentSelector);
|
|
559
628
|
if (!shadowElement) {
|
|
560
|
-
throw new Error(
|
|
629
|
+
throw new Error(
|
|
630
|
+
`Failed to find shadow element with selector: ${parentSelector}`,
|
|
631
|
+
);
|
|
561
632
|
}
|
|
562
633
|
currentElement = shadowElement;
|
|
563
634
|
}
|
|
@@ -565,14 +636,23 @@ export class SeleniumPlugin implements IBrowserProxyPlugin {
|
|
|
565
636
|
return currentElement;
|
|
566
637
|
}
|
|
567
638
|
|
|
568
|
-
private async traverseShadowDom(
|
|
639
|
+
private async traverseShadowDom(
|
|
640
|
+
client: BrowserObjectCustom,
|
|
641
|
+
css: string,
|
|
642
|
+
parentSelectors: string[],
|
|
643
|
+
) {
|
|
569
644
|
// Traverse to the last parent selector
|
|
570
|
-
const lastParentElement = await this.traverseToLastParentSelector(
|
|
645
|
+
const lastParentElement = await this.traverseToLastParentSelector(
|
|
646
|
+
client,
|
|
647
|
+
parentSelectors,
|
|
648
|
+
);
|
|
571
649
|
|
|
572
650
|
// Get the final target element within the shadow DOM
|
|
573
651
|
const targetElement = await lastParentElement.shadow$(css);
|
|
574
652
|
if (!targetElement) {
|
|
575
|
-
throw new Error(
|
|
653
|
+
throw new Error(
|
|
654
|
+
`Failed to find target element with CSS selector: ${css}`,
|
|
655
|
+
);
|
|
576
656
|
}
|
|
577
657
|
|
|
578
658
|
return targetElement;
|
|
@@ -605,7 +685,7 @@ export class SeleniumPlugin implements IBrowserProxyPlugin {
|
|
|
605
685
|
} else {
|
|
606
686
|
await this.logger.stepWarning(
|
|
607
687
|
`Stopping sessions for applicant warning ${applicant}. ` +
|
|
608
|
-
|
|
688
|
+
`Session ids are not equal, started with - ${startingSessionID}, ended with - ${sessionID}`,
|
|
609
689
|
async () => {
|
|
610
690
|
try {
|
|
611
691
|
if (startingSessionID) {
|
|
@@ -640,13 +720,7 @@ export class SeleniumPlugin implements IBrowserProxyPlugin {
|
|
|
640
720
|
this.customBrowserClientsConfigs.delete(applicant);
|
|
641
721
|
}
|
|
642
722
|
|
|
643
|
-
|
|
644
|
-
this.logger.debug('Kill command is called');
|
|
645
|
-
|
|
646
|
-
// Set killed flag to prevent new operations
|
|
647
|
-
this.killed = true;
|
|
648
|
-
|
|
649
|
-
// Close all browser sessions
|
|
723
|
+
private async closeAllBrowserSessions() {
|
|
650
724
|
for (const applicant of this.browserClients.keys()) {
|
|
651
725
|
try {
|
|
652
726
|
await this.end(applicant);
|
|
@@ -654,6 +728,61 @@ export class SeleniumPlugin implements IBrowserProxyPlugin {
|
|
|
654
728
|
this.logger.error(e);
|
|
655
729
|
}
|
|
656
730
|
}
|
|
731
|
+
}
|
|
732
|
+
|
|
733
|
+
private cleanupSeleniumProcess() {
|
|
734
|
+
if (!this.localSelenium) {
|
|
735
|
+
return;
|
|
736
|
+
}
|
|
737
|
+
|
|
738
|
+
// remove listener
|
|
739
|
+
if (this.localSelenium.stderr) {
|
|
740
|
+
this.localSelenium.stderr.removeAllListeners('data');
|
|
741
|
+
this.localSelenium.stdout?.removeAllListeners();
|
|
742
|
+
}
|
|
743
|
+
|
|
744
|
+
// Ensure all pipes are closed
|
|
745
|
+
this.localSelenium.stdout?.destroy();
|
|
746
|
+
this.localSelenium.stderr?.destroy();
|
|
747
|
+
this.localSelenium.stdin?.destroy();
|
|
748
|
+
}
|
|
749
|
+
|
|
750
|
+
private async killSeleniumProcessTree(pid: number): Promise<void> {
|
|
751
|
+
return new Promise<void>((resolve) => {
|
|
752
|
+
kill(pid, 'SIGTERM', (err: Error | undefined) => {
|
|
753
|
+
if (err) {
|
|
754
|
+
this.logger.warn(
|
|
755
|
+
`Failed to kill process tree with SIGTERM: ${err.message}`,
|
|
756
|
+
);
|
|
757
|
+
// Fallback to SIGKILL if SIGTERM fails
|
|
758
|
+
kill(pid, 'SIGKILL', (killErr: Error | undefined) => {
|
|
759
|
+
if (killErr) {
|
|
760
|
+
this.logger.error(
|
|
761
|
+
`Failed to kill process tree with SIGKILL: ${killErr.message}`,
|
|
762
|
+
);
|
|
763
|
+
} else {
|
|
764
|
+
this.logger.debug(
|
|
765
|
+
'Process tree killed with SIGKILL',
|
|
766
|
+
);
|
|
767
|
+
}
|
|
768
|
+
resolve();
|
|
769
|
+
});
|
|
770
|
+
} else {
|
|
771
|
+
this.logger.debug('Process tree killed with SIGTERM');
|
|
772
|
+
resolve();
|
|
773
|
+
}
|
|
774
|
+
});
|
|
775
|
+
});
|
|
776
|
+
}
|
|
777
|
+
|
|
778
|
+
public async kill() {
|
|
779
|
+
this.logger.debug('Kill command is called');
|
|
780
|
+
|
|
781
|
+
// Set killed flag to prevent new operations
|
|
782
|
+
this.killed = true;
|
|
783
|
+
|
|
784
|
+
// Close all browser sessions
|
|
785
|
+
await this.closeAllBrowserSessions();
|
|
657
786
|
|
|
658
787
|
// If using 'local' mode, stop all active sessions
|
|
659
788
|
if (this.config.workerLimit === 'local') {
|
|
@@ -666,53 +795,28 @@ export class SeleniumPlugin implements IBrowserProxyPlugin {
|
|
|
666
795
|
this.logger.debug('Selenium process already killed');
|
|
667
796
|
return;
|
|
668
797
|
}
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
if (
|
|
672
|
-
this.
|
|
673
|
-
|
|
798
|
+
|
|
799
|
+
const pid = this.localSelenium.pid;
|
|
800
|
+
if (!pid) {
|
|
801
|
+
this.logger.warn(
|
|
802
|
+
'Selenium process has no PID, cannot kill process tree',
|
|
803
|
+
);
|
|
804
|
+
return;
|
|
674
805
|
}
|
|
675
806
|
|
|
676
|
-
|
|
677
|
-
this.localSelenium.stdout?.destroy();
|
|
678
|
-
this.localSelenium.stderr?.destroy();
|
|
679
|
-
this.localSelenium.stdin?.destroy();
|
|
807
|
+
this.cleanupSeleniumProcess();
|
|
680
808
|
|
|
681
809
|
this.logger.debug(
|
|
682
|
-
`Stopping local Selenium server (PID: ${
|
|
810
|
+
`Stopping local Selenium server and all child processes (PID: ${pid})`,
|
|
683
811
|
);
|
|
684
812
|
|
|
685
|
-
//
|
|
686
|
-
this.
|
|
687
|
-
|
|
688
|
-
// Wait for exit event with a timeout (ensures it does not hang forever)
|
|
689
|
-
const waitForExit = new Promise<void>((resolve) => {
|
|
690
|
-
this.localSelenium?.once('exit', () => {
|
|
691
|
-
this.logger.debug('Selenium process exited.');
|
|
692
|
-
resolve();
|
|
693
|
-
});
|
|
694
|
-
});
|
|
695
|
-
|
|
696
|
-
// Force kill if not exiting within 1 second (reduced from 3 seconds)
|
|
697
|
-
const forceKill = new Promise<void>((resolve) => {
|
|
698
|
-
setTimeout(() => {
|
|
699
|
-
if (this.localSelenium && !this.localSelenium.killed) {
|
|
700
|
-
this.logger.warn(
|
|
701
|
-
`Selenium did not exit in time. Sending SIGKILL.`,
|
|
702
|
-
);
|
|
703
|
-
this.localSelenium.kill('SIGKILL');
|
|
704
|
-
}
|
|
705
|
-
resolve();
|
|
706
|
-
}, 1000); // Reduced timeout for faster cleanup
|
|
707
|
-
});
|
|
708
|
-
|
|
709
|
-
// Wait for either normal exit or force kill
|
|
710
|
-
await Promise.race([waitForExit, forceKill]);
|
|
813
|
+
// Use tree-kill to properly terminate the process tree
|
|
814
|
+
await this.killSeleniumProcessTree(pid);
|
|
711
815
|
|
|
712
816
|
this.localSelenium.removeAllListeners();
|
|
713
817
|
|
|
714
818
|
this.logger.debug(
|
|
715
|
-
'Selenium process and all associated pipes closed.',
|
|
819
|
+
'Selenium process tree and all associated pipes closed.',
|
|
716
820
|
);
|
|
717
821
|
}
|
|
718
822
|
}
|
|
@@ -852,7 +956,10 @@ export class SeleniumPlugin implements IBrowserProxyPlugin {
|
|
|
852
956
|
const client = this.getBrowserClient(applicant);
|
|
853
957
|
|
|
854
958
|
if (isXpathSelector(selector)) {
|
|
855
|
-
const elements = (await client.findElements(
|
|
959
|
+
const elements = (await client.findElements(
|
|
960
|
+
'xpath',
|
|
961
|
+
selector.xpath,
|
|
962
|
+
)) as unknown;
|
|
856
963
|
return (elements as Array<Record<string, string>>).map((o) => {
|
|
857
964
|
const keys = Object.keys(o);
|
|
858
965
|
const firstKey = keys[0];
|
|
@@ -862,13 +969,16 @@ export class SeleniumPlugin implements IBrowserProxyPlugin {
|
|
|
862
969
|
return {ELEMENT: o[firstKey]};
|
|
863
970
|
});
|
|
864
971
|
} else if (isShadowCssSelector(selector)) {
|
|
865
|
-
const lastParentElement = await this.traverseToLastParentSelector(
|
|
972
|
+
const lastParentElement = await this.traverseToLastParentSelector(
|
|
973
|
+
client,
|
|
974
|
+
selector.parentSelectors,
|
|
975
|
+
);
|
|
866
976
|
const elements = lastParentElement.shadow$$(selector.css);
|
|
867
977
|
return elements.map((element) => {
|
|
868
978
|
return {ELEMENT: element.elementId};
|
|
869
979
|
});
|
|
870
980
|
}
|
|
871
|
-
|
|
981
|
+
|
|
872
982
|
throw new Error('Unknown selector type');
|
|
873
983
|
}
|
|
874
984
|
|
|
@@ -895,12 +1005,20 @@ export class SeleniumPlugin implements IBrowserProxyPlugin {
|
|
|
895
1005
|
return element.setValue(value);
|
|
896
1006
|
}
|
|
897
1007
|
|
|
898
|
-
public async selectByIndex(
|
|
1008
|
+
public async selectByIndex(
|
|
1009
|
+
applicant: string,
|
|
1010
|
+
selector: Selector,
|
|
1011
|
+
value: any,
|
|
1012
|
+
) {
|
|
899
1013
|
const element = await this.getElement(applicant, selector);
|
|
900
1014
|
return element.selectByIndex(value);
|
|
901
1015
|
}
|
|
902
1016
|
|
|
903
|
-
public async selectByValue(
|
|
1017
|
+
public async selectByValue(
|
|
1018
|
+
applicant: string,
|
|
1019
|
+
selector: Selector,
|
|
1020
|
+
value: any,
|
|
1021
|
+
) {
|
|
904
1022
|
const element = await this.getElement(applicant, selector);
|
|
905
1023
|
return element.selectByAttribute('value', value);
|
|
906
1024
|
}
|
|
@@ -1003,7 +1121,10 @@ export class SeleniumPlugin implements IBrowserProxyPlugin {
|
|
|
1003
1121
|
destinationSelector: Selector,
|
|
1004
1122
|
) {
|
|
1005
1123
|
const sourceElement = await this.getElement(applicant, sourceSelector);
|
|
1006
|
-
const destinationElement = await this.getElement(
|
|
1124
|
+
const destinationElement = await this.getElement(
|
|
1125
|
+
applicant,
|
|
1126
|
+
destinationSelector,
|
|
1127
|
+
);
|
|
1007
1128
|
return sourceElement.dragAndDrop(destinationElement);
|
|
1008
1129
|
}
|
|
1009
1130
|
|
|
@@ -1126,6 +1247,14 @@ export class SeleniumPlugin implements IBrowserProxyPlugin {
|
|
|
1126
1247
|
return client.takeScreenshot();
|
|
1127
1248
|
}
|
|
1128
1249
|
|
|
1250
|
+
public async makeElementScreenshot(applicant: string, selector: Selector, scroll: boolean = true): Promise<string | void> {
|
|
1251
|
+
await this.createClient(applicant);
|
|
1252
|
+
const client = this.getBrowserClient(applicant);
|
|
1253
|
+
const element = await this.getElement(applicant, selector);
|
|
1254
|
+
|
|
1255
|
+
return client.takeElementScreenshot(await element.elementId, scroll);
|
|
1256
|
+
}
|
|
1257
|
+
|
|
1129
1258
|
public async uploadFile(
|
|
1130
1259
|
applicant: string,
|
|
1131
1260
|
filePath: string,
|
|
@@ -1337,7 +1466,9 @@ export class SeleniumPlugin implements IBrowserProxyPlugin {
|
|
|
1337
1466
|
return client.setTimeZone(timeZone);
|
|
1338
1467
|
}
|
|
1339
1468
|
|
|
1340
|
-
public async getWindowSize(
|
|
1469
|
+
public async getWindowSize(
|
|
1470
|
+
applicant: string,
|
|
1471
|
+
): Promise<{width: number; height: number}> {
|
|
1341
1472
|
await this.createClient(applicant);
|
|
1342
1473
|
const client = this.getBrowserClient(applicant);
|
|
1343
1474
|
return client.getWindowSize();
|