appium-xcuitest-driver 10.16.2 → 10.17.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 +6 -0
- package/build/lib/commands/log.d.ts.map +1 -1
- package/build/lib/commands/log.js +1 -0
- package/build/lib/commands/log.js.map +1 -1
- package/build/lib/device/crash-reports-client.d.ts +65 -0
- package/build/lib/device/crash-reports-client.d.ts.map +1 -0
- package/build/lib/device/crash-reports-client.js +177 -0
- package/build/lib/device/crash-reports-client.js.map +1 -0
- package/build/lib/device/log/ios-crash-log.d.ts +4 -1
- package/build/lib/device/log/ios-crash-log.d.ts.map +1 -1
- package/build/lib/device/log/ios-crash-log.js +17 -8
- package/build/lib/device/log/ios-crash-log.js.map +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/lib/commands/log.ts +2 -1
- package/lib/device/crash-reports-client.ts +216 -0
- package/lib/device/log/ios-crash-log.ts +27 -12
- package/npm-shrinkwrap.json +8 -8
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
## [10.17.0](https://github.com/appium/appium-xcuitest-driver/compare/v10.16.2...v10.17.0) (2026-01-20)
|
|
2
|
+
|
|
3
|
+
### Features
|
|
4
|
+
|
|
5
|
+
* **crash-reports:** use remotexpc when iOS>=18 ([#2712](https://github.com/appium/appium-xcuitest-driver/issues/2712)) ([3dfe6cb](https://github.com/appium/appium-xcuitest-driver/commit/3dfe6cb4bb7d4d2a556d61c02078a96150be4282))
|
|
6
|
+
|
|
1
7
|
## [10.16.2](https://github.com/appium/appium-xcuitest-driver/compare/v10.16.1...v10.16.2) (2026-01-20)
|
|
2
8
|
|
|
3
9
|
### Bug Fixes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../../lib/commands/log.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,WAAW,CAAC;AAC9C,OAAO,KAAK,EAAC,QAAQ,EAAE,WAAW,EAAC,MAAM,SAAS,CAAC;AACnD,OAAO,KAAK,EAAC,YAAY,EAAyB,MAAM,eAAe,CAAC;AAExE,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,aAAa,CAAC;AAU9C,KAAK,sBAAsB,GAAG,MAAM,OAAO,mBAAmB,CAAC;AAE/D,UAAU,sBAAsB;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,QAAQ,CAAC;CACzC;AAED;;GAEG;AACH,QAAA,MAAM,mBAAmB,EAAE,YA4B1B,CAAC;AAQF,eAAO,MAAM,iBAAiB,cAAsB,CAAC;AAErD;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE,sBAAsB,EAC/B,aAAa,GAAE,OAAO,CAAC,MAAM,CAAC,sBAAsB,EAAE;IAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,CAAA;CAAC,CAAC,CAAM,GACrF,OAAO,CAAC,GAAG,CAAC,CAqBd;AAED;;;;;;;GAOG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../../lib/commands/log.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,WAAW,CAAC;AAC9C,OAAO,KAAK,EAAC,QAAQ,EAAE,WAAW,EAAC,MAAM,SAAS,CAAC;AACnD,OAAO,KAAK,EAAC,YAAY,EAAyB,MAAM,eAAe,CAAC;AAExE,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,aAAa,CAAC;AAU9C,KAAK,sBAAsB,GAAG,MAAM,OAAO,mBAAmB,CAAC;AAE/D,UAAU,sBAAsB;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,QAAQ,CAAC;CACzC;AAED;;GAEG;AACH,QAAA,MAAM,mBAAmB,EAAE,YA4B1B,CAAC;AAQF,eAAO,MAAM,iBAAiB,cAAsB,CAAC;AAErD;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE,sBAAsB,EAC/B,aAAa,GAAE,OAAO,CAAC,MAAM,CAAC,sBAAsB,EAAE;IAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,CAAA;CAAC,CAAC,CAAM,GACrF,OAAO,CAAC,GAAG,CAAC,CAqBd;AAED;;;;;;;GAOG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAqF5E;AAED;;;;;;;;;GASG;AACH,wBAAsB,wBAAwB,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAyDlF;AAED;;;;GAIG;AACH,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAQjF;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,SAAS,YAAY,EAC3D,IAAI,EAAE,cAAc,EACpB,UAAU,EAAE,EAAE,EACd,UAAU,EAAE,sBAAsB,GACjC,CAAC,EAAE,EAAE,WAAW,CAAC,CAanB"}
|
|
@@ -110,6 +110,7 @@ async function startLogCapture() {
|
|
|
110
110
|
sim: this.device,
|
|
111
111
|
udid: this.isRealDevice() ? this.opts.udid : undefined,
|
|
112
112
|
log: this.log,
|
|
113
|
+
useRemoteXPC: this.isRealDevice() && (0, utils_1.isIos18OrNewer)(this.opts),
|
|
113
114
|
}), {
|
|
114
115
|
type: 'crashlog',
|
|
115
116
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log.js","sourceRoot":"","sources":["../../../lib/commands/log.ts"],"names":[],"mappings":";;;;;;AAqFA,kCAyBC;AAUD,
|
|
1
|
+
{"version":3,"file":"log.js","sourceRoot":"","sources":["../../../lib/commands/log.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified Crash Reports Client
|
|
3
|
+
*
|
|
4
|
+
* Provides a unified interface for crash report operations on iOS devices,
|
|
5
|
+
* automatically handling the differences between iOS < 18 (py-ios-device via Pyidevice)
|
|
6
|
+
* and iOS 18+ (appium-ios-remotexpc).
|
|
7
|
+
*/
|
|
8
|
+
export declare class CrashReportsClient {
|
|
9
|
+
private readonly service;
|
|
10
|
+
private readonly remoteXPCConnection?;
|
|
11
|
+
private constructor();
|
|
12
|
+
/**
|
|
13
|
+
* Create a crash reports client for device
|
|
14
|
+
*
|
|
15
|
+
* @param udid - Device UDID
|
|
16
|
+
* @param useRemoteXPC - Whether to use remotexpc
|
|
17
|
+
* @returns CrashReportsClient instance
|
|
18
|
+
*/
|
|
19
|
+
static create(udid: string, useRemoteXPC: boolean): Promise<CrashReportsClient>;
|
|
20
|
+
/**
|
|
21
|
+
* Check if the crash reports tool exists
|
|
22
|
+
*
|
|
23
|
+
* @param isStrict - If true, throws an error when tool is not found
|
|
24
|
+
* @returns True if the tool exists, false otherwise
|
|
25
|
+
*/
|
|
26
|
+
assertExists(isStrict?: boolean): Promise<boolean>;
|
|
27
|
+
/**
|
|
28
|
+
* List crash report files on the device
|
|
29
|
+
*
|
|
30
|
+
* @returns Array of crash report file names (e.g., ['crash1.ips', 'crash2.crash'])
|
|
31
|
+
*/
|
|
32
|
+
listCrashes(): Promise<string[]>;
|
|
33
|
+
/**
|
|
34
|
+
* Export a crash report file from the device to local directory
|
|
35
|
+
*
|
|
36
|
+
* @param name - Name of the crash report file (e.g., 'crash.ips')
|
|
37
|
+
* @param dstFolder - Local destination folder path
|
|
38
|
+
*/
|
|
39
|
+
exportCrash(name: string, dstFolder: string): Promise<void>;
|
|
40
|
+
/**
|
|
41
|
+
* Close the crash reports service and release resources
|
|
42
|
+
*
|
|
43
|
+
* Only RemoteXPC clients need explicit cleanup; Pyidevice is stateless
|
|
44
|
+
*/
|
|
45
|
+
close(): Promise<void>;
|
|
46
|
+
/**
|
|
47
|
+
* Check if this client is using RemoteXPC
|
|
48
|
+
*/
|
|
49
|
+
private get isRemoteXPC();
|
|
50
|
+
/**
|
|
51
|
+
* Helper to safely execute remoteXPC operations with connection cleanup
|
|
52
|
+
* @param operation - Async operation that returns service and connection
|
|
53
|
+
* @returns CrashReportsClient on success, null on failure
|
|
54
|
+
*/
|
|
55
|
+
private static withRemoteXpcConnection;
|
|
56
|
+
/**
|
|
57
|
+
* Get service as RemoteXPC crash reports service
|
|
58
|
+
*/
|
|
59
|
+
private get remoteXPCCrashReportsService();
|
|
60
|
+
/**
|
|
61
|
+
* Get service as Pyidevice client
|
|
62
|
+
*/
|
|
63
|
+
private get pyideviceClient();
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=crash-reports-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crash-reports-client.d.ts","sourceRoot":"","sources":["../../../lib/device/crash-reports-client.ts"],"names":[],"mappings":"AAYA;;;;;;GAMG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiD;IACzE,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAsB;IAE3D,OAAO;IAUP;;;;;;OAMG;WACU,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAwBrF;;;;;OAKG;IACG,YAAY,CAAC,QAAQ,GAAE,OAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAU9D;;;;OAIG;IACG,WAAW,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAiBtC;;;;;OAKG;IACG,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBjE;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAsB5B;;OAEG;IACH,OAAO,KAAK,WAAW,GAEtB;IAED;;;;OAIG;mBACkB,uBAAuB;IAgC5C;;OAEG;IACH,OAAO,KAAK,4BAA4B,GAEvC;IAED;;OAEG;IACH,OAAO,KAAK,eAAe,GAE1B;CAGF"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CrashReportsClient = void 0;
|
|
4
|
+
const remotexpc_utils_1 = require("./remotexpc-utils");
|
|
5
|
+
const logger_1 = require("../logger");
|
|
6
|
+
const py_ios_device_client_1 = require("./clients/py-ios-device-client");
|
|
7
|
+
const CRASH_REPORT_EXTENSIONS = ['.ips'];
|
|
8
|
+
const MAX_FILES_IN_ERROR = 10;
|
|
9
|
+
/**
|
|
10
|
+
* Unified Crash Reports Client
|
|
11
|
+
*
|
|
12
|
+
* Provides a unified interface for crash report operations on iOS devices,
|
|
13
|
+
* automatically handling the differences between iOS < 18 (py-ios-device via Pyidevice)
|
|
14
|
+
* and iOS 18+ (appium-ios-remotexpc).
|
|
15
|
+
*/
|
|
16
|
+
class CrashReportsClient {
|
|
17
|
+
service;
|
|
18
|
+
remoteXPCConnection;
|
|
19
|
+
constructor(service, remoteXPCConnection) {
|
|
20
|
+
this.service = service;
|
|
21
|
+
this.remoteXPCConnection = remoteXPCConnection;
|
|
22
|
+
}
|
|
23
|
+
//#region Public Static Methods
|
|
24
|
+
/**
|
|
25
|
+
* Create a crash reports client for device
|
|
26
|
+
*
|
|
27
|
+
* @param udid - Device UDID
|
|
28
|
+
* @param useRemoteXPC - Whether to use remotexpc
|
|
29
|
+
* @returns CrashReportsClient instance
|
|
30
|
+
*/
|
|
31
|
+
static async create(udid, useRemoteXPC) {
|
|
32
|
+
if (useRemoteXPC) {
|
|
33
|
+
const client = await CrashReportsClient.withRemoteXpcConnection(async () => {
|
|
34
|
+
const Services = await (0, remotexpc_utils_1.getRemoteXPCServices)();
|
|
35
|
+
const { crashReportsService, remoteXPC } = await Services.startCrashReportsService(udid);
|
|
36
|
+
return {
|
|
37
|
+
service: crashReportsService,
|
|
38
|
+
connection: remoteXPC,
|
|
39
|
+
};
|
|
40
|
+
});
|
|
41
|
+
if (client) {
|
|
42
|
+
return client;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
// Fallback to Pyidevice
|
|
46
|
+
const pyideviceClient = new py_ios_device_client_1.Pyidevice({ udid, log: logger_1.log });
|
|
47
|
+
return new CrashReportsClient(pyideviceClient);
|
|
48
|
+
}
|
|
49
|
+
//#endregion
|
|
50
|
+
//#region Public Instance Methods
|
|
51
|
+
/**
|
|
52
|
+
* Check if the crash reports tool exists
|
|
53
|
+
*
|
|
54
|
+
* @param isStrict - If true, throws an error when tool is not found
|
|
55
|
+
* @returns True if the tool exists, false otherwise
|
|
56
|
+
*/
|
|
57
|
+
async assertExists(isStrict = true) {
|
|
58
|
+
if (this.isRemoteXPC) {
|
|
59
|
+
// RemoteXPC is already connected, so it exists
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
// Pyidevice: check if binary exists
|
|
63
|
+
return await this.pyideviceClient.assertExists(isStrict);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* List crash report files on the device
|
|
67
|
+
*
|
|
68
|
+
* @returns Array of crash report file names (e.g., ['crash1.ips', 'crash2.crash'])
|
|
69
|
+
*/
|
|
70
|
+
async listCrashes() {
|
|
71
|
+
if (!this.isRemoteXPC) {
|
|
72
|
+
return await this.pyideviceClient.listCrashes();
|
|
73
|
+
}
|
|
74
|
+
// RemoteXPC: ls returns full paths, filter and extract filenames
|
|
75
|
+
const allFiles = await this.remoteXPCCrashReportsService.ls('/', -1);
|
|
76
|
+
return allFiles
|
|
77
|
+
.filter((filePath) => CRASH_REPORT_EXTENSIONS.some((ext) => filePath.endsWith(ext)))
|
|
78
|
+
.map((filePath) => {
|
|
79
|
+
const parts = filePath.split('/');
|
|
80
|
+
return parts[parts.length - 1];
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Export a crash report file from the device to local directory
|
|
85
|
+
*
|
|
86
|
+
* @param name - Name of the crash report file (e.g., 'crash.ips')
|
|
87
|
+
* @param dstFolder - Local destination folder path
|
|
88
|
+
*/
|
|
89
|
+
async exportCrash(name, dstFolder) {
|
|
90
|
+
if (!this.isRemoteXPC) {
|
|
91
|
+
return await this.pyideviceClient.exportCrash(name, dstFolder);
|
|
92
|
+
}
|
|
93
|
+
// RemoteXPC: need to find full path first, then pull
|
|
94
|
+
const allFiles = await this.remoteXPCCrashReportsService.ls('/', -1);
|
|
95
|
+
const fullPath = allFiles.find((p) => p.endsWith(`/${name}`) || p === `/${name}`);
|
|
96
|
+
if (!fullPath) {
|
|
97
|
+
const filesList = allFiles.slice(0, MAX_FILES_IN_ERROR).join(', ');
|
|
98
|
+
const hasMore = allFiles.length > MAX_FILES_IN_ERROR;
|
|
99
|
+
throw new Error(`Crash report '${name}' not found on device. ` +
|
|
100
|
+
`Available files: ${filesList}${hasMore ? `, ... and ${allFiles.length - MAX_FILES_IN_ERROR} more` : ''}`);
|
|
101
|
+
}
|
|
102
|
+
await this.remoteXPCCrashReportsService.pull(dstFolder, fullPath);
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Close the crash reports service and release resources
|
|
106
|
+
*
|
|
107
|
+
* Only RemoteXPC clients need explicit cleanup; Pyidevice is stateless
|
|
108
|
+
*/
|
|
109
|
+
async close() {
|
|
110
|
+
if (!this.isRemoteXPC) {
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
this.remoteXPCCrashReportsService.close();
|
|
114
|
+
if (this.remoteXPCConnection) {
|
|
115
|
+
try {
|
|
116
|
+
await this.remoteXPCConnection.close();
|
|
117
|
+
}
|
|
118
|
+
catch (err) {
|
|
119
|
+
logger_1.log.warn(`Error closing RemoteXPC connection for crash reports: ${err.message}`);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
//#endregion
|
|
124
|
+
//#region Private Methods
|
|
125
|
+
/**
|
|
126
|
+
* Check if this client is using RemoteXPC
|
|
127
|
+
*/
|
|
128
|
+
get isRemoteXPC() {
|
|
129
|
+
return !!this.remoteXPCConnection;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Helper to safely execute remoteXPC operations with connection cleanup
|
|
133
|
+
* @param operation - Async operation that returns service and connection
|
|
134
|
+
* @returns CrashReportsClient on success, null on failure
|
|
135
|
+
*/
|
|
136
|
+
static async withRemoteXpcConnection(operation) {
|
|
137
|
+
let remoteXPCConnection;
|
|
138
|
+
let succeeded = false;
|
|
139
|
+
try {
|
|
140
|
+
const { service, connection } = await operation();
|
|
141
|
+
remoteXPCConnection = connection;
|
|
142
|
+
const client = new CrashReportsClient(service, remoteXPCConnection);
|
|
143
|
+
succeeded = true;
|
|
144
|
+
return client;
|
|
145
|
+
}
|
|
146
|
+
catch (err) {
|
|
147
|
+
logger_1.log.error(`Failed to create crash reports client via RemoteXPC: ${err.message}. ` +
|
|
148
|
+
`Falling back to py-ios-device (pyidevice)`);
|
|
149
|
+
return null;
|
|
150
|
+
}
|
|
151
|
+
finally {
|
|
152
|
+
// Only close connection if we failed (if succeeded, the client owns it)
|
|
153
|
+
if (remoteXPCConnection && !succeeded) {
|
|
154
|
+
try {
|
|
155
|
+
await remoteXPCConnection.close();
|
|
156
|
+
}
|
|
157
|
+
catch {
|
|
158
|
+
// Ignore cleanup errors
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Get service as RemoteXPC crash reports service
|
|
165
|
+
*/
|
|
166
|
+
get remoteXPCCrashReportsService() {
|
|
167
|
+
return this.service;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Get service as Pyidevice client
|
|
171
|
+
*/
|
|
172
|
+
get pyideviceClient() {
|
|
173
|
+
return this.service;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
exports.CrashReportsClient = CrashReportsClient;
|
|
177
|
+
//# sourceMappingURL=crash-reports-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crash-reports-client.js","sourceRoot":"","sources":["../../../lib/device/crash-reports-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,10 +9,13 @@ export interface IOSCrashLogOptions {
|
|
|
9
9
|
/** Simulator instance */
|
|
10
10
|
sim?: Simulator;
|
|
11
11
|
log: AppiumLogger;
|
|
12
|
+
/** Whether to use RemoteXPC for crash reports (iOS 18+). */
|
|
13
|
+
useRemoteXPC?: boolean;
|
|
12
14
|
}
|
|
13
15
|
export declare class IOSCrashLog extends IOSLog<TSerializedEntry, TSerializedEntry> {
|
|
14
16
|
private readonly _udid;
|
|
15
|
-
private readonly
|
|
17
|
+
private readonly _useRemoteXPC;
|
|
18
|
+
private _realDeviceClient;
|
|
16
19
|
private readonly _logDir;
|
|
17
20
|
private readonly _sim;
|
|
18
21
|
private _recentCrashFiles;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ios-crash-log.d.ts","sourceRoot":"","sources":["../../../../lib/device/log/ios-crash-log.ts"],"names":[],"mappings":"AAKA,OAAO,EAAC,MAAM,EAAC,MAAM,WAAW,CAAC;AAEjC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"ios-crash-log.d.ts","sourceRoot":"","sources":["../../../../lib/device/log/ios-crash-log.ts"],"names":[],"mappings":"AAKA,OAAO,EAAC,MAAM,EAAC,MAAM,WAAW,CAAC;AAEjC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAQrD,KAAK,gBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEzC,MAAM,WAAW,kBAAkB;IACjC,4BAA4B;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yBAAyB;IACzB,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,GAAG,EAAE,YAAY,CAAC;IAClB,4DAA4D;IAC5D,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,qBAAa,WAAY,SAAQ,MAAM,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IACzE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;IAC3C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAU;IACxC,OAAO,CAAC,iBAAiB,CAA4B;IACrD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;IACxC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAwB;IAC7C,OAAO,CAAC,iBAAiB,CAAW;IACpC,OAAO,CAAC,QAAQ,CAAU;gBAEd,IAAI,EAAE,kBAAkB;IAgBrB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAK7B,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAS3C,IAAa,WAAW,IAAI,OAAO,CAElC;IAEc,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;cAa1B,eAAe,CAAC,KAAK,EAAE,gBAAgB,GAAG,gBAAgB;cAI1D,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,QAAQ;YAKzD,iBAAiB;YA0BjB,qBAAqB;YA2BrB,oBAAoB;YAsBpB,eAAe;IAM7B,OAAO,CAAC,aAAa;CAGtB;AAED,eAAe,WAAW,CAAC"}
|
|
@@ -8,7 +8,7 @@ const support_1 = require("appium/support");
|
|
|
8
8
|
const bluebird_1 = __importDefault(require("bluebird"));
|
|
9
9
|
const path_1 = __importDefault(require("path"));
|
|
10
10
|
const lodash_1 = __importDefault(require("lodash"));
|
|
11
|
-
const
|
|
11
|
+
const crash_reports_client_1 = require("../crash-reports-client");
|
|
12
12
|
const ios_log_1 = require("./ios-log");
|
|
13
13
|
const helpers_1 = require("./helpers");
|
|
14
14
|
// The file format has been changed from '.crash' to '.ips' since Monterey.
|
|
@@ -18,6 +18,7 @@ const CRASH_REPORTS_GLOB_PATTERN = '**/*.@(crash|ips)';
|
|
|
18
18
|
const MAX_RECENT_ITEMS = 20;
|
|
19
19
|
class IOSCrashLog extends ios_log_1.IOSLog {
|
|
20
20
|
_udid;
|
|
21
|
+
_useRemoteXPC;
|
|
21
22
|
_realDeviceClient;
|
|
22
23
|
_logDir;
|
|
23
24
|
_sim;
|
|
@@ -30,12 +31,8 @@ class IOSCrashLog extends ios_log_1.IOSLog {
|
|
|
30
31
|
});
|
|
31
32
|
this._udid = opts.udid;
|
|
32
33
|
this._sim = opts.sim;
|
|
33
|
-
this.
|
|
34
|
-
|
|
35
|
-
udid: this._udid,
|
|
36
|
-
log: opts.log,
|
|
37
|
-
})
|
|
38
|
-
: null;
|
|
34
|
+
this._useRemoteXPC = opts.useRemoteXPC ?? false;
|
|
35
|
+
this._realDeviceClient = null;
|
|
39
36
|
this._logDir = this._isRealDevice()
|
|
40
37
|
? null
|
|
41
38
|
: path_1.default.resolve(process.env.HOME || '/', 'Library', 'Logs', 'DiagnosticReports');
|
|
@@ -48,6 +45,11 @@ class IOSCrashLog extends ios_log_1.IOSLog {
|
|
|
48
45
|
}
|
|
49
46
|
async stopCapture() {
|
|
50
47
|
this._started = false;
|
|
48
|
+
// Clean up the client connection
|
|
49
|
+
if (this._realDeviceClient) {
|
|
50
|
+
await this._realDeviceClient.close();
|
|
51
|
+
this._realDeviceClient = null;
|
|
52
|
+
}
|
|
51
53
|
}
|
|
52
54
|
get isCapturing() {
|
|
53
55
|
return this._started;
|
|
@@ -97,7 +99,14 @@ class IOSCrashLog extends ios_log_1.IOSLog {
|
|
|
97
99
|
}
|
|
98
100
|
async _gatherFromRealDevice(strict) {
|
|
99
101
|
if (!this._realDeviceClient) {
|
|
100
|
-
|
|
102
|
+
try {
|
|
103
|
+
this._realDeviceClient = await crash_reports_client_1.CrashReportsClient.create(this._udid, this._useRemoteXPC);
|
|
104
|
+
}
|
|
105
|
+
catch (err) {
|
|
106
|
+
this.log.error(`Failed to create crash reports client: ${err.message}. ` +
|
|
107
|
+
`Skipping crash logs collection for real devices.`);
|
|
108
|
+
return [];
|
|
109
|
+
}
|
|
101
110
|
}
|
|
102
111
|
if (!await this._realDeviceClient.assertExists(strict)) {
|
|
103
112
|
this.log.info(`The ${lodash_1.default.toLower(this._realDeviceClient.constructor.name)} tool is not present in PATH. ` +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ios-crash-log.js","sourceRoot":"","sources":["../../../../lib/device/log/ios-crash-log.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAiD;AACjD,wDAAyB;AACzB,gDAAwB;AACxB,oDAAuB;AACvB,
|
|
1
|
+
{"version":3,"file":"ios-crash-log.js","sourceRoot":"","sources":["../../../../lib/device/log/ios-crash-log.ts"],"names":[],"mappings":"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"}
|