@wdio/browserstack-service 7.24.0 → 7.25.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.
package/README.md CHANGED
@@ -56,6 +56,91 @@ Set this to true to kill the browserstack process on complete, without waiting f
56
56
  Type: `Boolean`<br />
57
57
  Default: `false`
58
58
 
59
+ ### app
60
+ [Appium](https://appium.io/) set this with app file path available locally on your machine to use the app as [application under test](https://www.browserstack.com/docs/app-automate/appium/set-up-tests/specify-app) for Appium sessions.
61
+
62
+ Type: `String` or `JsonObject`<br />
63
+ Default: `undefined`
64
+
65
+ List of available app values:
66
+
67
+ #### path
68
+
69
+ Use local available app file path as application under test for appium.
70
+
71
+ ```js
72
+ services: [
73
+ ['browserstack', {
74
+ app: '/path/to/local/app.apk'
75
+ // OR
76
+ app: {
77
+ path: '/path/to/local/app.apk'
78
+ }
79
+ }]
80
+ ]
81
+ ```
82
+
83
+ Pass custom_id while app upload.
84
+
85
+ ```js
86
+ services: [
87
+ ['browserstack', {
88
+ app: {
89
+ path: '/path/to/local/app.apk',
90
+ custom_id: 'custom_id'
91
+ }
92
+ }]
93
+ ]
94
+ ```
95
+
96
+ #### id
97
+
98
+ Use app url returned after uploading app to BrowserStack.
99
+
100
+ ```js
101
+ services: [
102
+ ['browserstack', {
103
+ app: 'bs://<app-id>'
104
+ // OR
105
+ app: {
106
+ id: 'bs://<app-id>'
107
+ }
108
+ }]
109
+ ]
110
+ ```
111
+
112
+ #### custom_id
113
+
114
+ use custom_id of already uploaded apps
115
+
116
+ ```js
117
+ services: [
118
+ ['browserstack', {
119
+ app: 'custom_id'
120
+ // OR
121
+ app: {
122
+ custom_id: 'custom_id'
123
+ }
124
+ }]
125
+ ]
126
+ ```
127
+
128
+ #### shareable_id
129
+
130
+ use shareable_id of already uploaded apps
131
+
132
+ ```js
133
+ services: [
134
+ ['browserstack', {
135
+ app: 'username/custom_id'
136
+ // OR
137
+ app: {
138
+ shareable_id: 'username/custom_id'
139
+ }
140
+ }]
141
+ ]
142
+ ```
143
+
59
144
  ### opts
60
145
  Specified optional will be passed down to BrowserstackLocal.
61
146
 
@@ -1,2 +1,3 @@
1
1
  export declare const BROWSER_DESCRIPTION: readonly ["device", "os", "osVersion", "os_version", "browserName", "browser", "browserVersion", "browser_version"];
2
+ export declare const VALID_APP_EXTENSION: string[];
2
3
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,qHAStB,CAAA"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,qHAStB,CAAA;AAEV,eAAO,MAAM,mBAAmB,UAI/B,CAAA"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BROWSER_DESCRIPTION = void 0;
3
+ exports.VALID_APP_EXTENSION = exports.BROWSER_DESCRIPTION = void 0;
4
4
  exports.BROWSER_DESCRIPTION = [
5
5
  'device',
6
6
  'os',
@@ -11,3 +11,8 @@ exports.BROWSER_DESCRIPTION = [
11
11
  'browserVersion',
12
12
  'browser_version'
13
13
  ];
14
+ exports.VALID_APP_EXTENSION = [
15
+ '.apk',
16
+ '.aab',
17
+ '.ipa'
18
+ ];
@@ -1,5 +1,6 @@
1
1
  import * as BrowserstackLocalLauncher from 'browserstack-local';
2
2
  import type { Capabilities, Services, Options } from '@wdio/types';
3
+ import { App, AppConfig, AppUploadResponse } from './types';
3
4
  import { BrowserstackConfig } from './types';
4
5
  declare type BrowserstackLocal = BrowserstackLocalLauncher.Local & {
5
6
  pid?: number;
@@ -10,8 +11,15 @@ export default class BrowserstackLauncherService implements Services.ServiceInst
10
11
  private _config;
11
12
  browserstackLocal?: BrowserstackLocal;
12
13
  constructor(_options: BrowserstackConfig & Options.Testrunner, capabilities: Capabilities.RemoteCapability, _config: Options.Testrunner);
13
- onPrepare(config?: Options.Testrunner, capabilities?: Capabilities.RemoteCapabilities): void | Promise<unknown>;
14
+ onPrepare(config?: Options.Testrunner, capabilities?: Capabilities.RemoteCapabilities): Promise<unknown>;
14
15
  onComplete(): true | Promise<unknown> | undefined;
16
+ _uploadApp(app: App): Promise<AppUploadResponse>;
17
+ /**
18
+ * @param {String | AppConfig} appConfig <string>: should be "app file path" or "app_url" or "custom_id" or "shareable_id".
19
+ * <object>: only "path" and "custom_id" should coexist as multiple properties.
20
+ */
21
+ _validateApp(appConfig: AppConfig | string): Promise<App>;
22
+ _updateCaps(capabilities?: Capabilities.RemoteCapabilities, capType?: string, value?: string): void;
15
23
  }
16
24
  export {};
17
25
  //# sourceMappingURL=launcher.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"launcher.d.ts","sourceRoot":"","sources":["../src/launcher.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,yBAAyB,MAAM,oBAAoB,CAAA;AAE/D,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAIlE,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAI5C,aAAK,iBAAiB,GAAG,yBAAyB,CAAC,KAAK,GAAG;IACvD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI,CAAC;CAC7C,CAAA;AAED,MAAM,CAAC,OAAO,OAAO,2BAA4B,YAAW,QAAQ,CAAC,eAAe;IAI5E,OAAO,CAAC,QAAQ;IAEhB,OAAO,CAAC,OAAO;IALnB,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;gBAGzB,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,EACzD,YAAY,EAAE,YAAY,CAAC,gBAAgB,EACnC,OAAO,EAAE,OAAO,CAAC,UAAU;IAiCvC,SAAS,CAAE,MAAM,CAAC,EAAE,OAAO,CAAC,UAAU,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,kBAAkB;IAyEtF,UAAU;CAkCb"}
1
+ {"version":3,"file":"launcher.d.ts","sourceRoot":"","sources":["../src/launcher.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,yBAAyB,MAAM,oBAAoB,CAAA;AAE/D,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAClE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAI3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAK5C,aAAK,iBAAiB,GAAG,yBAAyB,CAAC,KAAK,GAAG;IACvD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI,CAAC;CAC7C,CAAA;AAED,MAAM,CAAC,OAAO,OAAO,2BAA4B,YAAW,QAAQ,CAAC,eAAe;IAI5E,OAAO,CAAC,QAAQ;IAEhB,OAAO,CAAC,OAAO;IALnB,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;gBAGzB,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,EACzD,YAAY,EAAE,YAAY,CAAC,gBAAgB,EACnC,OAAO,EAAE,OAAO,CAAC,UAAU;IAiCjC,SAAS,CAAE,MAAM,CAAC,EAAE,OAAO,CAAC,UAAU,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,kBAAkB;IA6E5F,UAAU;IAmCJ,UAAU,CAAC,GAAG,EAAC,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAkBrD;;;OAGG;IACG,YAAY,CAAE,SAAS,EAAE,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAyBhE,WAAW,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC,kBAAkB,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAC,MAAM;CA+C9F"}
package/build/launcher.js CHANGED
@@ -26,12 +26,18 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
26
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
+ const got_1 = __importDefault(require("got"));
30
+ const form_data_1 = __importDefault(require("form-data"));
31
+ const fs_1 = __importDefault(require("fs"));
32
+ const path_1 = __importDefault(require("path"));
29
33
  const util_1 = require("util");
30
34
  const perf_hooks_1 = require("perf_hooks");
35
+ const webdriverio_1 = require("webdriverio");
31
36
  const BrowserstackLocalLauncher = __importStar(require("browserstack-local"));
32
37
  const logger_1 = __importDefault(require("@wdio/logger"));
33
38
  // @ts-ignore
34
39
  const package_json_1 = require("../package.json");
40
+ const constants_1 = require("./constants");
35
41
  const log = (0, logger_1.default)('@wdio/browserstack-service');
36
42
  class BrowserstackLauncherService {
37
43
  constructor(_options, capabilities, _config) {
@@ -72,7 +78,40 @@ class BrowserstackLauncherService {
72
78
  });
73
79
  }
74
80
  }
75
- onPrepare(config, capabilities) {
81
+ async onPrepare(config, capabilities) {
82
+ /**
83
+ * Upload app to BrowserStack if valid file path to app is given.
84
+ * Update app value of capability directly if app_url, custom_id, shareable_id is given
85
+ */
86
+ if (!this._options.app) {
87
+ log.info('app is not defined in browserstack-service config, skipping ...');
88
+ }
89
+ else {
90
+ let app = {};
91
+ let appConfig = this._options.app;
92
+ try {
93
+ app = await this._validateApp(appConfig);
94
+ }
95
+ catch (error) {
96
+ throw new webdriverio_1.SevereServiceError(error);
97
+ }
98
+ if (constants_1.VALID_APP_EXTENSION.includes(path_1.default.extname(app.app))) {
99
+ if (fs_1.default.existsSync(app.app)) {
100
+ let data;
101
+ data = await this._uploadApp(app);
102
+ log.info(`app upload completed: ${JSON.stringify(data)}`);
103
+ app.app = data.app_url;
104
+ }
105
+ else if (app.customId) {
106
+ app.app = app.customId;
107
+ }
108
+ else {
109
+ throw new webdriverio_1.SevereServiceError('[Invalid app path] app path ${app.app} is not correct, Provide correct path to app under test');
110
+ }
111
+ }
112
+ log.info(`Using app: ${app.app}`);
113
+ this._updateCaps(capabilities, 'app', app.app);
114
+ }
76
115
  if (!this._options.browserstackLocal) {
77
116
  return log.info('browserstackLocal is not enabled - skipping...');
78
117
  }
@@ -81,43 +120,9 @@ class BrowserstackLauncherService {
81
120
  ...this._options.opts
82
121
  };
83
122
  this.browserstackLocal = new BrowserstackLocalLauncher.Local();
84
- if (Array.isArray(capabilities)) {
85
- capabilities.forEach((capability) => {
86
- if (!capability['bstack:options']) {
87
- const extensionCaps = Object.keys(capability).filter((cap) => cap.includes(':'));
88
- if (extensionCaps.length) {
89
- capability['bstack:options'] = { local: true };
90
- }
91
- else {
92
- capability['browserstack.local'] = true;
93
- }
94
- }
95
- else {
96
- capability['bstack:options'].local = true;
97
- }
98
- });
99
- }
100
- else if (typeof capabilities === 'object') {
101
- Object.entries(capabilities).forEach(([, caps]) => {
102
- if (!caps.capabilities['bstack:options']) {
103
- const extensionCaps = Object.keys(caps.capabilities).filter((cap) => cap.includes(':'));
104
- if (extensionCaps.length) {
105
- caps.capabilities['bstack:options'] = { local: true };
106
- }
107
- else {
108
- caps.capabilities['browserstack.local'] = true;
109
- }
110
- }
111
- else {
112
- caps.capabilities['bstack:options'].local = true;
113
- }
114
- });
115
- }
116
- else {
117
- throw TypeError('Capabilities should be an object or Array!');
118
- }
123
+ this._updateCaps(capabilities, 'local');
119
124
  /**
120
- * measure TestingBot tunnel boot time
125
+ * measure BrowserStack tunnel boot time
121
126
  */
122
127
  const obs = new perf_hooks_1.PerformanceObserver((list) => {
123
128
  const entry = list.getEntries()[0];
@@ -174,5 +179,106 @@ class BrowserstackLauncherService {
174
179
  return Promise.reject(err);
175
180
  });
176
181
  }
182
+ async _uploadApp(app) {
183
+ log.info(`uploading app ${app.app} ${app.customId ? `and custom_id: ${app.customId}` : ''} to browserstack`);
184
+ const form = new form_data_1.default();
185
+ if (app.app)
186
+ form.append('file', fs_1.default.createReadStream(app.app));
187
+ if (app.customId)
188
+ form.append('custom_id', app.customId);
189
+ const res = await got_1.default.post('https://api-cloud.browserstack.com/app-automate/upload', {
190
+ body: form,
191
+ username: this._config.user,
192
+ password: this._config.key
193
+ }).json().catch((err) => {
194
+ throw new webdriverio_1.SevereServiceError(`app upload failed ${err.message}`);
195
+ });
196
+ return res;
197
+ }
198
+ /**
199
+ * @param {String | AppConfig} appConfig <string>: should be "app file path" or "app_url" or "custom_id" or "shareable_id".
200
+ * <object>: only "path" and "custom_id" should coexist as multiple properties.
201
+ */
202
+ async _validateApp(appConfig) {
203
+ let app = {};
204
+ if (typeof appConfig === 'string') {
205
+ app.app = appConfig;
206
+ }
207
+ else if (typeof appConfig === 'object' && Object.keys(appConfig).length) {
208
+ if (Object.keys(appConfig).length > 2 || (Object.keys(appConfig).length === 2 && (!appConfig.path || !appConfig.custom_id))) {
209
+ throw new webdriverio_1.SevereServiceError(`keys ${Object.keys(appConfig)} can't co-exist as app values, use any one property from
210
+ {id<string>, path<string>, custom_id<string>, shareable_id<string>}, only "path" and "custom_id" can co-exist.`);
211
+ }
212
+ app.app = appConfig.id || appConfig.path || appConfig.custom_id || appConfig.shareable_id;
213
+ app.customId = appConfig.custom_id;
214
+ }
215
+ else {
216
+ throw new webdriverio_1.SevereServiceError('[Invalid format] app should be string or an object');
217
+ }
218
+ if (!app.app) {
219
+ throw new webdriverio_1.SevereServiceError(`[Invalid app property] supported properties are {id<string>, path<string>, custom_id<string>, shareable_id<string>}.
220
+ For more details please visit https://www.browserstack.com/docs/app-automate/appium/set-up-tests/specify-app ')`);
221
+ }
222
+ return app;
223
+ }
224
+ _updateCaps(capabilities, capType, value) {
225
+ if (Array.isArray(capabilities)) {
226
+ capabilities.forEach((capability) => {
227
+ if (!capability['bstack:options']) {
228
+ const extensionCaps = Object.keys(capability).filter((cap) => cap.includes(':'));
229
+ if (extensionCaps.length) {
230
+ if (capType === 'local') {
231
+ capability['bstack:options'] = { local: true };
232
+ }
233
+ else if (capType === 'app') {
234
+ capability['appium:app'] = value;
235
+ }
236
+ }
237
+ else if (capType === 'local') {
238
+ capability['browserstack.local'] = true;
239
+ }
240
+ else if (capType === 'app') {
241
+ capability['app'] = value;
242
+ }
243
+ }
244
+ else if (capType === 'local') {
245
+ capability['bstack:options'].local = true;
246
+ }
247
+ else if (capType === 'app') {
248
+ capability['appium:app'] = value;
249
+ }
250
+ });
251
+ }
252
+ else if (typeof capabilities === 'object') {
253
+ Object.entries(capabilities).forEach(([, caps]) => {
254
+ if (!caps.capabilities['bstack:options']) {
255
+ const extensionCaps = Object.keys(caps.capabilities).filter((cap) => cap.includes(':'));
256
+ if (extensionCaps.length) {
257
+ if (capType === 'local') {
258
+ caps.capabilities['bstack:options'] = { local: true };
259
+ }
260
+ else if (capType === 'app') {
261
+ caps.capabilities['appium:app'] = value;
262
+ }
263
+ }
264
+ else if (capType === 'local') {
265
+ caps.capabilities['browserstack.local'] = true;
266
+ }
267
+ else if (capType === 'app') {
268
+ caps.capabilities['app'] = value;
269
+ }
270
+ }
271
+ else if (capType === 'local') {
272
+ caps.capabilities['bstack:options'].local = true;
273
+ }
274
+ else if (capType === 'app') {
275
+ caps.capabilities['appium:app'] = value;
276
+ }
277
+ });
278
+ }
279
+ else {
280
+ throw new webdriverio_1.SevereServiceError('Capabilities should be an object or Array!');
281
+ }
282
+ }
177
283
  }
178
284
  exports.default = BrowserstackLauncherService;
package/build/types.d.ts CHANGED
@@ -4,12 +4,33 @@ export interface SessionResponse {
4
4
  };
5
5
  }
6
6
  export declare type MultiRemoteAction = (sessionId: string, browserName?: string) => Promise<any>;
7
+ export declare type AppConfig = {
8
+ id?: string;
9
+ path?: string;
10
+ custom_id?: string;
11
+ shareable_id?: string;
12
+ };
13
+ export interface AppUploadResponse {
14
+ app_url?: string;
15
+ custom_id?: string;
16
+ shareable_id?: string;
17
+ }
18
+ export interface App {
19
+ app?: string;
20
+ customId?: string;
21
+ }
7
22
  export interface BrowserstackConfig {
8
23
  /**
9
24
  * Set this to true to enable routing connections from Browserstack cloud through your computer.
10
25
  * You will also need to set `browserstack.local` to true in browser capabilities.
11
26
  */
12
27
  browserstackLocal?: boolean;
28
+ /**
29
+ * Set this with app file path present locally on your device or
30
+ * app hashed id returned after uploading app to Browserstack or
31
+ * custom_id, sharable_id of the uploaded app
32
+ */
33
+ app?: string | AppConfig;
13
34
  /**
14
35
  * Cucumber only. Set this to true to enable updating the session name to the Scenario name if only
15
36
  * a single Scenario was ran. Useful when running in parallel
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAE5B,kBAAkB,EAAE;QAEhB,WAAW,EAAE,MAAM,CAAA;KACtB,CAAA;CACJ;AAED,oBAAY,iBAAiB,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;AAE1F,MAAM,WAAW,kBAAkB;IAC/B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;;;;;;OAUG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC,OAAO,oBAAoB,EAAE,OAAO,CAAC,CAAA;CACvD"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAE5B,kBAAkB,EAAE;QAEhB,WAAW,EAAE,MAAM,CAAA;KACtB,CAAA;CACJ;AAED,oBAAY,iBAAiB,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;AAE1F,oBAAY,SAAS,GAAG;IACpB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;CACxB,CAAA;AAED,MAAM,WAAW,iBAAiB;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,GAAG;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,kBAAkB;IAC/B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;OAIG;IACH,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;;;;;;OAUG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC,OAAO,oBAAoB,EAAE,OAAO,CAAC,CAAA;CACvD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wdio/browserstack-service",
3
- "version": "7.24.0",
3
+ "version": "7.25.0",
4
4
  "description": "WebdriverIO service for better Browserstack integration",
5
5
  "author": "Adam Bjerstedt <abjerstedt@gmail.com>",
6
6
  "homepage": "https://github.com/webdriverio/webdriverio/tree/main/packages/wdio-browserstack-service",
@@ -25,10 +25,11 @@
25
25
  "dependencies": {
26
26
  "@types/node": "^18.0.0",
27
27
  "@wdio/logger": "7.19.0",
28
- "@wdio/types": "7.24.0",
28
+ "@wdio/types": "7.25.0",
29
29
  "browserstack-local": "^1.4.5",
30
+ "form-data": "^4.0.0",
30
31
  "got": "^11.0.2",
31
- "webdriverio": "7.24.0"
32
+ "webdriverio": "7.25.0"
32
33
  },
33
34
  "peerDependencies": {
34
35
  "@wdio/cli": "^5.0.0 || ^6.0.0 || ^7.0.0"
@@ -37,5 +38,5 @@
37
38
  "access": "public"
38
39
  },
39
40
  "types": "./build/index.d.ts",
40
- "gitHead": "cf88ab19bcd0d097ebf00fb812fcbfd1caef9705"
41
+ "gitHead": "6e619e8d6a97561922c75a6e0ef2e6172e63b720"
41
42
  }