appium 3.0.0-beta.0 → 3.0.0-rc.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 (47) hide show
  1. package/build/lib/appium.d.ts +14 -9
  2. package/build/lib/appium.d.ts.map +1 -1
  3. package/build/lib/appium.js +27 -53
  4. package/build/lib/appium.js.map +1 -1
  5. package/build/lib/cli/driver-command.js +1 -1
  6. package/build/lib/cli/driver-command.js.map +1 -1
  7. package/build/lib/cli/extension-command.js +1 -1
  8. package/build/lib/cli/extension-command.js.map +1 -1
  9. package/build/lib/cli/parser.js +1 -1
  10. package/build/lib/cli/plugin-command.js +1 -1
  11. package/build/lib/cli/plugin-command.js.map +1 -1
  12. package/build/lib/constants.d.ts +7 -1
  13. package/build/lib/constants.d.ts.map +1 -1
  14. package/build/lib/constants.js +8 -2
  15. package/build/lib/constants.js.map +1 -1
  16. package/build/lib/extension/extension-config.js +1 -1
  17. package/build/lib/extension/extension-config.js.map +1 -1
  18. package/build/lib/insecure-features.d.ts +18 -0
  19. package/build/lib/insecure-features.d.ts.map +1 -0
  20. package/build/lib/insecure-features.js +116 -0
  21. package/build/lib/insecure-features.js.map +1 -0
  22. package/build/lib/main.d.ts +1 -1
  23. package/build/lib/main.d.ts.map +1 -1
  24. package/build/lib/main.js +3 -1
  25. package/build/lib/main.js.map +1 -1
  26. package/build/lib/schema/cli-args.d.ts +1 -1
  27. package/build/lib/schema/cli-args.js +1 -1
  28. package/build/lib/schema/cli-args.js.map +1 -1
  29. package/build/lib/schema/schema.d.ts +1 -1
  30. package/build/lib/schema/schema.js +1 -1
  31. package/build/lib/utils.d.ts +6 -19
  32. package/build/lib/utils.d.ts.map +1 -1
  33. package/build/lib/utils.js +51 -118
  34. package/build/lib/utils.js.map +1 -1
  35. package/lib/appium.js +33 -69
  36. package/lib/cli/driver-command.js +1 -1
  37. package/lib/cli/extension-command.js +1 -1
  38. package/lib/cli/parser.js +1 -1
  39. package/lib/cli/plugin-command.js +1 -1
  40. package/lib/constants.js +8 -1
  41. package/lib/extension/extension-config.js +1 -1
  42. package/lib/insecure-features.ts +129 -0
  43. package/lib/main.js +4 -1
  44. package/lib/schema/cli-args.js +2 -2
  45. package/lib/schema/schema.js +1 -1
  46. package/lib/utils.js +56 -131
  47. package/package.json +16 -16
@@ -19,7 +19,6 @@ exports.isPluginCommandArgs = isPluginCommandArgs;
19
19
  exports.fetchInterfaces = fetchInterfaces;
20
20
  exports.adler32 = adler32;
21
21
  exports.isBroadcastIp = isBroadcastIp;
22
- exports.validateFeatures = validateFeatures;
23
22
  const lodash_1 = __importDefault(require("lodash"));
24
23
  const logger_1 = __importDefault(require("./logger"));
25
24
  const base_driver_1 = require("@appium/base-driver");
@@ -33,8 +32,6 @@ const STANDARD_CAPS_LOWERCASE = new Set([...base_driver_1.STANDARD_CAPS].map((ca
33
32
  exports.V4_BROADCAST_IP = '0.0.0.0';
34
33
  exports.V6_BROADCAST_IP = '::';
35
34
  exports.npmPackage = support_1.fs.readPackageJsonFrom(__dirname);
36
- const ALL_DRIVERS_MATCH = '*';
37
- const FEATURE_NAME_SEPARATOR = ':';
38
35
  /**
39
36
  *
40
37
  * If `stdout` is a TTY, this is `true`.
@@ -66,106 +63,75 @@ exports.inspect = lodash_1.default.flow(lodash_1.default.partialRight(
66
63
  * into caps that can be used by the inner drivers.
67
64
  *
68
65
  * @template {Constraints} C
69
- * @template [J=any]
70
- * @param {J} jsonwpCapabilities
71
66
  * @param {W3CCapabilities<C>} w3cCapabilities
72
67
  * @param {C} constraints
73
68
  * @param {NSCapabilities<C>} [defaultCapabilities]
74
- * @returns {ParsedDriverCaps<C,J>|InvalidCaps<C,J>}
69
+ * @returns {ParsedDriverCaps<C>|InvalidCaps<C>}
75
70
  */
76
- function parseCapsForInnerDriver(jsonwpCapabilities, w3cCapabilities, constraints = /** @type {C} */ ({}), defaultCapabilities = {}) {
77
- // Check if the caller sent JSONWP caps, W3C caps, or both
78
- const hasW3CCaps = lodash_1.default.isPlainObject(w3cCapabilities) &&
79
- (lodash_1.default.has(w3cCapabilities, 'alwaysMatch') || lodash_1.default.has(w3cCapabilities, 'firstMatch'));
80
- const hasJSONWPCaps = lodash_1.default.isPlainObject(jsonwpCapabilities);
81
- let desiredCaps = /** @type {ParsedDriverCaps<C>['desiredCaps']} */ ({});
82
- /** @type {ParsedDriverCaps<C>['processedW3CCapabilities']} */
83
- let processedW3CCapabilities;
84
- /** @type {ParsedDriverCaps<C>['processedJsonwpCapabilities']} */
85
- let processedJsonwpCapabilities;
86
- if (!hasW3CCaps) {
71
+ function parseCapsForInnerDriver(w3cCapabilities, constraints = /** @type {C} */ ({}), defaultCapabilities = {}) {
72
+ if (!(0, base_driver_1.isW3cCaps)(w3cCapabilities)) {
87
73
  return /** @type {InvalidCaps<C>} */ ({
88
- protocol: base_driver_1.PROTOCOLS.W3C,
89
74
  error: makeNonW3cCapsError(),
90
75
  });
91
76
  }
92
- const { W3C } = base_driver_1.PROTOCOLS;
93
- const protocol = W3C;
77
+ let desiredCaps = /** @type {ParsedDriverCaps<C>['desiredCaps']} */ ({});
78
+ /** @type {ParsedDriverCaps<C>['processedW3CCapabilities'] | undefined} */
79
+ let processedW3CCapabilities;
94
80
  // Make sure we don't mutate the original arguments
95
- jsonwpCapabilities = lodash_1.default.cloneDeep(jsonwpCapabilities);
96
81
  w3cCapabilities = lodash_1.default.cloneDeep(w3cCapabilities);
97
82
  defaultCapabilities = lodash_1.default.cloneDeep(defaultCapabilities);
98
83
  if (!lodash_1.default.isEmpty(defaultCapabilities)) {
99
- if (hasW3CCaps) {
100
- for (const [defaultCapKey, defaultCapValue] of lodash_1.default.toPairs(defaultCapabilities)) {
101
- let isCapAlreadySet = false;
102
- // Check if the key is already present in firstMatch entries
103
- for (const firstMatchEntry of w3cCapabilities.firstMatch ?? []) {
104
- if (lodash_1.default.isPlainObject(firstMatchEntry) &&
105
- lodash_1.default.has(removeAppiumPrefixes(firstMatchEntry), removeAppiumPrefix(defaultCapKey))) {
106
- isCapAlreadySet = true;
107
- break;
108
- }
109
- }
110
- // Check if the key is already present in alwaysMatch entries
111
- isCapAlreadySet =
112
- isCapAlreadySet ||
113
- (lodash_1.default.isPlainObject(w3cCapabilities.alwaysMatch) &&
114
- lodash_1.default.has(removeAppiumPrefixes(w3cCapabilities.alwaysMatch), removeAppiumPrefix(defaultCapKey)));
115
- if (isCapAlreadySet) {
116
- // Skip if the key is already present in the provided caps
117
- continue;
118
- }
119
- // Only add the default capability if it is not overridden
120
- if (lodash_1.default.isEmpty(w3cCapabilities.firstMatch)) {
121
- w3cCapabilities.firstMatch = /** @type {W3CCapabilities<C>['firstMatch']} */ ([
122
- { [defaultCapKey]: defaultCapValue },
123
- ]);
124
- }
125
- else {
126
- w3cCapabilities.firstMatch[0][defaultCapKey] = defaultCapValue;
84
+ for (const [defaultCapKey, defaultCapValue] of lodash_1.default.toPairs(defaultCapabilities)) {
85
+ let isCapAlreadySet = false;
86
+ // Check if the key is already present in firstMatch entries
87
+ for (const firstMatchEntry of w3cCapabilities.firstMatch ?? []) {
88
+ if (lodash_1.default.isPlainObject(firstMatchEntry) &&
89
+ lodash_1.default.has(removeAppiumPrefixes(firstMatchEntry), removeAppiumPrefix(defaultCapKey))) {
90
+ isCapAlreadySet = true;
91
+ break;
127
92
  }
128
93
  }
129
- }
130
- if (hasJSONWPCaps) {
131
- jsonwpCapabilities = {
132
- ...removeAppiumPrefixes(defaultCapabilities),
133
- ...jsonwpCapabilities,
134
- };
94
+ // Check if the key is already present in alwaysMatch entries
95
+ isCapAlreadySet =
96
+ isCapAlreadySet ||
97
+ (lodash_1.default.isPlainObject(w3cCapabilities.alwaysMatch) &&
98
+ lodash_1.default.has(removeAppiumPrefixes(w3cCapabilities.alwaysMatch), removeAppiumPrefix(defaultCapKey)));
99
+ if (isCapAlreadySet) {
100
+ // Skip if the key is already present in the provided caps
101
+ continue;
102
+ }
103
+ // Only add the default capability if it is not overridden
104
+ if (lodash_1.default.isEmpty(w3cCapabilities.firstMatch)) {
105
+ w3cCapabilities.firstMatch = /** @type {W3CCapabilities<C>['firstMatch']} */ ([
106
+ { [defaultCapKey]: defaultCapValue },
107
+ ]);
108
+ }
109
+ else {
110
+ w3cCapabilities.firstMatch[0][defaultCapKey] = defaultCapValue;
111
+ }
135
112
  }
136
113
  }
137
- // Get MJSONWP caps
138
- if (hasJSONWPCaps) {
139
- processedJsonwpCapabilities = { ...jsonwpCapabilities };
114
+ // Call the process capabilities algorithm to find matching caps on the W3C
115
+ // (see: https://github.com/jlipps/simple-wd-spec#processing-capabilities)
116
+ try {
117
+ desiredCaps = (0, base_driver_1.processCapabilities)(w3cCapabilities, constraints, true);
140
118
  }
141
- // Get W3C caps
142
- if (hasW3CCaps) {
143
- // Call the process capabilities algorithm to find matching caps on the W3C
144
- // (see: https://github.com/jlipps/simple-wd-spec#processing-capabilities)
145
- try {
146
- desiredCaps = (0, base_driver_1.processCapabilities)(w3cCapabilities, constraints, true);
147
- }
148
- catch (error) {
149
- logger_1.default.info(`Could not parse W3C capabilities: ${error.message}`);
150
- return /** @type {InvalidCaps<C,J>} */ ({
151
- desiredCaps,
152
- processedJsonwpCapabilities,
153
- processedW3CCapabilities,
154
- protocol,
155
- error,
156
- });
157
- }
158
- // Create a new w3c capabilities payload that contains only the matching caps in `alwaysMatch`
159
- processedW3CCapabilities = {
160
- alwaysMatch: { ...insertAppiumPrefixes(desiredCaps) },
161
- firstMatch: [{}],
162
- };
119
+ catch (error) {
120
+ logger_1.default.info(`Could not parse W3C capabilities: ${error.message}`);
121
+ return /** @type {InvalidCaps<C>} */ ({
122
+ desiredCaps,
123
+ processedW3CCapabilities,
124
+ error,
125
+ });
163
126
  }
164
- return /** @type {ParsedDriverCaps<C,J>} */ ({
127
+ // Create a new w3c capabilities payload that contains only the matching caps in `alwaysMatch`
128
+ processedW3CCapabilities = {
129
+ alwaysMatch: { ...insertAppiumPrefixes(desiredCaps) },
130
+ firstMatch: [{}],
131
+ };
132
+ return /** @type {ParsedDriverCaps<C>} */ ({
165
133
  desiredCaps,
166
- processedJsonwpCapabilities,
167
134
  processedW3CCapabilities,
168
- protocol,
169
135
  });
170
136
  }
171
137
  /**
@@ -350,7 +316,7 @@ function isPluginCommandArgs(args) {
350
316
  *
351
317
  * @param {4|6|null} family Either 4 to include ipv4 addresses only,
352
318
  * 6 to include ipv6 addresses only, or null to include all of them
353
- * @returns {os.NetworkInterfaceInfo[]} The list of matched interfcaes
319
+ * @returns {os.NetworkInterfaceInfo[]} The list of matched interfaces
354
320
  */
355
321
  function fetchInterfaces(family = null) {
356
322
  let familyValue = null;
@@ -432,55 +398,22 @@ function adler32(str, seed = null) {
432
398
  function isBroadcastIp(address) {
433
399
  return [exports.V4_BROADCAST_IP, exports.V6_BROADCAST_IP, `[${exports.V6_BROADCAST_IP}]`].includes(address);
434
400
  }
435
- /**
436
- * Validates the list of allowed/denied server features
437
- *
438
- * @param {string[]} features
439
- * @returns {string[]}
440
- */
441
- function validateFeatures(features) {
442
- const validator = (/** @type {string} */ fullName) => {
443
- const separatorPos = fullName.indexOf(FEATURE_NAME_SEPARATOR);
444
- // TODO: This is for the backward compatibility with Appium2
445
- // TODO: In Appium3 the separator will be mandatory
446
- if (separatorPos < 0) {
447
- return `${ALL_DRIVERS_MATCH}${FEATURE_NAME_SEPARATOR}${fullName}`;
448
- }
449
- const [automationName, featureName] = [
450
- fullName.substring(0, separatorPos),
451
- fullName.substring(separatorPos + 1)
452
- ];
453
- if (!automationName || !featureName) {
454
- throw new Error(`The full feature name must include both the destination automation name or the ` +
455
- `'${ALL_DRIVERS_MATCH}' wildcard to apply the feature to all installed drivers, and ` +
456
- `the feature name split by a colon, got '${fullName}' instead`);
457
- }
458
- return fullName;
459
- };
460
- return features.map(validator);
461
- }
462
401
  /**
463
402
  * @typedef {import('@appium/types').StringRecord} StringRecord
464
403
  * @typedef {import('@appium/types').BaseDriverCapConstraints} BaseDriverCapConstraints
465
404
  */
466
405
  /**
467
406
  * @template {Constraints} [C=BaseDriverCapConstraints]
468
- * @template [J=any]
469
407
  * @typedef ParsedDriverCaps
470
408
  * @property {Capabilities<C>} desiredCaps
471
- * @property {string} protocol
472
- * @property {J} [processedJsonwpCapabilities]
473
- * @property {W3CCapabilities<C>} [processedW3CCapabilities]
409
+ * @property {W3CCapabilities<C>} processedW3CCapabilities
474
410
  */
475
411
  /**
476
412
  * @todo protocol is more specific
477
413
  * @template {Constraints} [C=BaseDriverCapConstraints]
478
- * @template [J=any]
479
414
  * @typedef InvalidCaps
480
415
  * @property {Error} error
481
- * @property {string} protocol
482
416
  * @property {Capabilities<C>} [desiredCaps]
483
- * @property {J} [processedJsonwpCapabilities]
484
417
  * @property {W3CCapabilities<C>} [processedW3CCapabilities]
485
418
  */
486
419
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../lib/utils.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../lib/utils.js"],"names":[],"mappings":"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"}
package/lib/appium.js CHANGED
@@ -5,6 +5,7 @@ import {
5
5
  DriverCore,
6
6
  errors,
7
7
  isSessionCommand,
8
+ PROTOCOLS,
8
9
  CREATE_SESSION_COMMAND,
9
10
  DELETE_SESSION_COMMAND,
10
11
  GET_STATUS_COMMAND,
@@ -13,18 +14,15 @@ import {
13
14
  promoteAppiumOptions,
14
15
  promoteAppiumOptionsForObject,
15
16
  generateDriverLogPrefix,
17
+ isW3cCaps,
16
18
  } from '@appium/base-driver';
17
19
  import AsyncLock from 'async-lock';
18
- import {
19
- parseCapsForInnerDriver,
20
- pullSettings,
21
- makeNonW3cCapsError,
22
- validateFeatures,
23
- } from './utils';
20
+ import {parseCapsForInnerDriver, pullSettings, makeNonW3cCapsError} from './utils';
24
21
  import {util} from '@appium/support';
25
22
  import {getDefaultsForExtension} from './schema';
26
- import {DRIVER_TYPE, BIDI_BASE_PATH} from './constants';
23
+ import {DRIVER_TYPE, BIDI_BASE_PATH, SESSION_DISCOVERY_FEATURE} from './constants';
27
24
  import * as bidiCommands from './bidi-commands';
25
+ import * as insecureFeatures from './insecure-features';
28
26
  import * as inspectorCommands from './inspector-commands';
29
27
 
30
28
  const desiredCapabilityConstraints = /** @type {const} */ ({
@@ -188,18 +186,20 @@ class AppiumDriver extends DriverCore {
188
186
  });
189
187
  }
190
188
 
191
- async getSessions() {
189
+ /**
190
+ * Retrieve information about all active sessions.
191
+ * Results are returned only if the `session_discovery` insecure feature is enabled.
192
+ * @returns {Promise<import('@appium/types').TimestampedMultiSessionData[]>}
193
+ */
194
+ async getAppiumSessions () {
195
+ this.assertFeatureEnabled(SESSION_DISCOVERY_FEATURE);
192
196
  return _.toPairs(this.sessions).map(([id, driver]) => ({
193
197
  id,
198
+ created: driver.sessionCreationTimestampMs,
194
199
  capabilities: /** @type {import('@appium/types').DriverCaps<any>} */ (driver.caps),
195
200
  }));
196
201
  }
197
202
 
198
- async getAppiumSessions () {
199
- throw new errors.NotImplementedError('Not implemented yet. ' +
200
- 'Please check https://github.com/appium/appium/issues/20880 for more details.');
201
- }
202
-
203
203
  printNewSessionAnnouncement(driverName, driverVersion, driverBaseVersion) {
204
204
  this.log.info(
205
205
  driverVersion
@@ -253,50 +253,41 @@ class AppiumDriver extends DriverCore {
253
253
 
254
254
  /**
255
255
  * Create a new session
256
- * @param {W3CAppiumDriverCaps} jsonwpCaps JSONWP formatted desired capabilities
257
- * @param {W3CAppiumDriverCaps} [reqCaps] Required capabilities (JSONWP standard)
258
- * @param {W3CAppiumDriverCaps} [w3cCapabilities] W3C capabilities
256
+ *
257
+ * @param {W3CAppiumDriverCaps} w3cCapabilities1 W3C capabilities
258
+ * @param {W3CAppiumDriverCaps} [w3cCapabilities2] W3C capabilities (legacy)
259
+ * @param {W3CAppiumDriverCaps} [w3cCapabilities3] W3C capabilities (legacy)
259
260
  * @returns {Promise<SessionHandlerCreateResult>}
260
261
  */
261
- async createSession(jsonwpCaps, reqCaps, w3cCapabilities) {
262
+ async createSession(w3cCapabilities1, w3cCapabilities2, w3cCapabilities3) {
262
263
  const defaultCapabilities = _.cloneDeep(this.args.defaultCapabilities);
263
264
  const defaultSettings = pullSettings(defaultCapabilities);
264
- jsonwpCaps = _.cloneDeep(jsonwpCaps);
265
- const jwpSettings = {...defaultSettings, ...pullSettings(jsonwpCaps)};
266
- w3cCapabilities = _.cloneDeep(w3cCapabilities);
267
- if (
268
- !_.isPlainObject(w3cCapabilities) ||
269
- !(_.isArray(w3cCapabilities?.firstMatch) || _.isPlainObject(w3cCapabilities?.alwaysMatch))
270
- ) {
265
+ const w3cCapabilities = _.cloneDeep(
266
+ [w3cCapabilities3, w3cCapabilities2, w3cCapabilities1].find(isW3cCaps)
267
+ );
268
+ if (!w3cCapabilities) {
271
269
  throw makeNonW3cCapsError();
272
270
  }
273
- // It is possible that the client only provides caps using JSONWP standard,
274
- // although firstMatch/alwaysMatch properties are still present.
275
- // In such case we assume the client understands W3C protocol and merge the given
276
- // JSONWP caps to W3C caps
277
271
  const w3cSettings = {
278
- ...jwpSettings,
279
- ...pullSettings((w3cCapabilities ?? {}).alwaysMatch ?? {}),
272
+ ...defaultSettings,
273
+ ...pullSettings(w3cCapabilities.alwaysMatch ?? {}),
280
274
  };
281
- for (const firstMatchEntry of (w3cCapabilities ?? {}).firstMatch ?? []) {
275
+ for (const firstMatchEntry of w3cCapabilities.firstMatch ?? []) {
282
276
  Object.assign(w3cSettings, pullSettings(firstMatchEntry));
283
277
  }
284
278
 
285
- /** @type {string|undefined} */
286
- let protocol;
279
+ const protocol = PROTOCOLS.W3C;
287
280
  let innerSessionId, dCaps;
288
281
  try {
289
282
  // Parse the caps into a format that the InnerDriver will accept
290
283
  const parsedCaps = parseCapsForInnerDriver(
291
- jsonwpCaps,
292
284
  promoteAppiumOptions(/** @type {W3CAppiumDriverCaps} */ (w3cCapabilities)),
293
285
  this.desiredCapConstraints,
294
286
  defaultCapabilities ? promoteAppiumOptionsForObject(defaultCapabilities) : undefined,
295
287
  );
296
288
 
297
- const {desiredCaps, processedJsonwpCapabilities, processedW3CCapabilities} =
289
+ const {desiredCaps, processedW3CCapabilities} =
298
290
  /** @type {import('./utils').ParsedDriverCaps<AppiumDriverConstraints>} */ (parsedCaps);
299
- protocol = parsedCaps.protocol;
300
291
  const error = /** @type {import('./utils').InvalidCaps<AppiumDriverConstraints>} */ (
301
292
  parsedCaps
302
293
  ).error;
@@ -327,18 +318,7 @@ class AppiumDriver extends DriverCore {
327
318
 
328
319
  const driverInstance = /** @type {ExternalDriver} */ (new InnerDriver(this.args, true));
329
320
 
330
- // We want to assign security values directly on the driver. The driver
331
- // should not read security values from `this.opts` because those values
332
- // could have been set by a malicious user via capabilities, whereas we
333
- // want a guarantee the values were set by the appium server admin
334
- if (this.args.relaxedSecurityEnabled) {
335
- this.log.info(
336
- `Applying relaxed security to '${InnerDriver.name}' as per ` +
337
- `server command line argument. All insecure features will be ` +
338
- `enabled unless explicitly disabled by --deny-insecure`,
339
- );
340
- driverInstance.relaxedSecurityEnabled = true;
341
- }
321
+ this.configureDriverFeatures(driverInstance, driverName);
342
322
 
343
323
  // We also want to assign any new Bidi Commands that the driver has specified, including all
344
324
  // the standard bidi commands. But add a method existence guard since some old driver class
@@ -347,18 +327,6 @@ class AppiumDriver extends DriverCore {
347
327
  driverInstance.updateBidiCommands(InnerDriver.newBidiCommands ?? {});
348
328
  }
349
329
 
350
- if (!_.isEmpty(this.args.denyInsecure)) {
351
- this.log.info('Explicitly preventing use of insecure features:');
352
- this.args.denyInsecure.map((a) => this.log.info(` ${a}`));
353
- driverInstance.denyInsecure = validateFeatures(this.args.denyInsecure);
354
- }
355
-
356
- if (!_.isEmpty(this.args.allowInsecure)) {
357
- this.log.info('Explicitly enabling use of insecure features:');
358
- this.args.allowInsecure.map((a) => this.log.info(` ${a}`));
359
- driverInstance.allowInsecure = validateFeatures(this.args.allowInsecure);
360
- }
361
-
362
330
  // Likewise, any driver-specific CLI args that were passed in should be assigned directly to
363
331
  // the driver so that they cannot be mimicked by a malicious user sending in capabilities
364
332
  const cliArgs = this.getCliArgsForDriver(driverName);
@@ -390,12 +358,11 @@ class AppiumDriver extends DriverCore {
390
358
 
391
359
  try {
392
360
  [innerSessionId, dCaps] = await driverInstance.createSession(
393
- processedJsonwpCapabilities,
394
- reqCaps,
361
+ /** @type {any} */ (processedW3CCapabilities),
362
+ processedW3CCapabilities,
395
363
  processedW3CCapabilities,
396
364
  [...runningDriversData, ...otherPendingDriversData],
397
365
  );
398
- protocol = driverInstance.protocol;
399
366
  this.sessions[innerSessionId] = driverInstance;
400
367
  } finally {
401
368
  await pendingDriversGuard.acquire(AppiumDriver.name, () => {
@@ -420,12 +387,6 @@ class AppiumDriver extends DriverCore {
420
387
  JSON.stringify(w3cSettings),
421
388
  );
422
389
  await driverInstance.updateSettings(w3cSettings);
423
- } else if (driverInstance.isMjsonwpProtocol() && !_.isEmpty(jwpSettings)) {
424
- this.log.info(
425
- `Applying the initial values to Appium settings parsed from MJSONWP caps: ` +
426
- JSON.stringify(jwpSettings),
427
- );
428
- await driverInstance.updateSettings(jwpSettings);
429
390
  }
430
391
 
431
392
  // if the user has asked for bidi support, send our bidi url back to the user. The inner
@@ -922,6 +883,9 @@ class AppiumDriver extends DriverCore {
922
883
  onBidiServerError = bidiCommands.onBidiServerError;
923
884
  cleanupBidiSockets = bidiCommands.cleanupBidiSockets;
924
885
 
886
+ configureGlobalFeatures = insecureFeatures.configureGlobalFeatures;
887
+ configureDriverFeatures = insecureFeatures.configureDriverFeatures;
888
+
925
889
  listCommands = inspectorCommands.listCommands;
926
890
  listExtensions = inspectorCommands.listExtensions;
927
891
  }
@@ -109,7 +109,7 @@ export default class DriverCliCommand extends ExtensionCliCommand {
109
109
 
110
110
  if (!_.isEmpty(missingFields)) {
111
111
  throw new Error(
112
- `Driver "${installSpec}" did not expose correct fields for compability ` +
112
+ `Driver "${installSpec}" did not expose correct fields for compatibility ` +
113
113
  `with Appium. Missing fields: ${JSON.stringify(missingFields)}`
114
114
  );
115
115
  }
@@ -333,7 +333,7 @@ class ExtensionCliCommand {
333
333
  // contain the '@' symbol, as in `npm install @appium/fake-driver@1.2.0`
334
334
  let name;
335
335
  const splits = installSpec.split('@');
336
- if (installSpec[0] === '@') {
336
+ if (installSpec.startsWith('@')) {
337
337
  // this is the case where we have an npm org included in the package name
338
338
  [name, pkgVer] = [`@${splits[1]}`, splits[2]];
339
339
  } else {
package/lib/cli/parser.js CHANGED
@@ -31,7 +31,7 @@ export const EXTRA_ARGS = 'extraArgs';
31
31
 
32
32
  /**
33
33
  * If the parsed args do not contain any of these values, then we
34
- * will automatially inject the `server` subcommand.
34
+ * will automatically inject the `server` subcommand.
35
35
  */
36
36
  const NON_SERVER_ARGS = Object.freeze(
37
37
  new Set([SETUP_SUBCOMMAND, DRIVER_TYPE, PLUGIN_TYPE, SERVER_SUBCOMMAND, '-h', '--help', '-v', '--version'])
@@ -105,7 +105,7 @@ export default class PluginCliCommand extends ExtensionCliCommand {
105
105
 
106
106
  if (!_.isEmpty(missingFields)) {
107
107
  throw new Error(
108
- `Installed plugin "${installSpec}" did not expose correct fields for compability ` +
108
+ `Installed plugin "${installSpec}" did not expose correct fields for compatibility ` +
109
109
  `with Appium. Missing fields: ${JSON.stringify(missingFields)}`
110
110
  );
111
111
  }
package/lib/constants.js CHANGED
@@ -32,9 +32,11 @@ export const USE_ALL_PLUGINS = 'all';
32
32
  // npm package. I.e., these are the officially recognized plugins.
33
33
  export const KNOWN_PLUGINS = Object.freeze(
34
34
  /** @type {const} */ ({
35
- images: '@appium/images-plugin',
36
35
  'execute-driver': '@appium/execute-driver-plugin',
36
+ images: '@appium/images-plugin',
37
+ inspector: 'appium-inspector-plugin',
37
38
  'relaxed-caps': '@appium/relaxed-caps-plugin',
39
+ storage: '@appium/storage-plugin',
38
40
  'universal-xml': '@appium/universal-xml-plugin',
39
41
  }),
40
42
  );
@@ -114,3 +116,8 @@ export const BIDI_BASE_PATH = '/bidi';
114
116
  * a bidi socket
115
117
  */
116
118
  export const BIDI_EVENT_NAME = 'bidiEvent';
119
+
120
+ /**
121
+ * The name of the insecure feature that allows retrieving the list of active server sessions
122
+ */
123
+ export const SESSION_DISCOVERY_FEATURE = 'session_discovery';
@@ -464,7 +464,7 @@ export class ExtensionConfig {
464
464
  */
465
465
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
466
466
  getConfigProblems(extManifest, extName) {
467
- // shoud override this method if special validation is necessary for this extension type
467
+ // should override this method if special validation is necessary for this extension type
468
468
  return [];
469
469
  }
470
470