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.
- package/build/lib/appium.d.ts +14 -9
- package/build/lib/appium.d.ts.map +1 -1
- package/build/lib/appium.js +27 -53
- package/build/lib/appium.js.map +1 -1
- package/build/lib/cli/driver-command.js +1 -1
- package/build/lib/cli/driver-command.js.map +1 -1
- package/build/lib/cli/extension-command.js +1 -1
- package/build/lib/cli/extension-command.js.map +1 -1
- package/build/lib/cli/parser.js +1 -1
- package/build/lib/cli/plugin-command.js +1 -1
- package/build/lib/cli/plugin-command.js.map +1 -1
- package/build/lib/constants.d.ts +7 -1
- package/build/lib/constants.d.ts.map +1 -1
- package/build/lib/constants.js +8 -2
- package/build/lib/constants.js.map +1 -1
- package/build/lib/extension/extension-config.js +1 -1
- package/build/lib/extension/extension-config.js.map +1 -1
- package/build/lib/insecure-features.d.ts +18 -0
- package/build/lib/insecure-features.d.ts.map +1 -0
- package/build/lib/insecure-features.js +116 -0
- package/build/lib/insecure-features.js.map +1 -0
- package/build/lib/main.d.ts +1 -1
- package/build/lib/main.d.ts.map +1 -1
- package/build/lib/main.js +3 -1
- package/build/lib/main.js.map +1 -1
- package/build/lib/schema/cli-args.d.ts +1 -1
- package/build/lib/schema/cli-args.js +1 -1
- package/build/lib/schema/cli-args.js.map +1 -1
- package/build/lib/schema/schema.d.ts +1 -1
- package/build/lib/schema/schema.js +1 -1
- package/build/lib/utils.d.ts +6 -19
- package/build/lib/utils.d.ts.map +1 -1
- package/build/lib/utils.js +51 -118
- package/build/lib/utils.js.map +1 -1
- package/lib/appium.js +33 -69
- package/lib/cli/driver-command.js +1 -1
- package/lib/cli/extension-command.js +1 -1
- package/lib/cli/parser.js +1 -1
- package/lib/cli/plugin-command.js +1 -1
- package/lib/constants.js +8 -1
- package/lib/extension/extension-config.js +1 -1
- package/lib/insecure-features.ts +129 -0
- package/lib/main.js +4 -1
- package/lib/schema/cli-args.js +2 -2
- package/lib/schema/schema.js +1 -1
- package/lib/utils.js +56 -131
- package/package.json +16 -16
package/build/lib/utils.js
CHANGED
|
@@ -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
|
|
69
|
+
* @returns {ParsedDriverCaps<C>|InvalidCaps<C>}
|
|
75
70
|
*/
|
|
76
|
-
function parseCapsForInnerDriver(
|
|
77
|
-
|
|
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
|
-
|
|
93
|
-
|
|
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
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
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
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
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
|
-
//
|
|
138
|
-
|
|
139
|
-
|
|
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
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
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
|
-
|
|
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
|
|
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 {
|
|
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
|
/**
|
package/build/lib/utils.js.map
CHANGED
|
@@ -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
|
-
|
|
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
|
-
*
|
|
257
|
-
* @param {W3CAppiumDriverCaps}
|
|
258
|
-
* @param {W3CAppiumDriverCaps} [
|
|
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(
|
|
262
|
+
async createSession(w3cCapabilities1, w3cCapabilities2, w3cCapabilities3) {
|
|
262
263
|
const defaultCapabilities = _.cloneDeep(this.args.defaultCapabilities);
|
|
263
264
|
const defaultSettings = pullSettings(defaultCapabilities);
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
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
|
-
...
|
|
279
|
-
...pullSettings(
|
|
272
|
+
...defaultSettings,
|
|
273
|
+
...pullSettings(w3cCapabilities.alwaysMatch ?? {}),
|
|
280
274
|
};
|
|
281
|
-
for (const firstMatchEntry of
|
|
275
|
+
for (const firstMatchEntry of w3cCapabilities.firstMatch ?? []) {
|
|
282
276
|
Object.assign(w3cSettings, pullSettings(firstMatchEntry));
|
|
283
277
|
}
|
|
284
278
|
|
|
285
|
-
|
|
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,
|
|
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
|
-
|
|
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
|
-
|
|
394
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
//
|
|
467
|
+
// should override this method if special validation is necessary for this extension type
|
|
468
468
|
return [];
|
|
469
469
|
}
|
|
470
470
|
|