webdriverio 6.6.7 → 6.7.3

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.
Files changed (126) hide show
  1. package/build/commands/browser/$$.d.ts +3 -1
  2. package/build/commands/browser/$$.d.ts.map +1 -1
  3. package/build/commands/browser/$.d.ts +4 -1
  4. package/build/commands/browser/$.d.ts.map +1 -1
  5. package/build/commands/browser/$.js +2 -2
  6. package/build/commands/browser/addCommand.d.ts.map +1 -1
  7. package/build/commands/browser/call.d.ts +1 -1
  8. package/build/commands/browser/call.d.ts.map +1 -1
  9. package/build/commands/browser/call.js +5 -2
  10. package/build/commands/browser/custom$$.d.ts +3 -1
  11. package/build/commands/browser/custom$$.d.ts.map +1 -1
  12. package/build/commands/browser/custom$$.js +4 -4
  13. package/build/commands/browser/custom$.d.ts +3 -1
  14. package/build/commands/browser/custom$.d.ts.map +1 -1
  15. package/build/commands/browser/custom$.js +3 -3
  16. package/build/commands/browser/debug.d.ts +3 -1
  17. package/build/commands/browser/debug.d.ts.map +1 -1
  18. package/build/commands/browser/debug.js +7 -4
  19. package/build/commands/browser/deleteCookies.d.ts +3 -1
  20. package/build/commands/browser/deleteCookies.d.ts.map +1 -1
  21. package/build/commands/browser/deleteCookies.js +2 -2
  22. package/build/commands/browser/execute.d.ts +3 -1
  23. package/build/commands/browser/execute.d.ts.map +1 -1
  24. package/build/commands/browser/execute.js +1 -2
  25. package/build/commands/browser/executeAsync.d.ts +3 -1
  26. package/build/commands/browser/executeAsync.d.ts.map +1 -1
  27. package/build/commands/browser/executeAsync.js +1 -2
  28. package/build/commands/browser/getCookies.d.ts +3 -1
  29. package/build/commands/browser/getCookies.d.ts.map +1 -1
  30. package/build/commands/browser/getCookies.js +2 -2
  31. package/build/commands/browser/getPuppeteer.d.ts +3 -4
  32. package/build/commands/browser/getPuppeteer.d.ts.map +1 -1
  33. package/build/commands/browser/getPuppeteer.js +11 -4
  34. package/build/commands/browser/getWindowSize.d.ts +3 -1
  35. package/build/commands/browser/getWindowSize.d.ts.map +1 -1
  36. package/build/commands/browser/keys.d.ts +3 -1
  37. package/build/commands/browser/keys.d.ts.map +1 -1
  38. package/build/commands/browser/mock.d.ts +5 -3
  39. package/build/commands/browser/mock.d.ts.map +1 -1
  40. package/build/commands/browser/mock.js +2 -1
  41. package/build/commands/browser/newWindow.d.ts +3 -4
  42. package/build/commands/browser/newWindow.d.ts.map +1 -1
  43. package/build/commands/browser/newWindow.js +3 -0
  44. package/build/commands/browser/overwriteCommand.d.ts.map +1 -1
  45. package/build/commands/browser/pause.d.ts +3 -1
  46. package/build/commands/browser/pause.d.ts.map +1 -1
  47. package/build/commands/browser/react$$.d.ts +3 -4
  48. package/build/commands/browser/react$$.d.ts.map +1 -1
  49. package/build/commands/browser/react$.d.ts +3 -4
  50. package/build/commands/browser/react$.d.ts.map +1 -1
  51. package/build/commands/browser/reloadSession.d.ts +3 -1
  52. package/build/commands/browser/reloadSession.d.ts.map +1 -1
  53. package/build/commands/browser/saveRecordingScreen.d.ts +4 -1
  54. package/build/commands/browser/saveRecordingScreen.d.ts.map +1 -1
  55. package/build/commands/browser/saveScreenshot.d.ts +4 -1
  56. package/build/commands/browser/saveScreenshot.d.ts.map +1 -1
  57. package/build/commands/browser/setCookies.d.ts +4 -1
  58. package/build/commands/browser/setCookies.d.ts.map +1 -1
  59. package/build/commands/browser/setCookies.js +2 -1
  60. package/build/commands/browser/setTimeout.d.ts +4 -1
  61. package/build/commands/browser/setTimeout.d.ts.map +1 -1
  62. package/build/commands/browser/setTimeout.js +5 -4
  63. package/build/commands/browser/setWindowSize.d.ts +3 -1
  64. package/build/commands/browser/setWindowSize.d.ts.map +1 -1
  65. package/build/commands/browser/switchWindow.d.ts +3 -1
  66. package/build/commands/browser/switchWindow.d.ts.map +1 -1
  67. package/build/commands/browser/throttle.d.ts +3 -1
  68. package/build/commands/browser/throttle.d.ts.map +1 -1
  69. package/build/commands/browser/touchAction.d.ts +3 -1
  70. package/build/commands/browser/touchAction.d.ts.map +1 -1
  71. package/build/commands/browser/uploadFile.d.ts +3 -1
  72. package/build/commands/browser/uploadFile.d.ts.map +1 -1
  73. package/build/commands/browser/uploadFile.js +1 -5
  74. package/build/commands/browser/url.d.ts +3 -1
  75. package/build/commands/browser/url.d.ts.map +1 -1
  76. package/build/commands/browser/url.js +1 -1
  77. package/build/commands/browser/waitUntil.d.ts +3 -5
  78. package/build/commands/browser/waitUntil.d.ts.map +1 -1
  79. package/build/commands/browser/waitUntil.js +2 -2
  80. package/build/commands/element/$.d.ts +1 -1
  81. package/build/commands/element/$.d.ts.map +1 -1
  82. package/build/commands/element/custom$.d.ts +1 -1
  83. package/build/commands/element/custom$.d.ts.map +1 -1
  84. package/build/commands/element/nextElement.d.ts +2 -0
  85. package/build/commands/element/nextElement.d.ts.map +1 -0
  86. package/build/commands/element/nextElement.js +6 -0
  87. package/build/commands/element/parentElement.d.ts +2 -0
  88. package/build/commands/element/parentElement.d.ts.map +1 -0
  89. package/build/commands/element/parentElement.js +6 -0
  90. package/build/commands/element/previousElement.d.ts +2 -0
  91. package/build/commands/element/previousElement.d.ts.map +1 -0
  92. package/build/commands/element/previousElement.js +6 -0
  93. package/build/commands/element/react$$.d.ts.map +1 -1
  94. package/build/commands/element/react$.d.ts +1 -1
  95. package/build/commands/element/react$.d.ts.map +1 -1
  96. package/build/commands/element.d.ts +3 -0
  97. package/build/commands/element.d.ts.map +1 -1
  98. package/build/commands/element.js +4 -1
  99. package/build/multiremote.d.ts +1 -1
  100. package/build/multiremote.d.ts.map +1 -1
  101. package/build/types.d.ts +14 -0
  102. package/build/types.d.ts.map +1 -0
  103. package/build/types.js +2 -0
  104. package/build/utils/SevereServiceError.d.ts.map +1 -1
  105. package/build/utils/findStrategy.d.ts +2 -2
  106. package/build/utils/findStrategy.d.ts.map +1 -1
  107. package/build/utils/findStrategy.js +12 -3
  108. package/build/utils/getElementObject.d.ts +5 -2
  109. package/build/utils/getElementObject.d.ts.map +1 -1
  110. package/build/utils/getElementObject.js +9 -13
  111. package/build/utils/implicitWait.d.ts +10 -1
  112. package/build/utils/implicitWait.d.ts.map +1 -1
  113. package/build/utils/implicitWait.js +9 -0
  114. package/build/utils/interception/devtools.d.ts +31 -6
  115. package/build/utils/interception/devtools.d.ts.map +1 -1
  116. package/build/utils/interception/devtools.js +10 -9
  117. package/build/utils/interception/index.d.ts +2 -2
  118. package/build/utils/interception/index.d.ts.map +1 -1
  119. package/build/utils/interception/webdriver.d.ts +11 -9
  120. package/build/utils/interception/webdriver.d.ts.map +1 -1
  121. package/build/utils/interception/webdriver.js +7 -7
  122. package/build/utils/refetchElement.d.ts +2 -1
  123. package/build/utils/refetchElement.d.ts.map +1 -1
  124. package/package.json +14 -9
  125. package/webdriverio-core.d.ts +90 -20
  126. package/webdriverio.d.ts +21 -6
@@ -1,13 +1,15 @@
1
+ /// <reference types="webdriver" />
2
+ /// <reference types="webdriverio/webdriverio-core" />
3
+ import Interception from '.';
1
4
  export default class WebDriverInterception extends Interception {
2
- constructor(url: string, filterOptions: {} | undefined, browser: WebdriverIO.Browser);
5
+ mockId?: string;
3
6
  init(): Promise<void>;
4
- mockId: any;
5
- clear(): Promise<any>;
6
- restore(): Promise<any>;
7
- respond(overwrite: any, params?: any): Promise<any>;
8
- respondOnce(overwrite: any, params?: any): Promise<any>;
9
- abort(errorReason: any, sticky?: boolean): Promise<any>;
10
- abortOnce(errorReason: string): Promise<any>;
7
+ get calls(): Promise<WebDriver.ProtocolCommandResponse>;
8
+ clear(): Promise<void>;
9
+ restore(): Promise<void>;
10
+ respond(overwrite: WebdriverIO.MockOverwrite, params?: WebdriverIO.MockResponseParams): Promise<void>;
11
+ respondOnce(overwrite: WebdriverIO.MockOverwrite, params?: WebdriverIO.MockResponseParams): Promise<void>;
12
+ abort(errorReason: string, sticky?: boolean): Promise<void>;
13
+ abortOnce(errorReason: string): Promise<void>;
11
14
  }
12
- import Interception from ".";
13
15
  //# sourceMappingURL=webdriver.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"webdriver.d.ts","sourceRoot":"","sources":["../../../src/utils/interception/webdriver.js"],"names":[],"mappings":"AASA;IAEgB,sFASN;IAVN,sBAGC;IADG,YAAoB;IAcxB,sBAGC;IAMD,wBAGC;IAOD,oDAOC;IAOD,wDAOC;IAMD,wDAUC;IAMD,uBAFW,MAAM,gBAIhB;CACJ"}
1
+ {"version":3,"file":"webdriver.d.ts","sourceRoot":"","sources":["../../../src/utils/interception/webdriver.ts"],"names":[],"mappings":";;AAAA,OAAO,YAAY,MAAM,GAAG,CAAA;AAS5B,MAAM,CAAC,OAAO,OAAO,qBAAsB,SAAQ,YAAY;IAC3D,MAAM,CAAC,EAAE,MAAM,CAAC;IAEV,IAAI;IASV,IAAI,KAAK,+CAGR;IAKD,KAAK;IASL,OAAO;IAUP,OAAO,CAAE,SAAS,EAAE,WAAW,CAAC,aAAa,EAAE,MAAM,GAAE,WAAW,CAAC,kBAAuB;IAc1F,WAAW,CAAE,SAAS,EAAE,WAAW,CAAC,aAAa,EAAE,MAAM,GAAE,WAAW,CAAC,kBAAuB;IAa9F,KAAK,CAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAE,OAAc;IAgBlD,SAAS,CAAE,WAAW,EAAE,MAAM;CAGjC"}
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const _1 = __importDefault(require("./"));
6
+ const _1 = __importDefault(require("."));
7
7
  const constants_1 = require("../../constants");
8
8
  class WebDriverInterception extends _1.default {
9
9
  async init() {
@@ -11,25 +11,25 @@ class WebDriverInterception extends _1.default {
11
11
  this.mockId = mockId;
12
12
  }
13
13
  get calls() {
14
- return this.browser.call(() => this.browser.mockCalls(this.mockId));
14
+ return this.browser.call(async () => this.browser.getMockCalls(this.mockId));
15
15
  }
16
16
  clear() {
17
- return this.browser.call(() => this.browser.clearMockCalls(this.mockId));
17
+ return this.browser.call(async () => this.browser.clearMockCalls(this.mockId));
18
18
  }
19
19
  restore() {
20
- return this.browser.call(() => this.browser.clearMockCalls(this.mockId, true));
20
+ return this.browser.call(async () => this.browser.clearMockCalls(this.mockId, true));
21
21
  }
22
22
  respond(overwrite, params = {}) {
23
- return this.browser.call(() => this.browser.respondMock(this.mockId, { overwrite, params, sticky: true }));
23
+ return this.browser.call(async () => this.browser.respondMock(this.mockId, { overwrite, params, sticky: true }));
24
24
  }
25
25
  respondOnce(overwrite, params = {}) {
26
- return this.browser.call(() => this.browser.respondMock(this.mockId, { overwrite, params }));
26
+ return this.browser.call(async () => this.browser.respondMock(this.mockId, { overwrite, params }));
27
27
  }
28
28
  abort(errorReason, sticky = true) {
29
29
  if (typeof errorReason !== 'string' || !constants_1.ERROR_REASON.includes(errorReason)) {
30
30
  throw new Error(`Invalid value for errorReason, allowed are: ${constants_1.ERROR_REASON.join(', ')}`);
31
31
  }
32
- return this.browser.call(() => this.browser.respondMock(this.mockId, { errorReason, sticky }));
32
+ return this.browser.call(async () => this.browser.respondMock(this.mockId, { errorReason, sticky }));
33
33
  }
34
34
  abortOnce(errorReason) {
35
35
  return this.abort(errorReason, false);
@@ -1,2 +1,3 @@
1
- export default function refetchElement(currentElement: Object, commandName: string): Promise<any>;
1
+ import { CurrentElement } from './implicitWait';
2
+ export default function refetchElement(currentElement: CurrentElement, commandName: string): Promise<CurrentElement>;
2
3
  //# sourceMappingURL=refetchElement.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"refetchElement.d.ts","sourceRoot":"","sources":["../../src/utils/refetchElement.js"],"names":[],"mappings":"AASA,uDAJY,MAAM,eACN,MAAM,gBA0BjB"}
1
+ {"version":3,"file":"refetchElement.d.ts","sourceRoot":"","sources":["../../src/utils/refetchElement.ts"],"names":[],"mappings":"AAAA,OAAqB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAM7D,wBAA8B,cAAc,CAAE,cAAc,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,2BAuBhG"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "webdriverio",
3
3
  "description": "Next-gen browser and mobile automation test framework for Node.js",
4
- "version": "6.6.7",
4
+ "version": "6.7.3",
5
5
  "homepage": "https://webdriver.io",
6
6
  "author": "Christian Bromann <christian@saucelabs.com>",
7
7
  "license": "MIT",
@@ -47,15 +47,20 @@
47
47
  "types": "./webdriverio.d.ts",
48
48
  "typeScriptVersion": "3.7.3",
49
49
  "dependencies": {
50
- "@types/puppeteer": "^3.0.1",
51
- "@wdio/config": "6.6.3",
52
- "@wdio/logger": "6.6.0",
53
- "@wdio/repl": "6.6.3",
54
- "@wdio/utils": "6.6.3",
50
+ "@types/archiver": "^3.1.1",
51
+ "@types/atob": "^2.1.2",
52
+ "@types/fs-extra": "^9.0.2",
53
+ "@types/lodash.clonedeep": "^4.5.6",
54
+ "@types/lodash.isplainobject": "^4.0.6",
55
+ "@types/puppeteer-core": "^2.0.0",
56
+ "@wdio/config": "6.7.3",
57
+ "@wdio/logger": "6.7.3",
58
+ "@wdio/repl": "6.7.3",
59
+ "@wdio/utils": "6.7.3",
55
60
  "archiver": "^5.0.0",
56
61
  "atob": "^2.1.2",
57
62
  "css-value": "^0.0.1",
58
- "devtools": "6.6.3",
63
+ "devtools": "6.7.3",
59
64
  "fs-extra": "^9.0.1",
60
65
  "get-port": "^5.1.1",
61
66
  "grapheme-splitter": "^1.0.2",
@@ -68,7 +73,7 @@
68
73
  "resq": "^1.9.1",
69
74
  "rgb2hex": "^0.2.0",
70
75
  "serialize-error": "^7.0.0",
71
- "webdriver": "6.6.3"
76
+ "webdriver": "6.7.3"
72
77
  },
73
- "gitHead": "3350a2526b788ca23a5a4d14b0bfe335ce94ea3e"
78
+ "gitHead": "2d72a4f1be35727342bf31b750d76eab6c8b50e9"
74
79
  }
@@ -58,7 +58,44 @@ declare namespace WebdriverIO {
58
58
  interface ServiceOption {
59
59
  [key: string]: any;
60
60
  }
61
- type ServiceEntry = string | HookFunctions | [string, ServiceOption] | object
61
+
62
+ interface ServiceClass {
63
+ new(options: ServiceOption, caps: WebDriver.DesiredCapabilities, config: Options): ServiceInstance
64
+ }
65
+
66
+ interface ServiceLauncher extends ServiceClass {
67
+ default?: ServiceClass
68
+ launcher?: ServiceClass
69
+ }
70
+
71
+ interface ServiceInstance extends HookFunctions {
72
+ options?: Record<string, any>,
73
+ capabilities?: WebDriver.DesiredCapabilities,
74
+ config?: Config
75
+ }
76
+
77
+ type ServiceEntry = (
78
+ /**
79
+ * e.g. `services: ['@wdio/sauce-service']`
80
+ */
81
+ string |
82
+ /**
83
+ * e.g. `services: [{ onPrepare: () => { ... } }]`
84
+ */
85
+ HookFunctions |
86
+ /**
87
+ * e.g. `services: [CustomClass]`
88
+ */
89
+ ServiceLauncher |
90
+ /**
91
+ * e.g. `services: [['@wdio/sauce-service', { ... }]]`
92
+ */
93
+ [string, ServiceOption] |
94
+ /**
95
+ * e.g. `services: [[CustomClass, { ... }]]`
96
+ */
97
+ [ServiceClass, ServiceOption]
98
+ )
62
99
 
63
100
  interface Options {
64
101
  /**
@@ -187,14 +224,23 @@ declare namespace WebdriverIO {
187
224
  execArgv?: string[];
188
225
  }
189
226
 
190
- interface RemoteOptions extends WebDriver.Options, Omit<Options, 'capabilities'> { }
227
+ interface RemoteOptions extends WebDriver.Options, HookFunctions, Omit<Options, 'capabilities'> { }
191
228
 
192
229
  interface MultiRemoteOptions {
193
230
  [instanceName: string]: WebDriver.DesiredCapabilities;
194
231
  }
195
232
 
196
- interface Suite {}
233
+ interface Suite {
234
+ error?: any;
235
+ }
197
236
  interface Test {}
237
+ interface TestResult {
238
+ error?: any,
239
+ result?: any,
240
+ passed: boolean,
241
+ duration: number,
242
+ retries: { limit: number, attempts: number }
243
+ }
198
244
 
199
245
  interface Results {
200
246
  finished: number,
@@ -321,13 +367,7 @@ declare namespace WebdriverIO {
321
367
  * @param stepData Cucumber step data
322
368
  * @param world Cucumber world
323
369
  */
324
- afterHook?(test: any, context: any, result: {
325
- error?: any,
326
- result?: any,
327
- passed: boolean,
328
- duration: number,
329
- retries: { limit: number, attempts: number }
330
- }, stepData?: any, world?: any): void;
370
+ afterHook?(test: any, context: any, result: TestResult, stepData?: any, world?: any): void;
331
371
 
332
372
  /**
333
373
  * Gets executed after all tests are done. You still have access to all global variables from
@@ -380,13 +420,7 @@ declare namespace WebdriverIO {
380
420
  * @param context context to current running test
381
421
  * @param result test result
382
422
  */
383
- afterTest?(test: Test, context: any, result: {
384
- error?: any,
385
- result?: any,
386
- passed: boolean,
387
- duration: number,
388
- retries: { limit: number, attempts: number }
389
- }): void;
423
+ afterTest?(test: Test, context: any, result: TestResult): void;
390
424
  }
391
425
  type _HooksArray = {
392
426
  [K in keyof Pick<HookFunctions, "onPrepare" | "onWorkerStart" | "onComplete" | "before" | "after" | "beforeSession" | "afterSession">]: HookFunctions[K] | Array<HookFunctions[K]>;
@@ -507,7 +541,7 @@ declare namespace WebdriverIO {
507
541
  /**
508
542
  * body response of actual resource
509
543
  */
510
- body: string | JsonCompatible
544
+ body: string | Buffer | JsonCompatible
511
545
  /**
512
546
  * HTTP response headers.
513
547
  */
@@ -535,6 +569,7 @@ declare namespace WebdriverIO {
535
569
  type MockFilterOptions = {
536
570
  method?: string | ((method: string) => boolean),
537
571
  headers?: Record<string, string> | ((headers: Record<string, string>) => boolean),
572
+ requestHeaders?: Record<string, string> | ((headers: Record<string, string>) => boolean),
538
573
  responseHeaders?: Record<string, string> | ((headers: Record<string, string>) => boolean),
539
574
  statusCode?: number | ((statusCode: number) => boolean),
540
575
  postData?: string | ((payload: string | undefined) => boolean)
@@ -797,6 +832,21 @@ declare namespace WebdriverIO {
797
832
  options?: MoveToOptions
798
833
  ): Promise<void>;
799
834
 
835
+ /**
836
+ * Returns the next sibling element of the selected DOM-element.
837
+ */
838
+ nextElement(): Promise<Element>;
839
+
840
+ /**
841
+ * Returns the parent element of the selected DOM-element.
842
+ */
843
+ parentElement(): Promise<Element>;
844
+
845
+ /**
846
+ * Returns the previous sibling element of the selected DOM-element.
847
+ */
848
+ previousElement(): Promise<Element>;
849
+
800
850
  /**
801
851
  * The `react$$` command is a useful command to query multiple React Components
802
852
  * by their actual name and filter them by props and state.
@@ -1252,7 +1302,7 @@ declare namespace WebdriverIO {
1252
1302
 
1253
1303
  /**
1254
1304
  * Uploads a file to the Selenium Standalone server or other browser driver
1255
- * (e.g. Chromedriver) by using the [`file`](docs/api/selenium.html#file) command.
1305
+ * (e.g. Chromedriver) by using the [`file`](/docs/api/selenium.html#file) command.
1256
1306
  * _Note:_ that this command is only supported if you use a Selenium Hub or
1257
1307
  * Chromedriver directly.
1258
1308
  */
@@ -1280,11 +1330,31 @@ declare namespace WebdriverIO {
1280
1330
  ): Promise<boolean>;
1281
1331
  }
1282
1332
 
1333
+ interface BrowserObject {
1334
+ isMultiremote?: false;
1335
+ }
1336
+
1337
+ type MultiRemoteBrowserReference = Record<string, BrowserObject>
1338
+
1339
+ interface MultiRemoteBrowser extends Browser {
1340
+ /**
1341
+ * multiremote browser instance names
1342
+ */
1343
+ instances: string[];
1344
+ /**
1345
+ * flag to indicate multiremote browser session
1346
+ */
1347
+ isMultiremote: true;
1348
+ }
1349
+
1350
+ type MultiRemoteBrowserObject = MultiRemoteBrowser & MultiRemoteBrowserReference
1351
+
1283
1352
  interface Config extends Options, Omit<WebDriver.Options, "capabilities">, Hooks {
1284
1353
  /**
1285
1354
  * internal usage only. To run in watch mode see https://webdriver.io/docs/watcher.html
1286
1355
  */
1287
- watch?: never;
1356
+ watch?: boolean;
1357
+ runnerEnv?: Record<string, any>;
1288
1358
  }
1289
1359
 
1290
1360
  interface AddValueOptions {
package/webdriverio.d.ts CHANGED
@@ -1,5 +1,4 @@
1
1
  /// <reference types="webdriverio/webdriverio-core"/>
2
-
3
2
  declare namespace WebdriverIO {
4
3
  function remote(
5
4
  options?: RemoteOptions,
@@ -12,9 +11,16 @@ declare namespace WebdriverIO {
12
11
 
13
12
  function multiremote(
14
13
  options: MultiRemoteOptions
15
- ): Promise<BrowserObject>;
14
+ ): Promise<MultiRemoteBrowserObject>;
15
+
16
+ type ElementReferenceId = 'element-6066-11e4-a52e-4f735466cecf'
17
+ type ElementReference = Record<ElementReferenceId, string>
16
18
 
17
19
  interface Browser {
20
+ emit: Function
21
+ strategies: Map<string, () => ElementReference | ElementReference[]>
22
+ puppeteer?: any
23
+
18
24
  /**
19
25
  * execute any async action within your test spec
20
26
  */
@@ -25,7 +31,11 @@ declare namespace WebdriverIO {
25
31
  * The executed script is assumed to be synchronous and the result of evaluating the script is returned to
26
32
  * the client.
27
33
  */
28
- execute: <T>(script: string | ((...arguments: any[]) => T), ...arguments: any[]) => Promise<T>;
34
+ execute: {
35
+ <T, U extends any[], V extends U>(script: string | ((...arguments: V) => T), ...arguments: U): Promise<T>;
36
+ // This overload can be removed when typescript supports partial generics inference: https://github.com/microsoft/TypeScript/issues/26242
37
+ <T>(script: string | ((...arguments: any[]) => T), ...arguments: any[]): Promise<T>;
38
+ };
29
39
 
30
40
  // there is no way to add callback as last parameter after `...args`.
31
41
  // https://github.com/Microsoft/TypeScript/issues/1360
@@ -36,10 +46,15 @@ declare namespace WebdriverIO {
36
46
  * the provided callback, which is always provided as the final argument to the function. The value
37
47
  * to this callback will be returned to the client.
38
48
  */
39
- executeAsync: (script: string | ((...arguments: any[]) => void), ...arguments: any[]) => Promise<any>;
49
+ executeAsync: <U extends any[], V extends U>(script: string | ((...arguments: V) => void), ...arguments: U) => Promise<any>;
40
50
  }
41
51
 
42
- interface BrowserObject extends WebDriver.ClientOptions, WebDriver.ClientAsync, Browser { }
52
+
53
+ interface BrowserObject extends WebDriver.ClientOptions, WebDriver.ClientAsync, Browser {
54
+ }
55
+
56
+ interface MultiRemoteBrowser extends WebDriver.ClientOptions, WebDriver.ClientAsync, Browser {
57
+ }
43
58
 
44
59
  /**
45
60
  * Error to be thrown when a severe error was encountered when a Service is being ran.
@@ -47,7 +62,7 @@ declare namespace WebdriverIO {
47
62
  class SevereServiceError extends Error { }
48
63
  }
49
64
 
50
- declare var browser: WebdriverIO.BrowserObject;
65
+ declare var browser: WebdriverIO.BrowserObject | WebdriverIO.MultiRemoteBrowserObject;
51
66
  declare var driver: WebdriverIO.BrowserObject;
52
67
 
53
68
  /**