@appium/types 1.0.0-rc.1 → 1.0.1

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 (61) hide show
  1. package/build/lib/capabilities.d.ts +1 -2
  2. package/build/lib/capabilities.d.ts.map +1 -1
  3. package/build/lib/{command.d.ts → command-maps.d.ts} +1 -1
  4. package/build/lib/command-maps.d.ts.map +1 -0
  5. package/build/lib/command-maps.js +4 -0
  6. package/build/lib/command-maps.js.map +1 -0
  7. package/build/lib/commands/appium.d.ts +100 -0
  8. package/build/lib/commands/appium.d.ts.map +1 -0
  9. package/build/lib/{command.js → commands/appium.js} +1 -2
  10. package/build/lib/commands/appium.js.map +1 -0
  11. package/build/lib/commands/basedriver.d.ts +370 -0
  12. package/build/lib/commands/basedriver.d.ts.map +1 -0
  13. package/build/lib/commands/basedriver.js +3 -0
  14. package/build/lib/commands/basedriver.js.map +1 -0
  15. package/build/lib/commands/index.d.ts +7 -0
  16. package/build/lib/commands/index.d.ts.map +1 -0
  17. package/build/lib/commands/index.js +23 -0
  18. package/build/lib/commands/index.js.map +1 -0
  19. package/build/lib/commands/jsonwp.d.ts +37 -0
  20. package/build/lib/commands/jsonwp.d.ts.map +1 -0
  21. package/build/lib/commands/jsonwp.js +3 -0
  22. package/build/lib/commands/jsonwp.js.map +1 -0
  23. package/build/lib/commands/mjsonwp.d.ts +65 -0
  24. package/build/lib/commands/mjsonwp.d.ts.map +1 -0
  25. package/build/lib/commands/mjsonwp.js +3 -0
  26. package/build/lib/commands/mjsonwp.js.map +1 -0
  27. package/build/lib/commands/other-protocols.d.ts +85 -0
  28. package/build/lib/commands/other-protocols.d.ts.map +1 -0
  29. package/build/lib/commands/other-protocols.js +3 -0
  30. package/build/lib/commands/other-protocols.js.map +1 -0
  31. package/build/lib/commands/webdriver.d.ts +418 -0
  32. package/build/lib/commands/webdriver.d.ts.map +1 -0
  33. package/build/lib/commands/webdriver.js +3 -0
  34. package/build/lib/commands/webdriver.js.map +1 -0
  35. package/build/lib/constraints.d.ts +19 -0
  36. package/build/lib/constraints.d.ts.map +1 -1
  37. package/build/lib/constraints.js.map +1 -1
  38. package/build/lib/driver.d.ts +9 -1056
  39. package/build/lib/driver.d.ts.map +1 -1
  40. package/build/lib/index.d.ts +2 -1
  41. package/build/lib/index.d.ts.map +1 -1
  42. package/build/lib/index.js +2 -1
  43. package/build/lib/index.js.map +1 -1
  44. package/build/lib/plugin.d.ts +1 -1
  45. package/build/lib/plugin.d.ts.map +1 -1
  46. package/lib/capabilities.ts +1 -2
  47. package/lib/commands/appium.ts +115 -0
  48. package/lib/commands/basedriver.ts +476 -0
  49. package/lib/commands/index.ts +6 -0
  50. package/lib/commands/jsonwp.ts +41 -0
  51. package/lib/commands/mjsonwp.ts +71 -0
  52. package/lib/commands/other-protocols.ts +113 -0
  53. package/lib/commands/webdriver.ts +475 -0
  54. package/lib/constraints.ts +18 -1
  55. package/lib/driver.ts +25 -1279
  56. package/lib/index.ts +2 -1
  57. package/lib/plugin.ts +1 -1
  58. package/package.json +6 -7
  59. package/build/lib/command.d.ts.map +0 -1
  60. package/build/lib/command.js.map +0 -1
  61. /package/lib/{command.ts → command-maps.ts} +0 -0
package/lib/driver.ts CHANGED
@@ -1,18 +1,30 @@
1
1
  import type {EventEmitter} from 'node:events';
2
2
  import type {Merge} from 'type-fest';
3
- import type {ActionSequence} from './action';
4
- import type {Capabilities, DriverCaps, W3CCapabilities, W3CDriverCaps} from './capabilities';
3
+ import type {Capabilities, DriverCaps, W3CCapabilities} from './capabilities';
5
4
  import type {
6
5
  BidiModuleMap,
7
6
  BiDiResultData,
8
7
  ExecuteMethodMap,
9
8
  MethodMap,
10
- } from './command';
9
+ } from './command-maps';
10
+ import type {
11
+ DefaultCreateSessionResult,
12
+ DefaultDeleteSessionResult,
13
+ DriverData,
14
+ EventHistory,
15
+ IImplementedCommands,
16
+ IWDClassicCommands,
17
+ IAppiumCommands,
18
+ IJSONWPCommands,
19
+ IMJSONWPCommands,
20
+ IOtherProtocolCommands,
21
+ } from './commands';
22
+ import type {Constraints} from './constraints';
11
23
  import type {ServerArgs} from './config';
12
24
  import type {HTTPHeaders, HTTPMethod} from './http';
13
25
  import type {AppiumLogger} from './logger';
14
26
  import type {AppiumServer, UpdateServerCallback} from './server';
15
- import type {Class, Element, StringRecord} from './util';
27
+ import type {Class, StringRecord} from './util';
16
28
  import type internal from 'node:stream';
17
29
 
18
30
  /**
@@ -23,456 +35,6 @@ export interface IDeviceSettings<T extends StringRecord> {
23
35
  getSettings(): T;
24
36
  }
25
37
 
26
- export interface ITimeoutCommands {
27
- /**
28
- * Set the various timeouts associated with a session
29
- * @see {@link https://w3c.github.io/webdriver/#set-timeouts}
30
- *
31
- * @param type - used only for the old (JSONWP) command, the type of the timeout
32
- * @param ms - used only for the old (JSONWP) command, the ms for the timeout
33
- * @param script - the number in ms for the script timeout, used for the W3C command
34
- * @param pageLoad - the number in ms for the pageLoad timeout, used for the W3C command
35
- * @param implicit - the number in ms for the implicit wait timeout, used for the W3C command
36
- */
37
- timeouts(
38
- type?: string,
39
- ms?: number | string,
40
- script?: number,
41
- pageLoad?: number,
42
- implicit?: number | string,
43
- ): Promise<void>;
44
-
45
- /**
46
- * Set the new command timeout
47
- *
48
- * @param ms - the timeout in ms
49
- */
50
- setNewCommandTimeout(ms: number): void;
51
-
52
- /**
53
- * A helper method (not a command) used to set the implicit wait value
54
- *
55
- * @param ms - the implicit wait in ms
56
- */
57
- setImplicitWait(ms: number): void;
58
-
59
- /**
60
- * Periodically retry an async function up until the currently set implicit wait timeout
61
- *
62
- * @param condition - the behaviour to retry until it returns truthy
63
- *
64
- * @returns The return value of the condition
65
- */
66
- implicitWaitForCondition(condition: (...args: any[]) => Promise<any>): Promise<unknown>;
67
-
68
- /**
69
- * Get the current timeouts
70
- * @see {@link https://w3c.github.io/webdriver/#get-timeouts}
71
- *
72
- * @returns A map of timeout names to ms values
73
- */
74
- getTimeouts(): Promise<Record<string, number>>;
75
-
76
- /**
77
- * Set the implicit wait value that was sent in via the W3C protocol
78
- *
79
- * @param ms - the timeout in ms
80
- */
81
- implicitWaitW3C(ms: number): Promise<void>;
82
-
83
- /**
84
- * Set the page load timeout value that was sent in via the W3C protocol
85
- *
86
- * @param ms - the timeout in ms
87
- */
88
- pageLoadTimeoutW3C(ms: number): Promise<void>;
89
-
90
- /**
91
- * Set the script timeout value that was sent in via the W3C protocol
92
- *
93
- * @param ms - the timeout in ms
94
- */
95
- scriptTimeoutW3C(ms: number): Promise<void>;
96
-
97
- /**
98
- * Set Appium's new command timeout
99
- *
100
- * @param ms - the timeout in ms
101
- */
102
- newCommandTimeout(ms: number): Promise<void>;
103
-
104
- /**
105
- * Get a timeout value from a number or a string
106
- *
107
- * @param ms - the timeout value as a number or a string
108
- *
109
- * @returns The timeout as a number in ms
110
- */
111
- parseTimeoutArgument(ms: number | string): number;
112
- }
113
-
114
- export interface IEventCommands {
115
- /**
116
- * Add a custom-named event to the Appium event log
117
- *
118
- * @param vendor - the name of the vendor or tool the event belongs to, to namespace the event
119
- * @param event - the name of the event itself
120
- */
121
- logCustomEvent(vendor: string, event: string): Promise<void>;
122
-
123
- /**
124
- * Get a list of events that have occurred in the current session
125
- *
126
- * @param type - filter the returned events by including one or more types
127
- *
128
- * @returns The event history for the session
129
- */
130
- getLogEvents(type?: string | string[]): Promise<EventHistory | Record<string, number>>;
131
- }
132
-
133
- export interface IExecuteCommands {
134
- /**
135
- * Call an `Execute Method` by its name with the given arguments. This method will check that the
136
- * driver has registered the method matching the name, and send it the arguments.
137
- *
138
- * @param script - the name of the Execute Method
139
- * @param args - a singleton array containing an arguments object
140
- *
141
- * @returns The result of calling the Execute Method
142
- */
143
- executeMethod<
144
- TArgs extends readonly any[] | readonly [StringRecord<unknown>] = unknown[],
145
- TReturn = unknown,
146
- >(
147
- script: string,
148
- args: TArgs,
149
- ): Promise<TReturn>;
150
- }
151
-
152
- /**
153
- * Data returned by `AppiumDriver.getAppiumSessions`
154
- *
155
- * @typeParam C - The driver's constraints
156
- */
157
- export interface TimestampedMultiSessionData<C extends Constraints = Constraints> {
158
- id: string;
159
- created: number; // Unix timestamp in milliseconds
160
- capabilities: DriverCaps<C>;
161
- }
162
-
163
- /**
164
- * Data returned by {@linkcode ISessionHandler.getSession}.
165
- *
166
- * @typeParam C - The driver's constraints
167
- * @typeParam T - Any extra data the driver stuffs in here
168
- * @privateRemarks The content of this object looks implementation-specific and in practice is not well-defined. It's _possible_ to fully type this in the future.
169
- */
170
- export type SingularSessionData<
171
- C extends Constraints = Constraints,
172
- T extends StringRecord = StringRecord,
173
- > = DriverCaps<C> & {
174
- events?: EventHistory;
175
- error?: string;
176
- } & T;
177
-
178
- /**
179
- * Data returned by {@linkcode ISessionCommands.getAppiumSessionCapabilities}.
180
- *
181
- * @typeParam C - The driver's constraints
182
- * @typeParam T - Any extra data the driver stuffs in here
183
- */
184
- export type SessionCapabilities<
185
- C extends Constraints = Constraints,
186
- T extends StringRecord = StringRecord,
187
- > = {
188
- capabilities: DriverCaps<C>;
189
- } & T;
190
-
191
- export interface IFindCommands {
192
- /**
193
- * Find a UI element given a locator strategy and a selector, erroring if it can't be found
194
- * @see {@link https://w3c.github.io/webdriver/#find-element}
195
- *
196
- * @param strategy - the locator strategy
197
- * @param selector - the selector to combine with the strategy to find the specific element
198
- *
199
- * @returns The element object encoding the element id which can be used in element-related
200
- * commands
201
- */
202
- findElement(strategy: string, selector: string): Promise<Element>;
203
-
204
- /**
205
- * Find a a list of all UI elements matching a given a locator strategy and a selector
206
- * @see {@link https://w3c.github.io/webdriver/#find-elements}
207
- *
208
- * @param strategy - the locator strategy
209
- * @param selector - the selector to combine with the strategy to find the specific elements
210
- *
211
- * @returns A possibly-empty list of element objects
212
- */
213
- findElements(strategy: string, selector: string): Promise<Element[]>;
214
-
215
- /**
216
- * Find a UI element given a locator strategy and a selector, erroring if it can't be found. Only
217
- * look for elements among the set of descendants of a given element
218
- * @see {@link https://w3c.github.io/webdriver/#find-element-from-element}
219
- *
220
- * @param strategy - the locator strategy
221
- * @param selector - the selector to combine with the strategy to find the specific element
222
- * @param elementId - the id of the element to use as the search basis
223
- *
224
- * @returns The element object encoding the element id which can be used in element-related
225
- * commands
226
- */
227
- findElementFromElement(strategy: string, selector: string, elementId: string): Promise<Element>;
228
-
229
- /**
230
- * Find a a list of all UI elements matching a given a locator strategy and a selector. Only
231
- * look for elements among the set of descendants of a given element
232
- * @see {@link https://w3c.github.io/webdriver/#find-elements-from-element}
233
- *
234
- * @param strategy - the locator strategy
235
- * @param selector - the selector to combine with the strategy to find the specific elements
236
- * @param elementId - the id of the element to use as the search basis
237
- *
238
- * @returns A possibly-empty list of element objects
239
- */
240
- findElementsFromElement(
241
- strategy: string,
242
- selector: string,
243
- elementId: string,
244
- ): Promise<Element[]>;
245
-
246
- /**
247
- * Find an element from a shadow root
248
- * @see {@link https://w3c.github.io/webdriver/#find-element-from-shadow-root}
249
- * @param strategy - the locator strategy
250
- * @param selector - the selector to combine with the strategy to find the specific elements
251
- * @param shadowId - the id of the element to use as the search basis
252
- *
253
- * @returns The element inside the shadow root matching the selector
254
- */
255
- findElementFromShadowRoot?(
256
- strategy: string,
257
- selector: string,
258
- shadowId: string,
259
- ): Promise<Element>;
260
-
261
- /**
262
- * Find elements from a shadow root
263
- * @see {@link https://w3c.github.io/webdriver/#find-element-from-shadow-root}
264
- * @param strategy - the locator strategy
265
- * @param selector - the selector to combine with the strategy to find the specific elements
266
- * @param shadowId - the id of the element to use as the search basis
267
- *
268
- * @returns A possibly empty list of elements inside the shadow root matching the selector
269
- */
270
- findElementsFromShadowRoot?(
271
- strategy: string,
272
- selector: string,
273
- shadowId: string,
274
- ): Promise<Element[]>;
275
-
276
- /**
277
- * A helper method that returns one or more UI elements based on the search criteria
278
- *
279
- * @param strategy - the locator strategy
280
- * @param selector - the selector
281
- * @param mult - whether or not we want to find multiple elements
282
- * @param context - the element to use as the search context basis if desiredCapabilities
283
- *
284
- * @returns A single element or list of elements
285
- */
286
- findElOrEls(strategy: string, selector: string, mult: true, context?: any): Promise<Element[]>;
287
- findElOrEls(strategy: string, selector: string, mult: false, context?: any): Promise<Element>;
288
-
289
- /**
290
- * This is a wrapper for {@linkcode findElOrEls} that validates locator strategies
291
- * and implements the `appium:printPageSourceOnFindFailure` capability
292
- *
293
- * @param strategy - the locator strategy
294
- * @param selector - the selector
295
- * @param mult - whether or not we want to find multiple elements
296
- * @param context - the element to use as the search context basis if desiredCapabilities
297
- *
298
- * @returns A single element or list of elements
299
- */
300
- findElOrElsWithProcessing(
301
- strategy: string,
302
- selector: string,
303
- mult: true,
304
- context?: any,
305
- ): Promise<Element[]>;
306
- findElOrElsWithProcessing(
307
- strategy: string,
308
- selector: string,
309
- mult: false,
310
- context?: any,
311
- ): Promise<Element>;
312
-
313
- /**
314
- * Get the current page/app source as HTML/XML
315
- * @see {@link https://w3c.github.io/webdriver/#get-page-source}
316
- *
317
- * @returns The UI hierarchy in a platform-appropriate format (e.g., HTML for a web page)
318
- */
319
- getPageSource(): Promise<string>;
320
- }
321
-
322
- export interface ILogCommands {
323
- /**
324
- * Definition of the available log types
325
- */
326
- supportedLogTypes: Readonly<LogDefRecord>;
327
-
328
- /**
329
- * Get available log types as a list of strings
330
- */
331
- getLogTypes(): Promise<string[]>;
332
-
333
- /**
334
- * Get the log for a given log type.
335
- *
336
- * @param logType - Name/key of log type as defined in {@linkcode ILogCommands.supportedLogTypes}.
337
- */
338
- getLog(logType: string): Promise<any>;
339
- }
340
-
341
- export interface IBidiCommands {
342
- bidiSubscribe(events: string[], contexts: string[]): Promise<void>;
343
- bidiUnsubscribe(events: string[], contexts: string[]): Promise<void>;
344
- bidiStatus(): Promise<DriverStatus>;
345
- }
346
-
347
- /**
348
- * A record of {@linkcode LogDef} objects, keyed by the log type name.
349
- * Used in {@linkcode ILogCommands.supportedLogTypes}
350
- */
351
- export type LogDefRecord = Record<string, LogDef>;
352
-
353
- /**
354
- * A definition of a log type
355
- */
356
- export interface LogDef {
357
- /**
358
- * Description of the log type.
359
- *
360
- * The only place this is used is in error messages if the client provides an invalid log type
361
- * via {@linkcode ILogCommands.getLog}.
362
- */
363
- description: string;
364
- /**
365
- * Returns all the log data for the given type
366
- *
367
- * This implementation *should* drain, truncate or otherwise reset the log buffer.
368
- */
369
- getter: (driver: any) => Promise<unknown> | unknown;
370
- }
371
-
372
- export interface ISettingsCommands<T extends object = object> {
373
- /**
374
- * Update the session's settings dictionary with a new settings object
375
- *
376
- * @param settings - A key-value map of setting names to values. Settings not named in the map
377
- * will not have their value adjusted.
378
- */
379
- updateSettings: (settings: T) => Promise<void>;
380
-
381
- /**
382
- * Get the current settings for the session
383
- *
384
- * @returns The settings object
385
- */
386
- getSettings(): Promise<T>;
387
- }
388
-
389
- /**
390
- * @see {@linkcode ISessionHandler}
391
- */
392
- export type DefaultCreateSessionResult<C extends Constraints> = [
393
- sessionId: string,
394
- capabilities: DriverCaps<C>,
395
- ];
396
-
397
- /**
398
- * @see {@linkcode ISessionHandler}
399
- */
400
- export type DefaultDeleteSessionResult = void;
401
-
402
- /**
403
- * An interface which creates and deletes sessions.
404
- */
405
- export interface ISessionHandler<
406
- C extends Constraints = Constraints,
407
- CreateResult = DefaultCreateSessionResult<C>,
408
- DeleteResult = DefaultDeleteSessionResult,
409
- SessionData extends StringRecord = StringRecord,
410
- > {
411
- /**
412
- * Start a new automation session
413
- * @see {@link https://w3c.github.io/webdriver/#new-session}
414
- *
415
- * @privateRemarks
416
- * The shape of this method is strange because it used to support both JSONWP and W3C
417
- * capabilities. This will likely change in the future to simplify.
418
- *
419
- * @param w3cCaps1 - the new session capabilities
420
- * @param w3cCaps2 - another place the new session capabilities could be sent (typically left undefined)
421
- * @param w3cCaps3 - another place the new session capabilities could be sent (typically left undefined)
422
- * @param driverData - a list of DriverData objects representing other sessions running for this
423
- * driver on the same Appium server. This information can be used to help ensure no conflict of
424
- * resources
425
- *
426
- * @returns The capabilities object representing the created session
427
- */
428
- createSession(
429
- w3cCaps1: W3CDriverCaps<C>,
430
- w3cCaps2?: W3CDriverCaps<C>,
431
- w3cCaps3?: W3CDriverCaps<C>,
432
- driverData?: DriverData[],
433
- ): Promise<CreateResult>;
434
-
435
- /**
436
- * Stop an automation session
437
- * @see {@link https://w3c.github.io/webdriver/#delete-session}
438
- *
439
- * @param sessionId - the id of the session that is to be deleted
440
- * @param driverData - the driver data for other currently-running sessions
441
- */
442
- deleteSession(sessionId?: string, driverData?: DriverData[]): Promise<DeleteResult | void>;
443
-
444
- /**
445
- * Get the data for the current session
446
- *
447
- * @returns A session data object
448
- */
449
- getSession(): Promise<SingularSessionData<C, SessionData>>;
450
- }
451
-
452
- /**
453
- * Custom session data for a driver.
454
- */
455
- export type DriverData = Record<string, unknown>;
456
-
457
- export interface Constraint {
458
- readonly presence?: boolean | Readonly<{allowEmpty: boolean}>;
459
- readonly isString?: boolean;
460
- readonly isNumber?: boolean;
461
- readonly isBoolean?: boolean;
462
- readonly isObject?: boolean;
463
- readonly isArray?: boolean;
464
- readonly deprecated?: boolean;
465
- readonly inclusion?: Readonly<[string, ...string[]]>;
466
- readonly inclusionCaseInsensitive?: Readonly<[string, ...string[]]>;
467
- }
468
-
469
- /**
470
- * A collection of constraints describing the allowed capabilities for a driver.
471
- */
472
- export type Constraints = {
473
- readonly [name: string]: Constraint;
474
- };
475
-
476
38
  export interface DriverHelpers {
477
39
  configureApp: (
478
40
  app: string,
@@ -490,83 +52,8 @@ export type SettingsUpdateListener<T extends Record<string, unknown> = Record<st
490
52
  curValue: unknown,
491
53
  ) => Promise<void>;
492
54
 
493
- // WebDriver
494
-
495
- export interface Rect {
496
- x: number;
497
- y: number;
498
- width: number;
499
- height: number;
500
- }
501
-
502
- export type NewWindowType = 'tab' | 'window';
503
-
504
- export interface NewWindow {
505
- handle: string;
506
- type: NewWindowType;
507
- }
508
-
509
- export interface Cookie {
510
- name: string;
511
- value: string;
512
- path?: string;
513
- domain?: string;
514
- secure?: boolean;
515
- httpOnly?: boolean;
516
- expiry?: number;
517
- sameSite?: 'Lax' | 'Strict';
518
- }
519
-
520
- // JSONWP
521
- export type Size = Pick<Rect, 'width' | 'height'>;
522
-
523
- export type Position = Pick<Rect, 'x' | 'y'>;
524
-
525
- export interface Location {
526
- latitude: number;
527
- longitude: number;
528
- altitude?: number;
529
- }
530
-
531
- export interface Rotation {
532
- x: number;
533
- y: number;
534
- z: number;
535
- }
536
-
537
- // Web Authentication
538
-
539
- export interface Credential {
540
- credentialId: string;
541
- isResidentCredential: boolean;
542
- rpId: string;
543
- privateKey: string;
544
- userHandle?: string;
545
- signCount: number;
546
- largeBlob?: string;
547
- }
548
-
549
- export type Orientation = 'LANDSCAPE' | 'PORTRAIT';
550
-
551
- export interface EventHistory {
552
- commands: EventHistoryCommand[];
553
- [key: string]: any;
554
- }
555
-
556
- export interface EventHistoryCommand {
557
- cmd: string;
558
- startTime: number;
559
- endTime: number;
560
- }
561
-
562
55
  export type Protocol = 'MJSONWP' | 'W3C';
563
56
 
564
- export interface DriverStatus {
565
- ready: boolean,
566
- message: string,
567
- [key: string]: any;
568
- }
569
-
570
57
  /**
571
58
  * Methods and properties which both `AppiumDriver` and `BaseDriver` inherit.
572
59
  *
@@ -662,13 +149,7 @@ export interface Driver<
662
149
  CreateResult = DefaultCreateSessionResult<C>,
663
150
  DeleteResult = DefaultDeleteSessionResult,
664
151
  SessionData extends StringRecord = StringRecord,
665
- > extends ILogCommands,
666
- IFindCommands,
667
- ISettingsCommands<Settings>,
668
- ITimeoutCommands,
669
- IEventCommands,
670
- IExecuteCommands,
671
- ISessionHandler<C, CreateResult, DeleteResult, SessionData>,
152
+ > extends IImplementedCommands<C, Settings, CreateResult, DeleteResult, SessionData>,
672
153
  Core<C, Settings> {
673
154
  /**
674
155
  * The set of command line arguments set for this driver
@@ -773,8 +254,8 @@ export interface Driver<
773
254
  }
774
255
 
775
256
  /**
776
- * External drivers must subclass `BaseDriver`, and can implement any of these methods.
777
- * None of these are implemented within Appium itself.
257
+ * External drivers must subclass `BaseDriver`, and can implement any methods from this interface.
258
+ * None of these methods are implemented within Appium itself.
778
259
  */
779
260
  export interface ExternalDriver<
780
261
  C extends Constraints = Constraints,
@@ -784,747 +265,12 @@ export interface ExternalDriver<
784
265
  CreateResult = DefaultCreateSessionResult<C>,
785
266
  DeleteResult = DefaultDeleteSessionResult,
786
267
  SessionData extends StringRecord = StringRecord,
787
- > extends Driver<C, CArgs, Settings, CreateResult, DeleteResult, SessionData> {
788
- // WebDriver spec commands
789
-
790
- /**
791
- * Navigate to a given url
792
- * @see {@link https://w3c.github.io/webdriver/#navigate-to}
793
- *
794
- * @param url - the url
795
- */
796
- setUrl?(url: string): Promise<void>;
797
-
798
- /**
799
- * Get the current url
800
- * @see {@link https://w3c.github.io/webdriver/#get-current-url}
801
- *
802
- * @returns The url
803
- */
804
- getUrl?(): Promise<string>;
805
-
806
- /**
807
- * Navigate back in the page history
808
- * @see {@link https://w3c.github.io/webdriver/#back}
809
- */
810
- back?(): Promise<void>;
811
-
812
- /**
813
- * Navigate forward in the page history
814
- * @see {@link https://w3c.github.io/webdriver/#forward}
815
- */
816
- forward?(): Promise<void>;
817
-
818
- /**
819
- * Refresh the page
820
- * @see {@link https://w3c.github.io/webdriver/#refresh}
821
- */
822
- refresh?(): Promise<void>;
823
-
824
- /**
825
- * Get the current page title
826
- * @see {@link https://w3c.github.io/webdriver/#get-title}
827
- *
828
- * @returns The title
829
- *
830
- * @example
831
- * ```js
832
- * await driver.getTitle()
833
- * ```
834
- * ```py
835
- * driver.title
836
- * ```
837
- * ```java
838
- * driver.getTitle();
839
- * ```
840
- */
841
- title?(): Promise<string>;
842
-
843
- /**
844
- * Get the handle (id) associated with the current browser window
845
- * @see {@link https://w3c.github.io/webdriver/#get-window-handle}
846
- *
847
- * @returns The handle string
848
- */
849
- getWindowHandle?(): Promise<string>;
850
-
851
- /**
852
- * Close the current browsing context (window)
853
- * @see {@link https://w3c.github.io/webdriver/#close-window}
854
- *
855
- * @returns An array of window handles representing currently-open windows
856
- */
857
- closeWindow?(): Promise<string[]>;
858
-
859
- /**
860
- * Switch to a specified window
861
- * @see {@link https://w3c.github.io/webdriver/#switch-to-window}
862
- *
863
- * @param handle - the window handle of the window to make active
864
- */
865
- setWindow?(handle: string): Promise<void>;
866
-
867
- /**
868
- * Get a set of handles representing open browser windows
869
- * @see {@link https://w3c.github.io/webdriver/#get-window-handles}
870
- *
871
- * @returns An array of window handles representing currently-open windows
872
- */
873
- getWindowHandles?(): Promise<string[]>;
874
-
875
- /**
876
- * Create a new browser window
877
- * @see {@link https://w3c.github.io/webdriver/#new-window}
878
- *
879
- * @param type - a hint to the driver whether to create a "tab" or "window"
880
- *
881
- * @returns An object containing the handle of the newly created window and its type
882
- */
883
- createNewWindow?(type?: NewWindowType): Promise<NewWindow>;
884
-
885
- /**
886
- * Switch the current browsing context to a frame
887
- * @see {@link https://w3c.github.io/webdriver/#switch-to-frame}
888
- *
889
- * @param id - the frame id, index, or `null` (indicating the top-level context)
890
- */
891
- setFrame?(id: null | number | string): Promise<void>;
892
-
893
- /**
894
- * Set the current browsing context to the parent of the current context
895
- * @see {@link https://w3c.github.io/webdriver/#switch-to-parent-frame}
896
- */
897
- switchToParentFrame?(): Promise<void>;
898
-
899
- /**
900
- * Get the size and position of the current window
901
- * @see {@link https://w3c.github.io/webdriver/#get-window-rect}
902
- *
903
- * @returns A `Rect` JSON object with x, y, width, and height properties
904
- */
905
- getWindowRect?(): Promise<Rect>;
906
-
907
- /**
908
- * Set the current window's size and position
909
- * @see {@link https://w3c.github.io/webdriver/#set-window-rect}
910
- *
911
- * @param x - the screen coordinate for the new left edge of the window
912
- * @param y - the screen coordinate for the new top edge of the window
913
- * @param width - the width in pixels to resize the window to
914
- * @param height - the height in pixels to resize the window to
915
- *
916
- * @returns The actual `Rect` of the window after running the command
917
- */
918
- setWindowRect?(x: number, y: number, width: number, height: number): Promise<Rect>;
919
-
920
- /**
921
- * Run the window-manager specific 'maximize' operation on the current window
922
- * @see {@link https://w3c.github.io/webdriver/#maximize-window}
923
- *
924
- * @returns The actual `Rect` of the window after running the command
925
- */
926
- maximizeWindow?(): Promise<Rect>;
927
-
928
- /**
929
- * Run the window-manager specific 'minimize' operation on the current window
930
- * @see {@link https://w3c.github.io/webdriver/#minimize-window}
931
- *
932
- * @returns The actual `Rect` of the window after running the command
933
- */
934
- minimizeWindow?(): Promise<Rect>;
935
-
936
- /**
937
- * Put the current window into full screen mode
938
- * @see {@link https://w3c.github.io/webdriver/#fullscreen-window}
939
- *
940
- * @returns The actual `Rect` of the window after running the command
941
- */
942
- fullScreenWindow?(): Promise<Rect>;
943
-
944
- /**
945
- * Get the active element
946
- * @see {@link https://w3c.github.io/webdriver/#get-active-element}
947
- *
948
- * @returns The JSON object encapsulating the active element reference
949
- */
950
- active?(): Promise<Element>;
951
-
952
- /**
953
- * Get the shadow root of an element
954
- * @see {@link https://w3c.github.io/webdriver/#get-element-shadow-root}
955
- *
956
- * @param elementId - the id of the element to retrieve the shadow root for
957
- *
958
- * @returns The shadow root for an element, as an element
959
- */
960
- elementShadowRoot?(elementId: string): Promise<Element>;
961
-
962
- /**
963
- * Determine if the reference element is selected or not
964
- * @see {@link https://w3c.github.io/webdriver/#is-element-selected}
965
- *
966
- * @param elementId - the id of the element
967
- *
968
- * @returns True if the element is selected, False otherwise
969
- */
970
- elementSelected?(elementId: string): Promise<boolean>;
971
-
972
- /**
973
- * Retrieve the value of an element's attribute
974
- * @see {@link https://w3c.github.io/webdriver/#get-element-attribute}
975
- *
976
- * @param name - the attribute name
977
- * @param elementId - the id of the element
978
- *
979
- * @returns The attribute value
980
- */
981
- getAttribute?(name: string, elementId: string): Promise<string | null>;
982
-
983
- /**
984
- * Retrieve the value of a named property of an element's JS object
985
- * @see {@link https://w3c.github.io/webdriver/#get-element-property}
986
- *
987
- * @param name - the object property name
988
- * @param elementId - the id of the element
989
- *
990
- * @returns The property value
991
- */
992
- getProperty?(name: string, elementId: string): Promise<string | null>;
993
-
994
- /**
995
- * Retrieve the value of a CSS property of an element
996
- * @see {@link https://w3c.github.io/webdriver/#get-element-css-value}
997
- *
998
- * @param name - the CSS property name
999
- * @param elementId - the id of the element
1000
- *
1001
- * @returns The property value
1002
- */
1003
- getCssProperty?(name: string, elementId: string): Promise<string>;
1004
-
1005
- /**
1006
- * Get the text of an element as rendered
1007
- * @see {@link https://w3c.github.io/webdriver/#get-element-text}
1008
- *
1009
- * @param elementId - the id of the element
1010
- *
1011
- * @returns The text rendered for the element
1012
- */
1013
- getText?(elementId: string): Promise<string>;
1014
-
1015
- /**
1016
- * Get the tag name of an element
1017
- * @see {@link https://w3c.github.io/webdriver/#get-element-tag-name}
1018
- *
1019
- * @param elementId - the id of the element
1020
- *
1021
- * @returns The tag name
1022
- */
1023
- getName?(elementId: string): Promise<string>;
1024
-
1025
- /**
1026
- * Get the dimensions and position of an element
1027
- * @see {@link https://w3c.github.io/webdriver/#get-element-rect}
1028
- *
1029
- * @param elementId - the id of the element
1030
- *
1031
- * @returns The Rect object containing x, y, width, and height properties
1032
- */
1033
- getElementRect?(elementId: string): Promise<Rect>;
1034
-
1035
- /**
1036
- * Determine whether an element is enabled
1037
- * @see {@link https://w3c.github.io/webdriver/#is-element-enabled}
1038
- *
1039
- * @param elementId - the id of the element
1040
- *
1041
- * @returns True if the element is enabled, False otherwise
1042
- */
1043
- elementEnabled?(elementId: string): Promise<boolean>;
1044
-
1045
- /**
1046
- * Get the WAI-ARIA role of an element
1047
- * @see {@link https://w3c.github.io/webdriver/#get-computed-role}
1048
- *
1049
- * @param elementId - the id of the element
1050
- *
1051
- * @returns The role
1052
- */
1053
- getComputedRole?(elementId: string): Promise<string | null>;
1054
-
1055
- /**
1056
- * Get the accessible name/label of an element
1057
- * @see {@link https://w3c.github.io/webdriver/#get-computed-label}
1058
- *
1059
- * @param elementId - the id of the element
1060
- *
1061
- * @returns The accessible name
1062
- */
1063
- getComputedLabel?(elementId: string): Promise<string | null>;
1064
-
1065
- /**
1066
- * Determine whether an element is displayed
1067
- * @see {@link https://w3c.github.io/webdriver/#element-displayedness}
1068
- *
1069
- * @param elementId - the id of the element
1070
- *
1071
- * @returns True if any part of the element is rendered within the viewport, False otherwise
1072
- */
1073
- elementDisplayed?(elementId: string): Promise<boolean>;
1074
-
1075
- /**
1076
- * Click/tap an element
1077
- * @see {@link https://w3c.github.io/webdriver/#element-click}
1078
- *
1079
- * @param elementId - the id of the element
1080
- */
1081
- click?(elementId: string): Promise<void>;
1082
-
1083
- /**
1084
- * Clear the text/value of an editable element
1085
- * @see {@link https://w3c.github.io/webdriver/#element-clear}
1086
- *
1087
- * @param elementId - the id of the element
1088
- */
1089
- clear?(elementId: string): Promise<void>;
1090
-
1091
- /**
1092
- * Send keystrokes to an element (or otherwise set its value)
1093
- * @see {@link https://w3c.github.io/webdriver/#element-send-keys}
1094
- *
1095
- * @param text - the text to send to the element
1096
- * @param elementId - the id of the element
1097
- */
1098
- setValue?(text: string, elementId: string): Promise<void>;
1099
-
1100
- /**
1101
- * Execute JavaScript (or some other kind of script) in the browser/app context
1102
- * @see {@link https://w3c.github.io/webdriver/#execute-script}
1103
- *
1104
- * @param script - the string to be evaluated as the script, which will be made the body of an
1105
- * anonymous function in the case of JS
1106
- * @param args - the list of arguments to be applied to the script as a function
1107
- *
1108
- * @returns The return value of the script execution
1109
- */
1110
- execute?(script: string, args: unknown[]): Promise<unknown>;
1111
-
1112
- /**
1113
- * Execute JavaScript (or some other kind of script) in the browser/app context, asynchronously
1114
- * @see {@link https://w3c.github.io/webdriver/#execute-async-script}
1115
- *
1116
- * @param script - the string to be evaluated as the script, which will be made the body of an
1117
- * anonymous function in the case of JS
1118
- * @param args - the list of arguments to be applied to the script as a function
1119
- *
1120
- * @returns The promise resolution of the return value of the script execution (or an error
1121
- * object if the promise is rejected)
1122
- */
1123
- executeAsync?(script: string, args: unknown[]): Promise<unknown>;
1124
-
1125
- /**
1126
- * Get all cookies known to the browsing context
1127
- * @see {@link https://w3c.github.io/webdriver/#get-all-cookies}
1128
- *
1129
- * @returns A list of serialized cookies
1130
- */
1131
- getCookies?(): Promise<Cookie[]>;
1132
-
1133
- /**
1134
- * Get a cookie by name
1135
- * @see {@link https://w3c.github.io/webdriver/#get-named-cookie}
1136
- *
1137
- * @param name - the name of the cookie
1138
- *
1139
- * @returns A serialized cookie
1140
- */
1141
- getCookie?(name: string): Promise<Cookie>;
1142
-
1143
- /**
1144
- * Add a cookie to the browsing context
1145
- * @see {@link https://w3c.github.io/webdriver/#add-cookie}
1146
- *
1147
- * @param cookie - the cookie data including properties like name, value, path, domain,
1148
- * secure, httpOnly, expiry, and samesite
1149
- */
1150
- setCookie?(cookie: Cookie): Promise<void>;
1151
-
1152
- /**
1153
- * Delete a named cookie
1154
- * @see {@link https://w3c.github.io/webdriver/#delete-cookie}
1155
- *
1156
- * @param name - the name of the cookie to delete
1157
- */
1158
- deleteCookie?(name: string): Promise<void>;
1159
-
1160
- /**
1161
- * Delete all cookies
1162
- * @see {@link https://w3c.github.io/webdriver/#delete-all-cookies}
1163
- */
1164
- deleteCookies?(): Promise<void>;
1165
-
1166
- /**
1167
- * Perform touch or keyboard actions
1168
- * @see {@link https://w3c.github.io/webdriver/#perform-actions}
1169
- *
1170
- * @param actions - the action sequence
1171
- */
1172
- performActions?(actions: ActionSequence[]): Promise<void>;
1173
-
1174
- /**
1175
- * Release all keys or buttons that are currently pressed
1176
- * @see {@link https://w3c.github.io/webdriver/#release-actions}
1177
- */
1178
- releaseActions?(): Promise<void>;
1179
-
1180
- /**
1181
- * Dismiss a simple dialog/alert
1182
- * @see {@link https://w3c.github.io/webdriver/#dismiss-alert}
1183
- */
1184
- postDismissAlert?(): Promise<void>;
1185
-
1186
- /**
1187
- * Accept a simple dialog/alert
1188
- * @see {@link https://w3c.github.io/webdriver/#accept-alert}
1189
- */
1190
- postAcceptAlert?(): Promise<void>;
1191
-
1192
- /**
1193
- * Get the text of the displayed alert
1194
- * @see {@link https://w3c.github.io/webdriver/#get-alert-text}
1195
- *
1196
- * @returns The text of the alert
1197
- */
1198
- getAlertText?(): Promise<string | null>;
1199
-
1200
- /**
1201
- * Set the text field of an alert prompt
1202
- * @see {@link https://w3c.github.io/webdriver/#send-alert-text}
1203
- *
1204
- * @param text - the text to send to the prompt
1205
- */
1206
- setAlertText?(text: string): Promise<void>;
1207
-
1208
- /**
1209
- * Get a screenshot of the current document as rendered
1210
- * @see {@link https://w3c.github.io/webdriver/#take-screenshot}
1211
- *
1212
- * @returns A base64-encoded string representing the PNG image data
1213
- */
1214
- getScreenshot?(): Promise<string>;
1215
-
1216
- /**
1217
- * Get an image of a single element as rendered on screen
1218
- * @see {@link https://w3c.github.io/webdriver/#take-element-screenshot}
1219
- *
1220
- * @param elementId - the id of the element
1221
- *
1222
- * @returns A base64-encoded string representing the PNG image data for the element rect
1223
- */
1224
- getElementScreenshot?(elementId: string): Promise<string>;
1225
-
1226
- // Appium W3C WebDriver Extension
1227
-
1228
- /**
1229
- * Get the current time on the device under timeouts
1230
- *
1231
- * @param format - the date/time format you would like the response into
1232
- *
1233
- * @returns The formatted time
1234
- */
1235
- getDeviceTime?(format?: string): Promise<string>;
1236
-
1237
- /**
1238
- * Install an app on a device
1239
- *
1240
- * @param appPath - the absolute path to a local app or a URL of a downloadable app bundle
1241
- * @param options - driver-specific install options
1242
- */
1243
- installApp?(appPath: string, options?: unknown): Promise<void>;
1244
-
1245
- /**
1246
- * Launch an app
1247
- *
1248
- * @param appId - the package or bundle ID of the application
1249
- * @param options - driver-specific launch options
1250
- */
1251
- activateApp?(appId: string, options?: unknown): Promise<void>;
1252
-
1253
- /**
1254
- * Remove / uninstall an app
1255
- *
1256
- * @param appId - the package or bundle ID of the application
1257
- * @param options - driver-specific launch options
1258
- *
1259
- * @returns `true` if successful
1260
- */
1261
- removeApp?(appId: string, options?: unknown): Promise<boolean>;
1262
-
1263
- /**
1264
- * Quit / terminate / stop a running application
1265
- *
1266
- * @param appId - the package or bundle ID of the application
1267
- * @param options - driver-specific launch options
1268
- */
1269
- terminateApp?(appId: string, options?: unknown): Promise<boolean>;
1270
-
1271
- /**
1272
- * Determine whether an app is installed
1273
- *
1274
- * @param appId - the package or bundle ID of the application
1275
- */
1276
- isAppInstalled?(appId: string): Promise<boolean>;
1277
-
1278
- /**
1279
- * Get the running state of an app
1280
- *
1281
- * @param appId - the package or bundle ID of the application
1282
- *
1283
- * @returns A number representing the state. `0` means not installed, `1` means not running, `2`
1284
- * means running in background but suspended, `3` means running in the background, and `4` means
1285
- * running in the foreground
1286
- */
1287
- queryAppState?(appId: string): Promise<0 | 1 | 2 | 3 | 4>;
1288
-
1289
- /**
1290
- * Attempt to hide a virtual keyboard
1291
- *
1292
- * @param strategy - the driver-specific name of a hiding strategy to follow
1293
- * @param key - the text of a key to use to hide the keyboard
1294
- * @param keyCode - a key code to trigger to hide the keyboard
1295
- * @param keyName - the name of a key to use to hide the keyboard
1296
- *
1297
- * @returns Whether the keyboard was successfully hidden. May never return `false` on some platforms
1298
- */
1299
- hideKeyboard?(
1300
- strategy?: string,
1301
- key?: string,
1302
- keyCode?: string,
1303
- keyName?: string,
1304
- ): Promise<boolean>;
1305
-
1306
- /**
1307
- * Determine whether the keyboard is shown
1308
- *
1309
- * @returns Whether the keyboard is shown
1310
- */
1311
- isKeyboardShown?(): Promise<boolean>;
1312
-
1313
- /**
1314
- * Push data to a file at a remote path on the device
1315
- *
1316
- * @param path - the remote path on the device to create the file at
1317
- * @param data - the base64-encoded data which will be decoded and written to `path`
1318
- */
1319
- pushFile?(path: string, data: string): Promise<void>;
1320
-
1321
- /**
1322
- * Retrieve the data from a file on the device at a given path
1323
- *
1324
- * @param path - the remote path on the device to pull file data from
1325
- *
1326
- * @returns The base64-encoded file data
1327
- */
1328
- pullFile?(path: string): Promise<string>;
1329
-
1330
- /**
1331
- * Retrieve the data from a folder on the device at a given path
1332
- *
1333
- * @param path - the remote path of a directory on the device
1334
- *
1335
- * @returns The base64-encoded zip file of the directory contents
1336
- */
1337
- pullFolder?(path: string): Promise<string>;
1338
-
1339
- /**
1340
- * Get the device orientation
1341
- *
1342
- * @returns The orientation string
1343
- */
1344
- getOrientation?(): Promise<string>;
1345
-
1346
- /**
1347
- * Set the device orientation
1348
- *
1349
- * @param orientation - the orientation string
1350
- */
1351
- setOrientation?(orientation: string): Promise<void>;
1352
-
1353
- /**
1354
- * Get the virtual or real geographical location of a device
1355
- *
1356
- * @returns The location
1357
- */
1358
- getGeoLocation?(): Promise<Location>;
1359
-
1360
- /**
1361
- * Set the virtual geographical location of a device
1362
- *
1363
- * @param location - the location including latitude and longitude
1364
- * @returns The complete location
1365
- */
1366
- setGeoLocation?(location: Partial<Location>): Promise<Location>;
1367
-
1368
- // MJSONWIRE
1369
-
1370
- /**
1371
- * Get the currently active context
1372
- * @see {@link https://github.com/SeleniumHQ/mobile-spec/blob/master/spec-draft.md#webviews-and-other-contexts}
1373
- *
1374
- * @returns The context name
1375
- */
1376
- getCurrentContext?(): Promise<Ctx | null>;
1377
-
1378
- /**
1379
- * Switch to a context by name
1380
- * @see {@link https://github.com/SeleniumHQ/mobile-spec/blob/master/spec-draft.md#webviews-and-other-contexts}
1381
- *
1382
- * @param name - the context name
1383
- */
1384
- setContext?(name: string, ...args: any[]): Promise<void>;
1385
-
1386
- /**
1387
- * Get the list of available contexts
1388
- * @see {@link https://github.com/SeleniumHQ/mobile-spec/blob/master/spec-draft.md#webviews-and-other-contexts}
1389
- *
1390
- * @returns The list of context names
1391
- */
1392
- getContexts?(): Promise<Ctx[]>;
1393
-
1394
- /**
1395
- * Get the network connection state of a device
1396
- * @see {@link https://github.com/SeleniumHQ/mobile-spec/blob/master/spec-draft.md#device-modes}
1397
- *
1398
- * @returns A number which is a bitmask representing categories like Data, Wifi, and Airplane
1399
- * mode status
1400
- */
1401
- getNetworkConnection?(): Promise<number>;
1402
-
1403
- /**
1404
- * Set the network connection of the device
1405
- * @see {@link https://github.com/SeleniumHQ/mobile-spec/blob/master/spec-draft.md#device-modes}
1406
- *
1407
- * @param type - the bitmask representing network state
1408
- * @returns A number which is a bitmask representing categories like Data, Wifi, and Airplane
1409
- * mode status
1410
- */
1411
- setNetworkConnection?(type: number): Promise<number>;
1412
-
1413
- /**
1414
- * Get the current rotation state of the device
1415
- * @see {@link https://github.com/SeleniumHQ/mobile-spec/blob/master/spec-draft.md#device-rotation}
1416
- *
1417
- * @returns The Rotation object consisting of x, y, and z rotation values (0 <= n <= 360)
1418
- */
1419
- getRotation?(): Promise<Rotation>;
1420
-
1421
- /**
1422
- * Set the device rotation state
1423
- * @see {@link https://github.com/SeleniumHQ/mobile-spec/blob/master/spec-draft.md#device-rotation}
1424
- *
1425
- * @param x - the degree to which the device is rotated around the x axis (0 <= x <= 360)
1426
- * @param y - the degree to which the device is rotated around the y axis (0 <= y <= 360)
1427
- * @param z - the degree to which the device is rotated around the z axis (0 <= z <= 360)
1428
- */
1429
- setRotation?(x: number, y: number, z: number): Promise<void>;
1430
-
1431
- // Chromium DevTools
1432
-
1433
- /**
1434
- * Execute a devtools command
1435
- *
1436
- * @param cmd - the command
1437
- * @param params - any command-specific command parameters
1438
- *
1439
- * @returns The result of the command execution
1440
- */
1441
- executeCdp?(cmd: string, params: unknown): Promise<unknown>;
1442
-
1443
- // Web Authentication
1444
-
1445
- /**
1446
- * Add a virtual authenticator to a browser
1447
- * @see {@link https://www.w3.org/TR/webauthn-2/#sctn-automation-add-virtual-authenticator}
1448
- *
1449
- * @param protocol - the protocol
1450
- * @param transport - a valid AuthenticatorTransport value
1451
- * @param hasResidentKey - whether there is a resident key
1452
- * @param hasUserVerification - whether the authenticator has user verification
1453
- * @param isUserConsenting - whether it is a user consenting authenticator
1454
- * @param isUserVerified - whether the user is verified
1455
- *
1456
- * @returns The authenticator ID
1457
- */
1458
- addVirtualAuthenticator?(
1459
- protocol: 'ctap/u2f' | 'ctap2' | 'ctap2_1',
1460
- transport: string,
1461
- hasResidentKey?: boolean,
1462
- hasUserVerification?: boolean,
1463
- isUserConsenting?: boolean,
1464
- isUserVerified?: boolean,
1465
- ): Promise<string>;
1466
-
1467
- /**
1468
- * Remove a virtual authenticator
1469
- * @see {@link https://www.w3.org/TR/webauthn-2/#sctn-automation-remove-virtual-authenticator}
1470
- *
1471
- * @param authenticatorId - the ID returned in the call to add the authenticator
1472
- */
1473
- removeVirtualAuthenticator?(authenticatorId: string): Promise<void>;
1474
-
1475
- /**
1476
- * Inject a public key credential source into a virtual authenticator
1477
- * @see {@link https://www.w3.org/TR/webauthn-2/#sctn-automation-add-credential}
1478
- *
1479
- * @param credentialId - the base64 encoded credential ID
1480
- * @param isResidentCredential - if true, a client-side credential, otherwise a server-side
1481
- * credential
1482
- * @param rpId - the relying party ID the credential is scoped to
1483
- * @param privateKey - the base64 encoded private key package
1484
- * @param userHandle - the base64 encoded user handle
1485
- * @param signCount - the initial value for a signature counter
1486
- */
1487
- addAuthCredential?(
1488
- credentialId: string,
1489
- isResidentCredential: boolean,
1490
- rpId: string,
1491
- privateKey: string,
1492
- userHandle: string,
1493
- signCount: number,
1494
- authenticatorId: string,
1495
- ): Promise<void>;
1496
-
1497
- /**
1498
- * Get the list of public key credential sources
1499
- * @see {@link https://www.w3.org/TR/webauthn-2/#sctn-automation-get-credentials}
1500
- *
1501
- * @returns The list of Credentials
1502
- */
1503
- getAuthCredential?(): Promise<Credential[]>;
1504
-
1505
- /**
1506
- * Remove all auth credentials
1507
- * @see {@link https://www.w3.org/TR/webauthn-2/#sctn-automation-remove-all-credentials}
1508
- */
1509
- removeAllAuthCredentials?(): Promise<void>;
1510
-
1511
- /**
1512
- * Remove a specific auth credential
1513
- *
1514
- * @param credentialId - the credential ID
1515
- * @param authenticatorId - the authenticator ID
1516
- */
1517
- removeAuthCredential?(credentialId: string, authenticatorId: string): Promise<void>;
1518
-
1519
- /**
1520
- * Set the isUserVerified property of an authenticator
1521
- * @see {@link https://www.w3.org/TR/webauthn-2/#sctn-automation-set-user-verified}
1522
- *
1523
- * @param isUserVerified - the value of the isUserVerified property
1524
- * @param authenticatorId - the authenticator id
1525
- */
1526
- setUserAuthVerified?(isUserVerified: boolean, authenticatorId: string): Promise<void>;
1527
-
268
+ > extends Driver<C, CArgs, Settings, CreateResult, DeleteResult, SessionData>,
269
+ IWDClassicCommands,
270
+ IAppiumCommands,
271
+ IJSONWPCommands,
272
+ IMJSONWPCommands<Ctx>,
273
+ IOtherProtocolCommands {
1528
274
  /**
1529
275
  * Proxy a command to a connected WebDriver server
1530
276
  *