webdriver 9.9.1 → 9.11.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.
@@ -1 +1 @@
1
- {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/bidi/core.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAA;AAI3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,KAAK,EAAE,eAAe,EAAiB,MAAM,iBAAiB,CAAA;AAErE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAQzC,qBAAa,QAAQ;;IAOjB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;IAC1B;;OAEG;IACH,OAAO,CAAC,YAAY,CAAQ;gBAEf,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,aAAa;IAOvD;;;;OAIG;IACI,YAAY,CAAE,MAAM,EAAE,MAAM;IAItB,OAAO;IAyBb,KAAK;IAYL,SAAS,CAAE,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,aAAa;IAS5D;;;OAGG;IACH,gBAAgB;IAIhB,IAAI,MAAM,cAET;IAED,IAAI,WAAW,YAEd;IAED;;;OAGG;IACH,IAAI,gBAAgB,WAIG,OAAO,UAF7B;IAyBY,IAAI,CAAE,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC;IA+BtE,SAAS,CAAE,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC;CAWpD;AAED,wBAAgB,gBAAgB,CAAE,MAAM,EAAG,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,YAwCjE"}
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/bidi/core.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAA;AAI3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,KAAK,EAAE,eAAe,EAAiB,MAAM,iBAAiB,CAAA;AAErE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AASzC,qBAAa,QAAQ;;IAOjB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;IAC1B;;OAEG;IACH,OAAO,CAAC,YAAY,CAAQ;gBAEf,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,aAAa;IAOvD;;;;OAIG;IACI,YAAY,CAAE,MAAM,EAAE,MAAM;IAItB,OAAO;IAyBb,KAAK;IAYL,SAAS,CAAE,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,aAAa;IAS5D;;;OAGG;IACH,gBAAgB;IAIhB,IAAI,MAAM,cAET;IAED,IAAI,WAAW,YAEd;IAED;;;OAGG;IACH,IAAI,gBAAgB,WAIG,OAAO,UAF7B;IAqCY,IAAI,CAAE,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC;IA+BtE,SAAS,CAAE,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC;CAWpD;AAED,wBAAgB,gBAAgB,CAAE,MAAM,EAAG,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,YAwCjE"}
@@ -1 +1 @@
1
- {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../src/command.ts"],"names":[],"mappings":"AAEA,OAAO,EAAyB,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAI7E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAgB,aAAa,EAAE,MAAM,YAAY,CAAA;AAKzE,MAAM,CAAC,OAAO,WACV,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,eAAe,EAC5B,qBAAqB,UAAQ,UAIgB,UAAU,WAAW,OAAO,EAAE,KAAG,OAAO,CAAC,iBAAiB,GAAG,aAAa,GAAG,IAAI,CAAC,CAiLlI"}
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../src/command.ts"],"names":[],"mappings":"AAEA,OAAO,EAAyB,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAI7E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAgB,aAAa,EAAwB,MAAM,YAAY,CAAA;AAM/F,MAAM,CAAC,OAAO,WACV,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,eAAe,EAC5B,qBAAqB,UAAQ,UAIgB,UAAU,WAAW,OAAO,EAAE,KAAG,OAAO,CAAC,iBAAiB,GAAG,aAAa,GAAG,IAAI,CAAC,CAkMlI"}
package/build/index.js CHANGED
@@ -47,6 +47,7 @@ var environment = {
47
47
  // src/command.ts
48
48
  var log = logger("webdriver");
49
49
  var BIDI_COMMANDS = Object.values(WebDriverBidiProtocol).map((def) => def.socket.command);
50
+ var sessionAbortListeners = /* @__PURE__ */ new Map();
50
51
  function command_default(method, endpointUri, commandInfo, doubleEncodeVariables = false) {
51
52
  const { command, deprecated, ref, parameters, variables = [], isHubCommand = false } = commandInfo;
52
53
  return async function protocolCommand(...args) {
@@ -103,7 +104,12 @@ function command_default(method, endpointUri, commandInfo, doubleEncodeVariables
103
104
  }
104
105
  body[commandParams[i].name] = arg;
105
106
  }
106
- const request = new environment.value.Request(method, endpoint, body, isHubCommand, {
107
+ const { isAborted, abortSignal, cleanup } = manageSessionAbortions.call(this);
108
+ const requiresSession = endpointUri.includes("/:sessionId/");
109
+ if (isAborted && command !== "deleteSession" && requiresSession) {
110
+ throw new Error('Trying to run command "'.concat(commandCallStructure(command, args), '" after session has been deleted, aborting request without executing it'));
111
+ }
112
+ const request = new environment.value.Request(method, endpoint, body, abortSignal, isHubCommand, {
107
113
  onPerformance: (data) => this.emit("request.performance", data),
108
114
  onRequest: (data) => this.emit("request.start", data),
109
115
  onResponse: (data) => this.emit("request.end", data),
@@ -153,9 +159,42 @@ function command_default(method, endpointUri, commandInfo, doubleEncodeVariables
153
159
  }).catch((error) => {
154
160
  this.emit("result", { command, method, endpoint, body, result: { error } });
155
161
  throw error;
162
+ }).finally(() => {
163
+ cleanup();
156
164
  });
157
165
  };
158
166
  }
167
+ function manageSessionAbortions() {
168
+ const abort = new AbortController();
169
+ let abortListenerForCurrentSession = sessionAbortListeners.get(this.sessionId);
170
+ if (typeof abortListenerForCurrentSession === "undefined") {
171
+ abortListenerForCurrentSession = /* @__PURE__ */ new Set();
172
+ sessionAbortListeners.set(this.sessionId, abortListenerForCurrentSession);
173
+ }
174
+ if (abortListenerForCurrentSession === null) {
175
+ return { isAborted: true, abortSignal: void 0, cleanup: () => {
176
+ } };
177
+ }
178
+ abortListenerForCurrentSession.add(abort);
179
+ const abortOnSessionEnd = (result) => {
180
+ if (result.command === "deleteSession") {
181
+ for (const abortListener of abortListenerForCurrentSession) {
182
+ abortListener.abort();
183
+ }
184
+ abortListenerForCurrentSession.clear();
185
+ sessionAbortListeners.set(this.sessionId, null);
186
+ }
187
+ };
188
+ this.on("result", abortOnSessionEnd);
189
+ return {
190
+ isAborted: false,
191
+ abortSignal: abort.signal,
192
+ cleanup: () => {
193
+ this.off("result", abortOnSessionEnd);
194
+ abortListenerForCurrentSession == null ? void 0 : abortListenerForCurrentSession.delete(abort);
195
+ }
196
+ };
197
+ }
159
198
 
160
199
  // src/constants.ts
161
200
  var DEFAULTS = {
@@ -319,6 +358,7 @@ import { CAPABILITY_KEYS } from "@wdio/protocols";
319
358
  import logger2 from "@wdio/logger";
320
359
  var SCRIPT_PREFIX = "/* __wdio script__ */";
321
360
  var SCRIPT_SUFFIX = "/* __wdio script end__ */";
361
+ var base64Regex = /^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)?$/;
322
362
  var log2 = logger2("webdriver");
323
363
  var RESPONSE_TIMEOUT = 1e3 * 60;
324
364
  var _id, _ws, _waitForConnected, _webSocketUrl, _pendingCommands, _BidiCore_instances, handleResponse_fn;
@@ -453,7 +493,14 @@ handleResponse_fn = function(data) {
453
493
  if (!payload.id) {
454
494
  return;
455
495
  }
456
- log2.info("BIDI RESULT", data.toString());
496
+ let resultLog = data.toString();
497
+ if (typeof payload.result === "object" && payload.result && "data" in payload.result && typeof payload.result.data === "string" && base64Regex.test(payload.result.data)) {
498
+ resultLog = JSON.stringify({
499
+ ...payload.result,
500
+ data: "Base64 string [".concat(payload.result.data.length, " chars]")
501
+ });
502
+ }
503
+ log2.info("BIDI RESULT", resultLog);
457
504
  (_a = this.client) == null ? void 0 : _a.emit("bidiResult", payload);
458
505
  const resolve = __privateGet(this, _pendingCommands).get(payload.id);
459
506
  if (!resolve) {
@@ -1062,7 +1109,7 @@ async function startWebDriverSession(params) {
1062
1109
  } catch (err) {
1063
1110
  log3.error(err);
1064
1111
  const message = getSessionError(err, params);
1065
- throw new Error("Failed to create session.\n" + message);
1112
+ throw new Error(message);
1066
1113
  }
1067
1114
  const sessionId = response.value.sessionId || response.sessionId;
1068
1115
  params.capabilities = response.value.capabilities || response.value;
@@ -1579,7 +1626,7 @@ var WebDriverResponseError = class _WebDriverResponseError extends WebDriverErro
1579
1626
  // package.json
1580
1627
  var package_default = {
1581
1628
  name: "webdriver",
1582
- version: "9.9.0",
1629
+ version: "9.10.1",
1583
1630
  description: "A Node.js bindings implementation for the W3C WebDriver and Mobile JSONWire Protocol",
1584
1631
  author: "Christian Bromann <mail@bromann.dev>",
1585
1632
  homepage: "https://github.com/webdriverio/webdriverio/tree/main/packages/webdriver",
@@ -1628,6 +1675,39 @@ var package_default = {
1628
1675
  }
1629
1676
  };
1630
1677
 
1678
+ // src/request/polyfill.ts
1679
+ if (!AbortSignal.any) {
1680
+ AbortSignal.any = function(signals) {
1681
+ if (!signals || !Array.isArray(signals)) {
1682
+ throw new TypeError("AbortSignal.any requires an array of AbortSignal objects");
1683
+ }
1684
+ const controller = new AbortController();
1685
+ if (signals.some((signal) => signal.aborted)) {
1686
+ controller.abort();
1687
+ return controller.signal;
1688
+ }
1689
+ const listeners = signals.map((signal) => {
1690
+ const listener = () => {
1691
+ if ("reason" in signal && signal.reason !== void 0) {
1692
+ controller.abort(signal.reason);
1693
+ } else {
1694
+ controller.abort();
1695
+ }
1696
+ cleanup();
1697
+ };
1698
+ signal.addEventListener("abort", listener);
1699
+ return { signal, listener };
1700
+ });
1701
+ const cleanup = () => {
1702
+ listeners.forEach(({ signal, listener }) => {
1703
+ signal.removeEventListener("abort", listener);
1704
+ });
1705
+ };
1706
+ controller.signal.addEventListener("abort", cleanup);
1707
+ return controller.signal;
1708
+ };
1709
+ }
1710
+
1631
1711
  // src/request/request.ts
1632
1712
  var ERRORS_TO_EXCLUDE_FROM_RETRY = [
1633
1713
  "detached shadow root",
@@ -1641,19 +1721,21 @@ var DEFAULT_HEADERS = {
1641
1721
  };
1642
1722
  var log5 = logger5("webdriver");
1643
1723
  var WebDriverRequest = class {
1644
- constructor(method, endpoint, body, isHubCommand = false, eventHandler = {}) {
1724
+ constructor(method, endpoint, body, abortSignal, isHubCommand = false, eventHandler = {}) {
1645
1725
  __publicField(this, "body");
1646
1726
  __publicField(this, "method");
1647
1727
  __publicField(this, "endpoint");
1648
1728
  __publicField(this, "isHubCommand");
1649
1729
  __publicField(this, "requiresSessionId");
1650
1730
  __publicField(this, "eventHandler");
1731
+ __publicField(this, "abortSignal");
1651
1732
  this.body = body;
1652
1733
  this.method = method;
1653
1734
  this.endpoint = endpoint;
1654
1735
  this.isHubCommand = isHubCommand;
1655
1736
  this.requiresSessionId = Boolean(this.endpoint.match(/:sessionId/));
1656
1737
  this.eventHandler = eventHandler;
1738
+ this.abortSignal = abortSignal;
1657
1739
  }
1658
1740
  async makeRequest(options, sessionId) {
1659
1741
  var _a, _b;
@@ -1666,7 +1748,10 @@ var WebDriverRequest = class {
1666
1748
  const requestOptions = {
1667
1749
  method: this.method,
1668
1750
  redirect: "follow",
1669
- signal: AbortSignal.timeout(timeout)
1751
+ signal: AbortSignal.any([
1752
+ AbortSignal.timeout(timeout),
1753
+ ...this.abortSignal ? [this.abortSignal] : []
1754
+ ])
1670
1755
  };
1671
1756
  const requestHeaders = new Headers({
1672
1757
  ...DEFAULT_HEADERS,
@@ -1754,7 +1839,7 @@ var WebDriverRequest = class {
1754
1839
  };
1755
1840
  if (response instanceof Error) {
1756
1841
  const resError = response;
1757
- if (resError.code && RETRYABLE_ERROR_CODES.includes(resError.code) || resError.statusCode && RETRYABLE_STATUS_CODES.includes(resError.statusCode)) {
1842
+ if (!(this.abortSignal && this.abortSignal.aborted) && (resError.code && RETRYABLE_ERROR_CODES.includes(resError.code) || resError.statusCode && RETRYABLE_STATUS_CODES.includes(resError.statusCode))) {
1758
1843
  return retry(resError);
1759
1844
  }
1760
1845
  (_b = (_a = this.eventHandler).onPerformance) == null ? void 0 : _b.call(_a, { request: fullRequestOptions, durationMillisecond, success: false, error: response, retryCount });
package/build/node.js CHANGED
@@ -31,6 +31,7 @@ var environment = {
31
31
  // src/command.ts
32
32
  var log = logger("webdriver");
33
33
  var BIDI_COMMANDS = Object.values(WebDriverBidiProtocol).map((def) => def.socket.command);
34
+ var sessionAbortListeners = /* @__PURE__ */ new Map();
34
35
  function command_default(method, endpointUri, commandInfo, doubleEncodeVariables = false) {
35
36
  const { command, deprecated, ref, parameters, variables = [], isHubCommand = false } = commandInfo;
36
37
  return async function protocolCommand(...args) {
@@ -96,7 +97,12 @@ Actual: ${actual}` + moreInfo
96
97
  }
97
98
  body[commandParams[i].name] = arg;
98
99
  }
99
- const request = new environment.value.Request(method, endpoint, body, isHubCommand, {
100
+ const { isAborted, abortSignal, cleanup } = manageSessionAbortions.call(this);
101
+ const requiresSession = endpointUri.includes("/:sessionId/");
102
+ if (isAborted && command !== "deleteSession" && requiresSession) {
103
+ throw new Error(`Trying to run command "${commandCallStructure(command, args)}" after session has been deleted, aborting request without executing it`);
104
+ }
105
+ const request = new environment.value.Request(method, endpoint, body, abortSignal, isHubCommand, {
100
106
  onPerformance: (data) => this.emit("request.performance", data),
101
107
  onRequest: (data) => this.emit("request.start", data),
102
108
  onResponse: (data) => this.emit("request.end", data),
@@ -145,9 +151,42 @@ Actual: ${actual}` + moreInfo
145
151
  }).catch((error) => {
146
152
  this.emit("result", { command, method, endpoint, body, result: { error } });
147
153
  throw error;
154
+ }).finally(() => {
155
+ cleanup();
148
156
  });
149
157
  };
150
158
  }
159
+ function manageSessionAbortions() {
160
+ const abort = new AbortController();
161
+ let abortListenerForCurrentSession = sessionAbortListeners.get(this.sessionId);
162
+ if (typeof abortListenerForCurrentSession === "undefined") {
163
+ abortListenerForCurrentSession = /* @__PURE__ */ new Set();
164
+ sessionAbortListeners.set(this.sessionId, abortListenerForCurrentSession);
165
+ }
166
+ if (abortListenerForCurrentSession === null) {
167
+ return { isAborted: true, abortSignal: void 0, cleanup: () => {
168
+ } };
169
+ }
170
+ abortListenerForCurrentSession.add(abort);
171
+ const abortOnSessionEnd = (result) => {
172
+ if (result.command === "deleteSession") {
173
+ for (const abortListener of abortListenerForCurrentSession) {
174
+ abortListener.abort();
175
+ }
176
+ abortListenerForCurrentSession.clear();
177
+ sessionAbortListeners.set(this.sessionId, null);
178
+ }
179
+ };
180
+ this.on("result", abortOnSessionEnd);
181
+ return {
182
+ isAborted: false,
183
+ abortSignal: abort.signal,
184
+ cleanup: () => {
185
+ this.off("result", abortOnSessionEnd);
186
+ abortListenerForCurrentSession?.delete(abort);
187
+ }
188
+ };
189
+ }
151
190
 
152
191
  // src/constants.ts
153
192
  var DEFAULTS = {
@@ -311,6 +350,7 @@ import { CAPABILITY_KEYS } from "@wdio/protocols";
311
350
  import logger2 from "@wdio/logger";
312
351
  var SCRIPT_PREFIX = "/* __wdio script__ */";
313
352
  var SCRIPT_SUFFIX = "/* __wdio script end__ */";
353
+ var base64Regex = /^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)?$/;
314
354
  var log2 = logger2("webdriver");
315
355
  var RESPONSE_TIMEOUT = 1e3 * 60;
316
356
  var BidiCore = class {
@@ -401,7 +441,14 @@ var BidiCore = class {
401
441
  if (!payload.id) {
402
442
  return;
403
443
  }
404
- log2.info("BIDI RESULT", data.toString());
444
+ let resultLog = data.toString();
445
+ if (typeof payload.result === "object" && payload.result && "data" in payload.result && typeof payload.result.data === "string" && base64Regex.test(payload.result.data)) {
446
+ resultLog = JSON.stringify({
447
+ ...payload.result,
448
+ data: `Base64 string [${payload.result.data.length} chars]`
449
+ });
450
+ }
451
+ log2.info("BIDI RESULT", resultLog);
405
452
  this.client?.emit("bidiResult", payload);
406
453
  const resolve = this.#pendingCommands.get(payload.id);
407
454
  if (!resolve) {
@@ -1047,7 +1094,7 @@ async function startWebDriverSession(params) {
1047
1094
  } catch (err) {
1048
1095
  log3.error(err);
1049
1096
  const message = getSessionError(err, params);
1050
- throw new Error("Failed to create session.\n" + message);
1097
+ throw new Error(message);
1051
1098
  }
1052
1099
  const sessionId = response.value.sessionId || response.sessionId;
1053
1100
  params.capabilities = response.value.capabilities || response.value;
@@ -1518,7 +1565,7 @@ var WebDriverResponseError = class _WebDriverResponseError extends WebDriverErro
1518
1565
  // package.json
1519
1566
  var package_default = {
1520
1567
  name: "webdriver",
1521
- version: "9.9.0",
1568
+ version: "9.10.1",
1522
1569
  description: "A Node.js bindings implementation for the W3C WebDriver and Mobile JSONWire Protocol",
1523
1570
  author: "Christian Bromann <mail@bromann.dev>",
1524
1571
  homepage: "https://github.com/webdriverio/webdriverio/tree/main/packages/webdriver",
@@ -1567,6 +1614,39 @@ var package_default = {
1567
1614
  }
1568
1615
  };
1569
1616
 
1617
+ // src/request/polyfill.ts
1618
+ if (!AbortSignal.any) {
1619
+ AbortSignal.any = function(signals) {
1620
+ if (!signals || !Array.isArray(signals)) {
1621
+ throw new TypeError("AbortSignal.any requires an array of AbortSignal objects");
1622
+ }
1623
+ const controller = new AbortController();
1624
+ if (signals.some((signal) => signal.aborted)) {
1625
+ controller.abort();
1626
+ return controller.signal;
1627
+ }
1628
+ const listeners = signals.map((signal) => {
1629
+ const listener = () => {
1630
+ if ("reason" in signal && signal.reason !== void 0) {
1631
+ controller.abort(signal.reason);
1632
+ } else {
1633
+ controller.abort();
1634
+ }
1635
+ cleanup();
1636
+ };
1637
+ signal.addEventListener("abort", listener);
1638
+ return { signal, listener };
1639
+ });
1640
+ const cleanup = () => {
1641
+ listeners.forEach(({ signal, listener }) => {
1642
+ signal.removeEventListener("abort", listener);
1643
+ });
1644
+ };
1645
+ controller.signal.addEventListener("abort", cleanup);
1646
+ return controller.signal;
1647
+ };
1648
+ }
1649
+
1570
1650
  // src/request/request.ts
1571
1651
  var ERRORS_TO_EXCLUDE_FROM_RETRY = [
1572
1652
  "detached shadow root",
@@ -1586,13 +1666,15 @@ var WebDriverRequest = class {
1586
1666
  isHubCommand;
1587
1667
  requiresSessionId;
1588
1668
  eventHandler;
1589
- constructor(method, endpoint, body, isHubCommand = false, eventHandler = {}) {
1669
+ abortSignal;
1670
+ constructor(method, endpoint, body, abortSignal, isHubCommand = false, eventHandler = {}) {
1590
1671
  this.body = body;
1591
1672
  this.method = method;
1592
1673
  this.endpoint = endpoint;
1593
1674
  this.isHubCommand = isHubCommand;
1594
1675
  this.requiresSessionId = Boolean(this.endpoint.match(/:sessionId/));
1595
1676
  this.eventHandler = eventHandler;
1677
+ this.abortSignal = abortSignal;
1596
1678
  }
1597
1679
  async makeRequest(options, sessionId) {
1598
1680
  const { url, requestOptions } = await this.createOptions(options, sessionId);
@@ -1604,7 +1686,10 @@ var WebDriverRequest = class {
1604
1686
  const requestOptions = {
1605
1687
  method: this.method,
1606
1688
  redirect: "follow",
1607
- signal: AbortSignal.timeout(timeout)
1689
+ signal: AbortSignal.any([
1690
+ AbortSignal.timeout(timeout),
1691
+ ...this.abortSignal ? [this.abortSignal] : []
1692
+ ])
1608
1693
  };
1609
1694
  const requestHeaders = new Headers({
1610
1695
  ...DEFAULT_HEADERS,
@@ -1689,7 +1774,7 @@ var WebDriverRequest = class {
1689
1774
  };
1690
1775
  if (response instanceof Error) {
1691
1776
  const resError = response;
1692
- if (resError.code && RETRYABLE_ERROR_CODES.includes(resError.code) || resError.statusCode && RETRYABLE_STATUS_CODES.includes(resError.statusCode)) {
1777
+ if (!(this.abortSignal && this.abortSignal.aborted) && (resError.code && RETRYABLE_ERROR_CODES.includes(resError.code) || resError.statusCode && RETRYABLE_STATUS_CODES.includes(resError.statusCode))) {
1693
1778
  return retry(resError);
1694
1779
  }
1695
1780
  this.eventHandler.onPerformance?.({ request: fullRequestOptions, durationMillisecond, success: false, error: response, retryCount });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=polyfill.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"polyfill.d.ts","sourceRoot":"","sources":["../../src/request/polyfill.ts"],"names":[],"mappings":""}
@@ -1,5 +1,6 @@
1
1
  import type { Options } from '@wdio/types';
2
2
  import type { WebDriverResponse, RequestLibResponse, RequestOptions, RequestEventHandler } from './types.js';
3
+ import './polyfill.js';
3
4
  export declare abstract class WebDriverRequest {
4
5
  protected abstract fetch(url: URL, opts: RequestInit): Promise<Response>;
5
6
  body?: Record<string, unknown>;
@@ -8,7 +9,8 @@ export declare abstract class WebDriverRequest {
8
9
  isHubCommand: boolean;
9
10
  requiresSessionId: boolean;
10
11
  eventHandler: RequestEventHandler;
11
- constructor(method: string, endpoint: string, body?: Record<string, unknown>, isHubCommand?: boolean, eventHandler?: RequestEventHandler);
12
+ abortSignal?: AbortSignal;
13
+ constructor(method: string, endpoint: string, body?: Record<string, unknown>, abortSignal?: AbortSignal, isHubCommand?: boolean, eventHandler?: RequestEventHandler);
12
14
  makeRequest(options: RequestOptions, sessionId?: string): Promise<WebDriverResponse<unknown>>;
13
15
  createOptions(options: RequestOptions, sessionId?: string, isBrowser?: boolean): Promise<{
14
16
  url: URL;
@@ -1 +1 @@
1
- {"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/request/request.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAI1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAoB5G,8BAAsB,gBAAgB;IAClC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC;IAExE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,OAAO,CAAA;IACrB,iBAAiB,EAAE,OAAO,CAAA;IAC1B,YAAY,EAAE,mBAAmB,CAAA;gBAEpB,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAE,OAAe,EAAE,YAAY,GAAE,mBAAwB;IAS9I,WAAW,CAAE,OAAO,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE,MAAM;IAMxD,aAAa,CAAE,OAAO,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,SAAS,GAAE,OAAe,GAAG,OAAO,CAAC;QAAC,GAAG,EAAE,GAAG,CAAC;QAAC,cAAc,EAAE,WAAW,CAAC;KAAC,CAAC;cA4DhI,WAAW,CAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC;cA8B9E,QAAQ,CACpB,GAAG,EAAE,GAAG,EACR,kBAAkB,EAAE,WAAW,EAC/B,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE,kBAAkB,EAAE,cAAc,EAAE,WAAW,KAAK,kBAAkB,EACrG,eAAe,SAAI,EACnB,UAAU,SAAI,GACf,OAAO,CAAC,iBAAiB,CAAC;CA0HhC"}
1
+ {"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/request/request.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAI1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAM5G,OAAO,eAAe,CAAA;AAgBtB,8BAAsB,gBAAgB;IAClC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC;IAExE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,OAAO,CAAA;IACrB,iBAAiB,EAAE,OAAO,CAAA;IAC1B,YAAY,EAAE,mBAAmB,CAAA;IACjC,WAAW,CAAC,EAAE,WAAW,CAAA;gBAErB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,WAAW,CAAC,EAAE,WAAW,EACzB,YAAY,GAAE,OAAe,EAC7B,YAAY,GAAE,mBAAwB;IAWpC,WAAW,CAAE,OAAO,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE,MAAM;IAMxD,aAAa,CAAE,OAAO,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,SAAS,GAAE,OAAe,GAAG,OAAO,CAAC;QAAC,GAAG,EAAE,GAAG,CAAC;QAAC,cAAc,EAAE,WAAW,CAAC;KAAC,CAAC;cA+DhI,WAAW,CAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC;cA8B9E,QAAQ,CACpB,GAAG,EAAE,GAAG,EACR,kBAAkB,EAAE,WAAW,EAC/B,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE,kBAAkB,EAAE,cAAc,EAAE,WAAW,KAAK,kBAAkB,EACrG,eAAe,SAAI,EACnB,UAAU,SAAI,GACf,OAAO,CAAC,iBAAiB,CAAC;CA+HhC"}
package/build/types.d.ts CHANGED
@@ -34,20 +34,22 @@ export type BidiCommands = WebDriverBidiCommands[keyof WebDriverBidiCommands]['s
34
34
  export type BidiResponses = ValueOf<ObtainMethods<Pick<BidiHandler, BidiCommands>>>;
35
35
  export type RemoteConfig = Options.WebDriver & Capabilities.WithRequestedCapabilities;
36
36
  type BidiInterface = ObtainMethods<Pick<BidiHandler, BidiCommands>>;
37
+ export interface WebDriverCommandEvent {
38
+ command: string;
39
+ method: string;
40
+ endpoint: string;
41
+ body: unknown;
42
+ }
43
+ export interface WebDriverResultEvent {
44
+ command: string;
45
+ method: string;
46
+ endpoint: string;
47
+ body: unknown;
48
+ result: unknown;
49
+ }
37
50
  type WebDriverClassicEvents = {
38
- command: {
39
- command: string;
40
- method: string;
41
- endpoint: string;
42
- body: unknown;
43
- };
44
- result: {
45
- command: string;
46
- method: string;
47
- endpoint: string;
48
- body: unknown;
49
- result: unknown;
50
- };
51
+ command: WebDriverCommandEvent;
52
+ result: WebDriverResultEvent;
51
53
  bidiCommand: Omit<CommandData, 'id'>;
52
54
  bidiResult: CommandResponse;
53
55
  'request.performance': RequestPerformanceEvent;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACjE,OAAO,KAAK,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAE9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAE3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAExH,MAAM,WAAW,kBAAmB,SAAQ,KAAK;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,aAAa,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,YAAY;IACzB,KAAK,EAAE,OAAO,CAAA;IACd,UAAU,EAAE,OAAO,CAAA;IACnB,SAAS,EAAE,OAAO,CAAA;IAClB,SAAS,EAAE,OAAO,CAAA;IAClB,QAAQ,EAAE,OAAO,CAAA;IACjB,eAAe,EAAE,OAAO,CAAA;IACxB,aAAa,EAAE,MAAM,GAAG,SAAS,CAAA;IACjC,KAAK,EAAE,OAAO,CAAA;IACd,OAAO,EAAE,OAAO,CAAA;IAChB,oBAAoB,EAAE,OAAO,CAAA;IAC7B,MAAM,EAAE,OAAO,CAAA;CAClB;AAED,KAAK,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAA;AACzC,KAAK,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;AAC5B,KAAK,aAAa,CAAC,CAAC,IAAI;KAAG,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK;CAAE,CAAA;AACxG,KAAK,qBAAqB,GAAG,OAAO,qBAAqB,CAAA;AACzD,MAAM,MAAM,YAAY,GAAG,qBAAqB,CAAC,MAAM,qBAAqB,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAA;AAClG,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,CAAA;AACnF,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,GAAG,YAAY,CAAC,yBAAyB,CAAA;AAErF,KAAK,aAAa,GAAG,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAA;AACnE,MAAM,WAAW,qBAAqB;IAClC,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,OAAO,CAAA;CAChB;AACD,MAAM,WAAW,oBAAoB;IACjC,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,OAAO,CAAA;IACb,MAAM,EAAE,OAAO,CAAA;CAClB;AACD,KAAK,sBAAsB,GAAG;IAC1B,OAAO,EAAE,qBAAqB,CAAA;IAC9B,MAAM,EAAE,oBAAoB,CAAA;IAC5B,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IACrC,UAAU,EAAE,eAAe,CAAC;IAC5B,qBAAqB,EAAE,uBAAuB,CAAA;IAC9C,eAAe,EAAE,iBAAiB,CAAA;IAClC,eAAe,EAAE,iBAAiB,CAAA;IAClC,aAAa,EAAE,eAAe,CAAA;CACjC,CAAA;AACD,MAAM,MAAM,YAAY,GAAG;KACtB,KAAK,IAAI,MAAM,IAAI,CAAC,qBAAqB,EAAE,aAAa,GAAG,kBAAkB,CAAC,GAAG,aAAa,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC;CACrJ,CAAA;AAED,KAAK,QAAQ,CAAC,CAAC,SAAS;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,EAAE,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS;IAAE,MAAM,EAAE,CAAC,CAAA;CAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAA;AAC9H,MAAM,MAAM,QAAQ,GAAG;KAClB,KAAK,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC;CAC7D,GAAG,sBAAsB,CAAA;AAC1B,UAAU,gBAAgB;IACtB,EAAE,CAAC,CAAC,SAAS,MAAM,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,CAAA;IAClG,IAAI,CAAC,CAAC,SAAS,MAAM,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,CAAA;CACvG;AAED,MAAM,WAAW,UAAW,SAAQ,YAAY,EAAE,YAAY;IAE1D,SAAS,EAAE,MAAM,CAAA;IAEjB,YAAY,EAAE,WAAW,CAAC,YAAY,CAAA;IAEtC,qBAAqB,EAAE,YAAY,CAAC,yBAAyB,CAAC,cAAc,CAAC,CAAA;IAE7E,OAAO,EAAE,OAAO,CAAC,SAAS,CAAA;CAC7B;AAED,MAAM,WAAW,MAAO,SAAQ,IAAI,CAAC,UAAU,EAAE,MAAM,gBAAgB,CAAC,EAAE,gBAAgB,EAAE,WAAW,EAAE,gBAAgB;CAAG;AAE5H,MAAM,WAAW,aAAc,SAAQ,OAAO,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;IACpF,SAAS,EAAE,MAAM,CAAA;IAEjB,YAAY,CAAC,EAAE,WAAW,CAAC,YAAY,CAAA;IAEvC,qBAAqB,CAAC,EAAE,YAAY,CAAC,yBAAyB,CAAC,cAAc,CAAC,CAAA;CACjF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "webdriver",
3
- "version": "9.9.1",
3
+ "version": "9.11.0",
4
4
  "description": "A Node.js bindings implementation for the W3C WebDriver and Mobile JSONWire Protocol",
5
5
  "author": "Christian Bromann <mail@bromann.dev>",
6
6
  "homepage": "https://github.com/webdriverio/webdriverio/tree/main/packages/webdriver",
@@ -38,14 +38,14 @@
38
38
  "dependencies": {
39
39
  "@types/node": "^20.1.0",
40
40
  "@types/ws": "^8.5.3",
41
- "@wdio/config": "9.9.0",
41
+ "@wdio/config": "9.11.0",
42
42
  "@wdio/logger": "9.4.4",
43
43
  "@wdio/protocols": "9.7.0",
44
- "@wdio/types": "9.9.0",
45
- "@wdio/utils": "9.9.0",
44
+ "@wdio/types": "9.10.1",
45
+ "@wdio/utils": "9.11.0",
46
46
  "deepmerge-ts": "^7.0.3",
47
47
  "undici": "^6.20.1",
48
48
  "ws": "^8.8.0"
49
49
  },
50
- "gitHead": "a7f0c07b223c9a4a7774fead36ec82296a99177f"
50
+ "gitHead": "79a39e09a5eeabebac2f068b8d29f0ae4921fa20"
51
51
  }