appium-xcuitest-driver 7.22.0 → 7.23.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.
Files changed (72) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/build/lib/commands/certificate.js +4 -4
  3. package/build/lib/commands/certificate.js.map +1 -1
  4. package/build/lib/commands/log.d.ts.map +1 -1
  5. package/build/lib/commands/log.js +2 -1
  6. package/build/lib/commands/log.js.map +1 -1
  7. package/build/lib/commands/memory.js +1 -1
  8. package/build/lib/commands/memory.js.map +1 -1
  9. package/build/lib/commands/pcap.d.ts.map +1 -1
  10. package/build/lib/commands/pcap.js +3 -11
  11. package/build/lib/commands/pcap.js.map +1 -1
  12. package/build/lib/commands/performance.d.ts.map +1 -1
  13. package/build/lib/commands/performance.js +3 -5
  14. package/build/lib/commands/performance.js.map +1 -1
  15. package/build/lib/commands/recordscreen.d.ts.map +1 -1
  16. package/build/lib/commands/recordscreen.js +8 -9
  17. package/build/lib/commands/recordscreen.js.map +1 -1
  18. package/build/lib/device-log/helpers.d.ts +4 -0
  19. package/build/lib/device-log/helpers.d.ts.map +1 -1
  20. package/build/lib/device-log/helpers.js +22 -0
  21. package/build/lib/device-log/helpers.js.map +1 -1
  22. package/build/lib/device-log/ios-crash-log.d.ts +30 -38
  23. package/build/lib/device-log/ios-crash-log.d.ts.map +1 -1
  24. package/build/lib/device-log/ios-crash-log.js +97 -100
  25. package/build/lib/device-log/ios-crash-log.js.map +1 -1
  26. package/build/lib/device-log/ios-log.d.ts +1 -1
  27. package/build/lib/device-log/ios-log.d.ts.map +1 -1
  28. package/build/lib/device-log/ios-log.js +2 -1
  29. package/build/lib/device-log/ios-log.js.map +1 -1
  30. package/build/lib/driver.d.ts +4 -2
  31. package/build/lib/driver.d.ts.map +1 -1
  32. package/build/lib/driver.js +2 -2
  33. package/build/lib/driver.js.map +1 -1
  34. package/build/lib/real-device-clients/base-device-client.d.ts +22 -0
  35. package/build/lib/real-device-clients/base-device-client.d.ts.map +1 -0
  36. package/build/lib/real-device-clients/base-device-client.js +13 -0
  37. package/build/lib/real-device-clients/base-device-client.js.map +1 -0
  38. package/build/lib/real-device-clients/devicectl.d.ts.map +1 -0
  39. package/build/lib/real-device-clients/devicectl.js.map +1 -0
  40. package/build/lib/real-device-clients/py-ios-device-client.d.ts +21 -0
  41. package/build/lib/real-device-clients/py-ios-device-client.d.ts.map +1 -0
  42. package/build/lib/{py-ios-device-client.js → real-device-clients/py-ios-device-client.js} +53 -84
  43. package/build/lib/real-device-clients/py-ios-device-client.js.map +1 -0
  44. package/build/lib/real-device.d.ts +1 -1
  45. package/build/lib/real-device.d.ts.map +1 -1
  46. package/build/lib/real-device.js +1 -1
  47. package/build/lib/real-device.js.map +1 -1
  48. package/lib/commands/certificate.js +1 -1
  49. package/lib/commands/log.js +2 -1
  50. package/lib/commands/memory.js +1 -1
  51. package/lib/commands/pcap.js +3 -8
  52. package/lib/commands/performance.js +3 -5
  53. package/lib/commands/recordscreen.js +7 -8
  54. package/lib/device-log/helpers.ts +27 -0
  55. package/lib/device-log/ios-crash-log.ts +167 -0
  56. package/lib/device-log/ios-log.ts +2 -1
  57. package/lib/driver.js +1 -1
  58. package/lib/real-device-clients/base-device-client.ts +34 -0
  59. package/lib/real-device-clients/py-ios-device-client.ts +149 -0
  60. package/lib/real-device.js +1 -1
  61. package/npm-shrinkwrap.json +9 -9
  62. package/package.json +1 -1
  63. package/build/lib/devicectl.d.ts.map +0 -1
  64. package/build/lib/devicectl.js.map +0 -1
  65. package/build/lib/py-ios-device-client.d.ts +0 -76
  66. package/build/lib/py-ios-device-client.d.ts.map +0 -1
  67. package/build/lib/py-ios-device-client.js.map +0 -1
  68. package/lib/device-log/ios-crash-log.js +0 -146
  69. package/lib/py-ios-device-client.js +0 -167
  70. /package/build/lib/{devicectl.d.ts → real-device-clients/devicectl.d.ts} +0 -0
  71. /package/build/lib/{devicectl.js → real-device-clients/devicectl.js} +0 -0
  72. /package/lib/{devicectl.js → real-device-clients/devicectl.js} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"real-device.js","sourceRoot":"","sources":["../../lib/real-device.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"real-device.js","sourceRoot":"","sources":["../../lib/real-device.js"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@ import path from 'path';
7
7
  import http from 'http';
8
8
  import {exec} from 'teen_process';
9
9
  import {findAPortNotInUse, checkPortStatus} from 'portscanner';
10
- import Pyidevice from '../py-ios-device-client';
10
+ import {Pyidevice} from '../real-device-clients/py-ios-device-client';
11
11
  import {errors} from 'appium/driver';
12
12
 
13
13
  const CONFIG_EXTENSION = 'mobileconfig';
@@ -108,8 +108,9 @@ export default {
108
108
  }
109
109
  if (_.isUndefined(this.logs.syslog)) {
110
110
  this.logs.crashlog = new IOSCrashLog({
111
- sim: this.device,
111
+ sim: /** @type {import('appium-ios-simulator').Simulator} */ (this.device),
112
112
  udid: this.isRealDevice() ? this.opts.udid : undefined,
113
+ log: this.log,
113
114
  });
114
115
  this.logs.syslog = this.isRealDevice()
115
116
  ? new IOSDeviceLog({
@@ -17,7 +17,7 @@ export default {
17
17
 
18
18
  const device = /** @type {import('../real-device').RealDevice} */ (this.device);
19
19
 
20
- /** @type {import('../devicectl').AppInfo[]} */
20
+ /** @type {import('../real-device-clients/devicectl').AppInfo[]} */
21
21
  const appInfos = await device.devicectl.listApps(bundleId);
22
22
  if (_.isEmpty(appInfos)) {
23
23
  throw new errors.InvalidArgumentError(
@@ -1,11 +1,10 @@
1
- import Pyidevice from '../py-ios-device-client';
2
- import {fs, tempDir, logger, util} from 'appium/support';
1
+ import { Pyidevice } from '../real-device-clients/py-ios-device-client';
2
+ import {fs, tempDir, util} from 'appium/support';
3
3
  import {encodeBase64OrUpload} from '../utils';
4
4
  import {errors} from 'appium/driver';
5
5
 
6
6
  const MAX_CAPTURE_TIME_SEC = 60 * 60 * 12;
7
7
  const DEFAULT_EXT = '.pcap';
8
- const pcapLogger = logger.getLogger('pcapd');
9
8
 
10
9
  export class TrafficCapture {
11
10
  /** @type {import('teen_process').SubProcess|null} */
@@ -21,11 +20,7 @@ export class TrafficCapture {
21
20
  this.mainProcess = /** @type {import('teen_process').SubProcess} */ (
22
21
  await new Pyidevice(this.udid).collectPcap(this.resultPath)
23
22
  );
24
- this.mainProcess.on('output', (stdout, stderr) => {
25
- if (stderr) {
26
- pcapLogger.info(`${stderr}`);
27
- }
28
- });
23
+ this.mainProcess.on('line-stderr', (line) => this.log.info(`[Pcap] ${line}`));
29
24
  this.log.info(
30
25
  `Starting network traffic capture session on the device '${this.udid}'. ` +
31
26
  `Will timeout in ${timeoutSeconds}s`,
@@ -184,11 +184,9 @@ export class PerfRecorder {
184
184
  this._process = new SubProcess(fullCmd[0], fullCmd.slice(1));
185
185
  this._archivePromise = null;
186
186
  this._logger.debug(`Starting performance recording: ${util.quote(fullCmd)}`);
187
- this._process.on('output', (stdout, stderr) => {
188
- if (_.trim(stdout || stderr)) {
189
- this._logger.debug(`[${toolName}] ${stdout || stderr}`);
190
- }
191
- });
187
+ for (const streamName of ['stdout', 'stderr']) {
188
+ this._process.on(`line-${streamName}`, (line) => this._logger.debug(`[${toolName}] ${line}`));
189
+ }
192
190
  this._process.once('exit', async (code, signal) => {
193
191
  this._process = null;
194
192
  if (code === 0) {
@@ -27,6 +27,7 @@ const QUALITY_MAPPING = {
27
27
  high: 75,
28
28
  photo: 100,
29
29
  };
30
+ const CAPTURE_START_MARKER = /^\s*frame=/;
30
31
 
31
32
  export class ScreenRecorder {
32
33
  constructor(udid, log, videoPath, opts = {}) {
@@ -102,15 +103,13 @@ export class ScreenRecorder {
102
103
 
103
104
  this.mainProcess = new SubProcess(FFMPEG_BINARY, args);
104
105
  let isCaptureStarted = false;
105
- this.mainProcess.on('output', (stdout, stderr) => {
106
- if (stderr) {
107
- if (stderr.trim().startsWith('frame=')) {
108
- if (!isCaptureStarted) {
109
- isCaptureStarted = true;
110
- }
111
- } else {
112
- ffmpegLogger.info(`${stderr}`);
106
+ this.mainProcess.on('line-stderr', (line) => {
107
+ if (CAPTURE_START_MARKER.test(line)) {
108
+ if (!isCaptureStarted) {
109
+ isCaptureStarted = true;
113
110
  }
111
+ } else {
112
+ ffmpegLogger.info(line);
114
113
  }
115
114
  });
116
115
  await this.mainProcess.start(0);
@@ -1,4 +1,7 @@
1
1
  import type { LogEntry } from '../commands/types';
2
+ import { fs } from 'appium/support';
3
+ import { createInterface } from 'node:readline';
4
+ import _ from 'lodash';
2
5
 
3
6
  export const DEFAULT_LOG_LEVEL = 'ALL';
4
7
  export const MAX_JSON_LOG_LENGTH = 200;
@@ -11,3 +14,27 @@ export function toLogEntry(message: string, timestamp: number, level: string = D
11
14
  message,
12
15
  };
13
16
  }
17
+
18
+ export interface GrepOptions {
19
+ caseInsensitive?: boolean;
20
+ }
21
+
22
+ export async function grepFile(
23
+ fullPath: string,
24
+ str: string,
25
+ opts: GrepOptions = {}
26
+ ): Promise<boolean> {
27
+ const input = fs.createReadStream(fullPath);
28
+ const rl = createInterface({input});
29
+ return await new Promise((resolve, reject) => {
30
+ input.once('error', reject);
31
+ rl.on('line', (line) => {
32
+ if (opts.caseInsensitive && _.toLower(line).includes(_.toLower(str))
33
+ || !opts.caseInsensitive && line.includes(str)) {
34
+ resolve(true);
35
+ input.close();
36
+ }
37
+ });
38
+ input.once('end', () => resolve(false));
39
+ });
40
+ }
@@ -0,0 +1,167 @@
1
+ import {fs, tempDir, util} from 'appium/support';
2
+ import B from 'bluebird';
3
+ import path from 'path';
4
+ import _ from 'lodash';
5
+ import {Pyidevice} from '../real-device-clients/py-ios-device-client';
6
+ import IOSLog from './ios-log';
7
+ import { toLogEntry, grepFile } from './helpers';
8
+ import type { AppiumLogger } from '@appium/types';
9
+ import type { BaseDeviceClient } from '../real-device-clients/base-device-client';
10
+ import type { Simulator } from 'appium-ios-simulator';
11
+ import type { LogEntry } from '../commands/types';
12
+
13
+ // The file format has been changed from '.crash' to '.ips' since Monterey.
14
+ const CRASH_REPORTS_GLOB_PATTERN = '**/*.@(crash|ips)';
15
+ // The size of a single diagnostic report might be hundreds of kilobytes.
16
+ // Thus we do not want to store too many items in the memory at once.
17
+ const MAX_RECENT_ITEMS = 20;
18
+
19
+ type TSerializedEntry = [string, number];
20
+
21
+ export interface IOSCrashLogOptions {
22
+ /** UDID of a real device */
23
+ udid?: string;
24
+ /** Simulator instance */
25
+ sim?: Simulator;
26
+ log: AppiumLogger;
27
+ }
28
+
29
+ export class IOSCrashLog extends IOSLog<TSerializedEntry, TSerializedEntry> {
30
+ private readonly _udid: string | undefined;
31
+ private readonly _realDeviceClient: BaseDeviceClient | null;
32
+ private readonly _logDir: string | null;
33
+ private readonly _sim: Simulator | undefined;
34
+ private _recentCrashFiles: string[];
35
+ private _started: boolean;
36
+
37
+ constructor(opts: IOSCrashLogOptions) {
38
+ super({
39
+ log: opts.log,
40
+ maxBufferSize: MAX_RECENT_ITEMS,
41
+ });
42
+ this._udid = opts.udid;
43
+ this._sim = opts.sim;
44
+ this._realDeviceClient = this._isRealDevice()
45
+ ? new Pyidevice({
46
+ udid: this._udid as string,
47
+ log: opts.log,
48
+ })
49
+ : null;
50
+ this._logDir = this._isRealDevice()
51
+ ? null
52
+ : path.resolve(process.env.HOME || '/', 'Library', 'Logs', 'DiagnosticReports');
53
+ this._recentCrashFiles = [];
54
+ this._started = false;
55
+ }
56
+
57
+ override async startCapture(): Promise<void> {
58
+ this._recentCrashFiles = await this._listCrashFiles(false);
59
+ this._started = true;
60
+ }
61
+
62
+ // eslint-disable-next-line require-await
63
+ override async stopCapture(): Promise<void> {
64
+ this._started = false;
65
+ }
66
+
67
+ override get isCapturing(): boolean {
68
+ return this._started;
69
+ }
70
+
71
+ override async getLogs(): Promise<LogEntry[]> {
72
+ const crashFiles = (await this._listCrashFiles(true)).slice(-MAX_RECENT_ITEMS);
73
+ const diffFiles = _.difference(crashFiles, this._recentCrashFiles);
74
+ if (_.isEmpty(diffFiles)) {
75
+ return [];
76
+ }
77
+
78
+ this.log.debug(`Found ${util.pluralize('fresh crash report', diffFiles.length, true)}`);
79
+ await this._serializeCrashes(diffFiles);
80
+ this._recentCrashFiles = crashFiles;
81
+ return super.getLogs();
82
+ }
83
+
84
+ protected override _serializeEntry(value: TSerializedEntry): TSerializedEntry {
85
+ return value;
86
+ }
87
+
88
+ protected override _deserializeEntry(value: TSerializedEntry): LogEntry {
89
+ const [message, timestamp] = value;
90
+ return toLogEntry(message, timestamp);
91
+ }
92
+
93
+ private async _serializeCrashes(paths: string[]): Promise<void> {
94
+ const tmpRoot = await tempDir.openDir();
95
+ try {
96
+ for (const filePath of paths) {
97
+ let fullPath = filePath;
98
+ if (this._isRealDevice()) {
99
+ const fileName = filePath;
100
+ try {
101
+ await (this._realDeviceClient as BaseDeviceClient).exportCrash(fileName, tmpRoot);
102
+ } catch (e) {
103
+ this.log.warn(
104
+ `Cannot export the crash report '${fileName}'. Skipping it. ` +
105
+ `Original error: ${e.message}`,
106
+ );
107
+ return;
108
+ }
109
+ fullPath = path.join(tmpRoot, fileName);
110
+ }
111
+ const {ctime} = await fs.stat(fullPath);
112
+ this.broadcast([await fs.readFile(fullPath, 'utf8'), ctime.getTime()]);
113
+ }
114
+ } finally {
115
+ await fs.rimraf(tmpRoot);
116
+ }
117
+ }
118
+
119
+ private async _gatherFromRealDevice(strict: boolean): Promise<string[]> {
120
+ if (!this._realDeviceClient) {
121
+ return [];
122
+ }
123
+ if (!await this._realDeviceClient.assertExists(strict)) {
124
+ this.log.info(
125
+ `The ${_.toLower(this._realDeviceClient.constructor.name)} tool is not present in PATH. ` +
126
+ `Skipping crash logs collection for real devices.`
127
+ );
128
+ return [];
129
+ }
130
+
131
+ return await this._realDeviceClient.listCrashes();
132
+ }
133
+
134
+ private async _gatherFromSimulator(): Promise<string[]> {
135
+ if (!this._logDir || !this._sim || !(await fs.exists(this._logDir))) {
136
+ this.log.debug(`Crash reports root '${this._logDir}' does not exist. Got nothing to gather.`);
137
+ return [];
138
+ }
139
+
140
+ const foundFiles = await fs.glob(CRASH_REPORTS_GLOB_PATTERN, {
141
+ cwd: this._logDir,
142
+ absolute: true,
143
+ });
144
+ const simUdid = (this._sim as Simulator).udid;
145
+ // For Simulator only include files, that contain current UDID
146
+ return await B.filter(foundFiles, async (filePath) => {
147
+ try {
148
+ return await grepFile(filePath, simUdid, {caseInsensitive: true});
149
+ } catch (err) {
150
+ this.log.warn(err);
151
+ return false;
152
+ }
153
+ });
154
+ }
155
+
156
+ private async _listCrashFiles(strict: boolean): Promise<string[]> {
157
+ return this._isRealDevice()
158
+ ? await this._gatherFromRealDevice(strict)
159
+ : await this._gatherFromSimulator();
160
+ }
161
+
162
+ private _isRealDevice(): boolean {
163
+ return Boolean(this._udid);
164
+ }
165
+ }
166
+
167
+ export default IOSCrashLog;
@@ -37,7 +37,8 @@ export abstract class IOSLog<
37
37
  return this._log;
38
38
  }
39
39
 
40
- getLogs(): LogEntry[] {
40
+ // eslint-disable-next-line require-await
41
+ async getLogs(): Promise<LogEntry[]> {
41
42
  const result: LogEntry[] = [];
42
43
  for (const value of this.logs.rvalues()) {
43
44
  result.push(this._deserializeEntry(value as TSerializedEntry));
package/lib/driver.js CHANGED
@@ -23,7 +23,7 @@ import {desiredCapConstraints} from './desired-caps';
23
23
  import DEVICE_CONNECTIONS_FACTORY from './device-connections-factory';
24
24
  import {executeMethodMap} from './execute-method-map';
25
25
  import {newMethodMap} from './method-map';
26
- import Pyidevice from './py-ios-device-client';
26
+ import { Pyidevice } from './real-device-clients/py-ios-device-client';
27
27
  import {
28
28
  installToRealDevice,
29
29
  runRealDeviceReset,
@@ -0,0 +1,34 @@
1
+ import type { AppiumLogger } from '@appium/types';
2
+ import type { SubProcess } from 'teen_process';
3
+
4
+ export interface BaseDeviceClientOptions {
5
+ log: AppiumLogger;
6
+ }
7
+
8
+ export interface InstallProfileArgs {
9
+ profilePath?: string;
10
+ payload?: string|Buffer;
11
+ }
12
+
13
+ export abstract class BaseDeviceClient {
14
+ private readonly _log: AppiumLogger;
15
+
16
+ constructor (opts: BaseDeviceClientOptions) {
17
+ this._log = opts.log;
18
+ }
19
+
20
+ get log(): AppiumLogger {
21
+ return this._log;
22
+ }
23
+
24
+ abstract assertExists(isStrict: boolean): Promise<boolean>;
25
+
26
+ abstract listProfiles(): Promise<object>;
27
+ abstract installProfile(args: InstallProfileArgs): Promise<void>;
28
+ abstract removeProfile(name: string): Promise<string>;
29
+
30
+ abstract listCrashes(): Promise<string[]>;
31
+ abstract exportCrash(name: string, dstFolder: string): Promise<void>;
32
+
33
+ abstract collectPcap(dstFile: string): Promise<SubProcess>;
34
+ }
@@ -0,0 +1,149 @@
1
+ import {exec, SubProcess} from 'teen_process';
2
+ import {fs, util, tempDir} from 'appium/support';
3
+ import path from 'path';
4
+ import { BaseDeviceClient } from './base-device-client';
5
+ import type { BaseDeviceClientOptions, InstallProfileArgs } from './base-device-client';
6
+ import type { TeenProcessExecResult } from 'teen_process';
7
+ import type { CertificateList } from '../commands/types';
8
+
9
+ // https://github.com/YueChen-C/py-ios-device
10
+
11
+ const BINARY_NAME = 'pyidevice';
12
+ const CRASH_REPORT_EXT = '.ips';
13
+
14
+ export interface PyideviceOptions extends BaseDeviceClientOptions {
15
+ udid: string;
16
+ }
17
+
18
+ interface ExecuteOptions {
19
+ cwd?: string;
20
+ format?: string | null;
21
+ logStdout?: boolean;
22
+ asynchronous?: boolean;
23
+ }
24
+
25
+ export class Pyidevice extends BaseDeviceClient {
26
+ private readonly _udid: string;
27
+ private _binaryPath: string | null;
28
+
29
+ constructor(opts: PyideviceOptions) {
30
+ super({log: opts.log});
31
+ this._udid = opts.udid;
32
+ this._binaryPath = null;
33
+ }
34
+
35
+ override async assertExists(isStrict = true): Promise<boolean> {
36
+ if (this._binaryPath) {
37
+ return true;
38
+ }
39
+
40
+ try {
41
+ this._binaryPath = await fs.which(BINARY_NAME);
42
+ return true;
43
+ } catch (e) {
44
+ if (isStrict) {
45
+ throw new Error(
46
+ `${BINARY_NAME} binary cannot be found in PATH. ` +
47
+ `Please make sure it is installed. Visit https://github.com/YueChen-C/py-ios-device for ` +
48
+ `more details.`,
49
+ );
50
+ }
51
+ return false;
52
+ }
53
+ }
54
+
55
+ override async listProfiles(): Promise<CertificateList> {
56
+ const {stdout} = await this.execute(['profiles', 'list']) as TeenProcessExecResult<string>;
57
+ return JSON.parse(stdout);
58
+ }
59
+
60
+ override async installProfile(args: InstallProfileArgs): Promise<void> {
61
+ const {profilePath, payload} = args;
62
+ if (!profilePath && !payload) {
63
+ throw new Error('Either the full path to the profile or its payload must be provided');
64
+ }
65
+
66
+ let tmpRoot: string | undefined;
67
+ let srcPath = profilePath;
68
+ try {
69
+ if (!srcPath) {
70
+ tmpRoot = await tempDir.openDir();
71
+ srcPath = path.join(tmpRoot, 'cert.pem');
72
+ if (Buffer.isBuffer(payload)) {
73
+ await fs.writeFile(srcPath, payload);
74
+ } else {
75
+ await fs.writeFile(srcPath, payload as string, 'utf8');
76
+ }
77
+ }
78
+ await this.execute(['profiles', 'install', '--path', srcPath], {
79
+ logStdout: true,
80
+ });
81
+ } finally {
82
+ if (tmpRoot) {
83
+ await fs.rimraf(tmpRoot);
84
+ }
85
+ }
86
+ }
87
+
88
+ override async removeProfile(name: string): Promise<string> {
89
+ return (
90
+ await this.execute(['profiles', 'remove', '--name', name], {logStdout: true}) as TeenProcessExecResult<string>
91
+ ).stdout;
92
+ }
93
+
94
+ override async listCrashes(): Promise<string[]> {
95
+ const {stdout} = await this.execute(['crash', 'list']) as TeenProcessExecResult<string>;
96
+ // Example output:
97
+ // ['.', '..', 'SiriSearchFeedback-2023-12-06-144043.ips', '
98
+ // SiriSearchFeedback-2024-05-22-194219.ips', 'JetsamEvent-2024-05-23-225056.ips',
99
+ // 'JetsamEvent-2023-09-18-090920.ips', 'JetsamEvent-2024-05-16-054529.ips',
100
+ // 'Assistant']
101
+ return JSON.parse(stdout.replace(/'/g, '"'))
102
+ .filter((x: string) => x.endsWith(CRASH_REPORT_EXT));
103
+ }
104
+
105
+ override async exportCrash(name: string, dstFolder: string): Promise<void> {
106
+ await this.execute(['crash', 'export', '--name', name], {
107
+ logStdout: true,
108
+ // The tool exports crash reports to the current working dir
109
+ cwd: dstFolder,
110
+ });
111
+ }
112
+
113
+ override async collectPcap(dstFile: string): Promise<SubProcess> {
114
+ return await this.execute(['pcapd', dstFile], {
115
+ format: null,
116
+ asynchronous: true,
117
+ }) as SubProcess;
118
+ }
119
+
120
+ private async execute(
121
+ args: string[],
122
+ opts: ExecuteOptions = {}
123
+ ): Promise<TeenProcessExecResult<string> | SubProcess> {
124
+ await this.assertExists();
125
+ const {cwd, format = 'json', logStdout = false, asynchronous = false} = opts;
126
+
127
+ const finalArgs = [...args, '--udid', this._udid, '--network'];
128
+ if (format) {
129
+ finalArgs.push('--format', format);
130
+ }
131
+ const binaryPath = this._binaryPath as string;
132
+ const cmdStr = util.quote([binaryPath, ...finalArgs]);
133
+ this.log.debug(`Executing ${cmdStr}`);
134
+ try {
135
+ if (asynchronous) {
136
+ const result = new SubProcess(binaryPath, finalArgs, {cwd});
137
+ await result.start(0);
138
+ return result;
139
+ }
140
+ const result = await exec(binaryPath, finalArgs, {cwd});
141
+ if (logStdout) {
142
+ this.log.debug(`Command output: ${result.stdout}`);
143
+ }
144
+ return result;
145
+ } catch (e) {
146
+ throw new Error(`'${cmdStr}' failed. Original error: ${e.stderr || e.stdout || e.message}`);
147
+ }
148
+ }
149
+ }
@@ -6,7 +6,7 @@ import defaultLogger from './logger';
6
6
  import _ from 'lodash';
7
7
  import {SAFARI_BUNDLE_ID} from './app-utils';
8
8
  import {pushFile, pushFolder, IO_TIMEOUT_MS} from './ios-fs-helpers';
9
- import { Devicectl } from './devicectl';
9
+ import { Devicectl } from './real-device-clients/devicectl';
10
10
 
11
11
  const APPLICATION_INSTALLED_NOTIFICATION = 'com.apple.mobile.application_installed';
12
12
  const APPLICATION_NOTIFICATION_TIMEOUT_MS = 30 * 1000;
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "appium-xcuitest-driver",
3
- "version": "7.22.0",
3
+ "version": "7.23.0",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "appium-xcuitest-driver",
9
- "version": "7.22.0",
9
+ "version": "7.23.0",
10
10
  "license": "Apache-2.0",
11
11
  "dependencies": {
12
12
  "@colors/colors": "^1.6.0",
@@ -2777,9 +2777,9 @@
2777
2777
  }
2778
2778
  },
2779
2779
  "node_modules/node-simctl": {
2780
- "version": "7.5.2",
2781
- "resolved": "https://registry.npmjs.org/node-simctl/-/node-simctl-7.5.2.tgz",
2782
- "integrity": "sha512-ap0QEMMcHbd+r86UQHRc9EsDvgP0PIio56B0Phh3iwQ5STEClCUGEGVwCVrxqlrwSCRYM26Glx39vwgGUyHUPA==",
2780
+ "version": "7.5.3",
2781
+ "resolved": "https://registry.npmjs.org/node-simctl/-/node-simctl-7.5.3.tgz",
2782
+ "integrity": "sha512-afI01Azk7IZdL/sI+qUDpvhAv+G5jQLq8SirqdzP6+GciiP15yWELAKhfhMYwJAB+qI37/J2uZzgHo/4a2FQXQ==",
2783
2783
  "dependencies": {
2784
2784
  "@appium/logger": "^1.3.0",
2785
2785
  "asyncbox": "^3.0.0",
@@ -2788,7 +2788,7 @@
2788
2788
  "rimraf": "^5.0.0",
2789
2789
  "semver": "^7.0.0",
2790
2790
  "source-map-support": "^0.x",
2791
- "teen_process": "^2.0.0",
2791
+ "teen_process": "^2.2.0",
2792
2792
  "uuid": "^10.0.0",
2793
2793
  "which": "^4.0.0"
2794
2794
  },
@@ -4041,9 +4041,9 @@
4041
4041
  "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
4042
4042
  },
4043
4043
  "node_modules/ws": {
4044
- "version": "8.17.1",
4045
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz",
4046
- "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==",
4044
+ "version": "8.18.0",
4045
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz",
4046
+ "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
4047
4047
  "engines": {
4048
4048
  "node": ">=10.0.0"
4049
4049
  },
package/package.json CHANGED
@@ -8,7 +8,7 @@
8
8
  "xcuitest",
9
9
  "xctest"
10
10
  ],
11
- "version": "7.22.0",
11
+ "version": "7.23.0",
12
12
  "author": "Appium Contributors",
13
13
  "license": "Apache-2.0",
14
14
  "repository": {
@@ -1 +0,0 @@
1
- {"version":3,"file":"devicectl.d.ts","sourceRoot":"","sources":["../../lib/devicectl.js"],"names":[],"mappings":"AAMA;;;;GAIG;AAUH;;;;;;;;;;;;;GAaG;AAmBH;;;;;;;GAOG;AAEH;;GAEG;AAEH;;;;GAIG;AAEH;;;;;;;;;;GAUG;AAGH;;;;;GAKG;AAEH;IACE;;;;OAIG;IACH,kBAHW,MAAM,OACN,OAAO,eAAe,EAAE,YAAY,EAK9C;IAFC,aAAgB;IAChB,0CAAc;IAGhB;;;;;OAKG;IACH,QAL8B,SAAS,SAAzB,cAAe,cAClB,MAAM,EAAE,iCAEP,OAAO,CAAC,SAAS,SAAS,UAAU,GAAG,OAAO,cAAc,EAAE,UAAU,GAAG,iDAA4C,CAAC,CA6CnI;IAED;;;;;OAKG;IACH,uBAHW,MAAM,GAAC,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAMxB;IAED;;;;OAIG;IACH,iBAFa,OAAO,CAAC,WAAW,EAAE,CAAC,CAKlC;IAED;;;;;;;;;;;OAWG;IACH,sBATW,MAAM,oBAKN,MAAM,wCAEJ,OAAO,CAAC,MAAM,EAAE,CAAC,CAiB7B;IAED;;;;;;;OAOG;IACH,eALW,MAAM,MACN,MAAM,QACN,eAAe,GACb,OAAO,CAAC,MAAM,CAAC,CAkB3B;IAED;;;;;;OAMG;IACH,yBAJW,MAAM,GAAC,MAAM,UACb,MAAM,GAAC,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAMzB;IAED;;;;;;OAMG;IACH,gDAFa,OAAO,CAAC,OAAO,EAAE,CAAC,CAW9B;IAED;;;;;;;;;OASG;IACH,oBALW,MAAM,QACN,gBAAgB,GACd,OAAO,CAAC,IAAI,CAAC,CAqBzB;CACF;;uBA1Ra,MAAM;gBACN,MAAM;;;aAaN,OAAO;sBACP,OAAO;sBACP,MAAM;mBACN,MAAM;gBACN,OAAO;YACP,OAAO;iBACP,OAAO;UACP,MAAM;eACN,OAAO;SACP,MAAM;aACN,MAAM;;;;;;;;;yBA8BP;IAAC,YAAY,EAAE,IAAI,CAAA;CAAC;;;;;;;;;;;;;;;;;;;;;;;gBAYnB,MAAM;;;;sBAKN,MAAM"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"devicectl.js","sourceRoot":"","sources":["../../lib/devicectl.js"],"names":[],"mappings":";;;;;;AAAA,+CAA8C;AAC9C,4CAAoC;AACpC,oDAAuB;AAEvB,MAAM,KAAK,GAAG,OAAO,CAAC;AAEtB;;;;GAIG;AAEH;;;;;;EAME;AAEF;;;;;;;;;;;;;GAaG;AAEH;;;;;;;;;;;;;;;EAeE;AAEF;;;;;;;GAOG;AAEH;;GAEG;AAEH;;;;GAIG;AAEH;;;;;;;;;;GAUG;AAGH;;;;;GAKG;AAEH,MAAa,SAAS;IACpB;;;;OAIG;IACH,YAAY,IAAI,EAAE,GAAG;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI;QAC5B,MAAM,EACJ,SAAS,GAAG,KAAK,EACjB,YAAY,GAAG,KAAK,EACpB,MAAM,GAAG,IAAI,EACb,iBAAiB,EACjB,OAAO,GACR,GAAG,IAAI,IAAI,EAAE,CAAC;QAEf,MAAM,SAAS,GAAG;YAChB,WAAW,EAAE,GAAG,UAAU;YAC1B,UAAU,EAAE,IAAI,CAAC,IAAI;SACtB,CAAC;QACF,IAAI,iBAAiB,IAAI,CAAC,gBAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACvD,SAAS,CAAC,IAAI,CACZ,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAChF,CAAC;QACJ,CAAC;QACD,IAAI,MAAM,EAAE,CAAC;YACX,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,EAAE,GAAG,CAAC,CAAC;QAClD,CAAC;QACD,MAAM,MAAM,GAAG,cAAI,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC;QACjD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,MAAM,EAAE,CAAC,CAAC;QACtC,IAAI,CAAC;YACH,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,MAAM,GAAG,IAAI,yBAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;gBAChD,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACtB,uCAAuC;gBACvC,OAAO,MAAM,CAAC;YAChB,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,IAAA,mBAAI,EACvB,KAAK,EACL,SAAS,EACT,GAAG,CAAC,gBAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,OAAO,EAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAC5C,CAAC;YACF,IAAI,SAAS,EAAE,CAAC;gBACd,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,mBAAmB,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YACrD,CAAC;YACD,uCAAuC;YACvC,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,IAAI,MAAM,6BAA6B,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9F,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,iBAAiB,CAAC,GAAG;QACzB,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,mBAAmB,CAAC,EAAE;YAC7D,iBAAiB,EAAE,CAAC,OAAO,EAAE,GAAG,GAAG,EAAE,CAAC;SACvC,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,aAAa;QACjB,MAAM,EAAC,MAAM,EAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;QACrE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC;IACpD,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,SAAS,CAAC,UAAU,EAAE,gBAAgB,EAAE,IAAI,GAAG,EAAE;QACrD,MAAM,iBAAiB,GAAG;YACxB,eAAe,EAAE,UAAU;YAC3B,qBAAqB,EAAE,gBAAgB;SACxC,CAAC;QACF,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,iBAAiB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtD,CAAC;QACD,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC9D,CAAC;QACD,MAAM,EAAC,MAAM,EAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;YAC/D,iBAAiB;SAClB,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IAC/D,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI;QAC3B,MAAM,iBAAiB,GAAG;YACxB,eAAe,EAAE,IAAI,CAAC,UAAU;YAChC,qBAAqB,EAAE,IAAI,CAAC,gBAAgB;YAC5C,UAAU,EAAE,IAAI;YAChB,eAAe,EAAE,EAAE;SACpB,CAAC;QACF,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClD,CAAC;QACD,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE;YAC7C,iBAAiB;YACjB,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,MAAM;YAC/B,MAAM,EAAE,KAAK;SACd,CAAC,CAAC;QACH,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,mBAAmB,CAAC,GAAG,EAAE,MAAM;QACnC,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE;YAClD,iBAAiB,EAAE,CAAC,UAAU,EAAE,GAAG,MAAM,EAAE,EAAE,OAAO,EAAE,GAAG,GAAG,EAAE,CAAC;SAChE,CAAC,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI;QAC5B,MAAM,iBAAiB,GAAG,CAAC,oBAAoB,CAAC,CAAC;QACjD,IAAI,QAAQ,EAAE,CAAC;YACb,iBAAiB,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QAClD,CAAC;QACD,MAAM,EAAC,MAAM,EAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE;YAC9D,iBAAiB;SAClB,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;IACxC,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI;QAC5B,MAAM,EACJ,GAAG,EACH,iBAAiB,GAAG,KAAK,EAC1B,GAAG,IAAI,CAAC;QAET,MAAM,iBAAiB,GAAG,EAAE,CAAC;QAC7B,IAAI,iBAAiB,EAAE,CAAC;YACtB,iBAAiB,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACjD,CAAC;QAAA,CAAC;QACF,IAAI,CAAC,gBAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACpB,iBAAiB,CAAC,IAAI,CAAC,yBAAyB,EAAE,IAAI,CAAC,SAAS,CAAC,gBAAC,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5G,CAAC;QAAA,CAAC;QACF,gEAAgE;QAChE,wEAAwE;QACxE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEjC,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,EAAE,iBAAiB,EAAE,MAAM,EAAE,KAAK,EAAC,CAAC,CAAC;IAC3F,CAAC;CACF;AAvMD,8BAuMC"}