webdriver 7.19.2 → 7.19.7

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":"command.d.ts","sourceRoot":"","sources":["../src/command.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAGtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAIpC,MAAM,CAAC,OAAO,WACV,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,eAAe,EAC5B,qBAAqB,UAAQ,UAIU,UAAU,WAAW,GAAG,EAAE,KAAG,QAAQ,iBAAiB,CAAC,CA0FjG"}
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../src/command.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAGtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAIpC,MAAM,CAAC,OAAO,WACV,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,eAAe,EAC5B,qBAAqB,UAAQ,UAIU,UAAU,WAAW,GAAG,EAAE,KAAG,QAAQ,iBAAiB,CAAC,CA2FjG"}
package/build/command.js CHANGED
@@ -69,6 +69,7 @@ function default_1(method, endpointUri, commandInfo, doubleEncodeVariables = fal
69
69
  body[commandParams[i].name] = arg;
70
70
  }
71
71
  const request = factory_1.default.getInstance(method, endpoint, body, isHubCommand);
72
+ request.on('performance', (...args) => this.emit('request.performance', ...args));
72
73
  this.emit('command', { method, endpoint, body });
73
74
  log.info('COMMAND', (0, utils_1.commandCallStructure)(command, args));
74
75
  return request.makeRequest(this.options, this.sessionId).then((result) => {
@@ -9,6 +9,7 @@ export default class BrowserRequest extends WebDriverRequest {
9
9
  statusCode: number;
10
10
  body: any;
11
11
  }>;
12
+ protected _libPerformanceNow(): number;
12
13
  }
13
14
  export {};
14
15
  //# sourceMappingURL=browser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/request/browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC,OAAO,gBAAgB,MAAM,SAAS,CAAA;AAGtC,aAAK,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAA;AAClD,aAAK,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,cAAc,CAAC,CAAA;AAU7D,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,gBAAgB;gBAE3C,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAE,OAAe;IAI5G,SAAS,CAAC,cAAc,CAAE,OAAO,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,iBAAiB;cAIzE,WAAW,CAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,iBAAiB;;;;CA8BpE"}
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/request/browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC,OAAO,gBAAgB,MAAM,SAAS,CAAA;AAGtC,aAAK,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAA;AAClD,aAAK,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,cAAc,CAAC,CAAA;AAU7D,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,gBAAgB;gBAE3C,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAE,OAAe;IAI5G,SAAS,CAAC,cAAc,CAAE,OAAO,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,iBAAiB;cAIzE,WAAW,CAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,iBAAiB;;;;IA+BjE,SAAS,CAAC,kBAAkB,IAAI,MAAM;CAGzC"}
@@ -44,5 +44,8 @@ class BrowserRequest extends index_1.default {
44
44
  body: await res.json(),
45
45
  };
46
46
  }
47
+ _libPerformanceNow() {
48
+ return performance.now();
49
+ }
47
50
  }
48
51
  exports.default = BrowserRequest;
@@ -38,6 +38,7 @@ export default abstract class WebDriverRequest extends EventEmitter {
38
38
  makeRequest(options: RequestOptions, sessionId?: string): Promise<WebDriverResponse>;
39
39
  protected _createOptions(options: RequestOptions, sessionId?: string, isBrowser?: boolean): RequestLibOptions;
40
40
  protected _libRequest(url: URL, options: RequestLibOptions): Promise<RequestLibResponse>;
41
+ protected _libPerformanceNow(): number;
41
42
  private _request;
42
43
  }
43
44
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/request/index.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAErC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAK9B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAM1C,aAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;AAC5B,aAAK,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAA;AAClD,aAAK,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAA;AACpD,aAAK,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,cAAc,CAAC,CAAA;AAE7D,qBAAa,eAAgB,SAAQ,KAAK;IACtC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,IAAI,CAAC,EAAE,GAAG,CAAA;IACV,IAAI,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,iBAAiB;IAC9B,KAAK,EAAE,GAAG,CAAA;IACV;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;CACrB;AAWD,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,gBAAiB,SAAQ,YAAY;IAC/D,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,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,cAAc,EAAE,iBAAiB,CAKhC;gBAEY,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAE,OAAe;IAU5G,WAAW,CAAE,OAAO,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE,MAAM;IAYxD,SAAS,CAAC,cAAc,CAAE,OAAO,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,SAAS,GAAE,OAAe,GAAG,iBAAiB;cAiErG,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;YAIhF,QAAQ;CA8GzB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/request/index.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAErC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAK9B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAM1C,aAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;AAC5B,aAAK,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAA;AAClD,aAAK,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAA;AACpD,aAAK,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,cAAc,CAAC,CAAA;AAE7D,qBAAa,eAAgB,SAAQ,KAAK;IACtC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,IAAI,CAAC,EAAE,GAAG,CAAA;IACV,IAAI,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,iBAAiB;IAC9B,KAAK,EAAE,GAAG,CAAA;IACV;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;CACrB;AAWD,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,gBAAiB,SAAQ,YAAY;IAC/D,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,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,cAAc,EAAE,iBAAiB,CAKhC;gBAEY,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAE,OAAe;IAU5G,WAAW,CAAE,OAAO,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE,MAAM;IAYxD,SAAS,CAAC,cAAc,CAAE,OAAO,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,SAAS,GAAE,OAAe,GAAG,iBAAiB;cAiErG,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAI9F,SAAS,CAAC,kBAAkB,IAAI,MAAM;YAIxB,QAAQ;CAsHzB"}
@@ -104,17 +104,22 @@ class WebDriverRequest extends events_1.EventEmitter {
104
104
  async _libRequest(url, options) {
105
105
  throw new Error('This function must be implemented');
106
106
  }
107
+ _libPerformanceNow() {
108
+ throw new Error('This function must be implemented');
109
+ }
107
110
  async _request(fullRequestOptions, transformResponse, totalRetryCount = 0, retryCount = 0) {
108
111
  log.info(`[${fullRequestOptions.method}] ${fullRequestOptions.url.href}`);
109
112
  if (fullRequestOptions.json && Object.keys(fullRequestOptions.json).length) {
110
113
  log.info('DATA', (0, utils_1.transformCommandLogResult)(fullRequestOptions.json));
111
114
  }
112
115
  const { url, ...requestLibOptions } = fullRequestOptions;
116
+ const startTime = this._libPerformanceNow();
113
117
  let response = await this._libRequest(url, requestLibOptions)
114
118
  // @ts-ignore
115
119
  .catch((err) => {
116
120
  return err;
117
121
  });
122
+ const durationMillisecond = this._libPerformanceNow() - startTime;
118
123
  /**
119
124
  * handle retries for requests
120
125
  * @param {Error} error error object that causes the retry
@@ -128,10 +133,12 @@ class WebDriverRequest extends events_1.EventEmitter {
128
133
  if (retryCount >= totalRetryCount || error.message.includes('invalid session id')) {
129
134
  log.error(`Request failed with status ${response.statusCode} due to ${error}`);
130
135
  this.emit('response', { error });
136
+ this.emit('performance', { request: fullRequestOptions, durationMillisecond, success: false, error, retryCount });
131
137
  throw error;
132
138
  }
133
139
  ++retryCount;
134
140
  this.emit('retry', { error, retryCount });
141
+ this.emit('performance', { request: fullRequestOptions, durationMillisecond, success: false, error, retryCount });
135
142
  log.warn(msg);
136
143
  log.info(`Retrying ${retryCount}/${totalRetryCount}`);
137
144
  return this._request(fullRequestOptions, transformResponse, totalRetryCount, retryCount);
@@ -150,6 +157,7 @@ class WebDriverRequest extends events_1.EventEmitter {
150
157
  /**
151
158
  * throw if request error is unknown
152
159
  */
160
+ this.emit('performance', { request: fullRequestOptions, durationMillisecond, success: false, error: response, retryCount });
153
161
  throw response;
154
162
  }
155
163
  if (typeof transformResponse === 'function') {
@@ -172,6 +180,7 @@ class WebDriverRequest extends events_1.EventEmitter {
172
180
  * directly without using a hub, therefore throw
173
181
  */
174
182
  if (typeof response.body === 'string' && response.body.startsWith('<!DOCTYPE html>')) {
183
+ this.emit('performance', { request: fullRequestOptions, durationMillisecond, success: false, error, retryCount });
175
184
  return Promise.reject(new Error('Command can only be called to a Selenium Hub'));
176
185
  }
177
186
  return { value: response.body || null };
@@ -181,6 +190,7 @@ class WebDriverRequest extends events_1.EventEmitter {
181
190
  */
182
191
  if ((0, utils_2.isSuccessfulResponse)(response.statusCode, response.body)) {
183
192
  this.emit('response', { result: response.body });
193
+ this.emit('performance', { request: fullRequestOptions, durationMillisecond, success: true, retryCount });
184
194
  return response.body;
185
195
  }
186
196
  /**
@@ -190,6 +200,7 @@ class WebDriverRequest extends events_1.EventEmitter {
190
200
  if (error.name === 'stale element reference') {
191
201
  log.warn('Request encountered a stale element - terminating request');
192
202
  this.emit('response', { error });
203
+ this.emit('performance', { request: fullRequestOptions, durationMillisecond, success: false, error, retryCount });
193
204
  throw error;
194
205
  }
195
206
  return retry(error, `Request failed with status ${response.statusCode} due to ${error.message}`);
@@ -5,5 +5,6 @@ import WebDriverRequest from './index';
5
5
  export default class NodeJSRequest extends WebDriverRequest {
6
6
  constructor(method: string, endpoint: string, body?: Record<string, unknown>, isHubCommand?: boolean);
7
7
  protected _libRequest(url: URL, opts: Options.RequestLibOptions): Promise<Options.RequestLibResponse>;
8
+ protected _libPerformanceNow(): number;
8
9
  }
9
10
  //# sourceMappingURL=node.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/request/node.ts"],"names":[],"mappings":";AAIA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,gBAAqC,MAAM,SAAS,CAAA;AAO3D,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,gBAAgB;gBAC1C,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAE,OAAe;cAK5F,WAAW,CAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,iBAAiB;CAUzE"}
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/request/node.ts"],"names":[],"mappings":";AAIA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,gBAAqC,MAAM,SAAS,CAAA;AAQ3D,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,gBAAgB;gBAC1C,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAE,OAAe;cAK5F,WAAW,CAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,iBAAiB;IAWtE,SAAS,CAAC,kBAAkB,IAAI,MAAM;CAGzC"}
@@ -30,6 +30,7 @@ const http_1 = __importDefault(require("http"));
30
30
  const https_1 = __importDefault(require("https"));
31
31
  const got = __importStar(require("got"));
32
32
  const index_1 = __importStar(require("./index"));
33
+ const perf_hooks_1 = require("perf_hooks");
33
34
  const agents = {
34
35
  http: new http_1.default.Agent({ keepAlive: true }),
35
36
  https: new https_1.default.Agent({ keepAlive: true })
@@ -50,5 +51,8 @@ class NodeJSRequest extends index_1.default {
50
51
  throw err;
51
52
  }
52
53
  }
54
+ _libPerformanceNow() {
55
+ return perf_hooks_1.performance.now();
56
+ }
53
57
  }
54
58
  exports.default = NodeJSRequest;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "webdriver",
3
- "version": "7.19.2",
3
+ "version": "7.19.7",
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",
@@ -26,14 +26,14 @@
26
26
  },
27
27
  "dependencies": {
28
28
  "@types/node": "^17.0.4",
29
- "@wdio/config": "7.19.1",
29
+ "@wdio/config": "7.19.5",
30
30
  "@wdio/logger": "7.19.0",
31
31
  "@wdio/protocols": "7.19.0",
32
- "@wdio/types": "7.19.1",
33
- "@wdio/utils": "7.19.2",
32
+ "@wdio/types": "7.19.5",
33
+ "@wdio/utils": "7.19.7",
34
34
  "got": "^11.0.2",
35
35
  "ky": "^0.30.0",
36
36
  "lodash.merge": "^4.6.1"
37
37
  },
38
- "gitHead": "71fb35a12db8691194b346ab5abd2acf84829385"
38
+ "gitHead": "ed5b7278190953d5e77d11083b59db2209ac99b5"
39
39
  }