appium-xcuitest-driver 10.28.0 → 10.29.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/CHANGELOG.md +12 -0
- package/build/scripts/build-wda.d.mts +4 -1
- package/build/scripts/build-wda.d.mts.map +1 -1
- package/build/scripts/build-wda.mjs +32 -5
- package/build/scripts/build-wda.mjs.map +1 -1
- package/build/scripts/download-wda-sim.d.mts +4 -1
- package/build/scripts/download-wda-sim.d.mts.map +1 -1
- package/build/scripts/download-wda-sim.mjs +40 -16
- package/build/scripts/download-wda-sim.mjs.map +1 -1
- package/build/scripts/pair-appletv.d.mts +3 -0
- package/build/scripts/pair-appletv.d.mts.map +1 -0
- package/build/scripts/pair-appletv.mjs +42 -0
- package/build/scripts/pair-appletv.mjs.map +1 -0
- package/build/scripts/tunnel-creation.mjs +125 -90
- package/build/scripts/tunnel-creation.mjs.map +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/npm-shrinkwrap.json +29 -11
- package/package.json +3 -2
- package/scripts/build-wda.mjs +39 -5
- package/scripts/download-wda-sim.mjs +51 -16
- package/scripts/pair-appletv.mjs +56 -0
- package/scripts/tunnel-creation.mjs +139 -96
- package/build/scripts/utils.d.ts +0 -8
- package/build/scripts/utils.d.ts.map +0 -1
- package/build/scripts/utils.js +0 -20
- package/build/scripts/utils.js.map +0 -1
- package/scripts/utils.js +0 -16
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
## [10.29.0](https://github.com/appium/appium-xcuitest-driver/compare/v10.28.1...v10.29.0) (2026-03-14)
|
|
2
|
+
|
|
3
|
+
### Features
|
|
4
|
+
|
|
5
|
+
* Add script for pairing AppleTV over WiFi ([#2754](https://github.com/appium/appium-xcuitest-driver/issues/2754)) ([1912dd9](https://github.com/appium/appium-xcuitest-driver/commit/1912dd9549c303574100cb43b9732b3ebc84d16a))
|
|
6
|
+
|
|
7
|
+
## [10.28.1](https://github.com/appium/appium-xcuitest-driver/compare/v10.28.0...v10.28.1) (2026-03-13)
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* Update cleanup logic in the tunnel creation script ([#2751](https://github.com/appium/appium-xcuitest-driver/issues/2751)) ([2ba43d4](https://github.com/appium/appium-xcuitest-driver/commit/2ba43d4a8cb16a5a2cedcda642386d8aa6ae418a))
|
|
12
|
+
|
|
1
13
|
## [10.28.0](https://github.com/appium/appium-xcuitest-driver/compare/v10.27.0...v10.28.0) (2026-03-13)
|
|
2
14
|
|
|
3
15
|
### Features
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-wda.d.mts","sourceRoot":"","sources":["../../scripts/build-wda.mjs"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"build-wda.d.mts","sourceRoot":"","sources":["../../scripts/build-wda.mjs"],"names":[],"mappings":";WA+Ec,MAAM,GAAG,SAAS;UAClB,MAAM,GAAG,SAAS"}
|
|
@@ -3,11 +3,14 @@ import * as xcode from 'appium-xcode';
|
|
|
3
3
|
import { Simctl } from 'node-simctl';
|
|
4
4
|
import { getSimulator } from 'appium-ios-simulator';
|
|
5
5
|
import { logger } from 'appium/support.js';
|
|
6
|
-
import {
|
|
6
|
+
import { Command } from 'commander';
|
|
7
7
|
const log = logger.getLogger('WDA');
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
/**
|
|
9
|
+
* @param {BuildOptions} [options]
|
|
10
|
+
*/
|
|
11
|
+
async function build(options) {
|
|
12
|
+
const customDevice = options?.name ?? null;
|
|
13
|
+
const platformVersion = options?.sdk || (await xcode.getMaxIOSSDK());
|
|
11
14
|
if (!platformVersion) {
|
|
12
15
|
throw new Error('Cannot determine iOS SDK version to build for. Please specify --sdk=<version> or ensure Xcode and its command-line tools are installed (try `xcodebuild -showsdks` or `xcode-select --print-path`).');
|
|
13
16
|
}
|
|
@@ -32,5 +35,29 @@ async function build() {
|
|
|
32
35
|
log.info(`Building WDA for ${deviceInfo.name} ${platformVersion} with udid '${deviceInfo.udid}' Simulator...`);
|
|
33
36
|
await wda.xcodebuild.start(true);
|
|
34
37
|
}
|
|
35
|
-
|
|
38
|
+
async function main() {
|
|
39
|
+
const program = new Command();
|
|
40
|
+
program
|
|
41
|
+
.name('appium driver run xcuitest build-wda')
|
|
42
|
+
.description('Build WebDriverAgent for a target iOS simulator')
|
|
43
|
+
.option('--name <deviceName>', 'Simulator name to build for (defaults to iPhone*)')
|
|
44
|
+
.option('--sdk <sdkVersion>', 'iOS SDK / platform version (e.g. 17.2)')
|
|
45
|
+
.addHelpText('after', `
|
|
46
|
+
EXAMPLES:
|
|
47
|
+
# Build WDA for default simulator
|
|
48
|
+
appium driver run xcuitest build-wda
|
|
49
|
+
|
|
50
|
+
# Build WDA for specific simulator and SDK
|
|
51
|
+
appium driver run xcuitest build-wda --name "iPhone 15" --sdk 17.2`)
|
|
52
|
+
.action(async (options) => {
|
|
53
|
+
await build(options);
|
|
54
|
+
});
|
|
55
|
+
await program.parseAsync(process.argv);
|
|
56
|
+
}
|
|
57
|
+
await main();
|
|
58
|
+
/**
|
|
59
|
+
* @typedef {Object} BuildOptions
|
|
60
|
+
* @property {string | undefined} [name]
|
|
61
|
+
* @property {string | undefined} [sdk]
|
|
62
|
+
*/
|
|
36
63
|
//# sourceMappingURL=build-wda.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-wda.mjs","sourceRoot":"","sources":["../../scripts/build-wda.mjs"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,EAAC,MAAM,EAAC,MAAM,aAAa,CAAC;AACnC,OAAO,EAAC,YAAY,EAAC,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAC,MAAM,EAAC,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"build-wda.mjs","sourceRoot":"","sources":["../../scripts/build-wda.mjs"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,EAAC,MAAM,EAAC,MAAM,aAAa,CAAC;AACnC,OAAO,EAAC,YAAY,EAAC,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAC,MAAM,EAAC,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAElC,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAEpC;;GAEG;AACH,KAAK,UAAU,KAAK,CAAC,OAAO;IAC1B,MAAM,YAAY,GAAG,OAAO,EAAE,IAAI,IAAI,IAAI,CAAC;IAC3C,MAAM,eAAe,GAAG,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;IAErE,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb,qMAAqM,CACtM,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IACzE,MAAM,oBAAoB,GAAG,CAAC,IAAI,EAAE,EAAE;QACpC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CACb,iCAAiC,eAAe,IAAI,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,GAAG,CAAC,CAAC,CAAC,EAAE,2EAA2E,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAChN,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IACF,MAAM,UAAU,GAAG,oBAAoB,CACrC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,IAAI,QAAQ,CAAC,CAAC,CACrE,CAAC;IACF,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC,IAAI,EAAE;QACjD,QAAQ,EAAE,UAAU,CAAC,QAAQ;QAC7B,cAAc,EAAE,KAAK;KACtB,CAAC,CAAC;IACH,MAAM,GAAG,GAAG,IAAI,cAAc,CAAC;QAC7B,aAAa,EAAE,eAAe;QAC9B,eAAe;QACf,YAAY,EAAE,IAAI;QAClB,MAAM;KACP,CAAC,CAAC;IACH,GAAG,CAAC,IAAI,CACN,oBAAoB,UAAU,CAAC,IAAI,IAAI,eAAe,eAAe,UAAU,CAAC,IAAI,gBAAgB,CACrG,CAAC;IACF,MAAM,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACnC,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,OAAO;SACJ,IAAI,CAAC,sCAAsC,CAAC;SAC5C,WAAW,CAAC,iDAAiD,CAAC;SAC9D,MAAM,CAAC,qBAAqB,EAAE,mDAAmD,CAAC;SAClF,MAAM,CAAC,oBAAoB,EAAE,wCAAwC,CAAC;SACtE,WAAW,CACV,OAAO,EACP;;;;;;qEAM+D,CAChE;SACA,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;IAEL,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,IAAI,EAAE,CAAC;AAEb;;;;GAIG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"download-wda-sim.d.mts","sourceRoot":"","sources":["../../scripts/download-wda-sim.mjs"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"download-wda-sim.d.mts","sourceRoot":"","sources":["../../scripts/download-wda-sim.mjs"],"names":[],"mappings":";YAwGc,MAAM;cACN,MAAM"}
|
|
@@ -2,16 +2,16 @@ import { fs, logger, zip, net, node } from 'appium/support.js';
|
|
|
2
2
|
import _ from 'lodash';
|
|
3
3
|
import os from 'node:os';
|
|
4
4
|
import path from 'node:path';
|
|
5
|
-
import {
|
|
5
|
+
import { Command } from 'commander';
|
|
6
6
|
const log = logger.getLogger('download-wda-sim');
|
|
7
|
-
const wdaUrl = (version, zipFileName) => `https://github.com/appium/WebDriverAgent/releases/download/v${version}/${zipFileName}`;
|
|
8
|
-
const destZip = (platform) => {
|
|
7
|
+
const wdaUrl = (/** @type {string} */ version, /** @type {string} */ zipFileName) => `https://github.com/appium/WebDriverAgent/releases/download/v${version}/${zipFileName}`;
|
|
8
|
+
const destZip = (/** @type {string} */ platform) => {
|
|
9
9
|
const scheme = `WebDriverAgentRunner${_.toLower(platform) === 'tvos' ? '_tvOS' : ''}`;
|
|
10
10
|
return `${scheme}-Build-Sim-${os.arch() === 'arm64' ? 'arm64' : 'x86_64'}.zip`;
|
|
11
11
|
};
|
|
12
12
|
/**
|
|
13
13
|
* Return installed appium-webdriveragent package version
|
|
14
|
-
* @returns {Promise<
|
|
14
|
+
* @returns {Promise<string>}
|
|
15
15
|
*/
|
|
16
16
|
async function webdriveragentPkgVersion() {
|
|
17
17
|
const moduleRoot = node.getModuleRootSync('appium-xcuitest-driver', import.meta.url);
|
|
@@ -19,29 +19,29 @@ async function webdriveragentPkgVersion() {
|
|
|
19
19
|
throw new Error('Cannot resolve module root for appium-xcuitest-driver');
|
|
20
20
|
}
|
|
21
21
|
const pkgPath = path.join(moduleRoot, 'node_modules', 'appium-webdriveragent', 'package.json');
|
|
22
|
-
|
|
22
|
+
const pkg = JSON.parse(await fs.readFile(pkgPath, 'utf8'));
|
|
23
|
+
return String(pkg.version);
|
|
23
24
|
}
|
|
24
25
|
;
|
|
25
26
|
/**
|
|
26
27
|
* Prepare the working root directory.
|
|
28
|
+
* @param {string} outdir
|
|
27
29
|
* @returns {Promise<string>} Root directory to download and unzip.
|
|
28
30
|
*/
|
|
29
|
-
async function prepareRootDir() {
|
|
30
|
-
const
|
|
31
|
-
if (!destDirRoot) {
|
|
32
|
-
throw new Error(`--outdir is required`);
|
|
33
|
-
}
|
|
34
|
-
const destDir = path.resolve(process.cwd(), destDirRoot);
|
|
31
|
+
async function prepareRootDir(outdir) {
|
|
32
|
+
const destDir = path.resolve(process.cwd(), outdir);
|
|
35
33
|
if (await fs.exists(destDir)) {
|
|
36
34
|
throw new Error(`${destDir} already exists`);
|
|
37
35
|
}
|
|
38
36
|
await fs.mkdir(destDir, { recursive: true });
|
|
39
37
|
return destDir;
|
|
40
38
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
39
|
+
/**
|
|
40
|
+
* @param {DownloadOptions} options
|
|
41
|
+
*/
|
|
42
|
+
async function getWDAPrebuiltPackage(options) {
|
|
43
|
+
const destDir = await prepareRootDir(options.outdir);
|
|
44
|
+
const zipFileName = destZip(options.platform);
|
|
45
45
|
const wdaVersion = await webdriveragentPkgVersion();
|
|
46
46
|
const urlToDownload = wdaUrl(wdaVersion, zipFileName);
|
|
47
47
|
const downloadedZipFile = path.join(destDir, zipFileName);
|
|
@@ -58,5 +58,29 @@ async function getWDAPrebuiltPackage() {
|
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
|
-
|
|
61
|
+
async function main() {
|
|
62
|
+
const program = new Command();
|
|
63
|
+
program
|
|
64
|
+
.name('appium driver run xcuitest download-wda-sim')
|
|
65
|
+
.description('Download a prebuilt WebDriverAgentRunner for iOS/tvOS simulator')
|
|
66
|
+
.requiredOption('--outdir <path>', 'Destination directory to download and unpack into')
|
|
67
|
+
.requiredOption('--platform <platform>', 'Target platform (e.g. iOS or tvOS)', (value) => value)
|
|
68
|
+
.addHelpText('after', `
|
|
69
|
+
EXAMPLES:
|
|
70
|
+
# Download WDA for iOS simulator
|
|
71
|
+
appium driver run xcuitest download-wda-sim --outdir ./wda-sim --platform iOS
|
|
72
|
+
|
|
73
|
+
# Download WDA for tvOS simulator
|
|
74
|
+
appium driver run xcuitest download-wda-sim --outdir ./wda-sim-tvos --platform tvOS`)
|
|
75
|
+
.action(async (options) => {
|
|
76
|
+
await getWDAPrebuiltPackage(options);
|
|
77
|
+
});
|
|
78
|
+
await program.parseAsync(process.argv);
|
|
79
|
+
}
|
|
80
|
+
await main();
|
|
81
|
+
/**
|
|
82
|
+
* @typedef {Object} DownloadOptions
|
|
83
|
+
* @property {string} outdir
|
|
84
|
+
* @property {string} platform
|
|
85
|
+
*/
|
|
62
86
|
//# sourceMappingURL=download-wda-sim.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"download-wda-sim.mjs","sourceRoot":"","sources":["../../scripts/download-wda-sim.mjs"],"names":[],"mappings":"AAAA,OAAO,EAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAC,MAAM,mBAAmB,CAAC;AAC7D,OAAO,CAAC,MAAM,QAAQ,CAAC;AACvB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"download-wda-sim.mjs","sourceRoot":"","sources":["../../scripts/download-wda-sim.mjs"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pair-appletv.d.mts","sourceRoot":"","sources":["../../scripts/pair-appletv.mjs"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Pair Apple TV / tvOS devices over WiFi for Remote XPC tunnels.
|
|
4
|
+
*
|
|
5
|
+
* This script wraps the Apple TV pairing support provided by the optional
|
|
6
|
+
* `appium-ios-remotexpc` dependency. It discovers Apple TV devices on the
|
|
7
|
+
* local network, lets you select one (or target it via a selector), and runs
|
|
8
|
+
* the pairing flow so that subsequent WiFi tunnels can be established.
|
|
9
|
+
*
|
|
10
|
+
* Usage (from Appium CLI):
|
|
11
|
+
*
|
|
12
|
+
* appium driver run xcuitest pair-appletv -- [options]
|
|
13
|
+
*
|
|
14
|
+
* Options:
|
|
15
|
+
* -d, --device <selector> Device selector:
|
|
16
|
+
* - Device name (e.g. "Living Room")
|
|
17
|
+
* - Device identifier (e.g. "AA:BB:CC:DD:EE:FF")
|
|
18
|
+
* - Device index (e.g. "0", "1", "2")
|
|
19
|
+
*/
|
|
20
|
+
import { logger } from 'appium/support.js';
|
|
21
|
+
import { Command } from 'commander';
|
|
22
|
+
import { AppleTVPairingService, UserInputService } from 'appium-ios-remotexpc';
|
|
23
|
+
const log = logger.getLogger('AppleTVPairing');
|
|
24
|
+
async function main() {
|
|
25
|
+
const program = new Command();
|
|
26
|
+
program
|
|
27
|
+
.name('appium driver run xcuitest pair-appletv')
|
|
28
|
+
.description('Pair Apple TV / tvOS devices over WiFi for Remote XPC tunnels')
|
|
29
|
+
.option('-d, --device <selector>', 'Apple TV device selector (name, identifier, or index)');
|
|
30
|
+
program.parse(process.argv);
|
|
31
|
+
const options = program.opts();
|
|
32
|
+
const userInput = new UserInputService();
|
|
33
|
+
const pairingService = new AppleTVPairingService(userInput);
|
|
34
|
+
const result = await pairingService.discoverAndPair(options.device);
|
|
35
|
+
if (!result.success) {
|
|
36
|
+
throw result.error ?? new Error('Pairing failed');
|
|
37
|
+
}
|
|
38
|
+
log.info('Pairing successful. ' +
|
|
39
|
+
`Use this identifier as the udid for WiFi tvOS tunnels: ${result.deviceId}`);
|
|
40
|
+
}
|
|
41
|
+
await main();
|
|
42
|
+
//# sourceMappingURL=pair-appletv.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pair-appletv.mjs","sourceRoot":"","sources":["../../scripts/pair-appletv.mjs"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAC,MAAM,EAAC,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAClC,OAAO,EAAC,qBAAqB,EAAE,gBAAgB,EAAC,MAAM,sBAAsB,CAAC;AAE7E,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;AAE/C,KAAK,UAAU,IAAI;IACjB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAC9B,OAAO;SACJ,IAAI,CAAC,yCAAyC,CAAC;SAC/C,WAAW,CAAC,+DAA+D,CAAC;SAC5E,MAAM,CACL,yBAAyB,EACzB,uDAAuD,CACxD,CAAC;IAEJ,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAE/B,MAAM,SAAS,GAAG,IAAI,gBAAgB,EAAE,CAAC;IACzC,MAAM,cAAc,GAAG,IAAI,qBAAqB,CAAC,SAAS,CAAC,CAAC;IAE5D,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAEpE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,MAAM,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;IACpD,CAAC;IAED,GAAG,CAAC,IAAI,CACN,sBAAsB;QACtB,0DAA0D,MAAM,CAAC,QAAQ,EAAE,CAC5E,CAAC;AACJ,CAAC;AAGD,MAAM,IAAI,EAAE,CAAC"}
|
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
* Test script for creating lockdown service, starting CoreDeviceProxy, and creating tunnel
|
|
4
4
|
* This script demonstrates the tunnel creation workflow for all connected devices
|
|
5
5
|
*/
|
|
6
|
-
import { logger, node } from 'appium/support.js';
|
|
6
|
+
import { logger, node, fs } from 'appium/support.js';
|
|
7
7
|
import _ from 'lodash';
|
|
8
8
|
import { PacketStreamServer, TunnelManager, createLockdownServiceByUDID, createUsbmux, startCoreDeviceProxy, startTunnelRegistryServer, } from 'appium-ios-remotexpc';
|
|
9
9
|
import { strongbox } from '@appium/strongbox';
|
|
10
10
|
import path from 'node:path';
|
|
11
|
-
import
|
|
11
|
+
import { Command } from 'commander';
|
|
12
12
|
const log = logger.getLogger('TunnelCreation');
|
|
13
13
|
const TUNNEL_REGISTRY_PORT = 'tunnelRegistryPort';
|
|
14
14
|
/**
|
|
@@ -77,41 +77,25 @@ class TunnelCreator {
|
|
|
77
77
|
return registry;
|
|
78
78
|
}
|
|
79
79
|
/**
|
|
80
|
-
*
|
|
80
|
+
* Cleanup resources for graceful shutdown
|
|
81
81
|
*/
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
log.warn(`Failed to close packet stream server for device ${udid}: ${err}`);
|
|
95
|
-
}
|
|
82
|
+
async cleanup() {
|
|
83
|
+
log.warn('Cleaning up tunnel resources...');
|
|
84
|
+
// Close all packet stream servers
|
|
85
|
+
if (this._packetStreamServers.size > 0) {
|
|
86
|
+
log.info(`Closing ${this._packetStreamServers.size} packet stream server(s)...`);
|
|
87
|
+
for (const [udid, server] of this._packetStreamServers) {
|
|
88
|
+
try {
|
|
89
|
+
await server.stop();
|
|
90
|
+
log.info(`Closed packet stream server for device ${udid}`);
|
|
91
|
+
}
|
|
92
|
+
catch (err) {
|
|
93
|
+
log.warn(`Failed to close packet stream server for device ${udid}: ${err}`);
|
|
96
94
|
}
|
|
97
|
-
this._packetStreamServers.clear();
|
|
98
95
|
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
// Handle various termination signals
|
|
103
|
-
process.on('SIGINT', () => cleanup('SIGINT (Ctrl+C)'));
|
|
104
|
-
process.on('SIGTERM', () => cleanup('SIGTERM'));
|
|
105
|
-
process.on('SIGHUP', () => cleanup('SIGHUP'));
|
|
106
|
-
// Handle uncaught exceptions and unhandled rejections
|
|
107
|
-
process.on('uncaughtException', async (error) => {
|
|
108
|
-
log.error('Uncaught Exception:', error);
|
|
109
|
-
await cleanup('Uncaught Exception');
|
|
110
|
-
});
|
|
111
|
-
process.on('unhandledRejection', async (reason, promise) => {
|
|
112
|
-
log.error('Unhandled Rejection at:', promise, 'reason:', reason);
|
|
113
|
-
await cleanup('Unhandled Rejection');
|
|
114
|
-
});
|
|
96
|
+
this._packetStreamServers.clear();
|
|
97
|
+
}
|
|
98
|
+
log.info('Cleanup completed.');
|
|
115
99
|
}
|
|
116
100
|
/**
|
|
117
101
|
* Create tunnel for a single device
|
|
@@ -222,76 +206,127 @@ class TunnelCreator {
|
|
|
222
206
|
log.info(' - GET /remotexpc/tunnels/metadata - Get registry metadata');
|
|
223
207
|
if (successful.length > 0) {
|
|
224
208
|
const firstUdid = successful[0].device.Properties.SerialNumber;
|
|
225
|
-
log.info(` curl http://localhost
|
|
209
|
+
log.info(` curl http://localhost:${this._tunnelRegistryPort}/remotexpc/tunnels/${firstUdid}`);
|
|
226
210
|
}
|
|
227
211
|
}
|
|
228
212
|
}
|
|
229
213
|
}
|
|
230
214
|
/**
|
|
231
|
-
*
|
|
232
|
-
*
|
|
233
|
-
*
|
|
234
|
-
* @
|
|
215
|
+
* Sets up signal and error handlers to ensure tunnels are cleaned up exactly once
|
|
216
|
+
* and an appropriate process exit code is set on shutdown.
|
|
217
|
+
*
|
|
218
|
+
* @param {TunnelCreator} tunnelCreator
|
|
219
|
+
* @returns {() => Promise<void>} cleanup function that can be awaited in a finally block
|
|
235
220
|
*/
|
|
236
|
-
function
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
log.
|
|
248
|
-
return value;
|
|
221
|
+
function setupCleanupHandlers(tunnelCreator) {
|
|
222
|
+
let shuttingDown = false;
|
|
223
|
+
const cleanupOnce = async () => {
|
|
224
|
+
if (shuttingDown) {
|
|
225
|
+
return;
|
|
226
|
+
}
|
|
227
|
+
shuttingDown = true;
|
|
228
|
+
try {
|
|
229
|
+
await tunnelCreator.cleanup();
|
|
230
|
+
}
|
|
231
|
+
catch (err) {
|
|
232
|
+
log.warn(`Error during tunnel cleanup: ${err?.message ?? err}`);
|
|
249
233
|
}
|
|
234
|
+
};
|
|
235
|
+
const shutdownSignals = ['SIGINT', 'SIGTERM', 'SIGHUP'];
|
|
236
|
+
for (const signal of shutdownSignals) {
|
|
237
|
+
process.on(signal, () => {
|
|
238
|
+
if (process.exitCode == null) {
|
|
239
|
+
// Follow conventional POSIX exit codes for signals where possible.
|
|
240
|
+
if (signal === 'SIGINT') {
|
|
241
|
+
process.exitCode = 130;
|
|
242
|
+
}
|
|
243
|
+
else if (signal === 'SIGTERM') {
|
|
244
|
+
process.exitCode = 143;
|
|
245
|
+
}
|
|
246
|
+
else {
|
|
247
|
+
process.exitCode = 1;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
void cleanupOnce();
|
|
251
|
+
});
|
|
250
252
|
}
|
|
251
|
-
|
|
253
|
+
process.on('unhandledRejection', (reason) => {
|
|
254
|
+
log.error('Unhandled promise rejection', reason);
|
|
255
|
+
if (process.exitCode == null) {
|
|
256
|
+
process.exitCode = 1;
|
|
257
|
+
}
|
|
258
|
+
void cleanupOnce();
|
|
259
|
+
});
|
|
260
|
+
process.on('uncaughtException', (err) => {
|
|
261
|
+
log.error('Uncaught exception', err);
|
|
262
|
+
if (process.exitCode == null) {
|
|
263
|
+
process.exitCode = 1;
|
|
264
|
+
}
|
|
265
|
+
void cleanupOnce();
|
|
266
|
+
});
|
|
267
|
+
return cleanupOnce;
|
|
252
268
|
}
|
|
253
|
-
;
|
|
254
|
-
const BOOTSTRAP_PATH = node.getModuleRootSync('appium-xcuitest-driver', import.meta.url);
|
|
255
|
-
/**
|
|
256
|
-
*/
|
|
257
269
|
async function main() {
|
|
258
|
-
|
|
270
|
+
const program = new Command();
|
|
271
|
+
program
|
|
272
|
+
.name('appium driver run xcuitest tunnel-creation')
|
|
273
|
+
.description('Create tunnels for connected iOS devices')
|
|
274
|
+
.option('--udid <udid>', 'UDID of the device to create tunnel for')
|
|
275
|
+
.option('--packet-stream-base-port <port>', 'Base port for packet stream servers (1-65535)', (value) => {
|
|
276
|
+
const port = Number.parseInt(value, 10);
|
|
277
|
+
if (!Number.isFinite(port) || port <= 0 || port > 65535) {
|
|
278
|
+
throw new Error(`Invalid packet stream base port: ${value}. Expected an integer between 1 and 65535.`);
|
|
279
|
+
}
|
|
280
|
+
return port;
|
|
281
|
+
})
|
|
282
|
+
.option('--tunnel-registry-port <port>', 'Port for the tunnel registry API server (1-65535)', (value) => {
|
|
283
|
+
const port = Number.parseInt(value, 10);
|
|
284
|
+
if (!Number.isFinite(port) || port <= 0 || port > 65535) {
|
|
285
|
+
throw new Error(`Invalid tunnel registry port: ${value}. Expected an integer between 1 and 65535.`);
|
|
286
|
+
}
|
|
287
|
+
return port;
|
|
288
|
+
});
|
|
289
|
+
program.parse(process.argv);
|
|
290
|
+
const options = program.opts();
|
|
259
291
|
const tunnelCreator = new TunnelCreator();
|
|
260
|
-
|
|
261
|
-
const args = process.argv.slice(2);
|
|
262
|
-
const specificUdid = parseArg(args, '--udid');
|
|
263
|
-
const packetStreamBasePort = parseArg(args, '--packet-stream-base-port');
|
|
264
|
-
if (packetStreamBasePort !== undefined) {
|
|
265
|
-
tunnelCreator.packetStreamBasePort = parseInt(packetStreamBasePort, 10);
|
|
266
|
-
}
|
|
267
|
-
const tunnelRegistryPort = parseArg(args, '--tunnel-registry-port');
|
|
268
|
-
if (tunnelRegistryPort !== undefined) {
|
|
269
|
-
tunnelCreator.tunnelRegistryPort = parseInt(tunnelRegistryPort, 10);
|
|
270
|
-
}
|
|
271
|
-
if (!BOOTSTRAP_PATH) {
|
|
272
|
-
throw new Error(`BOOTSTRAP_PATH is null`);
|
|
273
|
-
}
|
|
274
|
-
const packageInfo = JSON.parse(fs.readFileSync(path.join(BOOTSTRAP_PATH, 'package.json'), 'utf8'));
|
|
275
|
-
const box = strongbox(packageInfo.name);
|
|
276
|
-
try {
|
|
277
|
-
await box.createItemWithValue(TUNNEL_REGISTRY_PORT, String(tunnelCreator.tunnelRegistryPort));
|
|
278
|
-
}
|
|
279
|
-
catch (error) {
|
|
280
|
-
throw new Error(`Tunnel registry port cannot be persisted: ${error.message}`);
|
|
281
|
-
}
|
|
282
|
-
/** @type {import('tls').ConnectionOptions} */
|
|
283
|
-
const tlsOptions = {
|
|
284
|
-
rejectUnauthorized: false,
|
|
285
|
-
minVersion: 'TLSv1.2',
|
|
286
|
-
};
|
|
287
|
-
log.info('Connecting to usbmuxd...');
|
|
288
|
-
const usbmux = await createUsbmux();
|
|
292
|
+
const cleanupOnce = setupCleanupHandlers(tunnelCreator);
|
|
289
293
|
try {
|
|
290
|
-
|
|
294
|
+
if (options.packetStreamBasePort !== undefined) {
|
|
295
|
+
tunnelCreator.packetStreamBasePort = options.packetStreamBasePort;
|
|
296
|
+
}
|
|
297
|
+
if (options.tunnelRegistryPort !== undefined) {
|
|
298
|
+
tunnelCreator.tunnelRegistryPort = options.tunnelRegistryPort;
|
|
299
|
+
}
|
|
300
|
+
const moduleRoot = node.getModuleRootSync('appium-xcuitest-driver', import.meta.url);
|
|
301
|
+
if (!moduleRoot) {
|
|
302
|
+
throw new Error('Cannot resolve module root for appium-xcuitest-driver');
|
|
303
|
+
}
|
|
304
|
+
const packageJson = await fs.readFile(path.join(moduleRoot, 'package.json'), 'utf8');
|
|
305
|
+
const packageInfo = JSON.parse(packageJson);
|
|
306
|
+
const box = strongbox(packageInfo.name);
|
|
307
|
+
try {
|
|
308
|
+
await box.createItemWithValue(TUNNEL_REGISTRY_PORT, String(tunnelCreator.tunnelRegistryPort));
|
|
309
|
+
}
|
|
310
|
+
catch (error) {
|
|
311
|
+
throw new Error(`Tunnel registry port cannot be persisted: ${error.message}`);
|
|
312
|
+
}
|
|
313
|
+
/** @type {import('tls').ConnectionOptions} */
|
|
314
|
+
const tlsOptions = {
|
|
315
|
+
rejectUnauthorized: false,
|
|
316
|
+
minVersion: 'TLSv1.2',
|
|
317
|
+
};
|
|
318
|
+
log.info('Connecting to usbmuxd...');
|
|
319
|
+
const usbmux = await createUsbmux();
|
|
320
|
+
try {
|
|
321
|
+
await tunnelCreator.setupTunnels(usbmux, options.udid, tlsOptions);
|
|
322
|
+
}
|
|
323
|
+
finally {
|
|
324
|
+
await usbmux.close();
|
|
325
|
+
}
|
|
291
326
|
}
|
|
292
327
|
finally {
|
|
293
|
-
await
|
|
328
|
+
await cleanupOnce();
|
|
294
329
|
}
|
|
295
330
|
}
|
|
296
|
-
|
|
331
|
+
await main();
|
|
297
332
|
//# sourceMappingURL=tunnel-creation.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tunnel-creation.mjs","sourceRoot":"","sources":["../../scripts/tunnel-creation.mjs"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tunnel-creation.mjs","sourceRoot":"","sources":["../../scripts/tunnel-creation.mjs"],"names":[],"mappings":"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"}
|