appium-xcuitest-driver 11.0.2 → 11.0.3
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 +6 -0
- package/build/lib/commands/xctest-record-screen.d.ts.map +1 -1
- package/build/lib/commands/xctest-record-screen.js +9 -2
- package/build/lib/commands/xctest-record-screen.js.map +1 -1
- package/build/lib/device/remotexpc-utils.d.ts +4 -0
- package/build/lib/device/remotexpc-utils.d.ts.map +1 -1
- package/build/lib/device/remotexpc-utils.js +11 -0
- package/build/lib/device/remotexpc-utils.js.map +1 -1
- package/lib/commands/xctest-record-screen.ts +16 -3
- package/lib/device/remotexpc-utils.ts +11 -0
- package/npm-shrinkwrap.json +3 -3
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
## [11.0.3](https://github.com/appium/appium-xcuitest-driver/compare/v11.0.2...v11.0.3) (2026-04-29)
|
|
2
|
+
|
|
3
|
+
### Bug Fixes
|
|
4
|
+
|
|
5
|
+
* Log a warning instead of throwing an error on attachment deletion ([#2822](https://github.com/appium/appium-xcuitest-driver/issues/2822)) ([5a8ffd7](https://github.com/appium/appium-xcuitest-driver/commit/5a8ffd7e1e67432110b14e6efc17699b1f787e53))
|
|
6
|
+
|
|
1
7
|
## [11.0.2](https://github.com/appium/appium-xcuitest-driver/compare/v11.0.1...v11.0.2) (2026-04-29)
|
|
2
8
|
|
|
3
9
|
### Bug Fixes
|
|
@@ -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;
|
|
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;AAiE9E;;;;;;;;;;;;;;;;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"}
|
|
@@ -11,6 +11,7 @@ const support_1 = require("appium/support");
|
|
|
11
11
|
const utils_1 = require("../utils");
|
|
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
|
+
const remotexpc_utils_1 = require("../device/remotexpc-utils");
|
|
14
15
|
const MOV_EXT = '.mov';
|
|
15
16
|
/** Insecure feature when real-device XCTest recording is used without RemoteXPC attachment deletion. */
|
|
16
17
|
const XCTEST_SCREEN_RECORD_FEATURE = 'xctest_screen_record';
|
|
@@ -185,10 +186,16 @@ async function mobileStopXctestScreenRecording(remotePath, user, pass, headers,
|
|
|
185
186
|
}
|
|
186
187
|
catch (deleteErr) {
|
|
187
188
|
if (encodeOrUploadError === undefined) {
|
|
188
|
-
|
|
189
|
+
if (this.isFeatureEnabled(XCTEST_SCREEN_RECORD_FEATURE) &&
|
|
190
|
+
(0, remotexpc_utils_1.isTunnelAvailabilityError)(deleteErr)) {
|
|
191
|
+
this.log.warn(`Could not delete XCTest attachment on device: ${deleteErr?.message ?? deleteErr}`);
|
|
192
|
+
}
|
|
193
|
+
else {
|
|
194
|
+
attachmentDeleteError = deleteErr;
|
|
195
|
+
}
|
|
189
196
|
}
|
|
190
197
|
else {
|
|
191
|
-
this.log.warn(`Could not delete XCTest attachment on device
|
|
198
|
+
this.log.warn(`Could not delete XCTest attachment on device (encode/upload had already failed): ${deleteErr?.message ?? deleteErr}`);
|
|
192
199
|
}
|
|
193
200
|
}
|
|
194
201
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xctest-record-screen.js","sourceRoot":"","sources":["../../../lib/commands/xctest-record-screen.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"xctest-record-screen.js","sourceRoot":"","sources":["../../../lib/commands/xctest-record-screen.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,10 @@ import type { AppiumLogger } from '@appium/types';
|
|
|
2
2
|
export type RemoteXPCEsmModule = typeof import('appium-ios-remotexpc');
|
|
3
3
|
export type RemoteXPCServices = typeof import('appium-ios-remotexpc').Services;
|
|
4
4
|
export type RemoteXPCTestRunner = RemoteXPCEsmModule['XCTestRunner'];
|
|
5
|
+
/**
|
|
6
|
+
* Whether the given error means RemoteXPC tunnel infrastructure is unavailable.
|
|
7
|
+
*/
|
|
8
|
+
export declare function isTunnelAvailabilityError(err: unknown): boolean;
|
|
5
9
|
/**
|
|
6
10
|
* Get the RemoteXPC Services module dynamically
|
|
7
11
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remotexpc-utils.d.ts","sourceRoot":"","sources":["../../../lib/device/remotexpc-utils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,eAAe,CAAC;AAGhD,MAAM,MAAM,kBAAkB,GAAG,cAAc,sBAAsB,CAAC,CAAC;AACvE,MAAM,MAAM,iBAAiB,GAAG,cAAc,sBAAsB,EAAE,QAAQ,CAAC;AAC/E,MAAM,MAAM,mBAAmB,GAAG,kBAAkB,CAAC,cAAc,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"remotexpc-utils.d.ts","sourceRoot":"","sources":["../../../lib/device/remotexpc-utils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,eAAe,CAAC;AAGhD,MAAM,MAAM,kBAAkB,GAAG,cAAc,sBAAsB,CAAC,CAAC;AACvE,MAAM,MAAM,iBAAiB,GAAG,cAAc,sBAAsB,EAAE,QAAQ,CAAC;AAC/E,MAAM,MAAM,mBAAmB,GAAG,kBAAkB,CAAC,cAAc,CAAC,CAAC;AAErE;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAM/D;AAyED;;;;;;;;;GASG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAyBvE;AAED;;;;;;;GAOG;AACH,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAkCjF;AAED;;;GAGG;AACH,wBAAgB,oCAAoC,IAAI,OAAO,CAE9D;AAED;;;;GAIG;AACH,wBAAgB,mCAAmC,IAAI,KAAK,GAAG,IAAI,CAElE;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAGhF;AAED;;;;;;;GAOG;AACH,wBAAsB,6BAA6B,CACjD,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,YAAY,GAChB,OAAO,CAAC;IAAC,SAAS,EAAE,kBAAkB,CAAC;IAAC,aAAa,EAAE,OAAO,CAAA;CAAC,GAAG,IAAI,CAAC,CAOzE;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,mBAAmB,CAAC,CA6BzE"}
|
|
@@ -3,6 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.isTunnelAvailabilityError = isTunnelAvailabilityError;
|
|
6
7
|
exports.getRemoteXPCServices = getRemoteXPCServices;
|
|
7
8
|
exports.tryGetRemoteXPCServices = tryGetRemoteXPCServices;
|
|
8
9
|
exports.isRemoteXPCOptionalDependencyMissing = isRemoteXPCOptionalDependencyMissing;
|
|
@@ -14,6 +15,16 @@ const support_1 = require("appium/support");
|
|
|
14
15
|
const node_path_1 = __importDefault(require("node:path"));
|
|
15
16
|
const node_fs_1 = require("node:fs");
|
|
16
17
|
const usbmux_utils_1 = require("./usbmux-utils");
|
|
18
|
+
/**
|
|
19
|
+
* Whether the given error means RemoteXPC tunnel infrastructure is unavailable.
|
|
20
|
+
*/
|
|
21
|
+
function isTunnelAvailabilityError(err) {
|
|
22
|
+
if (!err) {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
const name = err?.name ?? err?.constructor?.name;
|
|
26
|
+
return name === 'TunnelAvailabilityError';
|
|
27
|
+
}
|
|
17
28
|
/**
|
|
18
29
|
* Full ESM namespace after a successful `import('appium-ios-remotexpc')` (e.g. **XCTestAttachment**).
|
|
19
30
|
* Set together with {@link cachedRemoteXPCServices}.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remotexpc-utils.js","sourceRoot":"","sources":["../../../lib/device/remotexpc-utils.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"remotexpc-utils.js","sourceRoot":"","sources":["../../../lib/device/remotexpc-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@ import type {RealDevice} from '../device/real-device-management';
|
|
|
8
8
|
import type {HTTPHeaders} from '@appium/types';
|
|
9
9
|
import type {XcTestScreenRecordingInfo, XcTestScreenRecording} from './types';
|
|
10
10
|
import {XctestAttachmentDeletionClient} from '../device/xctest-attachment-deletion-client';
|
|
11
|
+
import {isTunnelAvailabilityError} from '../device/remotexpc-utils';
|
|
11
12
|
|
|
12
13
|
const MOV_EXT = '.mov';
|
|
13
14
|
/** Insecure feature when real-device XCTest recording is used without RemoteXPC attachment deletion. */
|
|
@@ -185,7 +186,10 @@ export async function mobileStopXctestScreenRecording(
|
|
|
185
186
|
|
|
186
187
|
this.log.debug(`Stopping the active screen recording: ${JSON.stringify(screenRecordingInfo)}`);
|
|
187
188
|
await this.proxyCommand('/wda/video/stop', 'POST', {});
|
|
188
|
-
const videoPath = await retrieveXcTestScreenRecording.call(
|
|
189
|
+
const videoPath: string = await retrieveXcTestScreenRecording.call(
|
|
190
|
+
this,
|
|
191
|
+
screenRecordingInfo.uuid,
|
|
192
|
+
);
|
|
189
193
|
const result: XcTestScreenRecording = {
|
|
190
194
|
...screenRecordingInfo,
|
|
191
195
|
payload: '', // Will be set below
|
|
@@ -226,10 +230,19 @@ export async function mobileStopXctestScreenRecording(
|
|
|
226
230
|
}
|
|
227
231
|
} catch (deleteErr: any) {
|
|
228
232
|
if (encodeOrUploadError === undefined) {
|
|
229
|
-
|
|
233
|
+
if (
|
|
234
|
+
this.isFeatureEnabled(XCTEST_SCREEN_RECORD_FEATURE) &&
|
|
235
|
+
isTunnelAvailabilityError(deleteErr)
|
|
236
|
+
) {
|
|
237
|
+
this.log.warn(
|
|
238
|
+
`Could not delete XCTest attachment on device: ${deleteErr?.message ?? deleteErr}`,
|
|
239
|
+
);
|
|
240
|
+
} else {
|
|
241
|
+
attachmentDeleteError = deleteErr;
|
|
242
|
+
}
|
|
230
243
|
} else {
|
|
231
244
|
this.log.warn(
|
|
232
|
-
`Could not delete XCTest attachment on device
|
|
245
|
+
`Could not delete XCTest attachment on device (encode/upload had already failed): ${
|
|
233
246
|
deleteErr?.message ?? deleteErr
|
|
234
247
|
}`,
|
|
235
248
|
);
|
|
@@ -8,6 +8,17 @@ export type RemoteXPCEsmModule = typeof import('appium-ios-remotexpc');
|
|
|
8
8
|
export type RemoteXPCServices = typeof import('appium-ios-remotexpc').Services;
|
|
9
9
|
export type RemoteXPCTestRunner = RemoteXPCEsmModule['XCTestRunner'];
|
|
10
10
|
|
|
11
|
+
/**
|
|
12
|
+
* Whether the given error means RemoteXPC tunnel infrastructure is unavailable.
|
|
13
|
+
*/
|
|
14
|
+
export function isTunnelAvailabilityError(err: unknown): boolean {
|
|
15
|
+
if (!err) {
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
const name = (err as any)?.name ?? (err as any)?.constructor?.name;
|
|
19
|
+
return name === 'TunnelAvailabilityError';
|
|
20
|
+
}
|
|
21
|
+
|
|
11
22
|
/**
|
|
12
23
|
* Full ESM namespace after a successful `import('appium-ios-remotexpc')` (e.g. **XCTestAttachment**).
|
|
13
24
|
* Set together with {@link cachedRemoteXPCServices}.
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "appium-xcuitest-driver",
|
|
3
|
-
"version": "11.0.
|
|
3
|
+
"version": "11.0.3",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "appium-xcuitest-driver",
|
|
9
|
-
"version": "11.0.
|
|
9
|
+
"version": "11.0.3",
|
|
10
10
|
"license": "Apache-2.0",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@appium/strongbox": "^1.0.0-rc.1",
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
"npm": ">=10"
|
|
68
68
|
},
|
|
69
69
|
"optionalDependencies": {
|
|
70
|
-
"appium-ios-remotexpc": "^1.0
|
|
70
|
+
"appium-ios-remotexpc": "^1.1.0"
|
|
71
71
|
},
|
|
72
72
|
"peerDependencies": {
|
|
73
73
|
"appium": "^3.0.0-rc.2"
|
package/package.json
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"xcuitest",
|
|
9
9
|
"xctest"
|
|
10
10
|
],
|
|
11
|
-
"version": "11.0.
|
|
11
|
+
"version": "11.0.3",
|
|
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": "^1.0
|
|
110
|
+
"appium-ios-remotexpc": "^1.1.0"
|
|
111
111
|
},
|
|
112
112
|
"scripts": {
|
|
113
113
|
"build": "tsc -b",
|