webdriver 8.22.0 → 8.23.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.
@@ -7,11 +7,21 @@ import { URLFactory } from './factory.js';
7
7
  import { isSuccessfulResponse, getErrorFromResponseBody, getTimeoutError } from '../utils.js';
8
8
  const require = createRequire(import.meta.url);
9
9
  const pkg = require('../../package.json');
10
+ const RETRY_METHODS = [
11
+ 'GET',
12
+ 'POST',
13
+ 'PUT',
14
+ 'HEAD',
15
+ 'DELETE',
16
+ 'OPTIONS',
17
+ 'TRACE'
18
+ ];
10
19
  export class RequestLibError extends Error {
11
20
  statusCode;
12
21
  body;
13
22
  code;
14
23
  }
24
+ const ONE_SECOND = 1000 * 1;
15
25
  const DEFAULT_HEADERS = {
16
26
  'Content-Type': 'application/json; charset=utf-8',
17
27
  'Connection': 'keep-alive',
@@ -60,7 +70,11 @@ export default class WebDriverRequest extends EventEmitter {
60
70
  ...(typeof options.headers === 'object' ? options.headers : {})
61
71
  },
62
72
  searchParams,
63
- retry: { limit: options.connectionRetryCount },
73
+ retry: {
74
+ limit: options.connectionRetryCount,
75
+ methods: RETRY_METHODS,
76
+ calculateDelay: ({ computedValue }) => Math.min(ONE_SECOND, computedValue / 10)
77
+ },
64
78
  timeout: { response: options.connectionRetryTimeout }
65
79
  };
66
80
  /**
package/build/types.d.ts CHANGED
@@ -1,8 +1,9 @@
1
1
  /// <reference types="node" resolution-mode="require"/>
2
2
  import type { EventEmitter } from 'node:events';
3
- import type { Options, Capabilities } from '@wdio/types';
4
- import type { ProtocolCommands } from '@wdio/protocols';
3
+ import type { Options, Capabilities, ThenArg } from '@wdio/types';
4
+ import type { WebDriverBidiProtocol, ProtocolCommands } from '@wdio/protocols';
5
5
  import type { BidiHandler } from './bidi/handler.js';
6
+ import type { EventData } from './bidi/localTypes.js';
6
7
  export interface JSONWPCommandError extends Error {
7
8
  code?: string;
8
9
  statusCode?: string;
@@ -20,17 +21,56 @@ export interface SessionFlags {
20
21
  isDevTools: boolean;
21
22
  isBidi: boolean;
22
23
  }
24
+ type Fn = (...args: any) => any;
25
+ type ValueOf<T> = T[keyof T];
26
+ type ObtainMethods<T> = {
27
+ [Prop in keyof T]: T[Prop] extends Fn ? ThenArg<ReturnType<T[Prop]>> : never;
28
+ };
29
+ type WebDriverBidiCommands = typeof WebDriverBidiProtocol;
30
+ export type BidiCommands = WebDriverBidiCommands[keyof WebDriverBidiCommands]['socket']['command'];
31
+ export type BidiResponses = ValueOf<ObtainMethods<Pick<BidiHandler, BidiCommands>>>;
32
+ type BidiInterface = ObtainMethods<Pick<BidiHandler, BidiCommands>>;
33
+ type WebDriverClassicEvents = {
34
+ command: {
35
+ method: string;
36
+ endpoint: string;
37
+ body: any;
38
+ };
39
+ result: {
40
+ method: string;
41
+ endpoint: string;
42
+ body: any;
43
+ result: any;
44
+ };
45
+ };
46
+ export type BidiEventMap = {
47
+ [Event in keyof Omit<WebDriverBidiCommands, 'sendCommand' | 'sendAsyncCommand'>]: BidiInterface[WebDriverBidiCommands[Event]['socket']['command']];
48
+ };
49
+ type GetParam<T extends {
50
+ method: string;
51
+ params: any;
52
+ }, U extends string> = T extends {
53
+ method: U;
54
+ } ? T['params'] : never;
55
+ type EventMap = {
56
+ [Event in EventData['method']]: GetParam<EventData, Event>;
57
+ } & WebDriverClassicEvents;
58
+ export interface BidiEventHandler {
59
+ on<K extends keyof EventMap>(event: K, listener: (this: Client, param: EventMap[K]) => void): this;
60
+ once<K extends keyof EventMap>(event: K, listener: (this: Client, param: EventMap[K]) => void): this;
61
+ }
23
62
  export interface BaseClient extends EventEmitter, SessionFlags {
24
63
  sessionId: string;
25
64
  capabilities: Capabilities.DesiredCapabilities | Capabilities.W3CCapabilities;
26
65
  requestedCapabilities: Capabilities.DesiredCapabilities | Capabilities.W3CCapabilities;
27
66
  options: Options.WebDriver;
28
67
  }
29
- export interface Client extends BaseClient, ProtocolCommands, BidiHandler {
68
+ export interface Client extends Omit<BaseClient, keyof BidiEventHandler>, ProtocolCommands, BidiHandler, BidiEventHandler {
30
69
  }
31
70
  export interface AttachOptions extends Partial<SessionFlags>, Partial<Options.WebDriver> {
32
71
  sessionId: string;
33
72
  capabilities?: Capabilities.DesiredCapabilities | Capabilities.W3CCapabilities;
34
73
  isW3C?: boolean;
35
74
  }
75
+ export {};
36
76
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
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,MAAM,aAAa,CAAA;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAEvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAEpD,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,QAAQ,EAAE,OAAO,CAAA;IACjB,SAAS,EAAE,OAAO,CAAA;IAClB,SAAS,EAAE,OAAO,CAAA;IAClB,QAAQ,EAAE,OAAO,CAAA;IACjB,KAAK,EAAE,OAAO,CAAA;IACd,OAAO,EAAE,OAAO,CAAA;IAChB,oBAAoB,EAAE,OAAO,CAAA;IAC7B,UAAU,EAAE,OAAO,CAAA;IACnB,MAAM,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,UAAW,SAAQ,YAAY,EAAE,YAAY;IAE1D,SAAS,EAAE,MAAM,CAAA;IAEjB,YAAY,EAAE,YAAY,CAAC,mBAAmB,GAAG,YAAY,CAAC,eAAe,CAAA;IAE7E,qBAAqB,EAAE,YAAY,CAAC,mBAAmB,GAAG,YAAY,CAAC,eAAe,CAAA;IAEtF,OAAO,EAAE,OAAO,CAAC,SAAS,CAAA;CAC7B;AAED,MAAM,WAAW,MAAO,SAAQ,UAAU,EAAE,gBAAgB,EAAE,WAAW;CAAG;AAE5E,MAAM,WAAW,aAAc,SAAQ,OAAO,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;IACpF,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,YAAY,CAAC,mBAAmB,GAAG,YAAY,CAAC,eAAe,CAAA;IAC9E,KAAK,CAAC,EAAE,OAAO,CAAA;CAClB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/build/utils.d.ts CHANGED
@@ -1,3 +1,6 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ /// <reference types="node" resolution-mode="require"/>
3
+ import type { EventEmitter } from 'node:events';
1
4
  import type { Options, Capabilities } from '@wdio/types';
2
5
  import type { WebDriverResponse } from './request/index.js';
3
6
  import type { Client, JSONWPCommandError, SessionFlags } from './types.js';
@@ -34,35 +37,7 @@ export declare class CustomRequestError extends Error {
34
37
  * @param {Object} options driver instance or option object containing these flags
35
38
  * @return {Object} prototype object
36
39
  */
37
- export declare function getEnvironmentVars({ isW3C, isMobile, isIOS, isAndroid, isChrome, isFirefox, isSauce, isSeleniumStandalone, isBidi }: Partial<SessionFlags>): {
38
- isW3C: {
39
- value: boolean | undefined;
40
- };
41
- isMobile: {
42
- value: boolean | undefined;
43
- };
44
- isIOS: {
45
- value: boolean | undefined;
46
- };
47
- isAndroid: {
48
- value: boolean | undefined;
49
- };
50
- isFirefox: {
51
- value: boolean | undefined;
52
- };
53
- isChrome: {
54
- value: boolean | undefined;
55
- };
56
- isSauce: {
57
- value: boolean | undefined;
58
- };
59
- isSeleniumStandalone: {
60
- value: boolean | undefined;
61
- };
62
- isBidi: {
63
- value: boolean | undefined;
64
- };
65
- };
40
+ export declare function getEnvironmentVars({ isW3C, isMobile, isIOS, isAndroid, isChrome, isFirefox, isSauce, isSeleniumStandalone, isBidi }: Partial<SessionFlags>): PropertyDescriptorMap;
66
41
  /**
67
42
  * Decorate the client's options object with host updates based on the presence of
68
43
  * directConnect capabilities in the new session response. Note that this
@@ -79,4 +54,11 @@ export declare const getSessionError: (err: JSONWPCommandError, params?: Partial
79
54
  * return timeout error with information about the executing command on which the test hangs
80
55
  */
81
56
  export declare const getTimeoutError: (error: Error, requestOptions: Options.RequestLibOptions) => Error;
57
+ /**
58
+ * Enhance the monad with WebDriver Bidi primitives if a connection can be established successfully
59
+ * @param socketUrl url to bidi interface
60
+ * @returns prototype with interface for bidi primitives
61
+ */
62
+ export declare function initiateBidi(socketUrl: string): PropertyDescriptorMap;
63
+ export declare function parseBidiMessage(this: EventEmitter, data: Buffer): void;
82
64
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAKxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAY1E;;GAEG;AACH,wBAAsB,qBAAqB,CAAE,MAAM,EAAE,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,YAAY,CAAC,mBAAmB,CAAA;CAAE,CAAC,CAmEtJ;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAE,UAAU,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,iBAAiB,WA4DlF;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,oBAAoB,EAAE,EAAE,OAAO,CAAC,YAAY,CAAC,sCA8C3H;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAE,IAAI,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,SAcvE;AAGD,qBAAa,kBAAmB,SAAQ,KAAK;gBAC5B,IAAI,EAAE,iBAAiB,EAAE,cAAc,EAAE,GAAG;CAyB5D;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAY1J;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,QAgBhD;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,QAAS,kBAAkB,WAAU,QAAQ,QAAQ,SAAS,CAAC,WAmD1F,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,UAAW,KAAK,kBAAkB,QAAQ,iBAAiB,KAAG,KASzF,CAAA"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAW/C,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAOxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAY1E;;GAEG;AACH,wBAAsB,qBAAqB,CAAE,MAAM,EAAE,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,YAAY,CAAC,mBAAmB,CAAA;CAAE,CAAC,CAmEtJ;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAE,UAAU,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,iBAAiB,WA4DlF;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,oBAAoB,EAAE,EAAE,OAAO,CAAC,YAAY,CAAC,sCA8C3H;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAE,IAAI,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,SAcvE;AAGD,qBAAa,kBAAmB,SAAQ,KAAK;gBAC5B,IAAI,EAAE,iBAAiB,EAAE,cAAc,EAAE,GAAG;CAyB5D;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,qBAAqB,CAYlL;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,QAgBhD;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,QAAS,kBAAkB,WAAU,QAAQ,QAAQ,SAAS,CAAC,WAmD1F,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,UAAW,KAAK,kBAAkB,QAAQ,iBAAiB,KAAG,KASzF,CAAA;AA+BD;;;;GAIG;AACH,wBAAgB,YAAY,CAAE,SAAS,EAAE,MAAM,GAAG,qBAAqB,CActE;AAED,wBAAgB,gBAAgB,CAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,QAcjE"}
package/build/utils.js CHANGED
@@ -5,6 +5,7 @@ import { transformCommandLogResult } from '@wdio/utils';
5
5
  import { CAPABILITY_KEYS } from '@wdio/protocols';
6
6
  import RequestFactory from './request/factory.js';
7
7
  import command from './command.js';
8
+ import { BidiHandler } from './bidi/handler.js';
8
9
  import { REG_EXPS } from './constants.js';
9
10
  const log = logger('webdriver');
10
11
  const deepmerge = deepmergeCustom({ mergeArrays: false });
@@ -337,3 +338,37 @@ function getExecCmdArgs(requestOptions) {
337
338
  }
338
339
  return Object.keys(cmdJson).length ? `"${JSON.stringify(cmdJson)}"` : '';
339
340
  }
341
+ /**
342
+ * Enhance the monad with WebDriver Bidi primitives if a connection can be established successfully
343
+ * @param socketUrl url to bidi interface
344
+ * @returns prototype with interface for bidi primitives
345
+ */
346
+ export function initiateBidi(socketUrl) {
347
+ socketUrl = socketUrl.replace('localhost', '127.0.0.1');
348
+ const handler = new BidiHandler(socketUrl);
349
+ handler.connect().then(() => log.info(`Connected to WebDriver Bidi interface at ${socketUrl}`));
350
+ return {
351
+ _bidiHandler: { value: handler },
352
+ ...Object.values(WebDriverBidiProtocol).map((def) => def.socket).reduce((acc, cur) => {
353
+ acc[cur.command] = {
354
+ value: handler[cur.command]?.bind(handler)
355
+ };
356
+ return acc;
357
+ }, {})
358
+ };
359
+ }
360
+ export function parseBidiMessage(data) {
361
+ try {
362
+ // keep backwards compatibility
363
+ // ToDo(Christian): remove in v9
364
+ this.emit('message', data);
365
+ const payload = JSON.parse(data.toString());
366
+ if (payload.type !== 'event') {
367
+ return;
368
+ }
369
+ this.emit(payload.method, payload.params);
370
+ }
371
+ catch (err) {
372
+ log.error(`Failed parse WebDriver Bidi message: ${err.message}`);
373
+ }
374
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "webdriver",
3
- "version": "8.22.0",
3
+ "version": "8.23.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,15 +38,15 @@
38
38
  "dependencies": {
39
39
  "@types/node": "^20.1.0",
40
40
  "@types/ws": "^8.5.3",
41
- "@wdio/config": "8.22.0",
41
+ "@wdio/config": "8.23.0",
42
42
  "@wdio/logger": "8.16.17",
43
- "@wdio/protocols": "8.22.0",
44
- "@wdio/types": "8.21.0",
45
- "@wdio/utils": "8.22.0",
43
+ "@wdio/protocols": "8.23.0",
44
+ "@wdio/types": "8.23.0",
45
+ "@wdio/utils": "8.23.0",
46
46
  "deepmerge-ts": "^5.1.0",
47
47
  "got": "^ 12.6.1",
48
48
  "ky": "^0.33.0",
49
49
  "ws": "^8.8.0"
50
50
  },
51
- "gitHead": "81496a30b1c50e7d4129be6997f1a557f9659224"
51
+ "gitHead": "b17ce5f554deb8588cc156ad9676bd4bd13defe7"
52
52
  }