appium-xcuitest-driver 11.7.6 → 11.8.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/lib/commands/file-movement.d.ts +2 -1
- package/build/lib/commands/file-movement.d.ts.map +1 -1
- package/build/lib/commands/file-movement.js +22 -19
- package/build/lib/commands/file-movement.js.map +1 -1
- package/build/lib/device/real-device-management.d.ts +24 -4
- package/build/lib/device/real-device-management.d.ts.map +1 -1
- package/build/lib/device/real-device-management.js +96 -20
- package/build/lib/device/real-device-management.js.map +1 -1
- package/build/lib/device/zip-conduit-client.d.ts +45 -0
- package/build/lib/device/zip-conduit-client.d.ts.map +1 -0
- package/build/lib/device/zip-conduit-client.js +73 -0
- package/build/lib/device/zip-conduit-client.js.map +1 -0
- package/lib/commands/file-movement.ts +29 -21
- package/lib/device/real-device-management.ts +139 -32
- package/lib/device/zip-conduit-client.ts +83 -0
- package/npm-shrinkwrap.json +12 -12
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
## [11.8.0](https://github.com/appium/appium-xcuitest-driver/compare/v11.7.7...v11.8.0) (2026-06-02)
|
|
2
|
+
|
|
3
|
+
### Features
|
|
4
|
+
|
|
5
|
+
* **app:** use zip_conduit service for IPA installation/upgrade ([#2860](https://github.com/appium/appium-xcuitest-driver/issues/2860)) ([308ccfd](https://github.com/appium/appium-xcuitest-driver/commit/308ccfd1851a7bad1e0ae709aef617b32e07c922))
|
|
6
|
+
|
|
7
|
+
## [11.7.7](https://github.com/appium/appium-xcuitest-driver/compare/v11.7.6...v11.7.7) (2026-06-01)
|
|
8
|
+
|
|
9
|
+
### Miscellaneous Chores
|
|
10
|
+
|
|
11
|
+
* Tune AFC performance logging ([#2858](https://github.com/appium/appium-xcuitest-driver/issues/2858)) ([03a9145](https://github.com/appium/appium-xcuitest-driver/commit/03a91454a8db7571e401bd9dc6d42aae4552133a))
|
|
12
|
+
|
|
1
13
|
## [11.7.6](https://github.com/appium/appium-xcuitest-driver/compare/v11.7.5...v11.7.6) (2026-05-31)
|
|
2
14
|
|
|
3
15
|
### Miscellaneous Chores
|
|
@@ -3,10 +3,11 @@ import type { ContainerObject, ContainerRootSupplier } from './types';
|
|
|
3
3
|
/**
|
|
4
4
|
* Parses the actual path and the bundle identifier from the given path string.
|
|
5
5
|
*
|
|
6
|
+
* @param driver - The driver instance
|
|
6
7
|
* @param remotePath - Path string matching `CONTAINER_PATH_PATTERN`, e.g. `@bundle.id:container/relative/path`
|
|
7
8
|
* @param containerRootSupplier - Container root path supplier or explicit root
|
|
8
9
|
*/
|
|
9
|
-
export declare function parseContainerPath(
|
|
10
|
+
export declare function parseContainerPath(driver: XCUITestDriver, remotePath: string, containerRootSupplier?: ContainerRootSupplier | string): Promise<ContainerObject>;
|
|
10
11
|
/**
|
|
11
12
|
* Pushes the given data to a file on the remote device.
|
|
12
13
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-movement.d.ts","sourceRoot":"","sources":["../../../lib/commands/file-movement.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,WAAW,CAAC;AAC9C,OAAO,KAAK,EAAC,eAAe,EAAE,qBAAqB,EAAC,MAAM,SAAS,CAAC;AA+BpE
|
|
1
|
+
{"version":3,"file":"file-movement.d.ts","sourceRoot":"","sources":["../../../lib/commands/file-movement.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,WAAW,CAAC;AAC9C,OAAO,KAAK,EAAC,eAAe,EAAE,qBAAqB,EAAC,MAAM,SAAS,CAAC;AA+BpE;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,cAAc,EACtB,UAAU,EAAE,MAAM,EAClB,qBAAqB,CAAC,EAAE,qBAAqB,GAAG,MAAM,GACrD,OAAO,CAAC,eAAe,CAAC,CAkC1B;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,QAAQ,CAC5B,IAAI,EAAE,cAAc,EACpB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,GACrC,OAAO,CAAC,IAAI,CAAC,CAoBf;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,cAAc,EACpB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAEf;AAED;;;;;;;;;GASG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAUxF;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAE9F;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKhG;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ9F;AAED;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAO1F;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAEhG"}
|
|
@@ -31,10 +31,11 @@ const OBJECT_NOT_FOUND_ERROR_MESSAGE = 'OBJECT_NOT_FOUND';
|
|
|
31
31
|
/**
|
|
32
32
|
* Parses the actual path and the bundle identifier from the given path string.
|
|
33
33
|
*
|
|
34
|
+
* @param driver - The driver instance
|
|
34
35
|
* @param remotePath - Path string matching `CONTAINER_PATH_PATTERN`, e.g. `@bundle.id:container/relative/path`
|
|
35
36
|
* @param containerRootSupplier - Container root path supplier or explicit root
|
|
36
37
|
*/
|
|
37
|
-
async function parseContainerPath(remotePath, containerRootSupplier) {
|
|
38
|
+
async function parseContainerPath(driver, remotePath, containerRootSupplier) {
|
|
38
39
|
const match = CONTAINER_PATH_PATTERN.exec(remotePath);
|
|
39
40
|
if (!match) {
|
|
40
41
|
throw new Error(`It is expected that package identifier ` +
|
|
@@ -50,7 +51,7 @@ async function parseContainerPath(remotePath, containerRootSupplier) {
|
|
|
50
51
|
if (typeSeparatorPos > 0) {
|
|
51
52
|
if (typeSeparatorPos < bundleId.length - 1) {
|
|
52
53
|
containerType = bundleId.substring(typeSeparatorPos + 1);
|
|
53
|
-
|
|
54
|
+
driver.log.debug(`Parsed container type: ${containerType}`);
|
|
54
55
|
}
|
|
55
56
|
// Always strip the colon and everything after it
|
|
56
57
|
bundleId = bundleId.substring(0, typeSeparatorPos);
|
|
@@ -217,12 +218,12 @@ function verifyIsSubPath(originalPath, root) {
|
|
|
217
218
|
/**
|
|
218
219
|
* Create AFC client for file operations
|
|
219
220
|
*/
|
|
220
|
-
async function createAfcClient(opts = {}) {
|
|
221
|
+
async function createAfcClient(driver, opts = {}) {
|
|
221
222
|
const { bundleId, containerType } = opts;
|
|
222
|
-
const udid =
|
|
223
|
-
const useIos18 = (0, helpers_1.isIos18OrNewer)(
|
|
223
|
+
const udid = driver.device.udid;
|
|
224
|
+
const useIos18 = (0, helpers_1.isIos18OrNewer)(driver.opts);
|
|
224
225
|
if (bundleId) {
|
|
225
|
-
const skipDocumentsCheck =
|
|
226
|
+
const skipDocumentsCheck = driver.settings.getSettings().skipDocumentsContainerCheck ?? false;
|
|
226
227
|
return await afc_client_1.AfcClient.createForApp(udid, bundleId, useIos18, {
|
|
227
228
|
containerType: containerType ?? null,
|
|
228
229
|
skipDocumentsCheck,
|
|
@@ -233,10 +234,10 @@ async function createAfcClient(opts = {}) {
|
|
|
233
234
|
/**
|
|
234
235
|
* Create service for file operations
|
|
235
236
|
*/
|
|
236
|
-
async function createService(remotePath) {
|
|
237
|
+
async function createService(driver, remotePath) {
|
|
237
238
|
if (CONTAINER_PATH_PATTERN.test(remotePath)) {
|
|
238
|
-
const { bundleId, pathInContainer, containerType } = await parseContainerPath
|
|
239
|
-
const client = await createAfcClient
|
|
239
|
+
const { bundleId, pathInContainer, containerType } = await parseContainerPath(driver, remotePath);
|
|
240
|
+
const client = await createAfcClient(driver, { bundleId, containerType });
|
|
240
241
|
let relativePath = isDocumentsContainer(containerType)
|
|
241
242
|
? node_path_1.default.join(CONTAINER_DOCUMENTS_PATH, pathInContainer)
|
|
242
243
|
: pathInContainer;
|
|
@@ -246,7 +247,7 @@ async function createService(remotePath) {
|
|
|
246
247
|
}
|
|
247
248
|
return { client, relativePath };
|
|
248
249
|
}
|
|
249
|
-
const client = await createAfcClient
|
|
250
|
+
const client = await createAfcClient(driver, {});
|
|
250
251
|
return { client, relativePath: remotePath };
|
|
251
252
|
}
|
|
252
253
|
/**
|
|
@@ -261,7 +262,7 @@ async function pushFileToSimulator(remotePath, base64Data) {
|
|
|
261
262
|
const buffer = Buffer.from(base64Data, 'base64');
|
|
262
263
|
const device = this.device;
|
|
263
264
|
if (CONTAINER_PATH_PATTERN.test(remotePath)) {
|
|
264
|
-
const { bundleId, pathInContainer: dstPath } = await parseContainerPath
|
|
265
|
+
const { bundleId, pathInContainer: dstPath } = await parseContainerPath(this, remotePath, async (appBundle, containerType) => await device.simctl.getAppContainer(appBundle, containerType));
|
|
265
266
|
this.log.info(`Parsed bundle identifier '${bundleId}' from '${remotePath}'. ` +
|
|
266
267
|
`Will put the data into '${dstPath}'`);
|
|
267
268
|
if (!(await support_1.fs.exists(node_path_1.default.dirname(dstPath)))) {
|
|
@@ -290,9 +291,11 @@ async function pushFileToSimulator(remotePath, base64Data) {
|
|
|
290
291
|
* @param base64Data - Base-64 encoded content of the file to be uploaded.
|
|
291
292
|
*/
|
|
292
293
|
async function pushFileToRealDevice(remotePath, base64Data) {
|
|
293
|
-
const { client, relativePath } = await createService
|
|
294
|
+
const { client, relativePath } = await createService(this, remotePath);
|
|
294
295
|
try {
|
|
295
|
-
await (0, real_device_management_1.pushFile)(client, Buffer.from(base64Data, 'base64'), relativePath
|
|
296
|
+
await (0, real_device_management_1.pushFile)(client, Buffer.from(base64Data, 'base64'), relativePath, {
|
|
297
|
+
log: this.log,
|
|
298
|
+
});
|
|
296
299
|
}
|
|
297
300
|
catch (e) {
|
|
298
301
|
this.log.debug(e.stack);
|
|
@@ -319,7 +322,7 @@ async function pullFromSimulator(remotePath, isFile) {
|
|
|
319
322
|
let pathOnServer;
|
|
320
323
|
const device = this.device;
|
|
321
324
|
if (CONTAINER_PATH_PATTERN.test(remotePath)) {
|
|
322
|
-
const { bundleId, pathInContainer: dstPath } = await parseContainerPath
|
|
325
|
+
const { bundleId, pathInContainer: dstPath } = await parseContainerPath(this, remotePath, async (appBundle, containerType) => await device.simctl.getAppContainer(appBundle, containerType));
|
|
323
326
|
this.log.info(`Parsed bundle identifier '${bundleId}' from '${remotePath}'. ` +
|
|
324
327
|
`Will get the data from '${dstPath}'`);
|
|
325
328
|
pathOnServer = dstPath;
|
|
@@ -359,7 +362,7 @@ async function pullFromSimulator(remotePath, isFile) {
|
|
|
359
362
|
* @returns Base-64 encoded content of the remote file
|
|
360
363
|
*/
|
|
361
364
|
async function pullFromRealDevice(remotePath, isFile) {
|
|
362
|
-
const { client, relativePath } = await createService
|
|
365
|
+
const { client, relativePath } = await createService(this, remotePath);
|
|
363
366
|
try {
|
|
364
367
|
// Check if path is a directory
|
|
365
368
|
const isDirectory = await client.isDirectory(relativePath);
|
|
@@ -370,8 +373,8 @@ async function pullFromRealDevice(remotePath, isFile) {
|
|
|
370
373
|
throw new Error(`The requested path is not a folder. Path: '${remotePath}'`);
|
|
371
374
|
}
|
|
372
375
|
return isDirectory
|
|
373
|
-
? (await (0, real_device_management_1.pullFolder)(client, relativePath)).toString()
|
|
374
|
-
: (await (0, real_device_management_1.pullFile)(client, relativePath)).toString('base64');
|
|
376
|
+
? (await (0, real_device_management_1.pullFolder)(client, relativePath, { log: this.log })).toString()
|
|
377
|
+
: (await (0, real_device_management_1.pullFile)(client, relativePath, { log: this.log })).toString('base64');
|
|
375
378
|
}
|
|
376
379
|
finally {
|
|
377
380
|
await client.close();
|
|
@@ -392,7 +395,7 @@ async function deleteFromSimulator(remotePath) {
|
|
|
392
395
|
let pathOnServer;
|
|
393
396
|
const device = this.device;
|
|
394
397
|
if (CONTAINER_PATH_PATTERN.test(remotePath)) {
|
|
395
|
-
const { bundleId, pathInContainer: dstPath } = await parseContainerPath
|
|
398
|
+
const { bundleId, pathInContainer: dstPath } = await parseContainerPath(this, remotePath, async (appBundle, containerType) => await device.simctl.getAppContainer(appBundle, containerType));
|
|
396
399
|
this.log.info(`Parsed bundle identifier '${bundleId}' from '${remotePath}'. ` +
|
|
397
400
|
`'${dstPath}' will be deleted`);
|
|
398
401
|
pathOnServer = dstPath;
|
|
@@ -427,7 +430,7 @@ async function deleteFromSimulator(remotePath) {
|
|
|
427
430
|
* @returns Nothing
|
|
428
431
|
*/
|
|
429
432
|
async function deleteFromRealDevice(remotePath) {
|
|
430
|
-
const { client, relativePath } = await createService
|
|
433
|
+
const { client, relativePath } = await createService(this, remotePath);
|
|
431
434
|
try {
|
|
432
435
|
await client.deleteDirectory(relativePath);
|
|
433
436
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-movement.js","sourceRoot":"","sources":["../../../lib/commands/file-movement.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"file-movement.js","sourceRoot":"","sources":["../../../lib/commands/file-movement.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,16 +4,23 @@ import type { XCUITestDriver, XCUITestDriverOpts } from '../driver';
|
|
|
4
4
|
import { AfcClient } from './afc-client';
|
|
5
5
|
export declare const IO_TIMEOUT_MS: number;
|
|
6
6
|
export declare const MAX_IO_CHUNK_SIZE = 8;
|
|
7
|
-
export interface
|
|
7
|
+
export interface AfcTransferOptions {
|
|
8
|
+
log?: AppiumLogger;
|
|
9
|
+
}
|
|
10
|
+
export interface PushFileOptions extends AfcTransferOptions {
|
|
8
11
|
/** The maximum count of milliseconds to wait until file push is completed. Cannot be lower than 60000ms */
|
|
9
12
|
timeoutMs?: number;
|
|
10
13
|
}
|
|
11
|
-
export interface PushFolderOptions {
|
|
14
|
+
export interface PushFolderOptions extends AfcTransferOptions {
|
|
12
15
|
/** The maximum timeout to wait until a single file is copied */
|
|
13
16
|
timeoutMs?: number;
|
|
14
17
|
/** Whether to push files in parallel. This usually gives better performance, but might sometimes be less stable. */
|
|
15
18
|
enableParallelPush?: boolean;
|
|
16
19
|
}
|
|
20
|
+
export interface PullFileOptions extends AfcTransferOptions {
|
|
21
|
+
}
|
|
22
|
+
export interface PullFolderOptions extends AfcTransferOptions {
|
|
23
|
+
}
|
|
17
24
|
export interface RealDeviceInstallOptions {
|
|
18
25
|
/** Application installation timeout in milliseconds */
|
|
19
26
|
timeoutMs?: number;
|
|
@@ -90,23 +97,36 @@ export declare class RealDevice {
|
|
|
90
97
|
bundleId?: string;
|
|
91
98
|
fullReset?: boolean;
|
|
92
99
|
}): Promise<void>;
|
|
100
|
+
/**
|
|
101
|
+
* Attempt a streaming zip_conduit install of an `.ipa` over RemoteXPC.
|
|
102
|
+
*
|
|
103
|
+
* @param appPath - Local path to the app package
|
|
104
|
+
* @param timeoutMs - Overall install timeout in milliseconds
|
|
105
|
+
* @returns `true` when the app was installed via zip_conduit; `false` when the
|
|
106
|
+
* package is not an eligible `.ipa`, the service is unavailable, or the
|
|
107
|
+
* streamed install failed. A `false` result tells the caller to fall back to
|
|
108
|
+
* the AFC upload + installation_proxy path.
|
|
109
|
+
*/
|
|
110
|
+
private installViaZipConduit;
|
|
93
111
|
}
|
|
94
112
|
/**
|
|
95
113
|
* Retrieve a file from a real device
|
|
96
114
|
*
|
|
97
115
|
* @param client AFC client instance
|
|
98
116
|
* @param remotePath Relative path to the file on the device
|
|
117
|
+
* @param opts Pull file options
|
|
99
118
|
* @returns The file content as a buffer
|
|
100
119
|
*/
|
|
101
|
-
export declare function pullFile(client: AfcClient, remotePath: string): Promise<Buffer>;
|
|
120
|
+
export declare function pullFile(client: AfcClient, remotePath: string, opts?: PullFileOptions): Promise<Buffer>;
|
|
102
121
|
/**
|
|
103
122
|
* Retrieve a folder from a real device
|
|
104
123
|
*
|
|
105
124
|
* @param client AFC client instance
|
|
106
125
|
* @param remoteRootPath Relative path to the folder on the device
|
|
126
|
+
* @param opts Pull folder options
|
|
107
127
|
* @returns The folder content as a zipped base64-encoded buffer
|
|
108
128
|
*/
|
|
109
|
-
export declare function pullFolder(client: AfcClient, remoteRootPath: string): Promise<Buffer>;
|
|
129
|
+
export declare function pullFolder(client: AfcClient, remoteRootPath: string, opts?: PullFolderOptions): Promise<Buffer>;
|
|
110
130
|
/**
|
|
111
131
|
* Pushes a file to a real device
|
|
112
132
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"real-device-management.d.ts","sourceRoot":"","sources":["../../../lib/device/real-device-management.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"real-device-management.d.ts","sourceRoot":"","sources":["../../../lib/device/real-device-management.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,7 @@ const asyncbox_1 = require("asyncbox");
|
|
|
18
18
|
const node_path_1 = __importDefault(require("node:path"));
|
|
19
19
|
const helpers_1 = require("../commands/helpers");
|
|
20
20
|
const utils_1 = require("../utils");
|
|
21
|
+
const constants_1 = require("../commands/constants");
|
|
21
22
|
const logger_1 = require("../logger");
|
|
22
23
|
const node_devicectl_1 = require("node-devicectl");
|
|
23
24
|
const afc_client_1 = require("./afc-client");
|
|
@@ -26,6 +27,7 @@ const installation_proxy_client_1 = require("./installation-proxy-client");
|
|
|
26
27
|
const notification_client_1 = require("./notification-client");
|
|
27
28
|
const lockdown_client_1 = require("./lockdown-client");
|
|
28
29
|
const app_termination_client_1 = require("./app-termination-client");
|
|
30
|
+
const zip_conduit_client_1 = require("./zip-conduit-client");
|
|
29
31
|
const DEFAULT_APP_INSTALLATION_TIMEOUT_MS = 8 * 60 * 1000;
|
|
30
32
|
exports.IO_TIMEOUT_MS = 4 * 60 * 1000;
|
|
31
33
|
// Mobile devices use NAND memory modules for the storage,
|
|
@@ -65,6 +67,12 @@ class RealDevice {
|
|
|
65
67
|
const { timeoutMs = exports.IO_TIMEOUT_MS } = opts;
|
|
66
68
|
const timer = new support_1.timing.Timer().start();
|
|
67
69
|
const useRemoteXPC = (0, helpers_1.isIos18OrNewer)(this.driverOpts);
|
|
70
|
+
// first try with zip_conduit service for iOS/tvOS 18+ and IPA only
|
|
71
|
+
// fall through to the AFC + installation_proxy path for other cases/zip_conduit failure
|
|
72
|
+
if (useRemoteXPC && (await this.installViaZipConduit(appPath, timeoutMs))) {
|
|
73
|
+
this.log.info(`The installation of '${bundleId}' succeeded after ${timer.getDuration().asMilliSeconds.toFixed(0)}ms`);
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
68
76
|
const afcClient = await afc_client_1.AfcClient.createForDevice(this.udid, useRemoteXPC);
|
|
69
77
|
try {
|
|
70
78
|
let bundlePathOnPhone;
|
|
@@ -73,6 +81,7 @@ class RealDevice {
|
|
|
73
81
|
bundlePathOnPhone = `/${node_path_1.default.basename(appPath)}`;
|
|
74
82
|
await pushFile(afcClient, appPath, bundlePathOnPhone, {
|
|
75
83
|
timeoutMs,
|
|
84
|
+
log: this.log,
|
|
76
85
|
});
|
|
77
86
|
}
|
|
78
87
|
else {
|
|
@@ -80,6 +89,7 @@ class RealDevice {
|
|
|
80
89
|
await pushFolder(afcClient, appPath, bundlePathOnPhone, {
|
|
81
90
|
enableParallelPush: true,
|
|
82
91
|
timeoutMs,
|
|
92
|
+
log: this.log,
|
|
83
93
|
});
|
|
84
94
|
}
|
|
85
95
|
await this.installOrUpgradeApplication(bundlePathOnPhone, {
|
|
@@ -247,6 +257,42 @@ class RealDevice {
|
|
|
247
257
|
}
|
|
248
258
|
this.log.debug(`Reset: removed '${bundleId}'`);
|
|
249
259
|
}
|
|
260
|
+
/**
|
|
261
|
+
* Attempt a streaming zip_conduit install of an `.ipa` over RemoteXPC.
|
|
262
|
+
*
|
|
263
|
+
* @param appPath - Local path to the app package
|
|
264
|
+
* @param timeoutMs - Overall install timeout in milliseconds
|
|
265
|
+
* @returns `true` when the app was installed via zip_conduit; `false` when the
|
|
266
|
+
* package is not an eligible `.ipa`, the service is unavailable, or the
|
|
267
|
+
* streamed install failed. A `false` result tells the caller to fall back to
|
|
268
|
+
* the AFC upload + installation_proxy path.
|
|
269
|
+
*/
|
|
270
|
+
async installViaZipConduit(appPath, timeoutMs) {
|
|
271
|
+
// zip_conduit only accepts .ipa archives. Unpacked .app bundles (and any
|
|
272
|
+
// other non-.ipa package) must use the AFC + installation_proxy
|
|
273
|
+
// path, so anything that is not a regular .ipa file is skipped here.
|
|
274
|
+
if (!appPath.toLowerCase().endsWith(constants_1.IPA_EXT) || !(await support_1.fs.stat(appPath)).isFile()) {
|
|
275
|
+
return false;
|
|
276
|
+
}
|
|
277
|
+
let client = null;
|
|
278
|
+
try {
|
|
279
|
+
client = await zip_conduit_client_1.ZipConduitClient.create(this.udid, this.log);
|
|
280
|
+
if (!client) {
|
|
281
|
+
return false;
|
|
282
|
+
}
|
|
283
|
+
this.log.debug(`Installing '${node_path_1.default.basename(appPath)}' via streaming zip_conduit`);
|
|
284
|
+
await client.install(appPath, { timeoutMs });
|
|
285
|
+
return true;
|
|
286
|
+
}
|
|
287
|
+
catch (err) {
|
|
288
|
+
this.log.warn(`Fast zip_conduit install of '${node_path_1.default.basename(appPath)}' failed; falling back to ` +
|
|
289
|
+
`AFC upload + installation_proxy. Original error: ${err.message}`);
|
|
290
|
+
return false;
|
|
291
|
+
}
|
|
292
|
+
finally {
|
|
293
|
+
await client?.close();
|
|
294
|
+
}
|
|
295
|
+
}
|
|
250
296
|
}
|
|
251
297
|
exports.RealDevice = RealDevice;
|
|
252
298
|
/**
|
|
@@ -254,20 +300,29 @@ exports.RealDevice = RealDevice;
|
|
|
254
300
|
*
|
|
255
301
|
* @param client AFC client instance
|
|
256
302
|
* @param remotePath Relative path to the file on the device
|
|
303
|
+
* @param opts Pull file options
|
|
257
304
|
* @returns The file content as a buffer
|
|
258
305
|
*/
|
|
259
|
-
async function pullFile(client, remotePath) {
|
|
260
|
-
|
|
306
|
+
async function pullFile(client, remotePath, opts = {}) {
|
|
307
|
+
const log = opts.log ?? logger_1.log;
|
|
308
|
+
const timer = new support_1.timing.Timer().start();
|
|
309
|
+
const buffer = await (0, helpers_1.withTimeout)(client.getFileContents(remotePath), exports.IO_TIMEOUT_MS, `Timed out after ${exports.IO_TIMEOUT_MS}ms while pulling file from '${remotePath}'`);
|
|
310
|
+
logAfcTransferPerformance(log, 'download', buffer.length, remotePath, timer);
|
|
311
|
+
return buffer;
|
|
261
312
|
}
|
|
262
313
|
/**
|
|
263
314
|
* Retrieve a folder from a real device
|
|
264
315
|
*
|
|
265
316
|
* @param client AFC client instance
|
|
266
317
|
* @param remoteRootPath Relative path to the folder on the device
|
|
318
|
+
* @param opts Pull folder options
|
|
267
319
|
* @returns The folder content as a zipped base64-encoded buffer
|
|
268
320
|
*/
|
|
269
|
-
async function pullFolder(client, remoteRootPath) {
|
|
321
|
+
async function pullFolder(client, remoteRootPath, opts = {}) {
|
|
322
|
+
const log = opts.log ?? logger_1.log;
|
|
323
|
+
const timer = new support_1.timing.Timer().start();
|
|
270
324
|
const tmpFolder = await support_1.tempDir.openDir();
|
|
325
|
+
let totalBytes = 0;
|
|
271
326
|
try {
|
|
272
327
|
let localTopItem = null;
|
|
273
328
|
let countFilesSuccess = 0;
|
|
@@ -275,7 +330,7 @@ async function pullFolder(client, remoteRootPath) {
|
|
|
275
330
|
await client.pull(remoteRootPath, tmpFolder, {
|
|
276
331
|
recursive: true,
|
|
277
332
|
overwrite: true,
|
|
278
|
-
onEntry: async (
|
|
333
|
+
onEntry: async (_remotePath, localPath, isDirectory) => {
|
|
279
334
|
if (!localTopItem ||
|
|
280
335
|
localPath.split(node_path_1.default.sep).length < localTopItem.split(node_path_1.default.sep).length) {
|
|
281
336
|
localTopItem = localPath;
|
|
@@ -285,10 +340,14 @@ async function pullFolder(client, remoteRootPath) {
|
|
|
285
340
|
}
|
|
286
341
|
else {
|
|
287
342
|
++countFilesSuccess;
|
|
343
|
+
totalBytes += (await support_1.fs.stat(localPath)).size;
|
|
288
344
|
}
|
|
289
345
|
},
|
|
290
346
|
});
|
|
291
|
-
|
|
347
|
+
logAfcTransferPerformance(log, 'download', totalBytes, remoteRootPath, timer, {
|
|
348
|
+
fileCount: countFilesSuccess,
|
|
349
|
+
folderCount: countFolders,
|
|
350
|
+
});
|
|
292
351
|
return await support_1.zip.toInMemoryZip(localTopItem ? node_path_1.default.dirname(localTopItem) : tmpFolder, {
|
|
293
352
|
encodeToBase64: true,
|
|
294
353
|
});
|
|
@@ -308,21 +367,18 @@ async function pullFolder(client, remoteRootPath) {
|
|
|
308
367
|
* @param opts Push file options
|
|
309
368
|
*/
|
|
310
369
|
async function pushFile(client, localPathOrPayload, remotePath, opts = {}) {
|
|
311
|
-
const { timeoutMs = exports.IO_TIMEOUT_MS } = opts;
|
|
370
|
+
const { timeoutMs = exports.IO_TIMEOUT_MS, log = logger_1.log } = opts;
|
|
312
371
|
const timer = new support_1.timing.Timer().start();
|
|
313
372
|
await remoteMkdirp(client, node_path_1.default.dirname(remotePath));
|
|
314
|
-
// AfcClient handles the branching internally
|
|
315
373
|
const pushPromise = Buffer.isBuffer(localPathOrPayload)
|
|
316
374
|
? client.setFileContents(remotePath, localPathOrPayload)
|
|
317
375
|
: client.writeFromStream(remotePath, support_1.fs.createReadStream(localPathOrPayload, { autoClose: true }));
|
|
318
|
-
// Wrap with timeout
|
|
319
376
|
const actualTimeout = Math.max(timeoutMs, 60000);
|
|
320
377
|
await (0, helpers_1.withTimeout)(pushPromise, actualTimeout, `Timed out after ${actualTimeout}ms while pushing file to '${remotePath}'`);
|
|
321
378
|
const fileSize = Buffer.isBuffer(localPathOrPayload)
|
|
322
379
|
? localPathOrPayload.length
|
|
323
380
|
: (await support_1.fs.stat(localPathOrPayload)).size;
|
|
324
|
-
|
|
325
|
-
`to the remote location '${remotePath}' in ${timer.getDuration().asMilliSeconds.toFixed(0)}ms`);
|
|
381
|
+
logAfcTransferPerformance(log, 'upload', fileSize, remotePath, timer);
|
|
326
382
|
}
|
|
327
383
|
/**
|
|
328
384
|
* Pushes a folder to a real device
|
|
@@ -334,14 +390,14 @@ async function pushFile(client, localPathOrPayload, remotePath, opts = {}) {
|
|
|
334
390
|
* @param opts Push folder options
|
|
335
391
|
*/
|
|
336
392
|
async function pushFolder(client, srcRootPath, dstRootPath, opts = {}) {
|
|
337
|
-
const { timeoutMs = exports.IO_TIMEOUT_MS, enableParallelPush = false } = opts;
|
|
393
|
+
const { timeoutMs = exports.IO_TIMEOUT_MS, enableParallelPush = false, log = logger_1.log } = opts;
|
|
338
394
|
const timer = new support_1.timing.Timer().start();
|
|
339
395
|
const allItems =
|
|
340
396
|
/** @type {import('path-scurry').Path[]} */ /** @type {unknown} */ (await support_1.fs.glob('**', {
|
|
341
397
|
cwd: srcRootPath,
|
|
342
398
|
withFileTypes: true,
|
|
343
399
|
}));
|
|
344
|
-
|
|
400
|
+
log.debug(`Successfully scanned the tree structure of '${srcRootPath}'`);
|
|
345
401
|
// top-level folders go first
|
|
346
402
|
const foldersToPush = allItems
|
|
347
403
|
.filter((x) => x.isDirectory())
|
|
@@ -352,13 +408,17 @@ async function pushFolder(client, srcRootPath, dstRootPath, opts = {}) {
|
|
|
352
408
|
.filter((x) => !x.isDirectory())
|
|
353
409
|
.sort((a, b) => (b.size ?? 0) - (a.size ?? 0))
|
|
354
410
|
.map((x) => x.relative());
|
|
355
|
-
|
|
411
|
+
const totalBytes = allItems
|
|
412
|
+
.filter((x) => !x.isDirectory())
|
|
413
|
+
.reduce((sum, x) => sum + (x.size ?? 0), 0);
|
|
414
|
+
log.debug(`Got ${support_1.util.pluralize('folder', foldersToPush.length, true)} and ` +
|
|
356
415
|
`${support_1.util.pluralize('file', filesToPush.length, true)} to push`);
|
|
357
416
|
// Create the folder structure
|
|
358
417
|
try {
|
|
359
418
|
await client.deleteDirectory(dstRootPath);
|
|
360
419
|
}
|
|
361
420
|
catch { }
|
|
421
|
+
// do not forget about the root folder
|
|
362
422
|
await client.createDirectory(dstRootPath);
|
|
363
423
|
for (const relativeFolderPath of foldersToPush) {
|
|
364
424
|
let absoluteFolderPath = node_path_1.default.join(dstRootPath, relativeFolderPath);
|
|
@@ -369,8 +429,7 @@ async function pushFolder(client, srcRootPath, dstRootPath, opts = {}) {
|
|
|
369
429
|
await client.createDirectory(absoluteFolderPath);
|
|
370
430
|
}
|
|
371
431
|
}
|
|
372
|
-
|
|
373
|
-
logger_1.log.debug(`Successfully created the remote folder structure ` +
|
|
432
|
+
log.debug(`Successfully created the remote folder structure ` +
|
|
374
433
|
`(${support_1.util.pluralize('item', foldersToPush.length + 1, true)})`);
|
|
375
434
|
const _pushFile = async (relativePath) => {
|
|
376
435
|
const absoluteSourcePath = node_path_1.default.join(srcRootPath, relativePath);
|
|
@@ -381,7 +440,7 @@ async function pushFolder(client, srcRootPath, dstRootPath, opts = {}) {
|
|
|
381
440
|
await (0, helpers_1.withTimeout)(pushPromise, actualTimeout, `Timed out after ${actualTimeout}ms while pushing '${relativePath}' to '${absoluteDestinationPath}'`);
|
|
382
441
|
};
|
|
383
442
|
if (enableParallelPush) {
|
|
384
|
-
|
|
443
|
+
log.debug(`Proceeding to parallel files push (max ${exports.MAX_IO_CHUNK_SIZE} writers)`);
|
|
385
444
|
await (0, helpers_1.withTimeout)((0, asyncbox_1.asyncmap)(filesToPush, async (relativeFilePath) => {
|
|
386
445
|
await _pushFile(relativeFilePath);
|
|
387
446
|
const elapsedMs = timer.getDuration().asMilliSeconds;
|
|
@@ -391,7 +450,7 @@ async function pushFolder(client, srcRootPath, dstRootPath, opts = {}) {
|
|
|
391
450
|
}, { concurrency: exports.MAX_IO_CHUNK_SIZE }), Math.max(timeoutMs - timer.getDuration().asMilliSeconds, 60000));
|
|
392
451
|
}
|
|
393
452
|
else {
|
|
394
|
-
|
|
453
|
+
log.debug(`Proceeding to serial files push`);
|
|
395
454
|
for (const relativeFilePath of filesToPush) {
|
|
396
455
|
await _pushFile(relativeFilePath);
|
|
397
456
|
const elapsedMs = timer.getDuration().asMilliSeconds;
|
|
@@ -400,9 +459,10 @@ async function pushFolder(client, srcRootPath, dstRootPath, opts = {}) {
|
|
|
400
459
|
}
|
|
401
460
|
}
|
|
402
461
|
}
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
462
|
+
logAfcTransferPerformance(log, 'upload', totalBytes, dstRootPath, timer, {
|
|
463
|
+
fileCount: filesToPush.length,
|
|
464
|
+
folderCount: foldersToPush.length,
|
|
465
|
+
});
|
|
406
466
|
}
|
|
407
467
|
/**
|
|
408
468
|
* Get list of connected devices.
|
|
@@ -515,6 +575,22 @@ async function detectUdid() {
|
|
|
515
575
|
return udid;
|
|
516
576
|
}
|
|
517
577
|
// #region Private Helper Functions
|
|
578
|
+
function logAfcTransferPerformance(log, direction, byteCount, remotePath, timer, stats = {}) {
|
|
579
|
+
const elapsedMs = timer.getDuration().asMilliSeconds;
|
|
580
|
+
const elapsedSec = elapsedMs / 1000;
|
|
581
|
+
const preposition = direction === 'upload' ? 'to' : 'from';
|
|
582
|
+
const { fileCount, folderCount } = stats;
|
|
583
|
+
const itemSummary = fileCount !== undefined || folderCount !== undefined
|
|
584
|
+
? ` (${support_1.util.pluralize('file', fileCount ?? 0, true)}` +
|
|
585
|
+
`${folderCount !== undefined ? ` and ${support_1.util.pluralize('folder', folderCount, true)}` : ''})`
|
|
586
|
+
: '';
|
|
587
|
+
log.debug(`AFC ${direction} of ${support_1.util.toReadableSizeString(byteCount)} ${preposition} '${remotePath}'` +
|
|
588
|
+
`${itemSummary} completed in ${elapsedMs.toFixed(0)}ms`);
|
|
589
|
+
if (elapsedSec >= 1 && byteCount > 0) {
|
|
590
|
+
const bytesPerSec = Math.floor(byteCount / elapsedSec);
|
|
591
|
+
log.debug(`Approximate average AFC ${direction} speed: ${support_1.util.toReadableSizeString(bytesPerSec)}/s`);
|
|
592
|
+
}
|
|
593
|
+
}
|
|
518
594
|
/**
|
|
519
595
|
* If the environment variable enables APPIUM_XCUITEST_PREFER_DEVICECTL.
|
|
520
596
|
* This is a workaround for wireless tvOS.
|