@appium/base-driver 9.15.0 → 9.16.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.
Files changed (43) hide show
  1. package/build/lib/basedriver/commands/execute.d.ts.map +1 -1
  2. package/build/lib/basedriver/commands/execute.js +24 -2
  3. package/build/lib/basedriver/commands/execute.js.map +1 -1
  4. package/build/lib/basedriver/driver.d.ts +7 -1
  5. package/build/lib/basedriver/driver.d.ts.map +1 -1
  6. package/build/lib/basedriver/driver.js +8 -0
  7. package/build/lib/basedriver/driver.js.map +1 -1
  8. package/build/lib/express/server.d.ts +23 -17
  9. package/build/lib/express/server.d.ts.map +1 -1
  10. package/build/lib/express/server.js +15 -3
  11. package/build/lib/express/server.js.map +1 -1
  12. package/build/lib/index.d.ts +1 -0
  13. package/build/lib/index.d.ts.map +1 -1
  14. package/build/lib/index.js +4 -1
  15. package/build/lib/index.js.map +1 -1
  16. package/build/lib/jsonwp-proxy/proxy.d.ts +17 -1
  17. package/build/lib/jsonwp-proxy/proxy.d.ts.map +1 -1
  18. package/build/lib/jsonwp-proxy/proxy.js +20 -3
  19. package/build/lib/jsonwp-proxy/proxy.js.map +1 -1
  20. package/build/lib/protocol/bidi-commands.js +3 -2
  21. package/build/lib/protocol/bidi-commands.js.map +1 -1
  22. package/build/lib/protocol/index.d.ts +3 -1
  23. package/build/lib/protocol/index.d.ts.map +1 -1
  24. package/build/lib/protocol/index.js +3 -1
  25. package/build/lib/protocol/index.js.map +1 -1
  26. package/build/lib/protocol/protocol.d.ts +5 -3
  27. package/build/lib/protocol/protocol.d.ts.map +1 -1
  28. package/build/lib/protocol/protocol.js +10 -11
  29. package/build/lib/protocol/protocol.js.map +1 -1
  30. package/build/lib/protocol/routes.d.ts +637 -602
  31. package/build/lib/protocol/routes.d.ts.map +1 -1
  32. package/build/lib/protocol/routes.js +370 -351
  33. package/build/lib/protocol/routes.js.map +1 -1
  34. package/lib/basedriver/commands/execute.ts +27 -2
  35. package/lib/basedriver/driver.ts +10 -0
  36. package/lib/express/server.js +24 -6
  37. package/lib/index.js +3 -0
  38. package/lib/jsonwp-proxy/proxy.js +20 -3
  39. package/lib/protocol/bidi-commands.js +1 -3
  40. package/lib/protocol/index.js +4 -0
  41. package/lib/protocol/protocol.js +5 -6
  42. package/lib/protocol/routes.js +452 -437
  43. package/package.json +6 -11
@@ -25,6 +25,11 @@ const SET_ALERT_TEXT_PAYLOAD_PARAMS = {
25
25
  * @satisfies {import('@appium/types').MethodMap<import('../basedriver/driver').BaseDriver>}
26
26
  */
27
27
  exports.METHOD_MAP = ({
28
+ //
29
+ // W3C WebDriver (and deprecated MJSONWP that will be removed in Appium 3)
30
+ // https://www.w3.org/TR/webdriver1/
31
+ // https://www.w3.org/TR/webdriver2/
32
+ //
28
33
  '/status': {
29
34
  GET: { command: 'getStatus' },
30
35
  },
@@ -32,6 +37,7 @@ exports.METHOD_MAP = ({
32
37
  POST: {
33
38
  command: 'createSession',
34
39
  payloadParams: {
40
+ // TODO: Appium 3 will accept only 'capabilities'.
35
41
  validate: (jsonObj) => !jsonObj.capabilities &&
36
42
  !jsonObj.desiredCapabilities &&
37
43
  'we require one of "desiredCapabilities" or "capabilities" object',
@@ -39,11 +45,8 @@ exports.METHOD_MAP = ({
39
45
  },
40
46
  },
41
47
  },
42
- '/sessions': {
43
- GET: { command: 'getSessions' },
44
- },
45
48
  '/session/:sessionId': {
46
- GET: { command: 'getSession' },
49
+ GET: { command: 'getSession', deprecated: true },
47
50
  DELETE: { command: 'deleteSession' },
48
51
  },
49
52
  '/session/:sessionId/timeouts': {
@@ -60,7 +63,7 @@ exports.METHOD_MAP = ({
60
63
  }
61
64
  }
62
65
  else {
63
- // MJSONWP
66
+ // TODO: Remove in Appium 3
64
67
  if (!support_1.util.hasValue(jsonObj.type) || !support_1.util.hasValue(jsonObj.ms)) {
65
68
  return 'MJSONWP protocol requires type and ms';
66
69
  }
@@ -70,25 +73,6 @@ exports.METHOD_MAP = ({
70
73
  },
71
74
  },
72
75
  },
73
- '/session/:sessionId/timeouts/async_script': {
74
- POST: { command: 'asyncScriptTimeout', payloadParams: { required: ['ms'] }, deprecated: true },
75
- },
76
- '/session/:sessionId/timeouts/implicit_wait': {
77
- POST: { command: 'implicitWait', payloadParams: { required: ['ms'] }, deprecated: true },
78
- },
79
- // JSONWP
80
- '/session/:sessionId/window_handle': {
81
- GET: { command: 'getWindowHandle' },
82
- },
83
- // W3C
84
- '/session/:sessionId/window/handle': {
85
- GET: { command: 'getWindowHandle' },
86
- },
87
- // JSONWP
88
- '/session/:sessionId/window_handles': {
89
- GET: { command: 'getWindowHandles' },
90
- },
91
- // W3C
92
76
  '/session/:sessionId/window/handles': {
93
77
  GET: { command: 'getWindowHandles' },
94
78
  },
@@ -105,39 +89,9 @@ exports.METHOD_MAP = ({
105
89
  '/session/:sessionId/refresh': {
106
90
  POST: { command: 'refresh' },
107
91
  },
108
- // MJSONWP
109
- '/session/:sessionId/execute': {
110
- POST: { command: 'execute', payloadParams: { required: ['script', 'args'] } },
111
- },
112
- // MJSONWP
113
- '/session/:sessionId/execute_async': {
114
- POST: {
115
- command: 'executeAsync',
116
- payloadParams: { required: ['script', 'args'] },
117
- },
118
- },
119
92
  '/session/:sessionId/screenshot': {
120
93
  GET: { command: 'getScreenshot' },
121
94
  },
122
- '/session/:sessionId/ime/available_engines': {
123
- GET: { command: 'availableIMEEngines', deprecated: true },
124
- },
125
- '/session/:sessionId/ime/active_engine': {
126
- GET: { command: 'getActiveIMEEngine', deprecated: true },
127
- },
128
- '/session/:sessionId/ime/activated': {
129
- GET: { command: 'isIMEActivated', deprecated: true },
130
- },
131
- '/session/:sessionId/ime/deactivate': {
132
- POST: { command: 'deactivateIMEEngine', deprecated: true },
133
- },
134
- '/session/:sessionId/ime/activate': {
135
- POST: {
136
- command: 'activateIMEEngine',
137
- payloadParams: { required: ['engine'] },
138
- deprecated: true,
139
- },
140
- },
141
95
  '/session/:sessionId/frame': {
142
96
  POST: { command: 'setFrame', payloadParams: { required: ['id'] } },
143
97
  },
@@ -149,6 +103,7 @@ exports.METHOD_MAP = ({
149
103
  POST: {
150
104
  command: 'setWindow',
151
105
  payloadParams: {
106
+ // TODO: Appium 3 will only accept 'handle'. 'name' will be ginored.
152
107
  optional: ['name', 'handle'],
153
108
  // Return both values to match W3C and JSONWP protocols
154
109
  makeArgs: (jsonObj) => {
@@ -167,15 +122,17 @@ exports.METHOD_MAP = ({
167
122
  },
168
123
  DELETE: { command: 'closeWindow' },
169
124
  },
170
- '/session/:sessionId/window/:windowhandle/size': {
171
- GET: { command: 'getWindowSize', deprecated: true },
125
+ '/session/:sessionId/window/maximize': {
126
+ POST: { command: 'maximizeWindow' },
172
127
  },
173
- '/session/:sessionId/window/:windowhandle/position': {
174
- POST: { deprecated: true },
175
- GET: { deprecated: true },
128
+ '/session/:sessionId/window/minimize': {
129
+ POST: { command: 'minimizeWindow' },
176
130
  },
177
- '/session/:sessionId/window/:windowhandle/maximize': {
178
- POST: { command: 'maximizeWindow' },
131
+ '/session/:sessionId/window/fullscreen': {
132
+ POST: { command: 'fullScreenWindow' },
133
+ },
134
+ '/session/:sessionId/window/new': {
135
+ POST: { command: 'createNewWindow', payloadParams: { optional: ['type'] } },
179
136
  },
180
137
  '/session/:sessionId/cookie': {
181
138
  GET: { command: 'getCookies' },
@@ -206,7 +163,7 @@ exports.METHOD_MAP = ({
206
163
  },
207
164
  '/session/:sessionId/element/active': {
208
165
  GET: { command: 'active' }, // W3C: https://w3c.github.io/webdriver/webdriver-spec.html#dfn-get-active-element
209
- POST: { command: 'active' },
166
+ POST: { command: 'active', deprecated: true },
210
167
  },
211
168
  '/session/:sessionId/element/:elementId': {
212
169
  GET: {},
@@ -226,9 +183,6 @@ exports.METHOD_MAP = ({
226
183
  '/session/:sessionId/element/:elementId/click': {
227
184
  POST: { command: 'click' },
228
185
  },
229
- '/session/:sessionId/element/:elementId/submit': {
230
- POST: { command: 'submit', deprecated: true },
231
- },
232
186
  '/session/:sessionId/element/:elementId/text': {
233
187
  GET: { command: 'getText' },
234
188
  },
@@ -239,6 +193,7 @@ exports.METHOD_MAP = ({
239
193
  validate: (jsonObj) => !support_1.util.hasValue(jsonObj.value) &&
240
194
  !support_1.util.hasValue(jsonObj.text) &&
241
195
  'we require one of "text" or "value" params',
196
+ // TODO: Appium 3 will accept only 'value'.
242
197
  optional: ['value', 'text'],
243
198
  // override the default argument constructor because of the special
244
199
  // logic here. Basically we want to accept either a value (old JSONWP)
@@ -249,9 +204,6 @@ exports.METHOD_MAP = ({
249
204
  },
250
205
  },
251
206
  },
252
- '/session/:sessionId/keys': {
253
- POST: { command: 'keys', payloadParams: { required: ['value'] }, deprecated: true },
254
- },
255
207
  '/session/:sessionId/element/:elementId/name': {
256
208
  GET: { command: 'getName' },
257
209
  },
@@ -267,21 +219,9 @@ exports.METHOD_MAP = ({
267
219
  '/session/:sessionId/element/:elementId/attribute/:name': {
268
220
  GET: { command: 'getAttribute' },
269
221
  },
270
- '/session/:sessionId/element/:elementId/equals/:otherId': {
271
- GET: { command: 'equalsElement', deprecated: true },
272
- },
273
222
  '/session/:sessionId/element/:elementId/displayed': {
274
223
  GET: { command: 'elementDisplayed' },
275
224
  },
276
- '/session/:sessionId/element/:elementId/location': {
277
- GET: { command: 'getLocation', deprecated: true },
278
- },
279
- '/session/:sessionId/element/:elementId/location_in_view': {
280
- GET: { command: 'getLocationInView', deprecated: true },
281
- },
282
- '/session/:sessionId/element/:elementId/size': {
283
- GET: { command: 'getSize', deprecated: true },
284
- },
285
225
  '/session/:sessionId/element/:elementId/shadow': {
286
226
  GET: { command: 'elementShadowRoot' },
287
227
  },
@@ -300,12 +240,8 @@ exports.METHOD_MAP = ({
300
240
  '/session/:sessionId/element/:elementId/css/:propertyName': {
301
241
  GET: { command: 'getCssProperty' },
302
242
  },
303
- '/session/:sessionId/orientation': {
304
- GET: { command: 'getOrientation' },
305
- POST: {
306
- command: 'setOrientation',
307
- payloadParams: { required: ['orientation'] },
308
- },
243
+ '/session/:sessionId/element/:elementId/property/:name': {
244
+ GET: { command: 'getProperty' },
309
245
  },
310
246
  // w3c v2 https://www.w3.org/TR/webdriver2/#get-computed-role
311
247
  'session/:sessionId/element/:elementId/computedrole': {
@@ -315,10 +251,331 @@ exports.METHOD_MAP = ({
315
251
  'session/:sessionId/element/:elementId/computedlabel': {
316
252
  GET: { command: 'getComputedLabel' },
317
253
  },
254
+ '/session/:sessionId/actions': {
255
+ POST: { command: 'performActions', payloadParams: { required: ['actions'] } },
256
+ DELETE: { command: 'releaseActions' },
257
+ },
258
+ '/session/:sessionId/alert/text': {
259
+ GET: { command: 'getAlertText' },
260
+ POST: {
261
+ command: 'setAlertText',
262
+ payloadParams: SET_ALERT_TEXT_PAYLOAD_PARAMS,
263
+ },
264
+ },
265
+ '/session/:sessionId/alert/accept': {
266
+ POST: { command: 'postAcceptAlert' },
267
+ },
268
+ '/session/:sessionId/alert/dismiss': {
269
+ POST: { command: 'postDismissAlert' },
270
+ },
271
+ '/session/:sessionId/element/:elementId/rect': {
272
+ GET: { command: 'getElementRect' },
273
+ },
274
+ '/session/:sessionId/execute/sync': {
275
+ POST: { command: 'execute', payloadParams: { required: ['script', 'args'] } },
276
+ },
277
+ '/session/:sessionId/execute/async': {
278
+ POST: {
279
+ command: 'executeAsync',
280
+ payloadParams: { required: ['script', 'args'] },
281
+ },
282
+ },
283
+ '/session/:sessionId/element/:elementId/screenshot': {
284
+ GET: { command: 'getElementScreenshot' },
285
+ },
286
+ '/session/:sessionId/window/rect': {
287
+ GET: { command: 'getWindowRect' },
288
+ POST: {
289
+ command: 'setWindowRect',
290
+ payloadParams: { optional: ['x', 'y', 'width', 'height'] },
291
+ },
292
+ },
293
+ //
294
+ // Appium specific
295
+ //
296
+ '/session/:sessionId/ime/available_engines': {
297
+ GET: { command: 'availableIMEEngines' },
298
+ },
299
+ '/session/:sessionId/ime/active_engine': {
300
+ GET: { command: 'getActiveIMEEngine' },
301
+ },
302
+ '/session/:sessionId/ime/activated': {
303
+ GET: { command: 'isIMEActivated' },
304
+ },
305
+ '/session/:sessionId/ime/deactivate': {
306
+ POST: { command: 'deactivateIMEEngine' },
307
+ },
308
+ '/session/:sessionId/ime/activate': {
309
+ POST: { command: 'activateIMEEngine', payloadParams: { required: ['engine'] } },
310
+ },
318
311
  '/session/:sessionId/rotation': {
319
312
  GET: { command: 'getRotation' },
320
313
  POST: { command: 'setRotation', payloadParams: { required: ['x', 'y', 'z'] } },
321
314
  },
315
+ '/session/:sessionId/location': {
316
+ GET: { command: 'getGeoLocation' },
317
+ POST: { command: 'setGeoLocation', payloadParams: { required: ['location'] } },
318
+ },
319
+ '/session/:sessionId/orientation': {
320
+ GET: { command: 'getOrientation' },
321
+ POST: {
322
+ command: 'setOrientation',
323
+ payloadParams: { required: ['orientation'] }
324
+ },
325
+ },
326
+ '/session/:sessionId/context': {
327
+ GET: { command: 'getCurrentContext' },
328
+ POST: { command: 'setContext', payloadParams: { required: ['name'] } },
329
+ },
330
+ '/session/:sessionId/contexts': {
331
+ GET: { command: 'getContexts' },
332
+ },
333
+ '/session/:sessionId/network_connection': {
334
+ GET: { command: 'getNetworkConnection' },
335
+ POST: {
336
+ command: 'setNetworkConnection',
337
+ payloadParams: { unwrap: 'parameters', required: ['type'] },
338
+ },
339
+ },
340
+ '/session/:sessionId/receive_async_response': {
341
+ POST: {
342
+ command: 'receiveAsyncResponse',
343
+ payloadParams: { required: ['status', 'value'] },
344
+ },
345
+ },
346
+ '/appium/sessions': {
347
+ GET: { command: 'getAppiumSessions' },
348
+ },
349
+ '/session/:sessionId/appium/capabilities': {
350
+ GET: { command: 'getAppiumSessionCapabilities' }
351
+ },
352
+ '/session/:sessionId/appium/device/system_time': {
353
+ GET: { command: 'getDeviceTime', payloadParams: { optional: ['format'] } },
354
+ POST: { command: 'getDeviceTime', payloadParams: { optional: ['format'] } },
355
+ },
356
+ // #region Applications Management
357
+ '/session/:sessionId/appium/device/install_app': {
358
+ POST: {
359
+ command: 'installApp',
360
+ payloadParams: {
361
+ required: ['appPath'],
362
+ optional: ['options'],
363
+ },
364
+ },
365
+ },
366
+ '/session/:sessionId/appium/device/activate_app': {
367
+ POST: {
368
+ command: 'activateApp',
369
+ payloadParams: {
370
+ required: [['appId'], ['bundleId']],
371
+ optional: ['options'],
372
+ },
373
+ },
374
+ },
375
+ '/session/:sessionId/appium/device/remove_app': {
376
+ POST: {
377
+ command: 'removeApp',
378
+ payloadParams: {
379
+ required: [['appId'], ['bundleId']],
380
+ optional: ['options'],
381
+ },
382
+ },
383
+ },
384
+ '/session/:sessionId/appium/device/terminate_app': {
385
+ POST: {
386
+ command: 'terminateApp',
387
+ payloadParams: {
388
+ required: [['appId'], ['bundleId']],
389
+ optional: ['options'],
390
+ },
391
+ },
392
+ },
393
+ '/session/:sessionId/appium/device/app_installed': {
394
+ POST: {
395
+ command: 'isAppInstalled',
396
+ payloadParams: {
397
+ required: [['appId'], ['bundleId']],
398
+ },
399
+ },
400
+ },
401
+ '/session/:sessionId/appium/device/app_state': {
402
+ GET: {
403
+ command: 'queryAppState',
404
+ payloadParams: {
405
+ required: [['appId'], ['bundleId']],
406
+ },
407
+ },
408
+ POST: {
409
+ command: 'queryAppState',
410
+ payloadParams: {
411
+ required: [['appId'], ['bundleId']],
412
+ },
413
+ deprecated: true,
414
+ },
415
+ },
416
+ // #endregion
417
+ '/session/:sessionId/appium/device/hide_keyboard': {
418
+ POST: {
419
+ command: 'hideKeyboard',
420
+ payloadParams: { optional: ['strategy', 'key', 'keyCode', 'keyName'] },
421
+ },
422
+ },
423
+ '/session/:sessionId/appium/device/is_keyboard_shown': {
424
+ GET: { command: 'isKeyboardShown' },
425
+ },
426
+ '/session/:sessionId/appium/device/push_file': {
427
+ POST: { command: 'pushFile', payloadParams: { required: ['path', 'data'] } },
428
+ },
429
+ '/session/:sessionId/appium/device/pull_file': {
430
+ POST: { command: 'pullFile', payloadParams: { required: ['path'] } },
431
+ },
432
+ '/session/:sessionId/appium/device/pull_folder': {
433
+ POST: { command: 'pullFolder', payloadParams: { required: ['path'] } },
434
+ },
435
+ '/session/:sessionId/appium/settings': {
436
+ POST: { command: 'updateSettings', payloadParams: { required: ['settings'] } },
437
+ GET: { command: 'getSettings' },
438
+ },
439
+ '/session/:sessionId/appium/events': {
440
+ POST: { command: 'getLogEvents', payloadParams: { optional: ['type'] } },
441
+ },
442
+ '/session/:sessionId/appium/log_event': {
443
+ POST: {
444
+ command: 'logCustomEvent',
445
+ payloadParams: { required: ['vendor', 'event'] },
446
+ },
447
+ },
448
+ // #region Inspector
449
+ '/session/:sessionId/appium/commands': {
450
+ GET: { command: 'listCommands' },
451
+ },
452
+ '/session/:sessionId/appium/extensions': {
453
+ GET: { command: 'listExtensions' },
454
+ },
455
+ // #endregion
456
+ //
457
+ // 3rd party vendor/protcol support
458
+ //
459
+ // #region Selenium/Chromium browsers
460
+ '/session/:sessionId/se/log': {
461
+ POST: { command: 'getLog', payloadParams: { required: ['type'] } },
462
+ },
463
+ '/session/:sessionId/se/log/types': {
464
+ GET: { command: 'getLogTypes' },
465
+ },
466
+ // #endregion
467
+ // #region chromium devtools
468
+ // https://chromium.googlesource.com/chromium/src/+/master/chrome/test/chromedriver/server/http_handler.cc
469
+ '/session/:sessionId/:vendor/cdp/execute': {
470
+ POST: { command: 'executeCdp', payloadParams: { required: ['cmd', 'params'] } },
471
+ },
472
+ // #endregion
473
+ // #region Webauthn
474
+ // https://www.w3.org/TR/webauthn-2/#sctn-automation-add-virtual-authenticator
475
+ '/session/:sessionId/webauthn/authenticator': {
476
+ POST: {
477
+ command: 'addVirtualAuthenticator',
478
+ payloadParams: {
479
+ required: ['protocol', 'transport'],
480
+ optional: ['hasResidentKey', 'hasUserVerification', 'isUserConsenting', 'isUserVerified'],
481
+ },
482
+ },
483
+ },
484
+ '/session/:sessionId/webauthn/authenticator/:authenticatorId': {
485
+ DELETE: {
486
+ command: 'removeVirtualAuthenticator',
487
+ },
488
+ },
489
+ '/session/:sessionId/webauthn/authenticator/:authenticatorId/credential': {
490
+ POST: {
491
+ command: 'addAuthCredential',
492
+ payloadParams: {
493
+ required: ['credentialId', 'isResidentCredential', 'rpId', 'privateKey'],
494
+ optional: ['userHandle', 'signCount'],
495
+ },
496
+ },
497
+ },
498
+ '/session/:sessionId/webauthn/authenticator/:authenticatorId/credentials': {
499
+ GET: { command: 'getAuthCredential' },
500
+ DELETE: { command: 'removeAllAuthCredentials' },
501
+ },
502
+ '/session/:sessionId/webauthn/authenticator/:authenticatorId/credentials/:credentialId': {
503
+ DELETE: { command: 'removeAuthCredential' },
504
+ },
505
+ '/session/:sessionId/webauthn/authenticator/:authenticatorId/uv': {
506
+ POST: {
507
+ command: 'setUserAuthVerified',
508
+ payloadParams: {
509
+ required: ['isUserVerified'],
510
+ },
511
+ },
512
+ },
513
+ // #endregion
514
+ //
515
+ // Endpoints deprecated entirely
516
+ //
517
+ // #region MJSONWP
518
+ '/sessions': {
519
+ GET: { command: 'getSessions', deprecated: true },
520
+ },
521
+ '/session/:sessionId/timeouts/async_script': {
522
+ POST: { command: 'asyncScriptTimeout', payloadParams: { required: ['ms'] }, deprecated: true },
523
+ },
524
+ '/session/:sessionId/timeouts/implicit_wait': {
525
+ POST: { command: 'implicitWait', payloadParams: { required: ['ms'] }, deprecated: true },
526
+ },
527
+ '/session/:sessionId/window_handle': {
528
+ GET: { command: 'getWindowHandle', deprecated: true },
529
+ },
530
+ // Only 'window/handles' exists in W3C WebDriver spec.
531
+ '/session/:sessionId/window/handle': {
532
+ GET: { command: 'getWindowHandle', deprecated: true },
533
+ },
534
+ '/session/:sessionId/window_handles': {
535
+ GET: { command: 'getWindowHandles', deprecated: true },
536
+ },
537
+ '/session/:sessionId/execute': {
538
+ POST: {
539
+ command: 'execute',
540
+ payloadParams: { required: ['script', 'args'] },
541
+ deprecated: true
542
+ },
543
+ },
544
+ '/session/:sessionId/execute_async': {
545
+ POST: {
546
+ command: 'executeAsync',
547
+ payloadParams: { required: ['script', 'args'] },
548
+ deprecated: true
549
+ },
550
+ },
551
+ '/session/:sessionId/window/:windowhandle/size': {
552
+ GET: { command: 'getWindowSize', deprecated: true },
553
+ },
554
+ '/session/:sessionId/window/:windowhandle/position': {
555
+ POST: { deprecated: true },
556
+ GET: { deprecated: true },
557
+ },
558
+ '/session/:sessionId/window/:windowhandle/maximize': {
559
+ POST: { command: 'maximizeWindow', deprecated: true },
560
+ },
561
+ '/session/:sessionId/element/:elementId/submit': {
562
+ POST: { command: 'submit', deprecated: true },
563
+ },
564
+ '/session/:sessionId/keys': {
565
+ POST: { command: 'keys', payloadParams: { required: ['value'] }, deprecated: true },
566
+ },
567
+ '/session/:sessionId/element/:elementId/equals/:otherId': {
568
+ GET: { command: 'equalsElement', deprecated: true },
569
+ },
570
+ '/session/:sessionId/element/:elementId/location': {
571
+ GET: { command: 'getLocation', deprecated: true },
572
+ },
573
+ '/session/:sessionId/element/:elementId/location_in_view': {
574
+ GET: { command: 'getLocationInView', deprecated: true },
575
+ },
576
+ '/session/:sessionId/element/:elementId/size': {
577
+ GET: { command: 'getSize', deprecated: true },
578
+ },
322
579
  '/session/:sessionId/moveto': {
323
580
  POST: {
324
581
  command: 'moveTo',
@@ -354,11 +611,7 @@ exports.METHOD_MAP = ({
354
611
  POST: { deprecated: true },
355
612
  },
356
613
  '/session/:sessionId/touch/doubleclick': {
357
- POST: {},
358
- },
359
- '/session/:sessionId/actions': {
360
- POST: { command: 'performActions', payloadParams: { required: ['actions'] } },
361
- DELETE: { command: 'releaseActions' },
614
+ POST: { deprecated: true },
362
615
  },
363
616
  '/session/:sessionId/touch/longclick': {
364
617
  POST: {
@@ -376,10 +629,6 @@ exports.METHOD_MAP = ({
376
629
  deprecated: true,
377
630
  },
378
631
  },
379
- '/session/:sessionId/location': {
380
- GET: { command: 'getGeoLocation' },
381
- POST: { command: 'setGeoLocation', payloadParams: { required: ['location'] } },
382
- },
383
632
  '/session/:sessionId/local_storage': {
384
633
  GET: { deprecated: true },
385
634
  POST: { deprecated: true },
@@ -404,45 +653,32 @@ exports.METHOD_MAP = ({
404
653
  '/session/:sessionId/session_storage/size': {
405
654
  GET: { deprecated: true },
406
655
  },
407
- // Selenium 4 clients
408
- '/session/:sessionId/se/log': {
409
- POST: { command: 'getLog', payloadParams: { required: ['type'] } },
410
- },
411
- // Selenium 4 clients
412
- '/session/:sessionId/se/log/types': {
413
- GET: { command: 'getLogTypes' },
414
- },
415
- // mjsonwire, appium clients
416
- '/session/:sessionId/log': {
417
- POST: { command: 'getLog', payloadParams: { required: ['type'] } },
656
+ '/session/:sessionId/application_cache/status': {
657
+ GET: { deprecated: true },
418
658
  },
419
- // mjsonwire, appium clients
420
- '/session/:sessionId/log/types': {
421
- GET: { command: 'getLogTypes' },
659
+ '/session/:sessionId/alert_text': {
660
+ GET: { command: 'getAlertText', deprecated: true },
661
+ POST: {
662
+ command: 'setAlertText',
663
+ payloadParams: SET_ALERT_TEXT_PAYLOAD_PARAMS,
664
+ deprecated: true
665
+ },
422
666
  },
423
- '/session/:sessionId/application_cache/status': {
424
- GET: {},
667
+ '/session/:sessionId/accept_alert': {
668
+ POST: { command: 'postAcceptAlert', deprecated: true },
425
669
  },
426
- //
427
- // mjsonwire
428
- //
429
- '/session/:sessionId/context': {
430
- GET: { command: 'getCurrentContext' },
431
- POST: { command: 'setContext', payloadParams: { required: ['name'] } },
670
+ '/session/:sessionId/dismiss_alert': {
671
+ POST: { command: 'postDismissAlert', deprecated: true },
432
672
  },
433
- '/session/:sessionId/contexts': {
434
- GET: { command: 'getContexts' },
673
+ // Pre-W3C endpoint for element screenshot
674
+ '/session/:sessionId/screenshot/:elementId': {
675
+ GET: { command: 'getElementScreenshot', deprecated: true },
435
676
  },
677
+ // #endregion
678
+ // #region Appium specific
436
679
  '/session/:sessionId/element/:elementId/pageIndex': {
437
680
  GET: { command: 'getPageIndex', deprecated: true },
438
681
  },
439
- '/session/:sessionId/network_connection': {
440
- GET: { command: 'getNetworkConnection' },
441
- POST: {
442
- command: 'setNetworkConnection',
443
- payloadParams: { unwrap: 'parameters', required: ['type'] },
444
- },
445
- },
446
682
  '/session/:sessionId/touch/perform': {
447
683
  POST: {
448
684
  command: 'performTouch',
@@ -457,19 +693,9 @@ exports.METHOD_MAP = ({
457
693
  deprecated: true,
458
694
  },
459
695
  },
460
- '/session/:sessionId/receive_async_response': {
461
- POST: {
462
- command: 'receiveAsyncResponse',
463
- payloadParams: { required: ['status', 'value'] },
464
- },
465
- },
466
696
  '/session/:sessionId/appium/device/shake': {
467
697
  POST: { command: 'mobileShake', deprecated: true },
468
698
  },
469
- '/session/:sessionId/appium/device/system_time': {
470
- GET: { command: 'getDeviceTime', payloadParams: { optional: ['format'] } },
471
- POST: { command: 'getDeviceTime', payloadParams: { optional: ['format'] } },
472
- },
473
699
  '/session/:sessionId/appium/device/lock': {
474
700
  POST: { command: 'lock', payloadParams: { optional: ['seconds'] }, deprecated: true },
475
701
  },
@@ -573,85 +799,6 @@ exports.METHOD_MAP = ({
573
799
  '/session/:sessionId/appium/device/current_package': {
574
800
  GET: { command: 'getCurrentPackage', deprecated: true },
575
801
  },
576
- //region Applications Management
577
- '/session/:sessionId/appium/device/install_app': {
578
- POST: {
579
- command: 'installApp',
580
- payloadParams: {
581
- required: ['appPath'],
582
- optional: ['options'],
583
- },
584
- },
585
- },
586
- '/session/:sessionId/appium/device/activate_app': {
587
- POST: {
588
- command: 'activateApp',
589
- payloadParams: {
590
- required: [['appId'], ['bundleId']],
591
- optional: ['options'],
592
- },
593
- },
594
- },
595
- '/session/:sessionId/appium/device/remove_app': {
596
- POST: {
597
- command: 'removeApp',
598
- payloadParams: {
599
- required: [['appId'], ['bundleId']],
600
- optional: ['options'],
601
- },
602
- },
603
- },
604
- '/session/:sessionId/appium/device/terminate_app': {
605
- POST: {
606
- command: 'terminateApp',
607
- payloadParams: {
608
- required: [['appId'], ['bundleId']],
609
- optional: ['options'],
610
- },
611
- },
612
- },
613
- '/session/:sessionId/appium/device/app_installed': {
614
- POST: {
615
- command: 'isAppInstalled',
616
- payloadParams: {
617
- required: [['appId'], ['bundleId']],
618
- },
619
- },
620
- },
621
- '/session/:sessionId/appium/device/app_state': {
622
- GET: {
623
- command: 'queryAppState',
624
- payloadParams: {
625
- required: [['appId'], ['bundleId']],
626
- },
627
- },
628
- POST: {
629
- command: 'queryAppState',
630
- payloadParams: {
631
- required: [['appId'], ['bundleId']],
632
- },
633
- deprecated: true,
634
- },
635
- },
636
- //endregion
637
- '/session/:sessionId/appium/device/hide_keyboard': {
638
- POST: {
639
- command: 'hideKeyboard',
640
- payloadParams: { optional: ['strategy', 'key', 'keyCode', 'keyName'] },
641
- },
642
- },
643
- '/session/:sessionId/appium/device/is_keyboard_shown': {
644
- GET: { command: 'isKeyboardShown' },
645
- },
646
- '/session/:sessionId/appium/device/push_file': {
647
- POST: { command: 'pushFile', payloadParams: { required: ['path', 'data'] } },
648
- },
649
- '/session/:sessionId/appium/device/pull_file': {
650
- POST: { command: 'pullFile', payloadParams: { required: ['path'] } },
651
- },
652
- '/session/:sessionId/appium/device/pull_folder': {
653
- POST: { command: 'pullFolder', payloadParams: { required: ['path'] } },
654
- },
655
802
  '/session/:sessionId/appium/device/toggle_airplane_mode': {
656
803
  POST: { command: 'toggleFlightMode', deprecated: true },
657
804
  },
@@ -741,10 +888,6 @@ exports.METHOD_MAP = ({
741
888
  deprecated: true,
742
889
  },
743
890
  },
744
- '/session/:sessionId/appium/settings': {
745
- POST: { command: 'updateSettings', payloadParams: { required: ['settings'] } },
746
- GET: { command: 'getSettings' },
747
- },
748
891
  '/session/:sessionId/appium/receive_async_response': {
749
892
  POST: {
750
893
  command: 'receiveAsyncResponse',
@@ -752,93 +895,6 @@ exports.METHOD_MAP = ({
752
895
  deprecated: true,
753
896
  },
754
897
  },
755
- '/session/:sessionId/appium/events': {
756
- POST: { command: 'getLogEvents', payloadParams: { optional: ['type'] } },
757
- },
758
- '/session/:sessionId/appium/log_event': {
759
- POST: {
760
- command: 'logCustomEvent',
761
- payloadParams: { required: ['vendor', 'event'] },
762
- },
763
- },
764
- /*
765
- * The W3C spec has some changes to the wire protocol.
766
- * https://w3c.github.io/webdriver/webdriver-spec.html
767
- * Begin to add those changes here, keeping the old version
768
- * since clients still implement them.
769
- */
770
- // MJSONWP
771
- '/session/:sessionId/alert_text': {
772
- GET: { command: 'getAlertText' },
773
- POST: {
774
- command: 'setAlertText',
775
- payloadParams: SET_ALERT_TEXT_PAYLOAD_PARAMS,
776
- },
777
- },
778
- // MJSONWP
779
- '/session/:sessionId/accept_alert': {
780
- POST: { command: 'postAcceptAlert' },
781
- },
782
- // MJSONWP
783
- '/session/:sessionId/dismiss_alert': {
784
- POST: { command: 'postDismissAlert' },
785
- },
786
- // https://w3c.github.io/webdriver/webdriver-spec.html#user-prompts
787
- '/session/:sessionId/alert/text': {
788
- GET: { command: 'getAlertText' },
789
- POST: {
790
- command: 'setAlertText',
791
- payloadParams: SET_ALERT_TEXT_PAYLOAD_PARAMS,
792
- },
793
- },
794
- '/session/:sessionId/alert/accept': {
795
- POST: { command: 'postAcceptAlert' },
796
- },
797
- '/session/:sessionId/alert/dismiss': {
798
- POST: { command: 'postDismissAlert' },
799
- },
800
- // https://w3c.github.io/webdriver/webdriver-spec.html#get-element-rect
801
- '/session/:sessionId/element/:elementId/rect': {
802
- GET: { command: 'getElementRect' },
803
- },
804
- '/session/:sessionId/execute/sync': {
805
- POST: { command: 'execute', payloadParams: { required: ['script', 'args'] } },
806
- },
807
- '/session/:sessionId/execute/async': {
808
- POST: {
809
- command: 'executeAsync',
810
- payloadParams: { required: ['script', 'args'] },
811
- },
812
- },
813
- // Pre-W3C endpoint for element screenshot
814
- '/session/:sessionId/screenshot/:elementId': {
815
- GET: { command: 'getElementScreenshot' },
816
- },
817
- '/session/:sessionId/element/:elementId/screenshot': {
818
- GET: { command: 'getElementScreenshot' },
819
- },
820
- '/session/:sessionId/window/rect': {
821
- GET: { command: 'getWindowRect' },
822
- POST: {
823
- command: 'setWindowRect',
824
- payloadParams: { optional: ['x', 'y', 'width', 'height'] },
825
- },
826
- },
827
- '/session/:sessionId/window/maximize': {
828
- POST: { command: 'maximizeWindow' },
829
- },
830
- '/session/:sessionId/window/minimize': {
831
- POST: { command: 'minimizeWindow' },
832
- },
833
- '/session/:sessionId/window/fullscreen': {
834
- POST: { command: 'fullScreenWindow' },
835
- },
836
- '/session/:sessionId/window/new': {
837
- POST: { command: 'createNewWindow', payloadParams: { optional: ['type'] } },
838
- },
839
- '/session/:sessionId/element/:elementId/property/:name': {
840
- GET: { command: 'getProperty' },
841
- },
842
898
  '/session/:sessionId/appium/device/set_clipboard': {
843
899
  POST: {
844
900
  command: 'setClipboard',
@@ -858,52 +914,15 @@ exports.METHOD_MAP = ({
858
914
  deprecated: true,
859
915
  },
860
916
  },
861
- // chromium devtools
862
- // https://chromium.googlesource.com/chromium/src/+/master/chrome/test/chromedriver/server/http_handler.cc
863
- '/session/:sessionId/:vendor/cdp/execute': {
864
- POST: { command: 'executeCdp', payloadParams: { required: ['cmd', 'params'] } },
865
- },
866
- //region Webauthn
867
- // https://www.w3.org/TR/webauthn-2/#sctn-automation-add-virtual-authenticator
868
- '/session/:sessionId/webauthn/authenticator': {
869
- POST: {
870
- command: 'addVirtualAuthenticator',
871
- payloadParams: {
872
- required: ['protocol', 'transport'],
873
- optional: ['hasResidentKey', 'hasUserVerification', 'isUserConsenting', 'isUserVerified'],
874
- },
875
- },
876
- },
877
- '/session/:sessionId/webauthn/authenticator/:authenticatorId': {
878
- DELETE: {
879
- command: 'removeVirtualAuthenticator',
880
- },
881
- },
882
- '/session/:sessionId/webauthn/authenticator/:authenticatorId/credential': {
883
- POST: {
884
- command: 'addAuthCredential',
885
- payloadParams: {
886
- required: ['credentialId', 'isResidentCredential', 'rpId', 'privateKey'],
887
- optional: ['userHandle', 'signCount'],
888
- },
889
- },
890
- },
891
- '/session/:sessionId/webauthn/authenticator/:authenticatorId/credentials': {
892
- GET: { command: 'getAuthCredential' },
893
- DELETE: { command: 'removeAllAuthCredentials' },
894
- },
895
- '/session/:sessionId/webauthn/authenticator/:authenticatorId/credentials/:credentialId': {
896
- DELETE: { command: 'removeAuthCredential' },
917
+ // #endregion
918
+ // #region JSONWP
919
+ '/session/:sessionId/log': {
920
+ POST: { command: 'getLog', payloadParams: { required: ['type'] }, deprecated: true },
897
921
  },
898
- '/session/:sessionId/webauthn/authenticator/:authenticatorId/uv': {
899
- POST: {
900
- command: 'setUserAuthVerified',
901
- payloadParams: {
902
- required: ['isUserVerified'],
903
- },
904
- },
922
+ '/session/:sessionId/log/types': {
923
+ GET: { command: 'getLogTypes', deprecated: true },
905
924
  },
906
- //endregion
925
+ // #endregion
907
926
  });
908
927
  // driver command names
909
928
  exports.ALL_COMMANDS = lodash_1.default.flatMap(lodash_1.default.values(exports.METHOD_MAP).map(lodash_1.default.values))
@@ -948,5 +967,5 @@ function routeToCommandName(endpoint, method, basePath = constants_1.DEFAULT_BAS
948
967
  }
949
968
  }
950
969
  // driver commands that do not require a session to already exist
951
- exports.NO_SESSION_ID_COMMANDS = ['createSession', 'getStatus', 'getSessions'];
970
+ exports.NO_SESSION_ID_COMMANDS = ['createSession', 'getStatus', 'getSessions', 'getAppiumSessions'];
952
971
  //# sourceMappingURL=routes.js.map