@appium/test-support 1.4.0 → 2.0.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.
- package/build/lib/index.d.ts +0 -6
- package/build/lib/index.d.ts.map +1 -1
- package/build/lib/index.js +1 -58
- package/build/lib/logger.js +2 -2
- package/build/tsconfig.tsbuildinfo +1 -1
- package/lib/index.js +0 -12
- package/lib/logger.js +1 -1
- package/package.json +6 -12
- package/build/lib/driver-e2e-suite.d.ts +0 -77
- package/build/lib/driver-e2e-suite.d.ts.map +0 -1
- package/build/lib/driver-e2e-suite.js +0 -388
- package/build/lib/driver-unit-suite.d.ts +0 -12
- package/build/lib/driver-unit-suite.d.ts.map +0 -1
- package/build/lib/driver-unit-suite.js +0 -564
- package/build/lib/helpers.d.ts +0 -19
- package/build/lib/helpers.d.ts.map +0 -1
- package/build/lib/helpers.js +0 -49
- package/build/lib/plugin-e2e-harness.d.ts +0 -67
- package/build/lib/plugin-e2e-harness.d.ts.map +0 -1
- package/build/lib/plugin-e2e-harness.js +0 -144
- package/lib/driver-e2e-suite.js +0 -463
- package/lib/driver-unit-suite.js +0 -642
- package/lib/helpers.js +0 -68
- package/lib/plugin-e2e-harness.js +0 -163
package/build/lib/helpers.d.ts
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Default test host
|
|
3
|
-
*/
|
|
4
|
-
export const TEST_HOST: "127.0.0.1";
|
|
5
|
-
/**
|
|
6
|
-
* Returns a free port; one per process
|
|
7
|
-
* @param {boolean} [force] - If true, do not reuse the port (if it already exists)
|
|
8
|
-
* @returns {Promise<number>} a free port
|
|
9
|
-
*/
|
|
10
|
-
export function getTestPort(force?: boolean | undefined): Promise<number>;
|
|
11
|
-
/**
|
|
12
|
-
* Build an Appium URL from components.
|
|
13
|
-
*
|
|
14
|
-
* **All** parameters are required. Provide an empty string (`''`) if you don't need one.
|
|
15
|
-
* To rearrange arguments (if needed), use the placeholder from Lodash (`_`).
|
|
16
|
-
*
|
|
17
|
-
*/
|
|
18
|
-
export const createAppiumURL: import("lodash").CurriedFunction4<string, string | number, string | null, string, string>;
|
|
19
|
-
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../lib/helpers.js"],"names":[],"mappings":"AAGA;;GAEG;AACH,oCAA8B;AAI9B;;;;GAIG;AACH,0DAFa,QAAQ,MAAM,CAAC,CAW3B;AAED;;;;;;GAMG;AACH,wHAgCE"}
|
package/build/lib/helpers.js
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports.createAppiumURL = exports.TEST_HOST = void 0;
|
|
9
|
-
exports.getTestPort = getTestPort;
|
|
10
|
-
|
|
11
|
-
require("source-map-support/register");
|
|
12
|
-
|
|
13
|
-
var _getPort = _interopRequireDefault(require("get-port"));
|
|
14
|
-
|
|
15
|
-
var _lodash = require("lodash");
|
|
16
|
-
|
|
17
|
-
const TEST_HOST = '127.0.0.1';
|
|
18
|
-
exports.TEST_HOST = TEST_HOST;
|
|
19
|
-
let testPort;
|
|
20
|
-
|
|
21
|
-
async function getTestPort(force = false) {
|
|
22
|
-
if (force || !testPort) {
|
|
23
|
-
let port = await (0, _getPort.default)();
|
|
24
|
-
|
|
25
|
-
if (!testPort) {
|
|
26
|
-
testPort = port;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
return port;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
return testPort;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
const createAppiumURL = (0, _lodash.curry)((address, port, session, pathname) => {
|
|
36
|
-
if (!/^https?:\/\//.test(address)) {
|
|
37
|
-
address = `http://${address}`;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
let path = session ? `session/${session}` : '';
|
|
41
|
-
|
|
42
|
-
if (pathname) {
|
|
43
|
-
path = `${path}/${pathname}`;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
return new URL(path, `${address}:${port}`).href;
|
|
47
|
-
});
|
|
48
|
-
exports.createAppiumURL = createAppiumURL;
|
|
49
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJURVNUX0hPU1QiLCJ0ZXN0UG9ydCIsImdldFRlc3RQb3J0IiwiZm9yY2UiLCJwb3J0IiwiZ2V0UG9ydCIsImNyZWF0ZUFwcGl1bVVSTCIsImN1cnJ5IiwiYWRkcmVzcyIsInNlc3Npb24iLCJwYXRobmFtZSIsInRlc3QiLCJwYXRoIiwiVVJMIiwiaHJlZiJdLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9oZWxwZXJzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBnZXRQb3J0IGZyb20gJ2dldC1wb3J0JztcbmltcG9ydCB7Y3Vycnl9IGZyb20gJ2xvZGFzaCc7XG5cbi8qKlxuICogRGVmYXVsdCB0ZXN0IGhvc3RcbiAqL1xuY29uc3QgVEVTVF9IT1NUID0gJzEyNy4wLjAuMSc7XG5cbmxldCB0ZXN0UG9ydDtcblxuLyoqXG4gKiBSZXR1cm5zIGEgZnJlZSBwb3J0OyBvbmUgcGVyIHByb2Nlc3NcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2ZvcmNlXSAtIElmIHRydWUsIGRvIG5vdCByZXVzZSB0aGUgcG9ydCAoaWYgaXQgYWxyZWFkeSBleGlzdHMpXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxudW1iZXI+fSBhIGZyZWUgcG9ydFxuICovXG5hc3luYyBmdW5jdGlvbiBnZXRUZXN0UG9ydChmb3JjZSA9IGZhbHNlKSB7XG4gIGlmIChmb3JjZSB8fCAhdGVzdFBvcnQpIHtcbiAgICBsZXQgcG9ydCA9IGF3YWl0IGdldFBvcnQoKTtcbiAgICBpZiAoIXRlc3RQb3J0KSB7XG4gICAgICB0ZXN0UG9ydCA9IHBvcnQ7XG4gICAgfVxuICAgIHJldHVybiBwb3J0O1xuICB9XG4gIHJldHVybiB0ZXN0UG9ydDtcbn1cblxuLyoqXG4gKiBCdWlsZCBhbiBBcHBpdW0gVVJMIGZyb20gY29tcG9uZW50cy5cbiAqXG4gKiAqKkFsbCoqIHBhcmFtZXRlcnMgYXJlIHJlcXVpcmVkLiAgUHJvdmlkZSBhbiBlbXB0eSBzdHJpbmcgKGAnJ2ApIGlmIHlvdSBkb24ndCBuZWVkIG9uZS5cbiAqIFRvIHJlYXJyYW5nZSBhcmd1bWVudHMgKGlmIG5lZWRlZCksIHVzZSB0aGUgcGxhY2Vob2xkZXIgZnJvbSBMb2Rhc2ggKGBfYCkuXG4gKlxuICovXG5jb25zdCBjcmVhdGVBcHBpdW1VUkwgPSBjdXJyeShcbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhZGRyZXNzIC0gQmFzZSBhZGRyZXNzICh3LyBvcHRpb25hbCBwcm90b2NvbClcbiAgICogQHBhcmFtIHtzdHJpbmd8bnVtYmVyfSBwb3J0IC0gUG9ydCBudW1iZXJcbiAgICogQHBhcmFtIHtzdHJpbmc/fSBzZXNzaW9uIC0gU2Vzc2lvbiBJRFxuICAgKiBAcGFyYW0ge3N0cmluZ30gcGF0aG5hbWUgLSBFeHRyYSBwYXRoXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IE5ldyBVUkxcbiAgICogQGV4YW1wbGVcbiAgICpcbiAgICogaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbiAgICpcbiAgICogLy8gaHR0cDovLzEyNy4wLjAuMTozMTMzNy9zZXNzaW9uXG4gICAqIGNyZWF0ZUFwcGl1bVVSTCgnMTI3LjAuMC4xJywgMzEzMzcsICcnLCAnc2Vzc2lvbicpXG4gICAqXG4gICAqIC8vIGh0dHA6Ly8xMjcuMC4wLjE6MzEzMzcvc2Vzc2lvbi9hc2RmZ2prbFxuICAgKiBjb25zdCBjcmVhdGVTZXNzaW9uVVJMID0gY3JlYXRlQXBwaXVtVVJMKCcxMjcuMC4wLjEnLCAzMTMzNywgXywgJ3Nlc3Npb24nKVxuICAgKiBjcmVhdGVTZXNzaW9uVVJMKCdhc2RmZ2prbCcpXG4gICAqXG4gICAqIC8vIGh0dHA6Ly8xMjcuMC4wLjE6MzEzMzcvc2Vzc2lvbi9hc2RmZ2prbC9hcHBpdW0vZXhlY3V0ZVxuICAgKiBjb25zdCBjcmVhdGVVUkxXaXRoUGF0aCA9IGNyZWF0ZUFwcGl1bVVSTCgnMTI3LjAuMC4xJywgMzEzMzcsICdhc2RmZ2prbCcpO1xuICAgKiBjcmVhdGVVUkxXaXRoUGF0aCgnYXBwaXVtL2V4ZWN1dGUnKVxuICAgKi9cbiAgKGFkZHJlc3MsIHBvcnQsIHNlc3Npb24sIHBhdGhuYW1lKSA9PiB7XG4gICAgaWYgKCEvXmh0dHBzPzpcXC9cXC8vLnRlc3QoYWRkcmVzcykpIHtcbiAgICAgIGFkZHJlc3MgPSBgaHR0cDovLyR7YWRkcmVzc31gO1xuICAgIH1cbiAgICBsZXQgcGF0aCA9IHNlc3Npb24gPyBgc2Vzc2lvbi8ke3Nlc3Npb259YCA6ICcnO1xuICAgIGlmIChwYXRobmFtZSkge1xuICAgICAgcGF0aCA9IGAke3BhdGh9LyR7cGF0aG5hbWV9YDtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBVUkwocGF0aCwgYCR7YWRkcmVzc306JHtwb3J0fWApLmhyZWY7XG4gIH1cbik7XG5cbmV4cG9ydCB7VEVTVF9IT1NULCBnZXRUZXN0UG9ydCwgY3JlYXRlQXBwaXVtVVJMfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBS0EsTUFBTUEsU0FBUyxHQUFHLFdBQWxCOztBQUVBLElBQUlDLFFBQUo7O0FBT0EsZUFBZUMsV0FBZixDQUEyQkMsS0FBSyxHQUFHLEtBQW5DLEVBQTBDO0VBQ3hDLElBQUlBLEtBQUssSUFBSSxDQUFDRixRQUFkLEVBQXdCO0lBQ3RCLElBQUlHLElBQUksR0FBRyxNQUFNLElBQUFDLGdCQUFBLEdBQWpCOztJQUNBLElBQUksQ0FBQ0osUUFBTCxFQUFlO01BQ2JBLFFBQVEsR0FBR0csSUFBWDtJQUNEOztJQUNELE9BQU9BLElBQVA7RUFDRDs7RUFDRCxPQUFPSCxRQUFQO0FBQ0Q7O0FBU0QsTUFBTUssZUFBZSxHQUFHLElBQUFDLGFBQUEsRUFzQnRCLENBQUNDLE9BQUQsRUFBVUosSUFBVixFQUFnQkssT0FBaEIsRUFBeUJDLFFBQXpCLEtBQXNDO0VBQ3BDLElBQUksQ0FBQyxlQUFlQyxJQUFmLENBQW9CSCxPQUFwQixDQUFMLEVBQW1DO0lBQ2pDQSxPQUFPLEdBQUksVUFBU0EsT0FBUSxFQUE1QjtFQUNEOztFQUNELElBQUlJLElBQUksR0FBR0gsT0FBTyxHQUFJLFdBQVVBLE9BQVEsRUFBdEIsR0FBMEIsRUFBNUM7O0VBQ0EsSUFBSUMsUUFBSixFQUFjO0lBQ1pFLElBQUksR0FBSSxHQUFFQSxJQUFLLElBQUdGLFFBQVMsRUFBM0I7RUFDRDs7RUFDRCxPQUFPLElBQUlHLEdBQUosQ0FBUUQsSUFBUixFQUFlLEdBQUVKLE9BQVEsSUFBR0osSUFBSyxFQUFqQyxFQUFvQ1UsSUFBM0M7QUFDRCxDQS9CcUIsQ0FBeEIifQ==
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Creates hooks to install a driver and a plugin and starts an Appium server w/ the given extensions.
|
|
3
|
-
* @param {E2ESetupOpts} opts
|
|
4
|
-
* @returns {void}
|
|
5
|
-
*/
|
|
6
|
-
export function pluginE2EHarness(opts: E2ESetupOpts): void;
|
|
7
|
-
export type E2ESetupOpts = {
|
|
8
|
-
/**
|
|
9
|
-
* - Path to Appium home directory
|
|
10
|
-
*/
|
|
11
|
-
appiumHome?: string | undefined;
|
|
12
|
-
/**
|
|
13
|
-
* - Mocha "before all" hook function
|
|
14
|
-
*/
|
|
15
|
-
before: Mocha.HookFunction;
|
|
16
|
-
/**
|
|
17
|
-
* - Mocha "after all" hook function
|
|
18
|
-
*/
|
|
19
|
-
after: Mocha.HookFunction;
|
|
20
|
-
/**
|
|
21
|
-
* - Arguments to pass to Appium server
|
|
22
|
-
*/
|
|
23
|
-
serverArgs?: any;
|
|
24
|
-
/**
|
|
25
|
-
* - Source of driver to install
|
|
26
|
-
*/
|
|
27
|
-
driverSource: import('appium/types').InstallType & string;
|
|
28
|
-
/**
|
|
29
|
-
* - Package name of driver to install
|
|
30
|
-
*/
|
|
31
|
-
driverPackage?: string | undefined;
|
|
32
|
-
/**
|
|
33
|
-
* - Name of driver to install
|
|
34
|
-
*/
|
|
35
|
-
driverName: string;
|
|
36
|
-
/**
|
|
37
|
-
* - Spec of driver to install
|
|
38
|
-
*/
|
|
39
|
-
driverSpec: string;
|
|
40
|
-
/**
|
|
41
|
-
* - Source of plugin to install
|
|
42
|
-
*/
|
|
43
|
-
pluginSource: import('appium/types').InstallType & string;
|
|
44
|
-
/**
|
|
45
|
-
* - Package name of plugin to install
|
|
46
|
-
*/
|
|
47
|
-
pluginPackage?: string | undefined;
|
|
48
|
-
/**
|
|
49
|
-
* - Spec of plugin to install
|
|
50
|
-
*/
|
|
51
|
-
pluginSpec: string;
|
|
52
|
-
/**
|
|
53
|
-
* - Name of plugin to install
|
|
54
|
-
*/
|
|
55
|
-
pluginName: string;
|
|
56
|
-
/**
|
|
57
|
-
* - Port to use for Appium server
|
|
58
|
-
*/
|
|
59
|
-
port?: number | undefined;
|
|
60
|
-
/**
|
|
61
|
-
* - Host to use for Appium server
|
|
62
|
-
*/
|
|
63
|
-
host?: string | undefined;
|
|
64
|
-
};
|
|
65
|
-
export type AppiumServer = import('@appium/types').AppiumServer;
|
|
66
|
-
export type AppiumEnv = import('appium/types').AppiumEnv;
|
|
67
|
-
//# sourceMappingURL=plugin-e2e-harness.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-e2e-harness.d.ts","sourceRoot":"","sources":["../../lib/plugin-e2e-harness.js"],"names":[],"mappings":"AASA;;;;GAIG;AACH,uCAHW,YAAY,GACV,IAAI,CA4HhB;;;;;;;;;;;;;;;;;;;;;kBAQa,OAAO,cAAc,EAAE,WAAW,GAAG,MAAM;;;;;;;;gBAE3C,MAAM;;;;gBACN,MAAM;;;;kBACN,OAAO,cAAc,EAAE,WAAW,GAAG,MAAM;;;;;;;;gBAE3C,MAAM;;;;gBACN,MAAM;;;;;;;;;;2BAMP,OAAO,eAAe,EAAE,YAAY;wBAIpC,OAAO,cAAc,EAAE,SAAS"}
|
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports.pluginE2EHarness = pluginE2EHarness;
|
|
9
|
-
|
|
10
|
-
require("source-map-support/register");
|
|
11
|
-
|
|
12
|
-
var _support = require("appium/support");
|
|
13
|
-
|
|
14
|
-
var _appium = require("appium");
|
|
15
|
-
|
|
16
|
-
var _getPort = _interopRequireDefault(require("get-port"));
|
|
17
|
-
|
|
18
|
-
var _logSymbols = require("log-symbols");
|
|
19
|
-
|
|
20
|
-
var _teen_process = require("teen_process");
|
|
21
|
-
|
|
22
|
-
const APPIUM_BIN = require.resolve('appium');
|
|
23
|
-
|
|
24
|
-
function pluginE2EHarness(opts) {
|
|
25
|
-
let {
|
|
26
|
-
appiumHome,
|
|
27
|
-
before,
|
|
28
|
-
after,
|
|
29
|
-
serverArgs = {},
|
|
30
|
-
driverSource,
|
|
31
|
-
driverPackage,
|
|
32
|
-
driverName,
|
|
33
|
-
driverSpec,
|
|
34
|
-
pluginSource,
|
|
35
|
-
pluginPackage,
|
|
36
|
-
pluginSpec,
|
|
37
|
-
pluginName,
|
|
38
|
-
port,
|
|
39
|
-
host
|
|
40
|
-
} = opts;
|
|
41
|
-
let server;
|
|
42
|
-
before(async function () {
|
|
43
|
-
const setupAppiumHome = async () => {
|
|
44
|
-
const env = { ...process.env
|
|
45
|
-
};
|
|
46
|
-
|
|
47
|
-
if (appiumHome) {
|
|
48
|
-
env.APPIUM_HOME = appiumHome;
|
|
49
|
-
await _support.fs.mkdirp(appiumHome);
|
|
50
|
-
console.log(`${_logSymbols.info} Set \`APPIUM_HOME\` to ${appiumHome}`);
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
return env;
|
|
54
|
-
};
|
|
55
|
-
|
|
56
|
-
const installDriver = async env => {
|
|
57
|
-
var _installedDrivers$dri;
|
|
58
|
-
|
|
59
|
-
console.log(`${_logSymbols.info} Checking if driver "${driverName}" is installed...`);
|
|
60
|
-
const driverListArgs = [APPIUM_BIN, 'driver', 'list', '--json'];
|
|
61
|
-
console.log(`${_logSymbols.info} Running: ${process.execPath} ${driverListArgs.join(' ')}`);
|
|
62
|
-
const {
|
|
63
|
-
stdout: driverListJson
|
|
64
|
-
} = await (0, _teen_process.exec)(process.execPath, driverListArgs, {
|
|
65
|
-
env
|
|
66
|
-
});
|
|
67
|
-
const installedDrivers = JSON.parse(driverListJson);
|
|
68
|
-
|
|
69
|
-
if (!((_installedDrivers$dri = installedDrivers[driverName]) !== null && _installedDrivers$dri !== void 0 && _installedDrivers$dri.installed)) {
|
|
70
|
-
console.log(`${_logSymbols.warning} Driver "${driverName}" not installed; installing...`);
|
|
71
|
-
const driverArgs = [APPIUM_BIN, 'driver', 'install', '--source', driverSource, driverSpec];
|
|
72
|
-
|
|
73
|
-
if (driverPackage) {
|
|
74
|
-
driverArgs.push('--package', driverPackage);
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
console.log(`${_logSymbols.info} Running: ${process.execPath} ${driverArgs.join(' ')}`);
|
|
78
|
-
await (0, _teen_process.exec)(process.execPath, driverArgs, {
|
|
79
|
-
env
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
console.log(`${_logSymbols.success} Installed driver "${driverName}"`);
|
|
84
|
-
};
|
|
85
|
-
|
|
86
|
-
const installPlugin = async env => {
|
|
87
|
-
var _installedPlugins$plu;
|
|
88
|
-
|
|
89
|
-
console.log(`${_logSymbols.info} Checking if plugin "${pluginName}" is installed...`);
|
|
90
|
-
const pluginListArgs = [APPIUM_BIN, 'plugin', 'list', '--json'];
|
|
91
|
-
const {
|
|
92
|
-
stdout: pluginListJson
|
|
93
|
-
} = await (0, _teen_process.exec)(process.execPath, pluginListArgs, {
|
|
94
|
-
env
|
|
95
|
-
});
|
|
96
|
-
const installedPlugins = JSON.parse(pluginListJson);
|
|
97
|
-
|
|
98
|
-
if (!((_installedPlugins$plu = installedPlugins[pluginName]) !== null && _installedPlugins$plu !== void 0 && _installedPlugins$plu.installed)) {
|
|
99
|
-
console.log(`${_logSymbols.warning} Plugin "${pluginName}" not installed; installing...`);
|
|
100
|
-
const pluginArgs = [APPIUM_BIN, 'plugin', 'install', '--source', pluginSource, pluginSpec];
|
|
101
|
-
|
|
102
|
-
if (pluginPackage) {
|
|
103
|
-
pluginArgs.push('--package', pluginPackage);
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
console.log(`${_logSymbols.info} Running: ${process.execPath} ${pluginArgs.join(' ')}`);
|
|
107
|
-
await (0, _teen_process.exec)(process.execPath, pluginArgs, {
|
|
108
|
-
env
|
|
109
|
-
});
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
console.log(`${_logSymbols.success} Installed plugin "${pluginName}"`);
|
|
113
|
-
};
|
|
114
|
-
|
|
115
|
-
const createServer = async () => {
|
|
116
|
-
if (!port) {
|
|
117
|
-
port = await (0, _getPort.default)();
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
console.log(`${_logSymbols.info} Will use port ${port} for Appium server`);
|
|
121
|
-
this.port = port;
|
|
122
|
-
const args = {
|
|
123
|
-
port,
|
|
124
|
-
address: host,
|
|
125
|
-
usePlugins: [pluginName],
|
|
126
|
-
useDrivers: [driverName],
|
|
127
|
-
appiumHome,
|
|
128
|
-
...serverArgs
|
|
129
|
-
};
|
|
130
|
-
server = await (0, _appium.main)(args);
|
|
131
|
-
};
|
|
132
|
-
|
|
133
|
-
const env = await setupAppiumHome();
|
|
134
|
-
await installDriver(env);
|
|
135
|
-
await installPlugin(env);
|
|
136
|
-
await createServer();
|
|
137
|
-
});
|
|
138
|
-
after(async function () {
|
|
139
|
-
if (server) {
|
|
140
|
-
await server.close();
|
|
141
|
-
}
|
|
142
|
-
});
|
|
143
|
-
}
|
|
144
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBUFBJVU1fQklOIiwicmVxdWlyZSIsInJlc29sdmUiLCJwbHVnaW5FMkVIYXJuZXNzIiwib3B0cyIsImFwcGl1bUhvbWUiLCJiZWZvcmUiLCJhZnRlciIsInNlcnZlckFyZ3MiLCJkcml2ZXJTb3VyY2UiLCJkcml2ZXJQYWNrYWdlIiwiZHJpdmVyTmFtZSIsImRyaXZlclNwZWMiLCJwbHVnaW5Tb3VyY2UiLCJwbHVnaW5QYWNrYWdlIiwicGx1Z2luU3BlYyIsInBsdWdpbk5hbWUiLCJwb3J0IiwiaG9zdCIsInNlcnZlciIsInNldHVwQXBwaXVtSG9tZSIsImVudiIsInByb2Nlc3MiLCJBUFBJVU1fSE9NRSIsImZzIiwibWtkaXJwIiwiY29uc29sZSIsImxvZyIsImluZm8iLCJpbnN0YWxsRHJpdmVyIiwiZHJpdmVyTGlzdEFyZ3MiLCJleGVjUGF0aCIsImpvaW4iLCJzdGRvdXQiLCJkcml2ZXJMaXN0SnNvbiIsImV4ZWMiLCJpbnN0YWxsZWREcml2ZXJzIiwiSlNPTiIsInBhcnNlIiwiaW5zdGFsbGVkIiwid2FybmluZyIsImRyaXZlckFyZ3MiLCJwdXNoIiwic3VjY2VzcyIsImluc3RhbGxQbHVnaW4iLCJwbHVnaW5MaXN0QXJncyIsInBsdWdpbkxpc3RKc29uIiwiaW5zdGFsbGVkUGx1Z2lucyIsInBsdWdpbkFyZ3MiLCJjcmVhdGVTZXJ2ZXIiLCJnZXRQb3J0IiwiYXJncyIsImFkZHJlc3MiLCJ1c2VQbHVnaW5zIiwidXNlRHJpdmVycyIsImFwcGl1bVNlcnZlciIsImNsb3NlIl0sInNvdXJjZXMiOlsiLi4vLi4vbGliL3BsdWdpbi1lMmUtaGFybmVzcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG5pbXBvcnQge2ZzfSBmcm9tICdhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQge21haW4gYXMgYXBwaXVtU2VydmVyfSBmcm9tICdhcHBpdW0nO1xuaW1wb3J0IGdldFBvcnQgZnJvbSAnZ2V0LXBvcnQnO1xuaW1wb3J0IHtpbmZvLCBzdWNjZXNzLCB3YXJuaW5nfSBmcm9tICdsb2ctc3ltYm9scyc7XG5pbXBvcnQge2V4ZWN9IGZyb20gJ3RlZW5fcHJvY2Vzcyc7XG5cbmNvbnN0IEFQUElVTV9CSU4gPSByZXF1aXJlLnJlc29sdmUoJ2FwcGl1bScpO1xuXG4vKipcbiAqIENyZWF0ZXMgaG9va3MgdG8gaW5zdGFsbCBhIGRyaXZlciBhbmQgYSBwbHVnaW4gYW5kIHN0YXJ0cyBhbiBBcHBpdW0gc2VydmVyIHcvIHRoZSBnaXZlbiBleHRlbnNpb25zLlxuICogQHBhcmFtIHtFMkVTZXR1cE9wdHN9IG9wdHNcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGx1Z2luRTJFSGFybmVzcyhvcHRzKSB7XG4gIGxldCB7XG4gICAgYXBwaXVtSG9tZSxcbiAgICBiZWZvcmUsXG4gICAgYWZ0ZXIsXG4gICAgc2VydmVyQXJncyA9IHt9LFxuICAgIGRyaXZlclNvdXJjZSxcbiAgICBkcml2ZXJQYWNrYWdlLFxuICAgIGRyaXZlck5hbWUsXG4gICAgZHJpdmVyU3BlYyxcbiAgICBwbHVnaW5Tb3VyY2UsXG4gICAgcGx1Z2luUGFja2FnZSxcbiAgICBwbHVnaW5TcGVjLFxuICAgIHBsdWdpbk5hbWUsXG4gICAgcG9ydCxcbiAgICBob3N0LFxuICB9ID0gb3B0cztcblxuICAvKipcbiAgICogQHR5cGUge0FwcGl1bVNlcnZlcn1cbiAgICovXG4gIGxldCBzZXJ2ZXI7XG5cbiAgYmVmb3JlKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBzZXR1cEFwcGl1bUhvbWUgPSBhc3luYyAoKSA9PiB7XG4gICAgICAvKipcbiAgICAgICAqIEB0eXBlIHtBcHBpdW1FbnZ9XG4gICAgICAgKi9cbiAgICAgIGNvbnN0IGVudiA9IHsuLi5wcm9jZXNzLmVudn07XG5cbiAgICAgIGlmIChhcHBpdW1Ib21lKSB7XG4gICAgICAgIGVudi5BUFBJVU1fSE9NRSA9IGFwcGl1bUhvbWU7XG4gICAgICAgIGF3YWl0IGZzLm1rZGlycChhcHBpdW1Ib21lKTtcbiAgICAgICAgY29uc29sZS5sb2coYCR7aW5mb30gU2V0IFxcYEFQUElVTV9IT01FXFxgIHRvICR7YXBwaXVtSG9tZX1gKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGVudjtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0FwcGl1bUVudn0gZW52XG4gICAgICovXG4gICAgY29uc3QgaW5zdGFsbERyaXZlciA9IGFzeW5jIChlbnYpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKGAke2luZm99IENoZWNraW5nIGlmIGRyaXZlciBcIiR7ZHJpdmVyTmFtZX1cIiBpcyBpbnN0YWxsZWQuLi5gKTtcbiAgICAgIGNvbnN0IGRyaXZlckxpc3RBcmdzID0gW0FQUElVTV9CSU4sICdkcml2ZXInLCAnbGlzdCcsICctLWpzb24nXTtcbiAgICAgIGNvbnNvbGUubG9nKGAke2luZm99IFJ1bm5pbmc6ICR7cHJvY2Vzcy5leGVjUGF0aH0gJHtkcml2ZXJMaXN0QXJncy5qb2luKCcgJyl9YCk7XG4gICAgICBjb25zdCB7c3Rkb3V0OiBkcml2ZXJMaXN0SnNvbn0gPSBhd2FpdCBleGVjKHByb2Nlc3MuZXhlY1BhdGgsIGRyaXZlckxpc3RBcmdzLCB7XG4gICAgICAgIGVudixcbiAgICAgIH0pO1xuICAgICAgY29uc3QgaW5zdGFsbGVkRHJpdmVycyA9IEpTT04ucGFyc2UoZHJpdmVyTGlzdEpzb24pO1xuXG4gICAgICBpZiAoIWluc3RhbGxlZERyaXZlcnNbZHJpdmVyTmFtZV0/Lmluc3RhbGxlZCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgJHt3YXJuaW5nfSBEcml2ZXIgXCIke2RyaXZlck5hbWV9XCIgbm90IGluc3RhbGxlZDsgaW5zdGFsbGluZy4uLmApO1xuICAgICAgICBjb25zdCBkcml2ZXJBcmdzID0gW0FQUElVTV9CSU4sICdkcml2ZXInLCAnaW5zdGFsbCcsICctLXNvdXJjZScsIGRyaXZlclNvdXJjZSwgZHJpdmVyU3BlY107XG4gICAgICAgIGlmIChkcml2ZXJQYWNrYWdlKSB7XG4gICAgICAgICAgZHJpdmVyQXJncy5wdXNoKCctLXBhY2thZ2UnLCBkcml2ZXJQYWNrYWdlKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zb2xlLmxvZyhgJHtpbmZvfSBSdW5uaW5nOiAke3Byb2Nlc3MuZXhlY1BhdGh9ICR7ZHJpdmVyQXJncy5qb2luKCcgJyl9YCk7XG4gICAgICAgIGF3YWl0IGV4ZWMocHJvY2Vzcy5leGVjUGF0aCwgZHJpdmVyQXJncywge1xuICAgICAgICAgIGVudixcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBjb25zb2xlLmxvZyhgJHtzdWNjZXNzfSBJbnN0YWxsZWQgZHJpdmVyIFwiJHtkcml2ZXJOYW1lfVwiYCk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqXG4gICAgICogQHBhcmFtIHtBcHBpdW1FbnZ9IGVudlxuICAgICAqL1xuICAgIGNvbnN0IGluc3RhbGxQbHVnaW4gPSBhc3luYyAoZW52KSA9PiB7XG4gICAgICBjb25zb2xlLmxvZyhgJHtpbmZvfSBDaGVja2luZyBpZiBwbHVnaW4gXCIke3BsdWdpbk5hbWV9XCIgaXMgaW5zdGFsbGVkLi4uYCk7XG4gICAgICBjb25zdCBwbHVnaW5MaXN0QXJncyA9IFtBUFBJVU1fQklOLCAncGx1Z2luJywgJ2xpc3QnLCAnLS1qc29uJ107XG4gICAgICBjb25zdCB7c3Rkb3V0OiBwbHVnaW5MaXN0SnNvbn0gPSBhd2FpdCBleGVjKHByb2Nlc3MuZXhlY1BhdGgsIHBsdWdpbkxpc3RBcmdzLCB7XG4gICAgICAgIGVudixcbiAgICAgIH0pO1xuICAgICAgY29uc3QgaW5zdGFsbGVkUGx1Z2lucyA9IEpTT04ucGFyc2UocGx1Z2luTGlzdEpzb24pO1xuXG4gICAgICBpZiAoIWluc3RhbGxlZFBsdWdpbnNbcGx1Z2luTmFtZV0/Lmluc3RhbGxlZCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgJHt3YXJuaW5nfSBQbHVnaW4gXCIke3BsdWdpbk5hbWV9XCIgbm90IGluc3RhbGxlZDsgaW5zdGFsbGluZy4uLmApO1xuICAgICAgICBjb25zdCBwbHVnaW5BcmdzID0gW0FQUElVTV9CSU4sICdwbHVnaW4nLCAnaW5zdGFsbCcsICctLXNvdXJjZScsIHBsdWdpblNvdXJjZSwgcGx1Z2luU3BlY107XG4gICAgICAgIGlmIChwbHVnaW5QYWNrYWdlKSB7XG4gICAgICAgICAgcGx1Z2luQXJncy5wdXNoKCctLXBhY2thZ2UnLCBwbHVnaW5QYWNrYWdlKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zb2xlLmxvZyhgJHtpbmZvfSBSdW5uaW5nOiAke3Byb2Nlc3MuZXhlY1BhdGh9ICR7cGx1Z2luQXJncy5qb2luKCcgJyl9YCk7XG4gICAgICAgIGF3YWl0IGV4ZWMocHJvY2Vzcy5leGVjUGF0aCwgcGx1Z2luQXJncywge1xuICAgICAgICAgIGVudixcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBjb25zb2xlLmxvZyhgJHtzdWNjZXNzfSBJbnN0YWxsZWQgcGx1Z2luIFwiJHtwbHVnaW5OYW1lfVwiYCk7XG4gICAgfTtcblxuICAgIGNvbnN0IGNyZWF0ZVNlcnZlciA9IGFzeW5jICgpID0+IHtcbiAgICAgIGlmICghcG9ydCkge1xuICAgICAgICBwb3J0ID0gYXdhaXQgZ2V0UG9ydCgpO1xuICAgICAgfVxuICAgICAgY29uc29sZS5sb2coYCR7aW5mb30gV2lsbCB1c2UgcG9ydCAke3BvcnR9IGZvciBBcHBpdW0gc2VydmVyYCk7XG4gICAgICB0aGlzLnBvcnQgPSBwb3J0O1xuXG4gICAgICAvKiogQHR5cGUge2ltcG9ydCgnYXBwaXVtJykuQXJnc30gKi9cbiAgICAgIGNvbnN0IGFyZ3MgPSB7XG4gICAgICAgIHBvcnQsXG4gICAgICAgIGFkZHJlc3M6IGhvc3QsXG4gICAgICAgIHVzZVBsdWdpbnM6IFtwbHVnaW5OYW1lXSxcbiAgICAgICAgdXNlRHJpdmVyczogW2RyaXZlck5hbWVdLFxuICAgICAgICBhcHBpdW1Ib21lLFxuICAgICAgICAuLi5zZXJ2ZXJBcmdzLFxuICAgICAgfTtcbiAgICAgIHNlcnZlciA9IC8qKiBAdHlwZSB7QXBwaXVtU2VydmVyfSAqLyAoYXdhaXQgYXBwaXVtU2VydmVyKGFyZ3MpKTtcbiAgICB9O1xuXG4gICAgY29uc3QgZW52ID0gYXdhaXQgc2V0dXBBcHBpdW1Ib21lKCk7XG4gICAgYXdhaXQgaW5zdGFsbERyaXZlcihlbnYpO1xuICAgIGF3YWl0IGluc3RhbGxQbHVnaW4oZW52KTtcbiAgICBhd2FpdCBjcmVhdGVTZXJ2ZXIoKTtcbiAgfSk7XG5cbiAgYWZ0ZXIoYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChzZXJ2ZXIpIHtcbiAgICAgIGF3YWl0IHNlcnZlci5jbG9zZSgpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogQHR5cGVkZWYgRTJFU2V0dXBPcHRzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2FwcGl1bUhvbWVdIC0gUGF0aCB0byBBcHBpdW0gaG9tZSBkaXJlY3RvcnlcbiAqIEBwcm9wZXJ0eSB7TW9jaGEuYmVmb3JlfSBiZWZvcmUgLSBNb2NoYSBcImJlZm9yZSBhbGxcIiBob29rIGZ1bmN0aW9uXG4gKiBAcHJvcGVydHkge01vY2hhLmFmdGVyfSBhZnRlciAtIE1vY2hhIFwiYWZ0ZXIgYWxsXCIgaG9vayBmdW5jdGlvblxuICogQHByb3BlcnR5IHtQYXJ0aWFsPGltcG9ydCgnYXBwaXVtJykuQXJncz59IFtzZXJ2ZXJBcmdzXSAtIEFyZ3VtZW50cyB0byBwYXNzIHRvIEFwcGl1bSBzZXJ2ZXJcbiAqIEBwcm9wZXJ0eSB7aW1wb3J0KCdhcHBpdW0vdHlwZXMnKS5JbnN0YWxsVHlwZSAmIHN0cmluZ30gZHJpdmVyU291cmNlIC0gU291cmNlIG9mIGRyaXZlciB0byBpbnN0YWxsXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2RyaXZlclBhY2thZ2VdIC0gUGFja2FnZSBuYW1lIG9mIGRyaXZlciB0byBpbnN0YWxsXG4gKiBAcHJvcGVydHkge3N0cmluZ30gZHJpdmVyTmFtZSAtIE5hbWUgb2YgZHJpdmVyIHRvIGluc3RhbGxcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBkcml2ZXJTcGVjIC0gU3BlYyBvZiBkcml2ZXIgdG8gaW5zdGFsbFxuICogQHByb3BlcnR5IHtpbXBvcnQoJ2FwcGl1bS90eXBlcycpLkluc3RhbGxUeXBlICYgc3RyaW5nfSBwbHVnaW5Tb3VyY2UgLSBTb3VyY2Ugb2YgcGx1Z2luIHRvIGluc3RhbGxcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbcGx1Z2luUGFja2FnZV0gLSBQYWNrYWdlIG5hbWUgb2YgcGx1Z2luIHRvIGluc3RhbGxcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBwbHVnaW5TcGVjIC0gU3BlYyBvZiBwbHVnaW4gdG8gaW5zdGFsbFxuICogQHByb3BlcnR5IHtzdHJpbmd9IHBsdWdpbk5hbWUgLSBOYW1lIG9mIHBsdWdpbiB0byBpbnN0YWxsXG4gKiBAcHJvcGVydHkge251bWJlcn0gW3BvcnRdIC0gUG9ydCB0byB1c2UgZm9yIEFwcGl1bSBzZXJ2ZXJcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbaG9zdF0gLSBIb3N0IHRvIHVzZSBmb3IgQXBwaXVtIHNlcnZlclxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLkFwcGl1bVNlcnZlcn0gQXBwaXVtU2VydmVyXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdhcHBpdW0vdHlwZXMnKS5BcHBpdW1FbnZ9IEFwcGl1bUVudlxuICovXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsVUFBVSxHQUFHQyxPQUFPLENBQUNDLE9BQVIsQ0FBZ0IsUUFBaEIsQ0FBbkI7O0FBT08sU0FBU0MsZ0JBQVQsQ0FBMEJDLElBQTFCLEVBQWdDO0VBQ3JDLElBQUk7SUFDRkMsVUFERTtJQUVGQyxNQUZFO0lBR0ZDLEtBSEU7SUFJRkMsVUFBVSxHQUFHLEVBSlg7SUFLRkMsWUFMRTtJQU1GQyxhQU5FO0lBT0ZDLFVBUEU7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
|