appium-xcuitest-driver 10.29.0 → 10.30.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 CHANGED
@@ -1,3 +1,9 @@
1
+ ## [10.30.0](https://github.com/appium/appium-xcuitest-driver/compare/v10.29.0...v10.30.0) (2026-03-14)
2
+
3
+ ### Features
4
+
5
+ * Add wireless Apple TV devices to created tunnels ([#2755](https://github.com/appium/appium-xcuitest-driver/issues/2755)) ([07911a7](https://github.com/appium/appium-xcuitest-driver/commit/07911a72199402f6163df201b909d5f3fc544641))
6
+
1
7
  ## [10.29.0](https://github.com/appium/appium-xcuitest-driver/compare/v10.28.1...v10.29.0) (2026-03-14)
2
8
 
3
9
  ### Features
@@ -1,3 +1,41 @@
1
1
  #!/usr/bin/env node
2
- export {};
2
+ /**
3
+ * Tunnel registry entry for an Apple TV (WiFi) device.
4
+ */
5
+ export type AppleTVRegistryEntry = {
6
+ udid: string;
7
+ address: string;
8
+ rsdPort: number;
9
+ packetStreamPort: number;
10
+ };
11
+ /**
12
+ * Tunnel connection returned from TunnelManager.getTunnel for an Apple TV (WiFi) socket.
13
+ */
14
+ export type AppleTVTunnelConnection = {
15
+ Address: string;
16
+ RsdPort?: number | undefined;
17
+ addPacketConsumer?: ((c: unknown) => void) | undefined;
18
+ closer?: (() => Promise<void>) | undefined;
19
+ };
20
+ /**
21
+ * Input for teardown of an Apple TV tunnel (full or partially created). All fields may be null if not yet created.
22
+ */
23
+ export type AppleTVTunnelTeardownInput = {
24
+ tunnel?: AppleTVTunnelConnection | null | undefined;
25
+ packetStreamServer?: PacketStreamServer | null | undefined;
26
+ tunnelService?: AppleTVTunnelService | null | undefined;
27
+ tlsSocket?: import("node:tls").TLSSocket | null | undefined;
28
+ };
29
+ /**
30
+ * Resource handle for cleanup of a single Apple TV (WiFi) tunnel.
31
+ */
32
+ export type AppleTVTunnelResource = {
33
+ packetStreamServer: import("appium-ios-remotexpc").PacketStreamServer;
34
+ tunnelService: import("appium-ios-remotexpc").AppleTVTunnelService;
35
+ udid: string;
36
+ tunnel: AppleTVTunnelConnection;
37
+ tlsSocket: import("node:tls").TLSSocket;
38
+ };
39
+ import { PacketStreamServer } from 'appium-ios-remotexpc';
40
+ import { AppleTVTunnelService } from 'appium-ios-remotexpc';
3
41
  //# sourceMappingURL=tunnel-creation.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tunnel-creation.d.mts","sourceRoot":"","sources":["../../scripts/tunnel-creation.mjs"],"names":[],"mappings":""}
1
+ {"version":3,"file":"tunnel-creation.d.mts","sourceRoot":"","sources":["../../scripts/tunnel-creation.mjs"],"names":[],"mappings":";;;;;UAmkBc,MAAM;aACN,MAAM;aACN,MAAM;sBACN,MAAM;;;;;;aAMN,MAAM;;6BAEF,OAAO,KAAK,IAAI;oBACd,OAAO,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;wBAenB,OAAO,sBAAsB,EAAE,kBAAkB;mBACjD,OAAO,sBAAsB,EAAE,oBAAoB;UACnD,MAAM;YACN,uBAAuB;eACvB,OAAO,UAAU,EAAE,SAAS;;mCAllBnC,sBAAsB;qCAAtB,sBAAsB"}
@@ -5,18 +5,21 @@
5
5
  */
6
6
  import { logger, node, fs } from 'appium/support.js';
7
7
  import _ from 'lodash';
8
- import { PacketStreamServer, TunnelManager, createLockdownServiceByUDID, createUsbmux, startCoreDeviceProxy, startTunnelRegistryServer, } from 'appium-ios-remotexpc';
8
+ import { AppleTVTunnelService, 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
11
  import { Command } from 'commander';
12
12
  const log = logger.getLogger('TunnelCreation');
13
13
  const TUNNEL_REGISTRY_PORT = 'tunnelRegistryPort';
14
14
  /**
15
- * TunnelCreator class for managing tunnel creation and related operations
15
+ * TunnelCreator class for managing tunnel creation and related operations (USB and optional Apple TV over WiFi).
16
16
  */
17
17
  class TunnelCreator {
18
18
  constructor() {
19
+ /** @type {Map<string, import('appium-ios-remotexpc').PacketStreamServer>} */
19
20
  this._packetStreamServers = new Map();
21
+ /** @type {AppleTVTunnelResource[]} */
22
+ this._appletvResources = [];
20
23
  // Default port value, will be updated in main() if --packet-stream-base-port is provided
21
24
  this._packetStreamBasePort = 50000;
22
25
  // Default port value, will be updated in main() if --tunnel-registry-port is provided
@@ -35,14 +38,14 @@ class TunnelCreator {
35
38
  this._tunnelRegistryPort = port;
36
39
  }
37
40
  /**
38
- * Update tunnel registry with new tunnel information
39
- * @param {import('appium-ios-remotexpc').TunnelResult[]} results - Array of tunnel results
41
+ * Update tunnel registry with USB and optional Apple TV tunnel entries.
42
+ * @param {import('appium-ios-remotexpc').TunnelResult[]} usbResults - Array of USB tunnel results
43
+ * @param {AppleTVRegistryEntry[]} [appletvEntries] - Optional Apple TV tunnel entries
40
44
  * @returns {Promise<import('appium-ios-remotexpc').TunnelRegistry>} Updated tunnel registry
41
45
  */
42
- async updateTunnelRegistry(results) {
46
+ async updateTunnelRegistry(usbResults, appletvEntries = []) {
43
47
  const now = Date.now();
44
48
  const nowISOString = new Date().toISOString();
45
- // Initialize registry if it doesn't exist
46
49
  const registry = {
47
50
  tunnels: {},
48
51
  metadata: {
@@ -51,8 +54,7 @@ class TunnelCreator {
51
54
  activeTunnels: 0,
52
55
  },
53
56
  };
54
- // Update tunnels
55
- for (const result of results) {
57
+ for (const result of usbResults) {
56
58
  if (result.success) {
57
59
  const udid = result.device.Properties.SerialNumber;
58
60
  registry.tunnels[udid] = {
@@ -63,16 +65,28 @@ class TunnelCreator {
63
65
  packetStreamPort: result.packetStreamPort,
64
66
  connectionType: result.device.Properties.ConnectionType,
65
67
  productId: result.device.Properties.ProductID,
66
- createdAt: registry.tunnels[udid]?.createdAt ?? now,
68
+ createdAt: now,
67
69
  lastUpdated: now,
68
70
  };
69
71
  }
70
72
  }
71
- // Update metadata
73
+ for (const entry of appletvEntries) {
74
+ registry.tunnels[entry.udid] = {
75
+ udid: entry.udid,
76
+ deviceId: 0,
77
+ address: entry.address,
78
+ rsdPort: entry.rsdPort,
79
+ packetStreamPort: entry.packetStreamPort,
80
+ connectionType: 'WiFi',
81
+ productId: 0,
82
+ createdAt: now,
83
+ lastUpdated: now,
84
+ };
85
+ }
72
86
  registry.metadata = {
73
87
  lastUpdated: nowISOString,
74
88
  totalTunnels: Object.keys(registry.tunnels).length,
75
- activeTunnels: Object.keys(registry.tunnels).length, // Assuming all are active for now
89
+ activeTunnels: Object.keys(registry.tunnels).length,
76
90
  };
77
91
  return registry;
78
92
  }
@@ -81,10 +95,14 @@ class TunnelCreator {
81
95
  */
82
96
  async cleanup() {
83
97
  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) {
98
+ const usbEntries = [...this._packetStreamServers.entries()];
99
+ const appletvResources = [...this._appletvResources];
100
+ const closeUsbPacketStreamServers = (async () => {
101
+ if (usbEntries.length === 0) {
102
+ return;
103
+ }
104
+ log.info(`Closing ${usbEntries.length} packet stream server(s)...`);
105
+ await Promise.allSettled(usbEntries.map(async ([udid, server]) => {
88
106
  try {
89
107
  await server.stop();
90
108
  log.info(`Closed packet stream server for device ${udid}`);
@@ -92,9 +110,21 @@ class TunnelCreator {
92
110
  catch (err) {
93
111
  log.warn(`Failed to close packet stream server for device ${udid}: ${err}`);
94
112
  }
95
- }
113
+ }));
96
114
  this._packetStreamServers.clear();
97
- }
115
+ })();
116
+ const closeAppleTVTunnels = (async () => {
117
+ if (appletvResources.length === 0) {
118
+ return;
119
+ }
120
+ log.info(`Closing ${appletvResources.length} Apple TV tunnel(s)...`);
121
+ await Promise.allSettled(appletvResources.map(async (resource) => {
122
+ await teardownAppleTVTunnelResource(resource, resource.udid);
123
+ log.info(`Closed Apple TV tunnel for ${resource.udid}`);
124
+ }));
125
+ this._appletvResources.length = 0;
126
+ })();
127
+ await Promise.allSettled([closeUsbPacketStreamServers, closeAppleTVTunnels]);
98
128
  log.info('Cleanup completed.');
99
129
  }
100
130
  /**
@@ -149,17 +179,18 @@ class TunnelCreator {
149
179
  };
150
180
  }
151
181
  /**
152
- * Sets up tunnels for all connected devices.
182
+ * Sets up tunnels for all connected USB devices. Does not start the registry server.
153
183
  * @param {import('appium-ios-remotexpc').Usbmux} usbmux - The usbmux object.
154
184
  * @param {string|undefined} specificUdid - A specific UDID to process, or undefined for all devices.
155
185
  * @param {import('tls').ConnectionOptions} tlsOptions - TLS options.
186
+ * @returns {Promise<Array<import('appium-ios-remotexpc').TunnelResult>>} USB tunnel results (may be empty).
156
187
  */
157
188
  async setupTunnels(usbmux, specificUdid, tlsOptions) {
158
189
  log.info('Listing all connected devices...');
159
190
  const devices = await usbmux.listDevices();
160
191
  if (devices.length === 0) {
161
- log.warn('No devices found. Make sure iOS devices are connected and trusted.');
162
- return;
192
+ log.info('No USB devices found.');
193
+ return [];
163
194
  }
164
195
  log.info(`Found ${devices.length} connected device(s):`);
165
196
  devices.forEach((device, index) => {
@@ -187,30 +218,113 @@ class TunnelCreator {
187
218
  const result = await this.createTunnelForDevice(device, tlsOptions);
188
219
  results.push(result);
189
220
  }
190
- log.info('\n=== TUNNEL CREATION SUMMARY ===');
191
- const successful = results.filter((r) => r.success);
192
- const failed = results.filter((r) => !r.success);
193
- log.info(`Total devices processed: ${results.length}`);
194
- log.info(`Successful tunnels: ${successful.length}`);
195
- log.info(`Failed tunnels: ${failed.length}`);
196
- if (successful.length > 0) {
197
- log.info('\nāœ… Successful tunnels:');
198
- const registry = await this.updateTunnelRegistry(results);
199
- await startTunnelRegistryServer(registry, this._tunnelRegistryPort);
200
- log.info('\nšŸ“ Tunnel registry API:');
201
- log.info(' The tunnel registry is now available through the API at:');
202
- log.info(` http://localhost:${this._tunnelRegistryPort}/remotexpc/tunnels`);
203
- log.info('\n Available endpoints:');
204
- log.info(' - GET /remotexpc/tunnels - List all tunnels');
205
- log.info(' - GET /remotexpc/tunnels/:udid - Get tunnel by UDID');
206
- log.info(' - GET /remotexpc/tunnels/metadata - Get registry metadata');
207
- if (successful.length > 0) {
208
- const firstUdid = successful[0].device.Properties.SerialNumber;
209
- log.info(` curl http://localhost:${this._tunnelRegistryPort}/remotexpc/tunnels/${firstUdid}`);
221
+ return results;
222
+ }
223
+ /**
224
+ * Sets up tunnel(s) for paired Apple TV device(s) over WiFi. Uses a single tunnel when no
225
+ * API to enumerate paired devices is available. Does not start the registry server.
226
+ * @param {string|undefined} [specificDeviceId] - Optional Apple TV device identifier to target.
227
+ * @returns {Promise<AppleTVRegistryEntry[]>} Apple TV registry entries.
228
+ */
229
+ async setupAppleTVTunnels(specificDeviceId) {
230
+ /** @type {AppleTVRegistryEntry[]} */
231
+ const entries = [];
232
+ /** @type {import('appium-ios-remotexpc').AppleTVTunnelService | null} */
233
+ let tunnelService = null;
234
+ /** @type {AppleTVTunnelConnection | null} */
235
+ let tunnel = null;
236
+ /** @type {import('appium-ios-remotexpc').PacketStreamServer | null} */
237
+ let packetStreamServer = null;
238
+ /** @type {import('node:tls').TLSSocket | null} */
239
+ let tlsSocket = null;
240
+ try {
241
+ log.info('Starting Apple TV tunnel (WiFi)...');
242
+ tunnelService = new AppleTVTunnelService();
243
+ const result = await tunnelService.startTunnel(undefined, specificDeviceId ?? undefined);
244
+ tlsSocket = result.socket;
245
+ const deviceInfo = result.device;
246
+ if (!tlsSocket) {
247
+ log.warn('Apple TV TLS socket not established.');
248
+ return entries;
249
+ }
250
+ log.info(`Creating tunnel for Apple TV: ${deviceInfo.identifier}`);
251
+ tunnel = await TunnelManager.getTunnel(tlsSocket);
252
+ const packetStreamPort = this._packetStreamBasePort++;
253
+ packetStreamServer = new PacketStreamServer(packetStreamPort);
254
+ await packetStreamServer.start();
255
+ const consumer = packetStreamServer.getPacketConsumer();
256
+ if (consumer && tunnel?.addPacketConsumer) {
257
+ tunnel.addPacketConsumer(consumer);
210
258
  }
259
+ log.info(`Apple TV packet stream server started on port ${packetStreamPort}`);
260
+ this._appletvResources.push({
261
+ tunnel,
262
+ packetStreamServer,
263
+ tunnelService,
264
+ udid: deviceInfo.identifier,
265
+ tlsSocket,
266
+ });
267
+ entries.push({
268
+ udid: deviceInfo.identifier,
269
+ address: tunnel.Address,
270
+ rsdPort: tunnel.RsdPort ?? 0,
271
+ packetStreamPort,
272
+ });
273
+ log.info(`āœ… Apple TV tunnel ready for ${deviceInfo.identifier}`);
274
+ return entries;
275
+ }
276
+ catch (err) {
277
+ log.warn('Apple TV tunnel setup failed (ensure device is paired and on same network):', err?.message ?? err);
278
+ // Clean up partially created resources so we don't leave a lingering WiFi connection
279
+ if (tunnelService) {
280
+ await teardownAppleTVTunnelResource({ tunnel, packetStreamServer, tunnelService, tlsSocket }, 'partially created');
281
+ }
282
+ return entries;
211
283
  }
212
284
  }
213
285
  }
286
+ /**
287
+ * Tears down a single Apple TV tunnel resource (packet stream server, tunnel, tunnel service).
288
+ * Each step runs in its own try/catch so one failure does not skip the rest.
289
+ * @param {AppleTVTunnelTeardownInput} resource
290
+ * @param {string} [label] - Label for log messages (e.g. device udid or 'partially created')
291
+ */
292
+ async function teardownAppleTVTunnelResource(resource, label = 'Apple TV') {
293
+ const { tunnel, packetStreamServer, tunnelService, tlsSocket } = resource;
294
+ // Order aligned with remotexpc start-appletv-tunnel.ts: stop server, close tunnel, destroy socket, disconnect
295
+ try {
296
+ if (packetStreamServer) {
297
+ await packetStreamServer.stop();
298
+ }
299
+ }
300
+ catch (err) {
301
+ log.warn(`Failed to stop packet stream server for ${label}: ${err}`);
302
+ }
303
+ try {
304
+ if (_.isFunction(tunnel?.closer)) {
305
+ await tunnel.closer();
306
+ }
307
+ }
308
+ catch (err) {
309
+ log.warn(`Failed to close tunnel for ${label}: ${err}`);
310
+ }
311
+ try {
312
+ if (tlsSocket && !tlsSocket.destroyed) {
313
+ tlsSocket.destroy();
314
+ }
315
+ }
316
+ catch (err) {
317
+ log.warn(`Failed to destroy TLS socket for ${label}: ${err}`);
318
+ }
319
+ try {
320
+ if (tunnelService?.disconnect) {
321
+ tunnelService.disconnect();
322
+ }
323
+ }
324
+ catch (err) {
325
+ log.warn(`Failed to disconnect tunnel service for ${label}: ${err}`);
326
+ }
327
+ }
214
328
  /**
215
329
  * Sets up signal and error handlers to ensure tunnels are cleaned up exactly once
216
330
  * and an appropriate process exit code is set on shutdown.
@@ -285,7 +399,8 @@ async function main() {
285
399
  throw new Error(`Invalid tunnel registry port: ${value}. Expected an integer between 1 and 65535.`);
286
400
  }
287
401
  return port;
288
- });
402
+ })
403
+ .option('--appletv-device-id <identifier>', 'Apple TV device identifier to tunnel (from pair-appletv); omit to use first discovered paired device');
289
404
  program.parse(process.argv);
290
405
  const options = program.opts();
291
406
  const tunnelCreator = new TunnelCreator();
@@ -317,16 +432,77 @@ async function main() {
317
432
  };
318
433
  log.info('Connecting to usbmuxd...');
319
434
  const usbmux = await createUsbmux();
435
+ /** @type {import('appium-ios-remotexpc').TunnelResult[]} */
436
+ let usbResults = [];
320
437
  try {
321
- await tunnelCreator.setupTunnels(usbmux, options.udid, tlsOptions);
438
+ usbResults = await tunnelCreator.setupTunnels(usbmux, options.udid, tlsOptions);
322
439
  }
323
440
  finally {
324
441
  await usbmux.close();
325
442
  }
443
+ // Automatically add paired Apple TV(s) over WiFi when available
444
+ /** @type {AppleTVRegistryEntry[]} */
445
+ const appletvEntries = await tunnelCreator.setupAppleTVTunnels(options.appletvDeviceId);
446
+ const registry = await tunnelCreator.updateTunnelRegistry(usbResults, appletvEntries);
447
+ const totalTunnels = Object.keys(registry.tunnels).length;
448
+ if (totalTunnels === 0) {
449
+ log.warn('No tunnels created (no USB devices and no Apple TV tunnel).');
450
+ return;
451
+ }
452
+ await startTunnelRegistryServer(registry, tunnelCreator.tunnelRegistryPort);
453
+ const successfulUsb = usbResults.filter((r) => r.success);
454
+ log.info('\n=== TUNNEL CREATION SUMMARY ===');
455
+ log.info(`USB tunnels: ${successfulUsb.length}`);
456
+ log.info(`Apple TV (WiFi) tunnels: ${appletvEntries.length}`);
457
+ log.info(`Total tunnels: ${totalTunnels}`);
458
+ log.info('\nšŸ“ Tunnel registry API:');
459
+ log.info(' The tunnel registry is now available through the API at:');
460
+ log.info(` http://localhost:${tunnelCreator.tunnelRegistryPort}/remotexpc/tunnels`);
461
+ log.info('\n Available endpoints:');
462
+ log.info(' - GET /remotexpc/tunnels - List all tunnels');
463
+ log.info(' - GET /remotexpc/tunnels/:udid - Get tunnel by UDID');
464
+ log.info(' - GET /remotexpc/tunnels/metadata - Get registry metadata');
465
+ const firstUdid = successfulUsb[0]?.device?.Properties?.SerialNumber ?? appletvEntries[0]?.udid;
466
+ if (firstUdid) {
467
+ log.info(` curl http://localhost:${tunnelCreator.tunnelRegistryPort}/remotexpc/tunnels/${firstUdid}`);
468
+ }
326
469
  }
327
470
  finally {
328
471
  await cleanupOnce();
329
472
  }
330
473
  }
331
474
  await main();
475
+ /**
476
+ * @typedef {Object} AppleTVRegistryEntry
477
+ * Tunnel registry entry for an Apple TV (WiFi) device.
478
+ * @property {string} udid
479
+ * @property {string} address
480
+ * @property {number} rsdPort
481
+ * @property {number} packetStreamPort
482
+ */
483
+ /**
484
+ * @typedef {Object} AppleTVTunnelConnection
485
+ * Tunnel connection returned from TunnelManager.getTunnel for an Apple TV (WiFi) socket.
486
+ * @property {string} Address
487
+ * @property {number} [RsdPort]
488
+ * @property {(c: unknown) => void} [addPacketConsumer]
489
+ * @property {() => Promise<void>} [closer]
490
+ */
491
+ /**
492
+ * @typedef {Object} AppleTVTunnelTeardownInput
493
+ * Input for teardown of an Apple TV tunnel (full or partially created). All fields may be null if not yet created.
494
+ * @property {AppleTVTunnelConnection | null} [tunnel]
495
+ * @property {import('appium-ios-remotexpc').PacketStreamServer | null} [packetStreamServer]
496
+ * @property {import('appium-ios-remotexpc').AppleTVTunnelService | null} [tunnelService]
497
+ * @property {import('node:tls').TLSSocket | null} [tlsSocket]
498
+ */
499
+ /**
500
+ * @typedef {Object} AppleTVTunnelResource
501
+ * Resource handle for cleanup of a single Apple TV (WiFi) tunnel.
502
+ * @property {import('appium-ios-remotexpc').PacketStreamServer} packetStreamServer
503
+ * @property {import('appium-ios-remotexpc').AppleTVTunnelService} tunnelService
504
+ * @property {string} udid
505
+ * @property {AppleTVTunnelConnection} tunnel
506
+ * @property {import('node:tls').TLSSocket} tlsSocket
507
+ */
332
508
  //# 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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"}