@testring/plugin-selenium-driver 0.7.1 → 0.7.3

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/index.js CHANGED
@@ -7,3 +7,4 @@ function seleniumPlugin(pluginAPI, userConfig) {
7
7
  const browserProxy = pluginAPI.getBrowserProxy();
8
8
  browserProxy.proxyPlugin(pluginPath, userConfig || {});
9
9
  }
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAIA,iCAQC;AAZD,6BAA6B;AAI7B,SAAwB,cAAc,CAClC,SAAoB,EACpB,UAAgC;IAEhC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IACpD,MAAM,YAAY,GAAG,SAAS,CAAC,eAAe,EAAE,CAAC;IAEjD,YAAY,CAAC,WAAW,CAAC,UAAU,EAAE,UAAU,IAAI,EAAE,CAAC,CAAC;AAC3D,CAAC"}
@@ -8,6 +8,17 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
9
  });
10
10
  };
11
+ var __rest = (this && this.__rest) || function (s, e) {
12
+ var t = {};
13
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
14
+ t[p] = s[p];
15
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
16
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
17
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
18
+ t[p[i]] = s[p[i]];
19
+ }
20
+ return t;
21
+ };
11
22
  Object.defineProperty(exports, "__esModule", { value: true });
12
23
  exports.SeleniumPlugin = void 0;
13
24
  exports.default = seleniumProxy;
@@ -30,7 +41,7 @@ const DEFAULT_CONFIG = {
30
41
  // for local ChromeDriver
31
42
  args: [],
32
43
  },
33
- 'wdio:enforceWebDriverClassic': true
44
+ 'wdio:enforceWebDriverClassic': true,
34
45
  },
35
46
  cdpCoverage: false,
36
47
  };
@@ -85,15 +96,17 @@ class SeleniumPlugin {
85
96
  return mergedConfig;
86
97
  }
87
98
  initIntervals() {
88
- if (this.config.clientCheckInterval > 0) {
89
- this.clientCheckInterval = setInterval(() => this.checkClientsTimeout(), this.config.clientCheckInterval);
90
- }
91
- process.on('exit', () => {
92
- clearInterval(this.clientCheckInterval);
93
- this.stopAllSessions().catch((err) => {
94
- this.logger.error('Clean process exit failed', err);
99
+ if (this.config.workerLimit !== 'local') {
100
+ if (this.config.clientCheckInterval > 0) {
101
+ this.clientCheckInterval = setInterval(() => this.checkClientsTimeout(), this.config.clientCheckInterval);
102
+ }
103
+ process.on('exit', () => {
104
+ clearInterval(this.clientCheckInterval);
105
+ this.stopAllSessions().catch((err) => {
106
+ this.logger.error('Clean process exit failed', err);
107
+ });
95
108
  });
96
- });
109
+ }
97
110
  }
98
111
  stopAllSessions() {
99
112
  const clientsRequests = [];
@@ -121,7 +134,7 @@ class SeleniumPlugin {
121
134
  const seleniumJarPath = seleniumServer.path;
122
135
  this.logger.debug('Init local selenium server');
123
136
  try {
124
- this.localSelenium = (0, child_process_1.spawn)('java', [
137
+ this.localSelenium = (0, child_process_1.spawnWithPipes)('java', [
125
138
  ...this.getChromeDriverArgs(),
126
139
  '-jar',
127
140
  seleniumJarPath,
@@ -329,7 +342,9 @@ class SeleniumPlugin {
329
342
  }
330
343
  kill() {
331
344
  return __awaiter(this, void 0, void 0, function* () {
345
+ var _a, _b, _c, _d;
332
346
  this.logger.debug('Kill command is called');
347
+ // Close all browser sessions
333
348
  for (const applicant of this.browserClients.keys()) {
334
349
  try {
335
350
  yield this.end(applicant);
@@ -338,8 +353,44 @@ class SeleniumPlugin {
338
353
  this.logger.error(e);
339
354
  }
340
355
  }
356
+ // If using 'local' mode, stop all active sessions
357
+ if (this.config.workerLimit === 'local') {
358
+ yield this.stopAllSessions();
359
+ }
341
360
  if (this.localSelenium) {
342
- this.localSelenium.kill();
361
+ // remove listener
362
+ if (this.localSelenium.stderr) {
363
+ this.localSelenium.stderr.removeAllListeners('data');
364
+ (_a = this.localSelenium.stdout) === null || _a === void 0 ? void 0 : _a.removeAllListeners();
365
+ }
366
+ // Ensure all pipes are closed
367
+ (_b = this.localSelenium.stdout) === null || _b === void 0 ? void 0 : _b.destroy();
368
+ (_c = this.localSelenium.stderr) === null || _c === void 0 ? void 0 : _c.destroy();
369
+ (_d = this.localSelenium.stdin) === null || _d === void 0 ? void 0 : _d.destroy();
370
+ this.logger.debug(`Stopping local Selenium server (PID: ${this.localSelenium.pid})`);
371
+ // Try SIGTERM first
372
+ this.localSelenium.kill('SIGTERM');
373
+ // Wait for exit event with a timeout (ensures it does not hang forever)
374
+ const waitForExit = new Promise((resolve) => {
375
+ this.localSelenium.once('exit', () => {
376
+ this.logger.debug('Selenium process exited.');
377
+ resolve();
378
+ });
379
+ });
380
+ // Force kill if not exiting within 3 seconds
381
+ const forceKill = new Promise((resolve) => {
382
+ setTimeout(() => {
383
+ if (!this.localSelenium.killed) {
384
+ this.logger.warn(`Selenium did not exit in time. Sending SIGKILL.`);
385
+ this.localSelenium.kill('SIGKILL');
386
+ }
387
+ resolve();
388
+ }, 3000);
389
+ });
390
+ // Wait for either normal exit or force kill
391
+ yield Promise.race([waitForExit, forceKill]);
392
+ this.localSelenium.removeAllListeners();
393
+ this.logger.debug('Selenium process and all associated pipes closed.');
343
394
  }
344
395
  });
345
396
  }
@@ -355,7 +406,9 @@ class SeleniumPlugin {
355
406
  yield this.createClient(applicant);
356
407
  const client = this.getBrowserClient(applicant);
357
408
  const element = yield client.$(selector);
358
- return options && Object.keys(options).length > 0 ? element.click(options) : element.click();
409
+ return options && Object.keys(options).length > 0
410
+ ? element.click(options)
411
+ : element.click();
359
412
  });
360
413
  }
361
414
  getSize(applicant, selector) {
@@ -445,7 +498,7 @@ class SeleniumPlugin {
445
498
  return client.getTitle();
446
499
  });
447
500
  }
448
- clearElement(applicant, xpath) {
501
+ clearValue(applicant, xpath) {
449
502
  return __awaiter(this, void 0, void 0, function* () {
450
503
  yield this.createClient(applicant);
451
504
  const client = this.getBrowserClient(applicant);
@@ -813,48 +866,34 @@ class SeleniumPlugin {
813
866
  return selector.selectByAttribute(attribute, value);
814
867
  });
815
868
  }
816
- // @deprecated WAT-1872
817
- gridProxyDetails(applicant) {
869
+ gridTestSession(applicant) {
818
870
  return __awaiter(this, void 0, void 0, function* () {
819
871
  yield this.createClient(applicant);
820
872
  const client = this.getBrowserClient(applicant);
821
873
  if (this.localSelenium) {
822
874
  return {
875
+ sessionId: client.sessionId,
876
+ host: this.config.host,
877
+ port: this.config.port,
823
878
  localSelenium: true,
824
879
  };
825
880
  }
826
- return client.gridProxyDetails(client.sessionId);
881
+ return client.gridTestSession(client.sessionId);
827
882
  });
828
883
  }
829
- // @deprecated WAT-1872
830
- gridTestSession(applicant) {
884
+ getHubConfig(applicant) {
831
885
  return __awaiter(this, void 0, void 0, function* () {
832
886
  yield this.createClient(applicant);
833
887
  const client = this.getBrowserClient(applicant);
834
888
  if (this.localSelenium) {
835
889
  return {
890
+ sessionId: client.sessionId,
891
+ host: this.config.host,
892
+ port: this.config.port,
836
893
  localSelenium: true,
837
894
  };
838
895
  }
839
- return client.gridTestSession(client.sessionId);
840
- });
841
- }
842
- // @deprecated WAT-1872
843
- getGridNodeDetails(applicant) {
844
- return __awaiter(this, void 0, void 0, function* () {
845
- yield this.createClient(applicant);
846
- const client = this.getBrowserClient(applicant);
847
- const testSession = yield this.gridTestSession(applicant);
848
- if (testSession && !testSession.localSelenium) {
849
- const proxyDetails = yield client.gridProxyDetails(applicant);
850
- delete testSession.msg;
851
- delete testSession.success;
852
- delete proxyDetails.msg;
853
- delete proxyDetails.success;
854
- delete proxyDetails.id;
855
- return Object.assign(Object.assign({}, testSession), proxyDetails);
856
- }
857
- return testSession;
896
+ return client.getHubConfig();
858
897
  });
859
898
  }
860
899
  /**
@@ -885,8 +924,131 @@ class SeleniumPlugin {
885
924
  });
886
925
  });
887
926
  }
927
+ status(applicant) {
928
+ return __awaiter(this, void 0, void 0, function* () {
929
+ yield this.createClient(applicant);
930
+ const client = this.getBrowserClient(applicant);
931
+ return client.status();
932
+ });
933
+ }
934
+ back(applicant) {
935
+ return __awaiter(this, void 0, void 0, function* () {
936
+ yield this.createClient(applicant);
937
+ const client = this.getBrowserClient(applicant);
938
+ return client.back();
939
+ });
940
+ }
941
+ forward(applicant) {
942
+ return __awaiter(this, void 0, void 0, function* () {
943
+ yield this.createClient(applicant);
944
+ const client = this.getBrowserClient(applicant);
945
+ return client.forward();
946
+ });
947
+ }
948
+ getActiveElement(applicant) {
949
+ return __awaiter(this, void 0, void 0, function* () {
950
+ yield this.createClient(applicant);
951
+ const client = this.getBrowserClient(applicant);
952
+ return client.getActiveElement();
953
+ });
954
+ }
955
+ getLocation(applicant, xpath) {
956
+ return __awaiter(this, void 0, void 0, function* () {
957
+ yield this.createClient(applicant);
958
+ const client = this.getBrowserClient(applicant);
959
+ const element = client.$(xpath);
960
+ return element.getLocation();
961
+ });
962
+ }
963
+ setTimeZone(applicant, timeZone) {
964
+ return __awaiter(this, void 0, void 0, function* () {
965
+ yield this.createClient(applicant);
966
+ const client = this.getBrowserClient(applicant);
967
+ return client.setTimeZone(timeZone);
968
+ });
969
+ }
970
+ getWindowSize(applicant) {
971
+ return __awaiter(this, void 0, void 0, function* () {
972
+ yield this.createClient(applicant);
973
+ const client = this.getBrowserClient(applicant);
974
+ return client.getWindowSize();
975
+ });
976
+ }
977
+ savePDF(applicant, options) {
978
+ return __awaiter(this, void 0, void 0, function* () {
979
+ yield this.createClient(applicant);
980
+ const client = this.getBrowserClient(applicant);
981
+ const { filepath } = options, restOptions = __rest(options, ["filepath"]);
982
+ return client.savePDF(filepath, restOptions);
983
+ });
984
+ }
985
+ addValue(applicant, xpath, value) {
986
+ return __awaiter(this, void 0, void 0, function* () {
987
+ yield this.createClient(applicant);
988
+ const client = this.getBrowserClient(applicant);
989
+ const selector = yield client.$(xpath);
990
+ return selector.addValue(value);
991
+ });
992
+ }
993
+ doubleClick(applicant, xpath) {
994
+ return __awaiter(this, void 0, void 0, function* () {
995
+ yield this.createClient(applicant);
996
+ const client = this.getBrowserClient(applicant);
997
+ const selector = yield client.$(xpath);
998
+ return selector.doubleClick();
999
+ });
1000
+ }
1001
+ isClickable(applicant, xpath) {
1002
+ return __awaiter(this, void 0, void 0, function* () {
1003
+ yield this.createClient(applicant);
1004
+ const client = this.getBrowserClient(applicant);
1005
+ const selector = yield client.$(xpath);
1006
+ return selector.isClickable();
1007
+ });
1008
+ }
1009
+ waitForClickable(applicant, xpath, timeout) {
1010
+ return __awaiter(this, void 0, void 0, function* () {
1011
+ yield this.createClient(applicant);
1012
+ const client = this.getBrowserClient(applicant);
1013
+ const selector = yield client.$(xpath);
1014
+ return selector.waitForClickable({ timeout });
1015
+ });
1016
+ }
1017
+ isFocused(applicant, xpath) {
1018
+ return __awaiter(this, void 0, void 0, function* () {
1019
+ yield this.createClient(applicant);
1020
+ const client = this.getBrowserClient(applicant);
1021
+ const selector = yield client.$(xpath);
1022
+ return selector.isFocused();
1023
+ });
1024
+ }
1025
+ isStable(applicant, xpath) {
1026
+ return __awaiter(this, void 0, void 0, function* () {
1027
+ yield this.createClient(applicant);
1028
+ const client = this.getBrowserClient(applicant);
1029
+ const selector = yield client.$(xpath);
1030
+ return selector.isStable();
1031
+ });
1032
+ }
1033
+ waitForEnabled(applicant, xpath, timeout) {
1034
+ return __awaiter(this, void 0, void 0, function* () {
1035
+ yield this.createClient(applicant);
1036
+ const client = this.getBrowserClient(applicant);
1037
+ const selector = yield client.$(xpath);
1038
+ return selector.waitForEnabled({ timeout });
1039
+ });
1040
+ }
1041
+ waitForStable(applicant, xpath, timeout) {
1042
+ return __awaiter(this, void 0, void 0, function* () {
1043
+ yield this.createClient(applicant);
1044
+ const client = this.getBrowserClient(applicant);
1045
+ const selector = yield client.$(xpath);
1046
+ return selector.waitForStable({ timeout });
1047
+ });
1048
+ }
888
1049
  }
889
1050
  exports.SeleniumPlugin = SeleniumPlugin;
890
1051
  function seleniumProxy(config) {
891
1052
  return new SeleniumPlugin(config);
892
1053
  }
1054
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":"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"}
package/dist/types.js CHANGED
@@ -1,2 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@testring/plugin-selenium-driver",
3
- "version": "0.7.1",
3
+ "version": "0.7.3",
4
4
  "main": "./dist/index.js",
5
5
  "typings": "./src/index.ts",
6
6
  "repository": {
@@ -11,11 +11,11 @@
11
11
  "license": "MIT",
12
12
  "dependencies": {
13
13
  "@nullcc/code-coverage-client": "1.4.2",
14
- "@testring/child-process": "0.7.1",
15
- "@testring/dwnld-collector-crx": "0.7.1",
16
- "@testring/logger": "0.7.1",
17
- "@testring/plugin-api": "0.7.1",
18
- "@testring/types": "0.7.1",
14
+ "@testring/child-process": "0.7.3",
15
+ "@testring/dwnld-collector-crx": "0.7.3",
16
+ "@testring/logger": "0.7.3",
17
+ "@testring/plugin-api": "0.7.3",
18
+ "@testring/types": "0.7.3",
19
19
  "@types/deepmerge": "2.2.3",
20
20
  "@types/node": "22.8.5",
21
21
  "@wdio/types": "9.2.2",
@@ -1,21 +1,22 @@
1
1
  import {SeleniumPluginConfig} from '../types';
2
- import {IBrowserProxyPlugin, WindowFeaturesConfig} from '@testring/types';
2
+ import {
3
+ IBrowserProxyPlugin,
4
+ SavePdfOptions,
5
+ WindowFeaturesConfig,
6
+ } from '@testring/types';
3
7
 
4
8
  import {ChildProcess} from 'child_process';
5
9
 
6
10
  import {remote} from 'webdriverio';
7
11
  import * as deepmerge from 'deepmerge';
8
12
 
9
- import {spawn} from '@testring/child-process';
13
+ import {spawnWithPipes} from '@testring/child-process';
10
14
  import {loggerClient} from '@testring/logger';
11
15
  import {getCrxBase64} from '@testring/dwnld-collector-crx';
12
16
  import {CDPCoverageCollector} from '@nullcc/code-coverage-client';
13
17
 
14
18
  import type {Cookie} from '@wdio/protocols';
15
- import type {
16
- ClickOptions,
17
- MockFilterOptions,
18
- } from 'webdriverio';
19
+ import type {ClickOptions, MockFilterOptions} from 'webdriverio';
19
20
  import type {JsonCompatible} from '@wdio/types';
20
21
  import type {RespondWithOptions} from 'webdriverio/build/utils/interception/types';
21
22
  import webdriver from 'webdriver';
@@ -43,7 +44,7 @@ const DEFAULT_CONFIG: SeleniumPluginConfig = {
43
44
  // for local ChromeDriver
44
45
  args: [] as string[],
45
46
  },
46
- 'wdio:enforceWebDriverClassic': true
47
+ 'wdio:enforceWebDriverClassic': true,
47
48
  },
48
49
  cdpCoverage: false,
49
50
  };
@@ -106,7 +107,8 @@ export class SeleniumPlugin implements IBrowserProxyPlugin {
106
107
  mergedConfig.hostname = mergedConfig.host;
107
108
  }
108
109
 
109
- const googleChromeOptions = mergedConfig.capabilities?.['goog:chromeOptions'];
110
+ const googleChromeOptions =
111
+ mergedConfig.capabilities?.['goog:chromeOptions'];
110
112
  if (googleChromeOptions?.args?.includes('--headless=new')) {
111
113
  const extensions = googleChromeOptions.extensions;
112
114
  const dowldMonitorCrx = getCrxBase64();
@@ -121,19 +123,21 @@ export class SeleniumPlugin implements IBrowserProxyPlugin {
121
123
  }
122
124
 
123
125
  private initIntervals() {
124
- if (this.config.clientCheckInterval > 0) {
125
- this.clientCheckInterval = setInterval(
126
- () => this.checkClientsTimeout(),
127
- this.config.clientCheckInterval,
128
- );
129
- }
126
+ if (this.config.workerLimit !== 'local') {
127
+ if (this.config.clientCheckInterval > 0) {
128
+ this.clientCheckInterval = setInterval(
129
+ () => this.checkClientsTimeout(),
130
+ this.config.clientCheckInterval,
131
+ );
132
+ }
130
133
 
131
- process.on('exit', () => {
132
- clearInterval(this.clientCheckInterval as NodeJS.Timeout);
133
- this.stopAllSessions().catch((err) => {
134
- this.logger.error('Clean process exit failed', err);
134
+ process.on('exit', () => {
135
+ clearInterval(this.clientCheckInterval as NodeJS.Timeout);
136
+ this.stopAllSessions().catch((err) => {
137
+ this.logger.error('Clean process exit failed', err);
138
+ });
135
139
  });
136
- });
140
+ }
137
141
  }
138
142
 
139
143
  private stopAllSessions() {
@@ -174,7 +178,7 @@ export class SeleniumPlugin implements IBrowserProxyPlugin {
174
178
  this.logger.debug('Init local selenium server');
175
179
 
176
180
  try {
177
- this.localSelenium = spawn('java', [
181
+ this.localSelenium = spawnWithPipes('java', [
178
182
  ...this.getChromeDriverArgs(),
179
183
  '-jar',
180
184
  seleniumJarPath,
@@ -421,6 +425,8 @@ export class SeleniumPlugin implements IBrowserProxyPlugin {
421
425
 
422
426
  public async kill() {
423
427
  this.logger.debug('Kill command is called');
428
+
429
+ // Close all browser sessions
424
430
  for (const applicant of this.browserClients.keys()) {
425
431
  try {
426
432
  await this.end(applicant);
@@ -429,8 +435,59 @@ export class SeleniumPlugin implements IBrowserProxyPlugin {
429
435
  }
430
436
  }
431
437
 
438
+ // If using 'local' mode, stop all active sessions
439
+ if (this.config.workerLimit === 'local') {
440
+ await this.stopAllSessions();
441
+ }
442
+
432
443
  if (this.localSelenium) {
433
- this.localSelenium.kill();
444
+ // remove listener
445
+ if (this.localSelenium.stderr) {
446
+ this.localSelenium.stderr.removeAllListeners('data');
447
+ this.localSelenium.stdout?.removeAllListeners();
448
+ }
449
+
450
+ // Ensure all pipes are closed
451
+ this.localSelenium.stdout?.destroy();
452
+ this.localSelenium.stderr?.destroy();
453
+ this.localSelenium.stdin?.destroy();
454
+
455
+ this.logger.debug(
456
+ `Stopping local Selenium server (PID: ${this.localSelenium.pid})`,
457
+ );
458
+
459
+ // Try SIGTERM first
460
+ this.localSelenium.kill('SIGTERM');
461
+
462
+ // Wait for exit event with a timeout (ensures it does not hang forever)
463
+ const waitForExit = new Promise<void>((resolve) => {
464
+ this.localSelenium.once('exit', () => {
465
+ this.logger.debug('Selenium process exited.');
466
+ resolve();
467
+ });
468
+ });
469
+
470
+ // Force kill if not exiting within 3 seconds
471
+ const forceKill = new Promise<void>((resolve) => {
472
+ setTimeout(() => {
473
+ if (!this.localSelenium.killed) {
474
+ this.logger.warn(
475
+ `Selenium did not exit in time. Sending SIGKILL.`,
476
+ );
477
+ this.localSelenium.kill('SIGKILL');
478
+ }
479
+ resolve();
480
+ }, 3000);
481
+ });
482
+
483
+ // Wait for either normal exit or force kill
484
+ await Promise.race([waitForExit, forceKill]);
485
+
486
+ this.localSelenium.removeAllListeners();
487
+
488
+ this.logger.debug(
489
+ 'Selenium process and all associated pipes closed.',
490
+ );
434
491
  }
435
492
  }
436
493
 
@@ -450,7 +507,9 @@ export class SeleniumPlugin implements IBrowserProxyPlugin {
450
507
  const client = this.getBrowserClient(applicant);
451
508
 
452
509
  const element = await client.$(selector);
453
- return options && Object.keys(options).length > 0 ? element.click(options) : element.click();
510
+ return options && Object.keys(options).length > 0
511
+ ? element.click(options)
512
+ : element.click();
454
513
  }
455
514
 
456
515
  public async getSize(applicant: string, selector: string) {
@@ -562,7 +621,7 @@ export class SeleniumPlugin implements IBrowserProxyPlugin {
562
621
  return client.getTitle();
563
622
  }
564
623
 
565
- public async clearElement(applicant: string, xpath: string) {
624
+ public async clearValue(applicant: string, xpath: string) {
566
625
  await this.createClient(applicant);
567
626
  const client = this.getBrowserClient(applicant);
568
627
 
@@ -991,55 +1050,36 @@ export class SeleniumPlugin implements IBrowserProxyPlugin {
991
1050
  return selector.selectByAttribute(attribute, value);
992
1051
  }
993
1052
 
994
- // @deprecated WAT-1872
995
- public async gridProxyDetails(applicant: string) {
1053
+ public async gridTestSession(applicant: string) {
996
1054
  await this.createClient(applicant);
997
1055
  const client = this.getBrowserClient(applicant);
998
1056
 
999
1057
  if (this.localSelenium) {
1000
1058
  return {
1059
+ sessionId: client.sessionId,
1060
+ host: this.config.host,
1061
+ port: this.config.port,
1001
1062
  localSelenium: true,
1002
1063
  };
1003
1064
  }
1004
1065
 
1005
- return client.gridProxyDetails(client.sessionId);
1066
+ return client.gridTestSession(client.sessionId);
1006
1067
  }
1007
1068
 
1008
- // @deprecated WAT-1872
1009
- public async gridTestSession(applicant: string) {
1069
+ public async getHubConfig(applicant: string) {
1010
1070
  await this.createClient(applicant);
1011
1071
  const client = this.getBrowserClient(applicant);
1012
1072
 
1013
1073
  if (this.localSelenium) {
1014
1074
  return {
1075
+ sessionId: client.sessionId,
1076
+ host: this.config.host,
1077
+ port: this.config.port,
1015
1078
  localSelenium: true,
1016
1079
  };
1017
1080
  }
1018
1081
 
1019
- return client.gridTestSession(client.sessionId);
1020
- }
1021
-
1022
- // @deprecated WAT-1872
1023
- public async getGridNodeDetails(applicant: string) {
1024
- await this.createClient(applicant);
1025
- const client = this.getBrowserClient(applicant);
1026
-
1027
- const testSession = await this.gridTestSession(applicant);
1028
-
1029
- if (testSession && !testSession.localSelenium) {
1030
- const proxyDetails = await client.gridProxyDetails(applicant);
1031
-
1032
- delete testSession.msg;
1033
- delete testSession.success;
1034
-
1035
- delete proxyDetails.msg;
1036
- delete proxyDetails.success;
1037
- delete proxyDetails.id;
1038
-
1039
- return {...testSession, ...proxyDetails};
1040
- }
1041
-
1042
- return testSession;
1082
+ return client.getHubConfig();
1043
1083
  }
1044
1084
 
1045
1085
  /**
@@ -1075,6 +1115,142 @@ export class SeleniumPlugin implements IBrowserProxyPlugin {
1075
1115
  },
1076
1116
  } as any);
1077
1117
  }
1118
+
1119
+ public async status(applicant: string) {
1120
+ await this.createClient(applicant);
1121
+ const client = this.getBrowserClient(applicant);
1122
+
1123
+ return client.status();
1124
+ }
1125
+
1126
+ public async back(applicant: string) {
1127
+ await this.createClient(applicant);
1128
+ const client = this.getBrowserClient(applicant);
1129
+
1130
+ return client.back();
1131
+ }
1132
+
1133
+ public async forward(applicant: string) {
1134
+ await this.createClient(applicant);
1135
+ const client = this.getBrowserClient(applicant);
1136
+
1137
+ return client.forward();
1138
+ }
1139
+
1140
+ public async getActiveElement(applicant: string) {
1141
+ await this.createClient(applicant);
1142
+ const client = this.getBrowserClient(applicant);
1143
+
1144
+ return client.getActiveElement();
1145
+ }
1146
+
1147
+ public async getLocation(applicant: string, xpath: string) {
1148
+ await this.createClient(applicant);
1149
+ const client = this.getBrowserClient(applicant);
1150
+ const element = client.$(xpath);
1151
+ return element.getLocation();
1152
+ }
1153
+
1154
+ public async setTimeZone(applicant: string, timeZone: string) {
1155
+ await this.createClient(applicant);
1156
+ const client = this.getBrowserClient(applicant);
1157
+ return client.setTimeZone(timeZone);
1158
+ }
1159
+
1160
+ public async getWindowSize(applicant: string) {
1161
+ await this.createClient(applicant);
1162
+ const client = this.getBrowserClient(applicant);
1163
+ return client.getWindowSize();
1164
+ }
1165
+
1166
+ public async savePDF(applicant: string, options: SavePdfOptions) {
1167
+ await this.createClient(applicant);
1168
+ const client = this.getBrowserClient(applicant);
1169
+
1170
+ const {filepath, ...restOptions} = options;
1171
+
1172
+ return client.savePDF(filepath, restOptions);
1173
+ }
1174
+
1175
+ public async addValue(
1176
+ applicant: string,
1177
+ xpath: string,
1178
+ value: string | number,
1179
+ ) {
1180
+ await this.createClient(applicant);
1181
+ const client = this.getBrowserClient(applicant);
1182
+
1183
+ const selector = await client.$(xpath);
1184
+ return selector.addValue(value);
1185
+ }
1186
+
1187
+ public async doubleClick(applicant: string, xpath: string) {
1188
+ await this.createClient(applicant);
1189
+ const client = this.getBrowserClient(applicant);
1190
+
1191
+ const selector = await client.$(xpath);
1192
+ return selector.doubleClick();
1193
+ }
1194
+
1195
+ public async isClickable(applicant: string, xpath: string) {
1196
+ await this.createClient(applicant);
1197
+ const client = this.getBrowserClient(applicant);
1198
+
1199
+ const selector = await client.$(xpath);
1200
+ return selector.isClickable();
1201
+ }
1202
+
1203
+ public async waitForClickable(
1204
+ applicant: string,
1205
+ xpath: string,
1206
+ timeout: number,
1207
+ ) {
1208
+ await this.createClient(applicant);
1209
+ const client = this.getBrowserClient(applicant);
1210
+
1211
+ const selector = await client.$(xpath);
1212
+ return selector.waitForClickable({timeout});
1213
+ }
1214
+
1215
+ public async isFocused(applicant: string, xpath: string) {
1216
+ await this.createClient(applicant);
1217
+ const client = this.getBrowserClient(applicant);
1218
+
1219
+ const selector = await client.$(xpath);
1220
+ return selector.isFocused();
1221
+ }
1222
+
1223
+ public async isStable(applicant: string, xpath: string) {
1224
+ await this.createClient(applicant);
1225
+ const client = this.getBrowserClient(applicant);
1226
+
1227
+ const selector = await client.$(xpath);
1228
+ return selector.isStable();
1229
+ }
1230
+
1231
+ public async waitForEnabled(
1232
+ applicant: string,
1233
+ xpath: string,
1234
+ timeout: number,
1235
+ ) {
1236
+ await this.createClient(applicant);
1237
+ const client = this.getBrowserClient(applicant);
1238
+
1239
+ const selector = await client.$(xpath);
1240
+ return selector.waitForEnabled({timeout});
1241
+ }
1242
+
1243
+ public async waitForStable(
1244
+ applicant: string,
1245
+ xpath: string,
1246
+ timeout: number,
1247
+ ) {
1248
+ await this.createClient(applicant);
1249
+ const client = this.getBrowserClient(applicant);
1250
+
1251
+ const selector = await client.$(xpath);
1252
+ return selector.waitForStable({timeout});
1253
+ }
1078
1254
  }
1079
1255
 
1080
1256
  export default function seleniumProxy(config: SeleniumPluginConfig) {
package/src/types.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Capabilities } from '@wdio/types';
1
+ import {Capabilities} from '@wdio/types';
2
2
 
3
3
  export type SeleniumPluginConfig = Capabilities.WebdriverIOConfig & {
4
4
  chromeDriverPath?: string;
@@ -8,4 +8,5 @@ export type SeleniumPluginConfig = Capabilities.WebdriverIOConfig & {
8
8
  host?: string; // fallback for configuration. In WebdriverIO 5 field host renamed to hostname
9
9
  desiredCapabilities?: Capabilities.RequestedStandaloneCapabilities[]; // fallback for configuration. In WebdriverIO 5 field renamed
10
10
  cdpCoverage: boolean;
11
+ workerLimit?: number | 'local';
11
12
  };