webdriver 9.0.0-alpha.367 → 9.0.0-alpha.426
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/README.md +3 -3
- package/build/bidi/core.d.ts.map +1 -1
- package/build/bidi/core.js +20 -3
- package/build/command.d.ts.map +1 -1
- package/build/request/index.d.ts +0 -2
- package/build/request/index.d.ts.map +1 -1
- package/build/request/request.d.ts +0 -1
- package/build/request/request.d.ts.map +1 -1
- package/build/types.d.ts +4 -3
- package/build/types.d.ts.map +1 -1
- package/build/utils.d.ts +0 -2
- package/build/utils.d.ts.map +1 -1
- package/build/utils.js +25 -4
- package/package.json +7 -7
- /package/{LICENSE-MIT → LICENSE} +0 -0
package/README.md
CHANGED
|
@@ -88,7 +88,7 @@ const client = await WebDriver.newSession(options)
|
|
|
88
88
|
The following options are available:
|
|
89
89
|
|
|
90
90
|
### capabilities
|
|
91
|
-
Defines the [capabilities](https://w3c.github.io/webdriver/webdriver-spec.html#capabilities) you want to run in your
|
|
91
|
+
Defines the [capabilities](https://w3c.github.io/webdriver/webdriver-spec.html#capabilities) you want to run in your WebDriver session. Note: by default, it will automatically set the `webSocketUrl` to establish a [WebDriver Bidi](https://w3c.github.io/webdriver-bidi/) session, if you don't want this, make sure to set `'wdio:enforceWebDriverClassic': true` in your capabilities.
|
|
92
92
|
|
|
93
93
|
Type: `Object`<br />
|
|
94
94
|
Required: `true`
|
|
@@ -158,13 +158,13 @@ Default:
|
|
|
158
158
|
```
|
|
159
159
|
|
|
160
160
|
### transformRequest
|
|
161
|
-
Function intercepting [HTTP request options](https://github.com/sindresorhus/got#options) before a WebDriver request is made
|
|
161
|
+
Function intercepting [HTTP request options](https://github.com/sindresorhus/got#options) before a WebDriver request is made to a driver.
|
|
162
162
|
|
|
163
163
|
Type: `(RequestOptions) => RequestOptions`<br />
|
|
164
164
|
Default: *none*
|
|
165
165
|
|
|
166
166
|
### transformResponse
|
|
167
|
-
Function intercepting HTTP response objects after a WebDriver response has arrived
|
|
167
|
+
Function intercepting HTTP response objects after a WebDriver response has arrived.
|
|
168
168
|
|
|
169
169
|
Type: `(Response, RequestOptions) => Response`<br />
|
|
170
170
|
Default: *none*
|
package/build/bidi/core.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/bidi/core.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAW,SAAS,EAAE,MAAM,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/bidi/core.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAW,SAAS,EAAE,MAAM,IAAI,CAAA;AAI3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAKtD,qBAAa,QAAQ;;IAKJ,OAAO,CAAC,aAAa;gBAAb,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,aAAa;IAKnD,OAAO;IAepB,IAAI,MAAM,cAET;IAED,IAAI,WAAW,YAEd;IAEM,IAAI,CAAE,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC;IAuCrC,SAAS,CAAE,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC;CAUpD"}
|
package/build/bidi/core.js
CHANGED
|
@@ -37,7 +37,7 @@ export class BidiCore {
|
|
|
37
37
|
const failError = new Error(`WebDriver Bidi command "${params.method}" failed`);
|
|
38
38
|
return new Promise((resolve, reject) => {
|
|
39
39
|
const t = setTimeout(() => {
|
|
40
|
-
reject(new Error(`
|
|
40
|
+
reject(new Error(`Command ${params.method} with id ${id} (with the following parameter: ${JSON.stringify(params.params)}) timed out`));
|
|
41
41
|
h.off('message', listener);
|
|
42
42
|
}, RESPONSE_TIMEOUT);
|
|
43
43
|
const listener = (data) => {
|
|
@@ -48,7 +48,15 @@ export class BidiCore {
|
|
|
48
48
|
h.off('message', listener);
|
|
49
49
|
log.info('BIDI RESULT', JSON.stringify(payload));
|
|
50
50
|
if (payload.error) {
|
|
51
|
-
failError.message += ` with error: ${payload.error}`;
|
|
51
|
+
failError.message += ` with error: ${payload.error} - ${payload.message}`;
|
|
52
|
+
if (payload.stacktrace) {
|
|
53
|
+
const driverStack = payload.stacktrace
|
|
54
|
+
.split('\n')
|
|
55
|
+
.filter(Boolean)
|
|
56
|
+
.map((line) => ` at ${line}`)
|
|
57
|
+
.join('\n');
|
|
58
|
+
failError.stack += `\n\nDriver Stack:\n${driverStack}`;
|
|
59
|
+
}
|
|
52
60
|
return reject(failError);
|
|
53
61
|
}
|
|
54
62
|
resolve(payload);
|
|
@@ -65,9 +73,18 @@ export class BidiCore {
|
|
|
65
73
|
if (!this.#isConnected) {
|
|
66
74
|
throw new Error('No connection to WebDriver Bidi was established');
|
|
67
75
|
}
|
|
68
|
-
log.info('BIDI COMMAND',
|
|
76
|
+
log.info('BIDI COMMAND', ...parseBidiCommand(params));
|
|
69
77
|
const id = ++this.#id;
|
|
70
78
|
this.#ws.send(JSON.stringify({ id, ...params }));
|
|
71
79
|
return id;
|
|
72
80
|
}
|
|
73
81
|
}
|
|
82
|
+
function parseBidiCommand(params) {
|
|
83
|
+
const commandName = params.method;
|
|
84
|
+
if (commandName === 'script.addPreloadScript') {
|
|
85
|
+
const param = params.params;
|
|
86
|
+
const logString = `{ functionDeclaration: <PreloadScript[${Buffer.byteLength(param.functionDeclaration, 'utf-8')} bytes]>, contexts: ${JSON.stringify(param.contexts)} }`;
|
|
87
|
+
return [commandName, logString];
|
|
88
|
+
}
|
|
89
|
+
return [commandName, JSON.stringify(params.params)];
|
|
90
|
+
}
|
package/build/command.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../src/command.ts"],"names":[],"mappings":"AAEA,OAAO,EAEH,KAAK,eAAe,EACvB,MAAM,iBAAiB,CAAA;AAGxB,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,GAAG,EAAE,KAAG,
|
|
1
|
+
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../src/command.ts"],"names":[],"mappings":"AAEA,OAAO,EAEH,KAAK,eAAe,EACvB,MAAM,iBAAiB,CAAA;AAGxB,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,GAAG,EAAE,KAAG,OAAO,CAAC,iBAAiB,GAAG,aAAa,GAAG,IAAI,CAAC,CA0J9H"}
|
package/build/request/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/request/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/request/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAG1C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAI9B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAW1C,KAAK,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAA;AACpD,KAAK,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,cAAc,CAAC,CAAA;AAO7D,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;AAED,eAAO,MAAM,sBAAsB,UAElC,CAAA;AAWD,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,gBAAiB,SAAQ,YAAY;;IAG/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;gBAEb,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAE,OAAe;IAStG,WAAW,CAAE,OAAO,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE,MAAM;cAc9C,cAAc,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;cA0D3I,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAIxF,SAAS,CAAC,kBAAkB,IAAI,MAAM;YAIxB,QAAQ;CAgIzB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/request/request.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/request/request.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAGnC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAE1C,OAAO,gBAAqC,MAAM,YAAY,CAAA;AAQ9D,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,gBAAgB;gBACzC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAE,OAAe;cAI5F,WAAW,CAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW;IAwBxD,SAAS,CAAC,kBAAkB,IAAI,MAAM;CAGzC"}
|
package/build/types.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
2
1
|
import type { EventEmitter } from 'node:events';
|
|
3
2
|
import type { Options, Capabilities, ThenArg } from '@wdio/types';
|
|
4
3
|
import type { WebDriverBidiProtocol, ProtocolCommands } from '@wdio/protocols';
|
|
@@ -32,11 +31,13 @@ export type RemoteConfig = Options.WebDriver & Capabilities.WithRequestedCapabil
|
|
|
32
31
|
type BidiInterface = ObtainMethods<Pick<BidiHandler, BidiCommands>>;
|
|
33
32
|
type WebDriverClassicEvents = {
|
|
34
33
|
command: {
|
|
34
|
+
command: string;
|
|
35
35
|
method: string;
|
|
36
36
|
endpoint: string;
|
|
37
37
|
body: any;
|
|
38
38
|
};
|
|
39
39
|
result: {
|
|
40
|
+
command: string;
|
|
40
41
|
method: string;
|
|
41
42
|
endpoint: string;
|
|
42
43
|
body: any;
|
|
@@ -59,10 +60,10 @@ type GetParam<T extends {
|
|
|
59
60
|
}, U extends string> = T extends {
|
|
60
61
|
method: U;
|
|
61
62
|
} ? T['params'] : never;
|
|
62
|
-
type EventMap = {
|
|
63
|
+
export type EventMap = {
|
|
63
64
|
[Event in EventData['method']]: GetParam<EventData, Event>;
|
|
64
65
|
} & WebDriverClassicEvents;
|
|
65
|
-
|
|
66
|
+
interface BidiEventHandler {
|
|
66
67
|
on<K extends keyof EventMap>(event: K, listener: (this: Client, param: EventMap[K]) => void): this;
|
|
67
68
|
once<K extends keyof EventMap>(event: K, listener: (this: Client, param: EventMap[K]) => void): this;
|
|
68
69
|
}
|
package/build/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"
|
|
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,5 +1,3 @@
|
|
|
1
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
3
1
|
import type { EventEmitter } from 'node:events';
|
|
4
2
|
import type { Options } from '@wdio/types';
|
|
5
3
|
import type { WebDriverResponse } from './request/index.js';
|
package/build/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"
|
|
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,MAAM,aAAa,CAAA;AAO1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAYxF;;GAEG;AACH,wBAAsB,qBAAqB,CAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,WAAW,CAAC,YAAY,CAAA;CAAE,CAAC,CA6EzI;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,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,oBAAoB,EAAE,EAAE,OAAO,CAAC,YAAY,CAAC,sCA8C7H;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;CA8C5D;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,qBAAqB,CAYpL;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,QAgBhD;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,QAAS,kBAAkB,WAAU,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,WAmD1F,CAAA;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,GAAG,KAAK,CAS1F;AA+BD;;;;GAIG;AACH,wBAAgB,YAAY,CAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAE,OAAc,GAAG,qBAAqB,CAejG;AAED,wBAAgB,gBAAgB,CAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,QAWjE"}
|
package/build/utils.js
CHANGED
|
@@ -46,7 +46,7 @@ export async function startWebDriverSession(params) {
|
|
|
46
46
|
* to check what style the user sent in so we know how to construct the
|
|
47
47
|
* object for the other style
|
|
48
48
|
*/
|
|
49
|
-
const [w3cCaps, jsonwpCaps] = params.capabilities && params.capabilities
|
|
49
|
+
const [w3cCaps, jsonwpCaps] = params.capabilities && 'alwaysMatch' in params.capabilities
|
|
50
50
|
/**
|
|
51
51
|
* in case W3C compliant capabilities are provided
|
|
52
52
|
*/
|
|
@@ -55,6 +55,15 @@ export async function startWebDriverSession(params) {
|
|
|
55
55
|
* otherwise assume they passed in jsonwp-style caps (flat object)
|
|
56
56
|
*/
|
|
57
57
|
: [{ alwaysMatch: params.capabilities, firstMatch: [{}] }, params.capabilities];
|
|
58
|
+
/**
|
|
59
|
+
* automatically opt-into WebDriver Bid (@ref https://w3c.github.io/webdriver-bidi/)
|
|
60
|
+
*/
|
|
61
|
+
if (!w3cCaps.alwaysMatch['wdio:enforceWebDriverClassic'] && typeof w3cCaps.alwaysMatch.browserName === 'string' && w3cCaps.alwaysMatch.browserName !== 'safari') {
|
|
62
|
+
w3cCaps.alwaysMatch.webSocketUrl = true;
|
|
63
|
+
}
|
|
64
|
+
if (!jsonwpCaps['wdio:enforceWebDriverClassic'] && typeof jsonwpCaps.browserName === 'string' && jsonwpCaps.browserName !== 'safari') {
|
|
65
|
+
jsonwpCaps.webSocketUrl = true;
|
|
66
|
+
}
|
|
58
67
|
const sessionRequest = new Request('POST', '/session', {
|
|
59
68
|
capabilities: w3cCaps, // W3C compliant
|
|
60
69
|
desiredCapabilities: jsonwpCaps // JSONWP compliant
|
|
@@ -198,7 +207,19 @@ export function getErrorFromResponseBody(body, requestOptions) {
|
|
|
198
207
|
export class CustomRequestError extends Error {
|
|
199
208
|
constructor(body, requestOptions) {
|
|
200
209
|
const errorObj = body.value || body;
|
|
201
|
-
|
|
210
|
+
/**
|
|
211
|
+
* e.g. in Firefox or Safari, error are following the following structure:
|
|
212
|
+
* ```
|
|
213
|
+
* {
|
|
214
|
+
* value: {
|
|
215
|
+
* error: '...',
|
|
216
|
+
* message: '...',
|
|
217
|
+
* stacktrace: '...'
|
|
218
|
+
* }
|
|
219
|
+
* }
|
|
220
|
+
* ```
|
|
221
|
+
*/
|
|
222
|
+
let errorMessage = errorObj.message || errorObj.error || errorObj.class || 'unknown error';
|
|
202
223
|
/**
|
|
203
224
|
* Improve Chromedriver's error message for an invalid selector
|
|
204
225
|
*
|
|
@@ -212,14 +233,14 @@ export class CustomRequestError extends Error {
|
|
|
212
233
|
* error: 'timeout'
|
|
213
234
|
* message: ''
|
|
214
235
|
*/
|
|
215
|
-
if (typeof
|
|
236
|
+
if (typeof errorMessage === 'string' && errorMessage.includes('invalid locator')) {
|
|
216
237
|
errorMessage = (`The selector "${requestOptions.value}" used with strategy "${requestOptions.using}" is invalid!`);
|
|
217
238
|
}
|
|
218
239
|
super(errorMessage);
|
|
219
240
|
if (errorObj.error) {
|
|
220
241
|
this.name = errorObj.error;
|
|
221
242
|
}
|
|
222
|
-
else if (
|
|
243
|
+
else if (errorMessage && errorMessage.includes('stale element reference')) {
|
|
223
244
|
this.name = 'stale element reference';
|
|
224
245
|
}
|
|
225
246
|
else {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "webdriver",
|
|
3
|
-
"version": "9.0.0-alpha.
|
|
3
|
+
"version": "9.0.0-alpha.426+d760644c4",
|
|
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,13 +38,13 @@
|
|
|
38
38
|
"dependencies": {
|
|
39
39
|
"@types/node": "^20.1.0",
|
|
40
40
|
"@types/ws": "^8.5.3",
|
|
41
|
-
"@wdio/config": "9.0.0-alpha.
|
|
42
|
-
"@wdio/logger": "9.0.0-alpha.
|
|
43
|
-
"@wdio/protocols": "9.0.0-alpha.
|
|
44
|
-
"@wdio/types": "9.0.0-alpha.
|
|
45
|
-
"@wdio/utils": "9.0.0-alpha.
|
|
41
|
+
"@wdio/config": "9.0.0-alpha.426+d760644c4",
|
|
42
|
+
"@wdio/logger": "9.0.0-alpha.426+d760644c4",
|
|
43
|
+
"@wdio/protocols": "9.0.0-alpha.426+d760644c4",
|
|
44
|
+
"@wdio/types": "9.0.0-alpha.426+d760644c4",
|
|
45
|
+
"@wdio/utils": "9.0.0-alpha.426+d760644c4",
|
|
46
46
|
"deepmerge-ts": "^7.0.3",
|
|
47
47
|
"ws": "^8.8.0"
|
|
48
48
|
},
|
|
49
|
-
"gitHead": "
|
|
49
|
+
"gitHead": "d760644c4c6e1ef910c0bee120cb422e25dbbe06"
|
|
50
50
|
}
|
/package/{LICENSE-MIT → LICENSE}
RENAMED
|
File without changes
|