appium-xcuitest-driver 11.7.7 → 11.8.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/CHANGELOG.md CHANGED
@@ -1,3 +1,15 @@
1
+ ## [11.8.1](https://github.com/appium/appium-xcuitest-driver/compare/v11.8.0...v11.8.1) (2026-06-03)
2
+
3
+ ### Bug Fixes
4
+
5
+ * Video attachments path for Xcode 26.5+ ([#2862](https://github.com/appium/appium-xcuitest-driver/issues/2862)) ([174ff70](https://github.com/appium/appium-xcuitest-driver/commit/174ff707cba80217197d81f9ee917e9abf66f973))
6
+
7
+ ## [11.8.0](https://github.com/appium/appium-xcuitest-driver/compare/v11.7.7...v11.8.0) (2026-06-02)
8
+
9
+ ### Features
10
+
11
+ * **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))
12
+
1
13
  ## [11.7.7](https://github.com/appium/appium-xcuitest-driver/compare/v11.7.6...v11.7.7) (2026-06-01)
2
14
 
3
15
  ### Miscellaneous Chores
@@ -1 +1 @@
1
- {"version":3,"file":"xctest-record-screen.d.ts","sourceRoot":"","sources":["../../../lib/commands/xctest-record-screen.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,WAAW,CAAC;AAG9C,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAC,yBAAyB,EAAE,qBAAqB,EAAC,MAAM,SAAS,CAAC;AAe9E;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,gCAAgC,CACpD,IAAI,EAAE,cAAc,EACpB,GAAG,CAAC,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,yBAAyB,CAAC,CA2BpC;AAED;;;GAGG;AACH,wBAAsB,kCAAkC,CACtD,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC,CAE3C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAsB,+BAA+B,CACnD,IAAI,EAAE,cAAc,EACpB,UAAU,CAAC,EAAE,MAAM,EACnB,IAAI,CAAC,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,WAAW,EACrB,aAAa,CAAC,EAAE,MAAM,EACtB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,EAClD,MAAM,GAAE,KAAK,GAAG,MAAM,GAAG,OAAe,GACvC,OAAO,CAAC,qBAAqB,CAAC,CAiFhC"}
1
+ {"version":3,"file":"xctest-record-screen.d.ts","sourceRoot":"","sources":["../../../lib/commands/xctest-record-screen.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,WAAW,CAAC;AAG9C,OAAO,KAAK,EAAe,WAAW,EAAC,MAAM,eAAe,CAAC;AAC7D,OAAO,KAAK,EAAC,yBAAyB,EAAE,qBAAqB,EAAC,MAAM,SAAS,CAAC;AAoH9E;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,gCAAgC,CACpD,IAAI,EAAE,cAAc,EACpB,GAAG,CAAC,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,yBAAyB,CAAC,CA2BpC;AAED;;;GAGG;AACH,wBAAsB,kCAAkC,CACtD,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC,CAE3C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAsB,+BAA+B,CACnD,IAAI,EAAE,cAAc,EACpB,UAAU,CAAC,EAAE,MAAM,EACnB,IAAI,CAAC,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,WAAW,EACrB,aAAa,CAAC,EAAE,MAAM,EACtB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,EAClD,MAAM,GAAE,KAAK,GAAG,MAAM,GAAG,OAAe,GACvC,OAAO,CAAC,qBAAqB,CAAC,CAgFhC"}
@@ -8,17 +8,102 @@ exports.mobileGetXctestScreenRecordingInfo = mobileGetXctestScreenRecordingInfo;
8
8
  exports.mobileStopXctestScreenRecording = mobileStopXctestScreenRecording;
9
9
  const support_1 = require("appium/support");
10
10
  const helpers_1 = require("./helpers");
11
- const utils_1 = require("../utils");
11
+ const node_os_1 = __importDefault(require("node:os"));
12
12
  const node_path_1 = __importDefault(require("node:path"));
13
13
  const xctest_attachment_deletion_client_1 = require("../device/xctest-attachment-deletion-client");
14
14
  const remotexpc_utils_1 = require("../device/remotexpc-utils");
15
15
  const MOV_EXT = '.mov';
16
+ /**
17
+ * On simulators XCTest stores screen recording attachments under
18
+ * `InternalDaemon/<id>/Attachments/<uuid>` (legacy) or
19
+ * `InternalDaemon/<id>/tmp/Attachments/<uuid>` (Xcode 26.5+).
20
+ * Brace `{,tmp/}` matches both in a single glob.
21
+ */
22
+ const SIMULATOR_XCTEST_RECORDING_ATTACHMENT_GLOB = '*/{,tmp/}Attachments/*';
16
23
  /** Insecure feature when real-device XCTest recording is used without RemoteXPC attachment deletion. */
17
24
  const XCTEST_SCREEN_RECORD_FEATURE = 'xctest_screen_record';
18
25
  const DOMAIN_IDENTIFIER = 'com.apple.testmanagerd';
19
26
  const DOMAIN_TYPE = 'appDataContainer';
20
27
  const USERNAME = 'mobile';
21
- const SUBDIRECTORY = 'Attachments';
28
+ /** Legacy layout and Xcode 26.5+ `tmp/Attachments` within testmanagerd's app data container. */
29
+ const REAL_DEVICE_XCTEST_ATTACHMENT_SUBDIRECTORIES = ['Attachments', 'tmp/Attachments'];
30
+ class XcTestScreenRecordingRetriever {
31
+ log;
32
+ constructor(log) {
33
+ this.log = log;
34
+ }
35
+ static nameMatchesUuid(name, uuid) {
36
+ return name.toUpperCase() === uuid.toUpperCase();
37
+ }
38
+ }
39
+ class SimulatorXcTestScreenRecordingRetriever extends XcTestScreenRecordingRetriever {
40
+ device;
41
+ constructor(device, log) {
42
+ super(log);
43
+ this.device = device;
44
+ }
45
+ async retrieve(uuid) {
46
+ const dataRoot = this.device.getDir();
47
+ // e.g. .../CoreSimulator/Devices/<udid>/data/Containers/Data/InternalDaemon/<daemon-id>/Attachments/<uuid>
48
+ // or .../InternalDaemon/<daemon-id>/tmp/Attachments/<uuid> (Xcode 26.5+)
49
+ const internalDaemonRoot = node_path_1.default.resolve(dataRoot, 'Containers', 'Data', 'InternalDaemon');
50
+ const attachmentPaths = await support_1.fs.glob(SIMULATOR_XCTEST_RECORDING_ATTACHMENT_GLOB, {
51
+ cwd: internalDaemonRoot,
52
+ absolute: true,
53
+ });
54
+ const videoPath = attachmentPaths.find((fp) => XcTestScreenRecordingRetriever.nameMatchesUuid(node_path_1.default.basename(fp), uuid));
55
+ if (!videoPath) {
56
+ throw new Error(`Unable to locate XCTest screen recording identified by '${uuid}' for the Simulator ${this.device.udid}`);
57
+ }
58
+ const { size } = await support_1.fs.stat(videoPath);
59
+ this.log.debug(`Located the video at '${videoPath}' (${support_1.util.toReadableSizeString(size)})`);
60
+ return videoPath;
61
+ }
62
+ }
63
+ class RealDeviceXcTestScreenRecordingRetriever extends XcTestScreenRecordingRetriever {
64
+ device;
65
+ tmpDir;
66
+ constructor(device, tmpDir, log) {
67
+ super(log);
68
+ this.device = device;
69
+ this.tmpDir = tmpDir;
70
+ }
71
+ async retrieve(uuid) {
72
+ const attachment = await this.findAttachment(uuid);
73
+ if (!attachment) {
74
+ throw new Error(`Unable to locate XCTest screen recording identified by '${uuid}' for the device ${this.device.udid}`);
75
+ }
76
+ const videoPath = node_path_1.default.join(this.tmpDir, `${uuid}${MOV_EXT}`);
77
+ const { subdirectory, fileName } = attachment;
78
+ await this.device.devicectl.pullFile(`${subdirectory}/${fileName}`, videoPath, {
79
+ username: USERNAME,
80
+ domainIdentifier: DOMAIN_IDENTIFIER,
81
+ domainType: DOMAIN_TYPE,
82
+ });
83
+ const { size } = await support_1.fs.stat(videoPath);
84
+ this.log.debug(`Pulled the video to '${videoPath}' (${support_1.util.toReadableSizeString(size)})`);
85
+ return videoPath;
86
+ }
87
+ async findAttachment(uuid) {
88
+ for (const subdirectory of REAL_DEVICE_XCTEST_ATTACHMENT_SUBDIRECTORIES) {
89
+ let fileNames;
90
+ try {
91
+ fileNames = await this.device.devicectl.listFiles(DOMAIN_TYPE, DOMAIN_IDENTIFIER, {
92
+ username: USERNAME,
93
+ subdirectory,
94
+ });
95
+ }
96
+ catch {
97
+ continue;
98
+ }
99
+ const fileName = fileNames.find((name) => XcTestScreenRecordingRetriever.nameMatchesUuid(name, uuid));
100
+ if (fileName) {
101
+ return { subdirectory, fileName };
102
+ }
103
+ }
104
+ return null;
105
+ }
106
+ }
22
107
  /**
23
108
  * Start a new screen recording via XCTest.
24
109
  *
@@ -106,7 +191,7 @@ async function mobileStopXctestScreenRecording(remotePath, user, pass, headers,
106
191
  }
107
192
  this.log.debug(`Stopping the active screen recording: ${JSON.stringify(screenRecordingInfo)}`);
108
193
  await this.proxyCommand('/wda/video/stop', 'POST', {});
109
- const videoPath = await retrieveXcTestScreenRecording.call(this, screenRecordingInfo.uuid);
194
+ const videoPath = await createXcTestScreenRecordingRetriever(this).retrieve(screenRecordingInfo.uuid);
110
195
  const result = {
111
196
  ...screenRecordingInfo,
112
197
  payload: '', // Will be set below
@@ -163,49 +248,10 @@ async function mobileStopXctestScreenRecording(remotePath, user, pass, headers,
163
248
  }
164
249
  return result;
165
250
  }
166
- async function retrieveRecodingFromSimulator(uuid) {
167
- const device = this.device;
168
- const dataRoot = device.getDir();
169
- // On Simulators the path looks like
170
- // $HOME/Library/Developer/CoreSimulator/Devices/F8E1968A-8443-4A9A-AB86-27C54C36A2F6/data/Containers/Data/InternalDaemon/4E3FE8DF-AD0A-41DA-B6EC-C35E5798C219/Attachments/A044DAF7-4A58-4CD5-95C3-29B4FE80C377
171
- const internalDaemonRoot = node_path_1.default.resolve(dataRoot, 'Containers', 'Data', 'InternalDaemon');
172
- const videoPaths = await support_1.fs.glob(`*/Attachments/${uuid}`, {
173
- cwd: internalDaemonRoot,
174
- absolute: true,
175
- });
176
- if ((0, utils_1.isEmpty)(videoPaths)) {
177
- throw new Error(`Unable to locate XCTest screen recording identified by '${uuid}' for the Simulator ${device.udid}`);
178
- }
179
- const videoPath = videoPaths[0];
180
- const { size } = await support_1.fs.stat(videoPath);
181
- this.log.debug(`Located the video at '${videoPath}' (${support_1.util.toReadableSizeString(size)})`);
182
- return videoPath;
183
- }
184
- async function retrieveRecodingFromRealDevice(uuid) {
185
- const device = this.device;
186
- const fileNames = await device.devicectl.listFiles(DOMAIN_TYPE, DOMAIN_IDENTIFIER, {
187
- username: USERNAME,
188
- subdirectory: SUBDIRECTORY,
189
- });
190
- if (!fileNames.includes(uuid)) {
191
- throw new Error(`Unable to locate XCTest screen recording identified by '${uuid}' for the device ${this.opts.udid}`);
192
- }
193
- if (!this.opts.tmpDir) {
194
- throw new Error('tmpDir is not set in driver options');
195
- }
196
- const videoPath = node_path_1.default.join(this.opts.tmpDir, `${uuid}${MOV_EXT}`);
197
- await device.devicectl.pullFile(`${SUBDIRECTORY}/${uuid}`, videoPath, {
198
- username: USERNAME,
199
- domainIdentifier: DOMAIN_IDENTIFIER,
200
- domainType: DOMAIN_TYPE,
201
- });
202
- const { size } = await support_1.fs.stat(videoPath);
203
- this.log.debug(`Pulled the video to '${videoPath}' (${support_1.util.toReadableSizeString(size)})`);
204
- return videoPath;
205
- }
206
- async function retrieveXcTestScreenRecording(uuid) {
207
- return this.isRealDevice()
208
- ? await retrieveRecodingFromRealDevice.call(this, uuid)
209
- : await retrieveRecodingFromSimulator.call(this, uuid);
251
+ function createXcTestScreenRecordingRetriever(driver) {
252
+ if (driver.isRealDevice()) {
253
+ return new RealDeviceXcTestScreenRecordingRetriever(driver.device, driver.opts.tmpDir || node_os_1.default.tmpdir(), driver.log);
254
+ }
255
+ return new SimulatorXcTestScreenRecordingRetriever(driver.device, driver.log);
210
256
  }
211
257
  //# sourceMappingURL=xctest-record-screen.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"xctest-record-screen.js","sourceRoot":"","sources":["../../../lib/commands/xctest-record-screen.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"xctest-record-screen.js","sourceRoot":"","sources":["../../../lib/commands/xctest-record-screen.ts"],"names":[],"mappings":"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"}
@@ -97,6 +97,17 @@ export declare class RealDevice {
97
97
  bundleId?: string;
98
98
  fullReset?: boolean;
99
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;
100
111
  }
101
112
  /**
102
113
  * Retrieve a file from a real device
@@ -1 +1 @@
1
- {"version":3,"file":"real-device-management.d.ts","sourceRoot":"","sources":["../../../lib/device/real-device-management.ts"],"names":[],"mappings":"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"}
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;
@@ -249,6 +257,42 @@ class RealDevice {
249
257
  }
250
258
  this.log.debug(`Reset: removed '${bundleId}'`);
251
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
+ }
252
296
  }
253
297
  exports.RealDevice = RealDevice;
254
298
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"real-device-management.js","sourceRoot":"","sources":["../../../lib/device/real-device-management.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"real-device-management.js","sourceRoot":"","sources":["../../../lib/device/real-device-management.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import type { AppiumLogger } from '@appium/types';
2
+ /**
3
+ * Options accepted by {@link ZipConduitClient.install}
4
+ */
5
+ export interface ZipConduitInstallOptions {
6
+ /** Maximum number of milliseconds to wait for the streamed installation to finish */
7
+ timeoutMs?: number;
8
+ }
9
+ /**
10
+ * Thin wrapper around the RemoteXPC streaming `zip_conduit` service.
11
+ *
12
+ * `zip_conduit` streams an `.ipa` straight into the on-device installer, avoiding the separate AFC upload +
13
+ * `installation_proxy` round trip. It is RemoteXPC-only (iOS/tvOS 18+ with an
14
+ * active tunnel) and only accepts `.ipa` archives, so callers must keep a
15
+ * fallback for unpacked `.app` bundles and older devices.
16
+ */
17
+ export declare class ZipConduitClient {
18
+ private readonly service;
19
+ private readonly _log;
20
+ private _lastLoggedProgress?;
21
+ private constructor();
22
+ /**
23
+ * Create a zip_conduit client for the device
24
+ *
25
+ * @param udid - Device UDID
26
+ * @param logger - Optional logger
27
+ * @returns A connected client, or `null` when zip_conduit is unavailable
28
+ */
29
+ static create(udid: string, logger?: AppiumLogger): Promise<ZipConduitClient | null>;
30
+ /**
31
+ * Stream-install an `.ipa`. Handles both fresh installs and upgrades; the
32
+ * device resolves the target by bundle id from the archive contents, so no
33
+ * separate upgrade call is needed.
34
+ *
35
+ * @param ipaPath - Absolute path to the local `.ipa`
36
+ * @param opts - Install options
37
+ */
38
+ install(ipaPath: string, opts?: ZipConduitInstallOptions): Promise<void>;
39
+ /**
40
+ * Close the underlying socket.
41
+ */
42
+ close(): Promise<void>;
43
+ private logInstallProgress;
44
+ }
45
+ //# sourceMappingURL=zip-conduit-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zip-conduit-client.d.ts","sourceRoot":"","sources":["../../../lib/device/zip-conduit-client.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,eAAe,CAAC;AAGhD;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,qFAAqF;IACrF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,qBAAa,gBAAgB;IAIzB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAJvB,OAAO,CAAC,mBAAmB,CAAC,CAAsC;IAElE,OAAO;IAKP;;;;;;OAMG;WACU,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,GAAE,YAAkB,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAS/F;;;;;;;OAOG;IACG,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,wBAA6B,GAAG,OAAO,CAAC,IAAI,CAAC;IAQlF;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ5B,OAAO,CAAC,kBAAkB;CAU3B"}
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ZipConduitClient = void 0;
4
+ const remotexpc_utils_1 = require("./remotexpc-utils");
5
+ const logger_1 = require("../logger");
6
+ /**
7
+ * Thin wrapper around the RemoteXPC streaming `zip_conduit` service.
8
+ *
9
+ * `zip_conduit` streams an `.ipa` straight into the on-device installer, avoiding the separate AFC upload +
10
+ * `installation_proxy` round trip. It is RemoteXPC-only (iOS/tvOS 18+ with an
11
+ * active tunnel) and only accepts `.ipa` archives, so callers must keep a
12
+ * fallback for unpacked `.app` bundles and older devices.
13
+ */
14
+ class ZipConduitClient {
15
+ service;
16
+ _log;
17
+ _lastLoggedProgress;
18
+ constructor(service, _log = logger_1.log) {
19
+ this.service = service;
20
+ this._log = _log;
21
+ }
22
+ /**
23
+ * Create a zip_conduit client for the device
24
+ *
25
+ * @param udid - Device UDID
26
+ * @param logger - Optional logger
27
+ * @returns A connected client, or `null` when zip_conduit is unavailable
28
+ */
29
+ static async create(udid, logger = logger_1.log) {
30
+ const Services = await (0, remotexpc_utils_1.tryGetRemoteXPCServices)();
31
+ if (!Services || typeof Services.startZipConduitService !== 'function') {
32
+ return null;
33
+ }
34
+ const service = await Services.startZipConduitService(udid);
35
+ return new ZipConduitClient(service, logger);
36
+ }
37
+ /**
38
+ * Stream-install an `.ipa`. Handles both fresh installs and upgrades; the
39
+ * device resolves the target by bundle id from the archive contents, so no
40
+ * separate upgrade call is needed.
41
+ *
42
+ * @param ipaPath - Absolute path to the local `.ipa`
43
+ * @param opts - Install options
44
+ */
45
+ async install(ipaPath, opts = {}) {
46
+ this._lastLoggedProgress = undefined;
47
+ await this.service.install(ipaPath, {
48
+ timeoutMs: opts.timeoutMs,
49
+ progress: ({ percent, status }) => this.logInstallProgress(percent, status),
50
+ });
51
+ }
52
+ /**
53
+ * Close the underlying socket.
54
+ */
55
+ async close() {
56
+ try {
57
+ this.service.close();
58
+ }
59
+ catch (err) {
60
+ this._log.debug(`Error closing zip_conduit service: ${err.message}`);
61
+ }
62
+ }
63
+ logInstallProgress(percent, status) {
64
+ if (percent === this._lastLoggedProgress?.percent &&
65
+ status === this._lastLoggedProgress?.status) {
66
+ return;
67
+ }
68
+ this._lastLoggedProgress = { percent, status };
69
+ this._log.debug(`App install progress: ${percent}%${status ? ` (${status})` : ''}`);
70
+ }
71
+ }
72
+ exports.ZipConduitClient = ZipConduitClient;
73
+ //# sourceMappingURL=zip-conduit-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zip-conduit-client.js","sourceRoot":"","sources":["../../../lib/device/zip-conduit-client.ts"],"names":[],"mappings":";;;AAAA,uDAA0D;AAC1D,sCAA8B;AAY9B;;;;;;;GAOG;AACH,MAAa,gBAAgB;IAIR;IACA;IAJX,mBAAmB,CAAuC;IAElE,YACmB,OAAmC,EACnC,OAAqB,YAAG;QADxB,YAAO,GAAP,OAAO,CAA4B;QACnC,SAAI,GAAJ,IAAI,CAAoB;IACxC,CAAC;IAEJ;;;;;;OAMG;IACH,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAY,EAAE,SAAuB,YAAG;QAC1D,MAAM,QAAQ,GAAG,MAAM,IAAA,yCAAuB,GAAE,CAAC;QACjD,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,CAAC,sBAAsB,KAAK,UAAU,EAAE,CAAC;YACvE,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAC5D,OAAO,IAAI,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,OAAO,CAAC,OAAe,EAAE,OAAiC,EAAE;QAChE,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;QACrC,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE;YAClC,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,QAAQ,EAAE,CAAC,EAAC,OAAO,EAAE,MAAM,EAAC,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC;SAC1E,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,IAAI,CAAC;YACH,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACvB,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,sCAAsC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAEO,kBAAkB,CAAC,OAAe,EAAE,MAAc;QACxD,IACE,OAAO,KAAK,IAAI,CAAC,mBAAmB,EAAE,OAAO;YAC7C,MAAM,KAAK,IAAI,CAAC,mBAAmB,EAAE,MAAM,EAC3C,CAAC;YACD,OAAO;QACT,CAAC;QACD,IAAI,CAAC,mBAAmB,GAAG,EAAC,OAAO,EAAE,MAAM,EAAC,CAAC;QAC7C,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,yBAAyB,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACtF,CAAC;CACF;AA7DD,4CA6DC"}
@@ -1,11 +1,11 @@
1
1
  import {fs, util} from 'appium/support';
2
2
  import {encodeBase64OrUpload} from './helpers';
3
- import {isEmpty} from '../utils';
3
+ import os from 'node:os';
4
4
  import path from 'node:path';
5
5
  import type {XCUITestDriver} from '../driver';
6
6
  import type {Simulator} from 'appium-ios-simulator';
7
7
  import type {RealDevice} from '../device/real-device-management';
8
- import type {HTTPHeaders} from '@appium/types';
8
+ import type {AppiumLogger, HTTPHeaders} from '@appium/types';
9
9
  import type {XcTestScreenRecordingInfo, XcTestScreenRecording} from './types';
10
10
  import {XctestAttachmentDeletionClient} from '../device/xctest-attachment-deletion-client';
11
11
  import {
@@ -14,12 +14,113 @@ import {
14
14
  } from '../device/remotexpc-utils';
15
15
 
16
16
  const MOV_EXT = '.mov';
17
+ /**
18
+ * On simulators XCTest stores screen recording attachments under
19
+ * `InternalDaemon/<id>/Attachments/<uuid>` (legacy) or
20
+ * `InternalDaemon/<id>/tmp/Attachments/<uuid>` (Xcode 26.5+).
21
+ * Brace `{,tmp/}` matches both in a single glob.
22
+ */
23
+ const SIMULATOR_XCTEST_RECORDING_ATTACHMENT_GLOB = '*/{,tmp/}Attachments/*';
17
24
  /** Insecure feature when real-device XCTest recording is used without RemoteXPC attachment deletion. */
18
25
  const XCTEST_SCREEN_RECORD_FEATURE = 'xctest_screen_record';
19
26
  const DOMAIN_IDENTIFIER = 'com.apple.testmanagerd';
20
27
  const DOMAIN_TYPE = 'appDataContainer';
21
28
  const USERNAME = 'mobile';
22
- const SUBDIRECTORY = 'Attachments';
29
+ /** Legacy layout and Xcode 26.5+ `tmp/Attachments` within testmanagerd's app data container. */
30
+ const REAL_DEVICE_XCTEST_ATTACHMENT_SUBDIRECTORIES = ['Attachments', 'tmp/Attachments'] as const;
31
+
32
+ abstract class XcTestScreenRecordingRetriever {
33
+ constructor(protected readonly log: AppiumLogger) {}
34
+
35
+ protected static nameMatchesUuid(name: string, uuid: string): boolean {
36
+ return name.toUpperCase() === uuid.toUpperCase();
37
+ }
38
+
39
+ abstract retrieve(uuid: string): Promise<string>;
40
+ }
41
+
42
+ class SimulatorXcTestScreenRecordingRetriever extends XcTestScreenRecordingRetriever {
43
+ constructor(
44
+ private readonly device: Simulator,
45
+ log: AppiumLogger,
46
+ ) {
47
+ super(log);
48
+ }
49
+
50
+ override async retrieve(uuid: string): Promise<string> {
51
+ const dataRoot = this.device.getDir();
52
+ // e.g. .../CoreSimulator/Devices/<udid>/data/Containers/Data/InternalDaemon/<daemon-id>/Attachments/<uuid>
53
+ // or .../InternalDaemon/<daemon-id>/tmp/Attachments/<uuid> (Xcode 26.5+)
54
+ const internalDaemonRoot = path.resolve(dataRoot, 'Containers', 'Data', 'InternalDaemon');
55
+ const attachmentPaths = await fs.glob(SIMULATOR_XCTEST_RECORDING_ATTACHMENT_GLOB, {
56
+ cwd: internalDaemonRoot,
57
+ absolute: true,
58
+ });
59
+ const videoPath = attachmentPaths.find((fp) =>
60
+ XcTestScreenRecordingRetriever.nameMatchesUuid(path.basename(fp), uuid),
61
+ );
62
+ if (!videoPath) {
63
+ throw new Error(
64
+ `Unable to locate XCTest screen recording identified by '${uuid}' for the Simulator ${this.device.udid}`,
65
+ );
66
+ }
67
+ const {size} = await fs.stat(videoPath);
68
+ this.log.debug(`Located the video at '${videoPath}' (${util.toReadableSizeString(size)})`);
69
+ return videoPath;
70
+ }
71
+ }
72
+
73
+ class RealDeviceXcTestScreenRecordingRetriever extends XcTestScreenRecordingRetriever {
74
+ constructor(
75
+ private readonly device: RealDevice,
76
+ private readonly tmpDir: string,
77
+ log: AppiumLogger,
78
+ ) {
79
+ super(log);
80
+ }
81
+
82
+ override async retrieve(uuid: string): Promise<string> {
83
+ const attachment = await this.findAttachment(uuid);
84
+ if (!attachment) {
85
+ throw new Error(
86
+ `Unable to locate XCTest screen recording identified by '${uuid}' for the device ${this.device.udid}`,
87
+ );
88
+ }
89
+ const videoPath = path.join(this.tmpDir, `${uuid}${MOV_EXT}`);
90
+ const {subdirectory, fileName} = attachment;
91
+ await this.device.devicectl.pullFile(`${subdirectory}/${fileName}`, videoPath, {
92
+ username: USERNAME,
93
+ domainIdentifier: DOMAIN_IDENTIFIER,
94
+ domainType: DOMAIN_TYPE,
95
+ });
96
+ const {size} = await fs.stat(videoPath);
97
+ this.log.debug(`Pulled the video to '${videoPath}' (${util.toReadableSizeString(size)})`);
98
+ return videoPath;
99
+ }
100
+
101
+ private async findAttachment(
102
+ uuid: string,
103
+ ): Promise<{subdirectory: string; fileName: string} | null> {
104
+ for (const subdirectory of REAL_DEVICE_XCTEST_ATTACHMENT_SUBDIRECTORIES) {
105
+ let fileNames: string[];
106
+ try {
107
+ fileNames = await this.device.devicectl.listFiles(DOMAIN_TYPE, DOMAIN_IDENTIFIER, {
108
+ username: USERNAME,
109
+ subdirectory,
110
+ });
111
+ } catch {
112
+ continue;
113
+ }
114
+ const fileName = fileNames.find((name) =>
115
+ XcTestScreenRecordingRetriever.nameMatchesUuid(name, uuid),
116
+ );
117
+ if (fileName) {
118
+ return {subdirectory, fileName};
119
+ }
120
+ }
121
+ return null;
122
+ }
123
+ }
23
124
 
24
125
  /**
25
126
  * Start a new screen recording via XCTest.
@@ -136,8 +237,7 @@ export async function mobileStopXctestScreenRecording(
136
237
 
137
238
  this.log.debug(`Stopping the active screen recording: ${JSON.stringify(screenRecordingInfo)}`);
138
239
  await this.proxyCommand('/wda/video/stop', 'POST', {});
139
- const videoPath: string = await retrieveXcTestScreenRecording.call(
140
- this,
240
+ const videoPath = await createXcTestScreenRecordingRetriever(this).retrieve(
141
241
  screenRecordingInfo.uuid,
142
242
  );
143
243
  const result: XcTestScreenRecording = {
@@ -211,55 +311,15 @@ export async function mobileStopXctestScreenRecording(
211
311
  return result;
212
312
  }
213
313
 
214
- async function retrieveRecodingFromSimulator(this: XCUITestDriver, uuid: string): Promise<string> {
215
- const device = this.device as Simulator;
216
- const dataRoot = device.getDir();
217
- // On Simulators the path looks like
218
- // $HOME/Library/Developer/CoreSimulator/Devices/F8E1968A-8443-4A9A-AB86-27C54C36A2F6/data/Containers/Data/InternalDaemon/4E3FE8DF-AD0A-41DA-B6EC-C35E5798C219/Attachments/A044DAF7-4A58-4CD5-95C3-29B4FE80C377
219
- const internalDaemonRoot = path.resolve(dataRoot, 'Containers', 'Data', 'InternalDaemon');
220
- const videoPaths = await fs.glob(`*/Attachments/${uuid}`, {
221
- cwd: internalDaemonRoot,
222
- absolute: true,
223
- });
224
- if (isEmpty(videoPaths)) {
225
- throw new Error(
226
- `Unable to locate XCTest screen recording identified by '${uuid}' for the Simulator ${device.udid}`,
314
+ function createXcTestScreenRecordingRetriever(
315
+ driver: XCUITestDriver,
316
+ ): XcTestScreenRecordingRetriever {
317
+ if (driver.isRealDevice()) {
318
+ return new RealDeviceXcTestScreenRecordingRetriever(
319
+ driver.device as RealDevice,
320
+ driver.opts.tmpDir || os.tmpdir(),
321
+ driver.log,
227
322
  );
228
323
  }
229
- const videoPath = videoPaths[0];
230
- const {size} = await fs.stat(videoPath);
231
- this.log.debug(`Located the video at '${videoPath}' (${util.toReadableSizeString(size)})`);
232
- return videoPath;
233
- }
234
-
235
- async function retrieveRecodingFromRealDevice(this: XCUITestDriver, uuid: string): Promise<string> {
236
- const device = this.device as RealDevice;
237
-
238
- const fileNames = await device.devicectl.listFiles(DOMAIN_TYPE, DOMAIN_IDENTIFIER, {
239
- username: USERNAME,
240
- subdirectory: SUBDIRECTORY,
241
- });
242
- if (!fileNames.includes(uuid)) {
243
- throw new Error(
244
- `Unable to locate XCTest screen recording identified by '${uuid}' for the device ${this.opts.udid}`,
245
- );
246
- }
247
- if (!this.opts.tmpDir) {
248
- throw new Error('tmpDir is not set in driver options');
249
- }
250
- const videoPath = path.join(this.opts.tmpDir, `${uuid}${MOV_EXT}`);
251
- await device.devicectl.pullFile(`${SUBDIRECTORY}/${uuid}`, videoPath, {
252
- username: USERNAME,
253
- domainIdentifier: DOMAIN_IDENTIFIER,
254
- domainType: DOMAIN_TYPE,
255
- });
256
- const {size} = await fs.stat(videoPath);
257
- this.log.debug(`Pulled the video to '${videoPath}' (${util.toReadableSizeString(size)})`);
258
- return videoPath;
259
- }
260
-
261
- async function retrieveXcTestScreenRecording(this: XCUITestDriver, uuid: string): Promise<string> {
262
- return this.isRealDevice()
263
- ? await retrieveRecodingFromRealDevice.call(this, uuid)
264
- : await retrieveRecodingFromSimulator.call(this, uuid);
324
+ return new SimulatorXcTestScreenRecordingRetriever(driver.device as Simulator, driver.log);
265
325
  }
@@ -9,6 +9,7 @@ import {
9
9
  withTimeout,
10
10
  } from '../commands/helpers';
11
11
  import {isEmpty, isPlainObject} from '../utils';
12
+ import {IPA_EXT} from '../commands/constants';
12
13
  import {log as defaultLogger} from '../logger';
13
14
  import {Devicectl} from 'node-devicectl';
14
15
  import type {AppiumLogger} from '@appium/types';
@@ -19,6 +20,7 @@ import {InstallationProxyClient} from './installation-proxy-client';
19
20
  import {NotificationClient} from './notification-client';
20
21
  import {LockdownClient} from './lockdown-client';
21
22
  import {AppTerminationClient} from './app-termination-client';
23
+ import {ZipConduitClient} from './zip-conduit-client';
22
24
 
23
25
  const DEFAULT_APP_INSTALLATION_TIMEOUT_MS = 8 * 60 * 1000;
24
26
  export const IO_TIMEOUT_MS = 4 * 60 * 1000;
@@ -114,6 +116,16 @@ export class RealDevice {
114
116
  const {timeoutMs = IO_TIMEOUT_MS} = opts;
115
117
  const timer = new timing.Timer().start();
116
118
  const useRemoteXPC = isIos18OrNewer(this.driverOpts);
119
+
120
+ // first try with zip_conduit service for iOS/tvOS 18+ and IPA only
121
+ // fall through to the AFC + installation_proxy path for other cases/zip_conduit failure
122
+ if (useRemoteXPC && (await this.installViaZipConduit(appPath, timeoutMs))) {
123
+ this.log.info(
124
+ `The installation of '${bundleId}' succeeded after ${timer.getDuration().asMilliSeconds.toFixed(0)}ms`,
125
+ );
126
+ return;
127
+ }
128
+
117
129
  const afcClient = await AfcClient.createForDevice(this.udid, useRemoteXPC);
118
130
  try {
119
131
  let bundlePathOnPhone: string;
@@ -333,6 +345,44 @@ export class RealDevice {
333
345
  }
334
346
  this.log.debug(`Reset: removed '${bundleId}'`);
335
347
  }
348
+
349
+ /**
350
+ * Attempt a streaming zip_conduit install of an `.ipa` over RemoteXPC.
351
+ *
352
+ * @param appPath - Local path to the app package
353
+ * @param timeoutMs - Overall install timeout in milliseconds
354
+ * @returns `true` when the app was installed via zip_conduit; `false` when the
355
+ * package is not an eligible `.ipa`, the service is unavailable, or the
356
+ * streamed install failed. A `false` result tells the caller to fall back to
357
+ * the AFC upload + installation_proxy path.
358
+ */
359
+ private async installViaZipConduit(appPath: string, timeoutMs: number): Promise<boolean> {
360
+ // zip_conduit only accepts .ipa archives. Unpacked .app bundles (and any
361
+ // other non-.ipa package) must use the AFC + installation_proxy
362
+ // path, so anything that is not a regular .ipa file is skipped here.
363
+ if (!appPath.toLowerCase().endsWith(IPA_EXT) || !(await fs.stat(appPath)).isFile()) {
364
+ return false;
365
+ }
366
+
367
+ let client: ZipConduitClient | null = null;
368
+ try {
369
+ client = await ZipConduitClient.create(this.udid, this.log);
370
+ if (!client) {
371
+ return false;
372
+ }
373
+ this.log.debug(`Installing '${path.basename(appPath)}' via streaming zip_conduit`);
374
+ await client.install(appPath, {timeoutMs});
375
+ return true;
376
+ } catch (err) {
377
+ this.log.warn(
378
+ `Fast zip_conduit install of '${path.basename(appPath)}' failed; falling back to ` +
379
+ `AFC upload + installation_proxy. Original error: ${(err as Error).message}`,
380
+ );
381
+ return false;
382
+ } finally {
383
+ await client?.close();
384
+ }
385
+ }
336
386
  }
337
387
 
338
388
  /**
@@ -0,0 +1,83 @@
1
+ import {tryGetRemoteXPCServices} from './remotexpc-utils';
2
+ import {log} from '../logger';
3
+ import type {AppiumLogger} from '@appium/types';
4
+ import type {ZipConduitService as RemoteXPCZipConduitService} from 'appium-ios-remotexpc';
5
+
6
+ /**
7
+ * Options accepted by {@link ZipConduitClient.install}
8
+ */
9
+ export interface ZipConduitInstallOptions {
10
+ /** Maximum number of milliseconds to wait for the streamed installation to finish */
11
+ timeoutMs?: number;
12
+ }
13
+
14
+ /**
15
+ * Thin wrapper around the RemoteXPC streaming `zip_conduit` service.
16
+ *
17
+ * `zip_conduit` streams an `.ipa` straight into the on-device installer, avoiding the separate AFC upload +
18
+ * `installation_proxy` round trip. It is RemoteXPC-only (iOS/tvOS 18+ with an
19
+ * active tunnel) and only accepts `.ipa` archives, so callers must keep a
20
+ * fallback for unpacked `.app` bundles and older devices.
21
+ */
22
+ export class ZipConduitClient {
23
+ private _lastLoggedProgress?: {percent?: number; status?: string};
24
+
25
+ private constructor(
26
+ private readonly service: RemoteXPCZipConduitService,
27
+ private readonly _log: AppiumLogger = log,
28
+ ) {}
29
+
30
+ /**
31
+ * Create a zip_conduit client for the device
32
+ *
33
+ * @param udid - Device UDID
34
+ * @param logger - Optional logger
35
+ * @returns A connected client, or `null` when zip_conduit is unavailable
36
+ */
37
+ static async create(udid: string, logger: AppiumLogger = log): Promise<ZipConduitClient | null> {
38
+ const Services = await tryGetRemoteXPCServices();
39
+ if (!Services || typeof Services.startZipConduitService !== 'function') {
40
+ return null;
41
+ }
42
+ const service = await Services.startZipConduitService(udid);
43
+ return new ZipConduitClient(service, logger);
44
+ }
45
+
46
+ /**
47
+ * Stream-install an `.ipa`. Handles both fresh installs and upgrades; the
48
+ * device resolves the target by bundle id from the archive contents, so no
49
+ * separate upgrade call is needed.
50
+ *
51
+ * @param ipaPath - Absolute path to the local `.ipa`
52
+ * @param opts - Install options
53
+ */
54
+ async install(ipaPath: string, opts: ZipConduitInstallOptions = {}): Promise<void> {
55
+ this._lastLoggedProgress = undefined;
56
+ await this.service.install(ipaPath, {
57
+ timeoutMs: opts.timeoutMs,
58
+ progress: ({percent, status}) => this.logInstallProgress(percent, status),
59
+ });
60
+ }
61
+
62
+ /**
63
+ * Close the underlying socket.
64
+ */
65
+ async close(): Promise<void> {
66
+ try {
67
+ this.service.close();
68
+ } catch (err: any) {
69
+ this._log.debug(`Error closing zip_conduit service: ${err.message}`);
70
+ }
71
+ }
72
+
73
+ private logInstallProgress(percent: number, status: string): void {
74
+ if (
75
+ percent === this._lastLoggedProgress?.percent &&
76
+ status === this._lastLoggedProgress?.status
77
+ ) {
78
+ return;
79
+ }
80
+ this._lastLoggedProgress = {percent, status};
81
+ this._log.debug(`App install progress: ${percent}%${status ? ` (${status})` : ''}`);
82
+ }
83
+ }
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "appium-xcuitest-driver",
3
- "version": "11.7.7",
3
+ "version": "11.8.1",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "appium-xcuitest-driver",
9
- "version": "11.7.7",
9
+ "version": "11.8.1",
10
10
  "license": "Apache-2.0",
11
11
  "dependencies": {
12
12
  "@appium/strongbox": "^1.0.0-rc.1",
@@ -63,7 +63,7 @@
63
63
  "npm": ">=10"
64
64
  },
65
65
  "optionalDependencies": {
66
- "appium-ios-remotexpc": "^2.2.2"
66
+ "appium-ios-remotexpc": "^2.3.0"
67
67
  },
68
68
  "peerDependencies": {
69
69
  "appium": "^3.0.0-rc.2"
@@ -100,6 +100,18 @@
100
100
  "spdy": "4.0.2"
101
101
  }
102
102
  },
103
+ "node_modules/@appium/base-driver/node_modules/axios": {
104
+ "version": "1.16.1",
105
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.16.1.tgz",
106
+ "integrity": "sha512-caYkukvroVPO8KrzuJEb50Hm07KwfBZPEC3VeFHTsqWHvKTsy54hjJz9BS/cdaypROE2rH6xvm9mHX4fgWkr3A==",
107
+ "license": "MIT",
108
+ "dependencies": {
109
+ "follow-redirects": "^1.16.0",
110
+ "form-data": "^4.0.5",
111
+ "https-proxy-agent": "^5.0.1",
112
+ "proxy-from-env": "^2.1.0"
113
+ }
114
+ },
103
115
  "node_modules/@appium/base-driver/node_modules/lru-cache": {
104
116
  "version": "11.5.0",
105
117
  "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.0.tgz",
@@ -234,6 +246,18 @@
234
246
  "sharp": "0.34.5"
235
247
  }
236
248
  },
249
+ "node_modules/@appium/support/node_modules/axios": {
250
+ "version": "1.16.1",
251
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.16.1.tgz",
252
+ "integrity": "sha512-caYkukvroVPO8KrzuJEb50Hm07KwfBZPEC3VeFHTsqWHvKTsy54hjJz9BS/cdaypROE2rH6xvm9mHX4fgWkr3A==",
253
+ "license": "MIT",
254
+ "dependencies": {
255
+ "follow-redirects": "^1.16.0",
256
+ "form-data": "^4.0.5",
257
+ "https-proxy-agent": "^5.0.1",
258
+ "proxy-from-env": "^2.1.0"
259
+ }
260
+ },
237
261
  "node_modules/@appium/tsconfig": {
238
262
  "version": "1.1.2",
239
263
  "resolved": "https://registry.npmjs.org/@appium/tsconfig/-/tsconfig-1.1.2.tgz",
@@ -494,9 +518,9 @@
494
518
  }
495
519
  },
496
520
  "node_modules/appium-ios-remotexpc": {
497
- "version": "2.2.3",
498
- "resolved": "https://registry.npmjs.org/appium-ios-remotexpc/-/appium-ios-remotexpc-2.2.3.tgz",
499
- "integrity": "sha512-lhuh5YaV93KWbpjTkatL9lVDgRtGXhZE/FGaTEyYeI5mnCdCij2ienCWFzrSAaYsqaxmeTwu2/nBwhJm0wJQQQ==",
521
+ "version": "2.3.0",
522
+ "resolved": "https://registry.npmjs.org/appium-ios-remotexpc/-/appium-ios-remotexpc-2.3.0.tgz",
523
+ "integrity": "sha512-dL/3Wzpf1iiXa33GiQFfiCTmcXi/m/y6RFoQaxmONvibnDDLRvSuP5s+h2z3HJxIN4+rD2qjivKO+7NAXClAOQ==",
500
524
  "license": "Apache-2.0",
501
525
  "optional": true,
502
526
  "dependencies": {
@@ -538,9 +562,9 @@
538
562
  }
539
563
  },
540
564
  "node_modules/appium-ios-tuntap": {
541
- "version": "0.4.1",
542
- "resolved": "https://registry.npmjs.org/appium-ios-tuntap/-/appium-ios-tuntap-0.4.1.tgz",
543
- "integrity": "sha512-okF8IXMnOlZhgta5YDdwU9WuhoQKZVFuXHcwWBGUdCO4GGlHFH+bN3ieYkltK1imSz+NIP7GmZqcffePUXFVAg==",
565
+ "version": "0.4.2",
566
+ "resolved": "https://registry.npmjs.org/appium-ios-tuntap/-/appium-ios-tuntap-0.4.2.tgz",
567
+ "integrity": "sha512-eawRtPp0RwZn89A0oGaCr9Nll+Z1LeZF5oGfEc7LnAA5BHjnN/GEZIBocPA84uTHAg2GXb3//LEO6RpsltI53A==",
544
568
  "hasInstallScript": true,
545
569
  "license": "Apache-2.0",
546
570
  "optional": true,
@@ -672,9 +696,9 @@
672
696
  "license": "MIT"
673
697
  },
674
698
  "node_modules/axios": {
675
- "version": "1.16.1",
676
- "resolved": "https://registry.npmjs.org/axios/-/axios-1.16.1.tgz",
677
- "integrity": "sha512-caYkukvroVPO8KrzuJEb50Hm07KwfBZPEC3VeFHTsqWHvKTsy54hjJz9BS/cdaypROE2rH6xvm9mHX4fgWkr3A==",
699
+ "version": "1.17.0",
700
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.17.0.tgz",
701
+ "integrity": "sha512-J8SwNxprqqpbfenehxWYXE7CW+wM1BB4w3+N+g+/Wx40xM4rsLrfPmHHxSWIxJLYDgSY/HqlFPIYb2/S3rxafw==",
678
702
  "license": "MIT",
679
703
  "dependencies": {
680
704
  "follow-redirects": "^1.16.0",
@@ -707,9 +731,9 @@
707
731
  }
708
732
  },
709
733
  "node_modules/bare-events": {
710
- "version": "2.8.3",
711
- "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.8.3.tgz",
712
- "integrity": "sha512-HdUm8EMQBLaJvGUdidNNbqpA1kYkwNcb+MYxkxCLAPJGQzlv9J0C24h8V65Z4c5GLd/JEALDvpFCQgpLJqc0zw==",
734
+ "version": "2.9.1",
735
+ "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.9.1.tgz",
736
+ "integrity": "sha512-Z0oHEHAFDZkffN8Qc39zNZjQlMDkPJRyyyZieU1VH7u8c5S+qHZ2S8ixdKIAxEjfHO7FJxXmJWgteOghVanIsg==",
713
737
  "license": "Apache-2.0",
714
738
  "peerDependencies": {
715
739
  "bare-abort-controller": "*"
@@ -721,9 +745,9 @@
721
745
  }
722
746
  },
723
747
  "node_modules/bare-fs": {
724
- "version": "4.7.1",
725
- "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.7.1.tgz",
726
- "integrity": "sha512-WDRsyVN52eAx/lBamKD6uyw8H4228h/x0sGGGegOamM2cd7Pag88GfMQalobXI+HaEUxpCkbKQUDOQqt9wawRw==",
748
+ "version": "4.7.2",
749
+ "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.7.2.tgz",
750
+ "integrity": "sha512-aTvMFUWkBmjzKtEQMDGGDNF8bkfpD5N1b/FCwt7A3wrU4t1o/e/85Wzkluh6JlODCjqVESYCkQCdTXqZ9G7VFg==",
727
751
  "license": "Apache-2.0",
728
752
  "dependencies": {
729
753
  "bare-events": "^2.5.4",
@@ -754,9 +778,9 @@
754
778
  }
755
779
  },
756
780
  "node_modules/bare-path": {
757
- "version": "3.0.0",
758
- "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz",
759
- "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==",
781
+ "version": "3.0.1",
782
+ "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.1.tgz",
783
+ "integrity": "sha512-ghj2DSK/2e99a1anTVPCV4m4YIYtrbXhfM7V3D7XZLOTsybnYyaJloymGqssQc8l/or0UoDyRtNQkmkEF/ysgQ==",
760
784
  "license": "Apache-2.0",
761
785
  "dependencies": {
762
786
  "bare-os": "^3.0.1"
package/package.json CHANGED
@@ -8,7 +8,7 @@
8
8
  "xcuitest",
9
9
  "xctest"
10
10
  ],
11
- "version": "11.7.7",
11
+ "version": "11.8.1",
12
12
  "author": "Appium Contributors",
13
13
  "license": "Apache-2.0",
14
14
  "repository": {
@@ -107,7 +107,7 @@
107
107
  "ws": "^8.13.0"
108
108
  },
109
109
  "optionalDependencies": {
110
- "appium-ios-remotexpc": "^2.2.2"
110
+ "appium-ios-remotexpc": "^2.3.0"
111
111
  },
112
112
  "scripts": {
113
113
  "build": "tsc -b",
@@ -1,6 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * Lists XCTest attachment file names (UUIDs) under **testmanagerd**'s app-data `Attachments` folder
3
+ * Lists XCTest attachment file names (UUIDs) under **testmanagerd**'s app-data `Attachments` and
4
+ * `tmp/Attachments` folders
4
5
  * and deletes them via **appium-ios-remotexpc** (`XCTestAttachment.delete`), the same mechanism the
5
6
  * driver uses for real-device XCTest screen recording cleanup.
6
7
  *
@@ -29,7 +30,8 @@ const log = logger.getLogger('cleanup-videos');
29
30
  const DOMAIN_IDENTIFIER = 'com.apple.testmanagerd';
30
31
  const DOMAIN_TYPE = 'appDataContainer';
31
32
  const USERNAME = 'mobile';
32
- const SUBDIRECTORY = 'Attachments';
33
+ /** Legacy layout and Xcode 26.5+ `tmp/Attachments` (same as xctest-record-screen.ts). */
34
+ const ATTACHMENT_SUBDIRECTORIES = ['Attachments', 'tmp/Attachments'];
33
35
 
34
36
  /** Attachment entries are UUID-shaped file names (no extension in this listing). */
35
37
  const UUID_NAME_RE = /^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i;
@@ -47,24 +49,32 @@ class CleanupVideos {
47
49
  await requirePlatformVersion(udid);
48
50
 
49
51
  const devicectl = new Devicectl(udid);
50
- let fileNames;
51
- try {
52
- fileNames = await devicectl.listFiles(DOMAIN_TYPE, DOMAIN_IDENTIFIER, {
53
- username: USERNAME,
54
- subdirectory: SUBDIRECTORY,
55
- });
56
- } catch (err) {
57
- throw new Error(
58
- `Failed to list files in ${DOMAIN_TYPE}/${DOMAIN_IDENTIFIER}/${SUBDIRECTORY}. ` +
59
- `Ensure a tunnel is up and the device is reachable via devicectl.`,
60
- {cause: err},
61
- );
52
+ const fileNames = [];
53
+ const listErrors = [];
54
+ let anyListSucceeded = false;
55
+ for (const subdirectory of ATTACHMENT_SUBDIRECTORIES) {
56
+ try {
57
+ const names = await devicectl.listFiles(DOMAIN_TYPE, DOMAIN_IDENTIFIER, {
58
+ username: USERNAME,
59
+ subdirectory,
60
+ });
61
+ anyListSucceeded = true;
62
+ fileNames.push(...names);
63
+ } catch (err) {
64
+ listErrors.push(err);
65
+ log.debug(`Could not list ${subdirectory}: ${err.message ?? err}`);
66
+ }
67
+ }
68
+ if (!anyListSucceeded) {
69
+ const errorMessage = `Failed to list files in ${DOMAIN_TYPE}/${DOMAIN_IDENTIFIER}/` +
70
+ `{${ATTACHMENT_SUBDIRECTORIES.join(',')}}`;
71
+ throw new AggregateError(listErrors, errorMessage);
62
72
  }
63
73
 
64
- const uuids = filterAttachmentUuids(fileNames);
74
+ const uuids = filterAttachmentUuids([...new Set(fileNames)]);
65
75
  log.info(
66
76
  `Found ${util.pluralize('UUID-shaped attachment', uuids.length, true)} ` +
67
- `in testmanagerd Attachments (out of ${fileNames.length} listed names).`,
77
+ `in testmanagerd Attachments and tmp/Attachments (out of ${fileNames.length} listed names).`,
68
78
  );
69
79
  if (uuids.length > 0) {
70
80
  log.info(uuids.join('\n'));