appium-xcuitest-driver 7.5.4 → 7.5.5

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,10 @@
1
+ ## [7.5.5](https://github.com/appium/appium-xcuitest-driver/compare/v7.5.4...v7.5.5) (2024-03-26)
2
+
3
+
4
+ ### Miscellaneous Chores
5
+
6
+ * add launchApp via devicectl ([#2354](https://github.com/appium/appium-xcuitest-driver/issues/2354)) ([3907455](https://github.com/appium/appium-xcuitest-driver/commit/3907455d84519709e07d683ac26ef2047ede9d59))
7
+
1
8
  ## [7.5.4](https://github.com/appium/appium-xcuitest-driver/compare/v7.5.3...v7.5.4) (2024-03-25)
2
9
 
3
10
 
@@ -44,6 +44,12 @@
44
44
  * @property {string} domainIdentifier A unique string used to provide additional context to the domain.
45
45
  * @property {number} [timeout=120000] The timeout for pulling a file in milliseconds.
46
46
  */
47
+ /**
48
+ * An option for launchApp method by devicectl.
49
+ * @typedef {Object} LaunchAppOptions
50
+ * @property {import('@appium/types').StringRecord<string|number>} [env] Bundle id to Environment variables for the launching app process.
51
+ * @property {boolean} [terminateExisting=false] Whether terminating the already running app.
52
+ */
47
53
  export class Devicectl {
48
54
  /**
49
55
  * @since Xcode 15, iOS 17
@@ -111,6 +117,17 @@ export class Devicectl {
111
117
  * @returns {Promise<AppInfo[]>} Empty array is returned if no matching apps are found
112
118
  */
113
119
  listApps(bundleId?: string | null | undefined): Promise<AppInfo[]>;
120
+ /**
121
+ * Launch the given bundle id application with the given environment variable.
122
+ * This method is over devicectl command, this it may take additional seconds to launch the app.
123
+ * Please use via WDA or via appium-ios-device as primary method to launch app if possible.
124
+ *
125
+ * @param {string} bundleId Bundle id to launch.
126
+ * @param {LaunchAppOptions} opts launching app with devicectl command options.
127
+ * @returns {Promise<void>}
128
+ * @throws {Error} If the launching app command fails. For example, the given bundle id did not exist.
129
+ */
130
+ launchApp(bundleId: string, opts: LaunchAppOptions): Promise<void>;
114
131
  }
115
132
  export type ProcessInfo = {
116
133
  processIdentifier: number;
@@ -171,5 +188,18 @@ export type PullFileOptions = {
171
188
  */
172
189
  timeout?: number | undefined;
173
190
  };
191
+ /**
192
+ * An option for launchApp method by devicectl.
193
+ */
194
+ export type LaunchAppOptions = {
195
+ /**
196
+ * Bundle id to Environment variables for the launching app process.
197
+ */
198
+ env?: import("@appium/types").StringRecord<string | number> | undefined;
199
+ /**
200
+ * Whether terminating the already running app.
201
+ */
202
+ terminateExisting?: boolean | undefined;
203
+ };
174
204
  import { SubProcess } from 'teen_process';
175
205
  //# sourceMappingURL=devicectl.d.ts.map
@@ -1 +1 @@
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;AAEH;IACE;;;;OAIG;IACH,kBAHW,MAAM,OACN,OAAO,eAAe,EAAE,YAAY,EAK9C;IAFC,aAAgB;IAChB,0CAAc;IAGhB;;;;;OAKG;IACH,sDAJW,MAAM,EAAE,wIA2ClB;IAED;;;;;OAKG;IACH,uBAHW,MAAM,GAAC,MAAM,GACZ,QAAQ,IAAI,CAAC,CAMxB;IAED;;;;OAIG;IACH,iBAFa,QAAQ,WAAW,EAAE,CAAC,CAKlC;IAED;;;;;;;;;;;OAWG;IACH,sBATW,MAAM,oBAKN,MAAM,wCAEJ,QAAQ,MAAM,EAAE,CAAC,CAiB7B;IAED;;;;;;;OAOG;IACH,eALW,MAAM,MACN,MAAM,QACN,eAAe,GACb,QAAQ,MAAM,CAAC,CAkB3B;IAED;;;;;;OAMG;IACH,yBAJW,MAAM,GAAC,MAAM,UACb,MAAM,GAAC,MAAM,GACX,QAAQ,IAAI,CAAC,CAMzB;IAED;;;;;;OAMG;IACH,gDAFa,QAAQ,OAAO,EAAE,CAAC,CAW9B;CACF;;uBAhPa,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;;;;;;2BA/EW,cAAc"}
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,sDAJW,MAAM,EAAE,wIA2ClB;IAED;;;;;OAKG;IACH,uBAHW,MAAM,GAAC,MAAM,GACZ,QAAQ,IAAI,CAAC,CAMxB;IAED;;;;OAIG;IACH,iBAFa,QAAQ,WAAW,EAAE,CAAC,CAKlC;IAED;;;;;;;;;;;OAWG;IACH,sBATW,MAAM,oBAKN,MAAM,wCAEJ,QAAQ,MAAM,EAAE,CAAC,CAiB7B;IAED;;;;;;;OAOG;IACH,eALW,MAAM,MACN,MAAM,QACN,eAAe,GACb,QAAQ,MAAM,CAAC,CAkB3B;IAED;;;;;;OAMG;IACH,yBAJW,MAAM,GAAC,MAAM,UACb,MAAM,GAAC,MAAM,GACX,QAAQ,IAAI,CAAC,CAMzB;IAED;;;;;;OAMG;IACH,gDAFa,QAAQ,OAAO,EAAE,CAAC,CAW9B;IAED;;;;;;;;;OASG;IACH,oBALW,MAAM,QACN,gBAAgB,GACd,QAAQ,IAAI,CAAC,CAkBzB;CACF;;uBAnRa,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;;;;;;;;;;;;;;;;;;;2BA/EW,cAAc"}
@@ -77,6 +77,12 @@ const XCRUN = 'xcrun';
77
77
  * @property {string} domainIdentifier A unique string used to provide additional context to the domain.
78
78
  * @property {number} [timeout=120000] The timeout for pulling a file in milliseconds.
79
79
  */
80
+ /**
81
+ * An option for launchApp method by devicectl.
82
+ * @typedef {Object} LaunchAppOptions
83
+ * @property {import('@appium/types').StringRecord<string|number>} [env] Bundle id to Environment variables for the launching app process.
84
+ * @property {boolean} [terminateExisting=false] Whether terminating the already running app.
85
+ */
80
86
  class Devicectl {
81
87
  /**
82
88
  * @since Xcode 15, iOS 17
@@ -227,6 +233,29 @@ class Devicectl {
227
233
  });
228
234
  return JSON.parse(stdout).result.apps;
229
235
  }
236
+ /**
237
+ * Launch the given bundle id application with the given environment variable.
238
+ * This method is over devicectl command, this it may take additional seconds to launch the app.
239
+ * Please use via WDA or via appium-ios-device as primary method to launch app if possible.
240
+ *
241
+ * @param {string} bundleId Bundle id to launch.
242
+ * @param {LaunchAppOptions} opts launching app with devicectl command options.
243
+ * @returns {Promise<void>}
244
+ * @throws {Error} If the launching app command fails. For example, the given bundle id did not exist.
245
+ */
246
+ async launchApp(bundleId, opts) {
247
+ const { env, terminateExisting = false } = opts;
248
+ const subcommandOptions = [bundleId];
249
+ if (terminateExisting) {
250
+ subcommandOptions.push('--terminate-existing');
251
+ }
252
+ ;
253
+ if (!lodash_1.default.isEmpty(env)) {
254
+ subcommandOptions.push('--environment-variables', JSON.stringify(lodash_1.default.mapValues(env, (v) => lodash_1.default.toString(v))));
255
+ }
256
+ ;
257
+ await this.execute(['device', 'process', 'launch'], { subcommandOptions, asJson: false });
258
+ }
230
259
  }
231
260
  exports.Devicectl = Devicectl;
232
261
  //# sourceMappingURL=devicectl.js.map
@@ -1 +1 @@
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;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,EAAC,KAAK,EAAE,SAAS,EAAE,EAAC,OAAO,EAAC,CAAC,CAAC;YACvD,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;CACF;AArKD,8BAqKC"}
1
+ {"version":3,"file":"devicectl.js","sourceRoot":"","sources":["../../lib/devicectl.js"],"names":[],"mappings":"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"}
package/lib/devicectl.js CHANGED
@@ -81,6 +81,14 @@ const XCRUN = 'xcrun';
81
81
  * @property {number} [timeout=120000] The timeout for pulling a file in milliseconds.
82
82
  */
83
83
 
84
+
85
+ /**
86
+ * An option for launchApp method by devicectl.
87
+ * @typedef {Object} LaunchAppOptions
88
+ * @property {import('@appium/types').StringRecord<string|number>} [env] Bundle id to Environment variables for the launching app process.
89
+ * @property {boolean} [terminateExisting=false] Whether terminating the already running app.
90
+ */
91
+
84
92
  export class Devicectl {
85
93
  /**
86
94
  * @since Xcode 15, iOS 17
@@ -246,4 +254,31 @@ export class Devicectl {
246
254
  });
247
255
  return JSON.parse(stdout).result.apps;
248
256
  }
257
+
258
+ /**
259
+ * Launch the given bundle id application with the given environment variable.
260
+ * This method is over devicectl command, this it may take additional seconds to launch the app.
261
+ * Please use via WDA or via appium-ios-device as primary method to launch app if possible.
262
+ *
263
+ * @param {string} bundleId Bundle id to launch.
264
+ * @param {LaunchAppOptions} opts launching app with devicectl command options.
265
+ * @returns {Promise<void>}
266
+ * @throws {Error} If the launching app command fails. For example, the given bundle id did not exist.
267
+ */
268
+ async launchApp(bundleId, opts) {
269
+ const {
270
+ env,
271
+ terminateExisting = false
272
+ } = opts;
273
+
274
+ const subcommandOptions = [bundleId];
275
+ if (terminateExisting) {
276
+ subcommandOptions.push('--terminate-existing');
277
+ };
278
+ if (!_.isEmpty(env)) {
279
+ subcommandOptions.push('--environment-variables', JSON.stringify(_.mapValues(env, (v) => _.toString(v))));
280
+ };
281
+
282
+ await this.execute(['device', 'process', 'launch'], { subcommandOptions, asJson: false});
283
+ }
249
284
  }
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "appium-xcuitest-driver",
3
- "version": "7.5.4",
3
+ "version": "7.5.5",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "appium-xcuitest-driver",
9
- "version": "7.5.4",
9
+ "version": "7.5.5",
10
10
  "license": "Apache-2.0",
11
11
  "dependencies": {
12
12
  "@colors/colors": "^1.6.0",
@@ -14,7 +14,7 @@
14
14
  "appium-ios-device": "^2.5.4",
15
15
  "appium-ios-simulator": "^5.5.1",
16
16
  "appium-remote-debugger": "^11.0.0",
17
- "appium-webdriveragent": "^7.3.0",
17
+ "appium-webdriveragent": "^8.0.1",
18
18
  "appium-xcode": "^5.1.4",
19
19
  "async-lock": "^1.4.0",
20
20
  "asyncbox": "^3.0.0",
@@ -999,15 +999,15 @@
999
999
  }
1000
1000
  },
1001
1001
  "node_modules/appium-webdriveragent": {
1002
- "version": "7.3.1",
1003
- "resolved": "https://registry.npmjs.org/appium-webdriveragent/-/appium-webdriveragent-7.3.1.tgz",
1004
- "integrity": "sha512-/O2pDwpvLlKRba4I4g5aauoJ1+TQCg8ILw77kQ2cj2518fr897Kgq+L4lqe3YxIho5v2Lw/xcNmTHMRtpCz3vA==",
1002
+ "version": "8.0.2",
1003
+ "resolved": "https://registry.npmjs.org/appium-webdriveragent/-/appium-webdriveragent-8.0.2.tgz",
1004
+ "integrity": "sha512-AeFl6GN+2kZC9SQp1Z4xOXQpUu1kC5VHTyDiiy7M/MdV6Zj/o/ASFJQqdia0Jycd+zAUawfmzl8PUdFzzVo8yQ==",
1005
1005
  "dependencies": {
1006
1006
  "@appium/base-driver": "^9.0.0",
1007
1007
  "@appium/strongbox": "^0.x",
1008
1008
  "@appium/support": "^4.0.0",
1009
1009
  "appium-ios-device": "^2.5.0",
1010
- "appium-ios-simulator": "^5.0.1",
1010
+ "appium-ios-simulator": "^6.0.0",
1011
1011
  "async-lock": "^1.0.0",
1012
1012
  "asyncbox": "^3.0.0",
1013
1013
  "axios": "^1.4.0",
@@ -1021,6 +1021,28 @@
1021
1021
  "npm": ">=8"
1022
1022
  }
1023
1023
  },
1024
+ "node_modules/appium-webdriveragent/node_modules/appium-ios-simulator": {
1025
+ "version": "6.1.0",
1026
+ "resolved": "https://registry.npmjs.org/appium-ios-simulator/-/appium-ios-simulator-6.1.0.tgz",
1027
+ "integrity": "sha512-k5SHuvnKf+lUNX7irRS44WTKN+ft+/2/2kZGgSnxd5RP3qaynNPu5bEFPFXK6KDBz10tQMsJsWhhiAd8vRsz1A==",
1028
+ "dependencies": {
1029
+ "@appium/support": "^4.0.0",
1030
+ "@xmldom/xmldom": "^0.x",
1031
+ "appium-xcode": "^5.0.0",
1032
+ "async-lock": "^1.0.0",
1033
+ "asyncbox": "^3.0.0",
1034
+ "bluebird": "^3.5.1",
1035
+ "lodash": "^4.2.1",
1036
+ "node-simctl": "^7.4.1",
1037
+ "semver": "^7.0.0",
1038
+ "source-map-support": "^0.x",
1039
+ "teen_process": "^2.0.0"
1040
+ },
1041
+ "engines": {
1042
+ "node": ">=14",
1043
+ "npm": ">=8"
1044
+ }
1045
+ },
1024
1046
  "node_modules/appium-xcode": {
1025
1047
  "version": "5.2.11",
1026
1048
  "resolved": "https://registry.npmjs.org/appium-xcode/-/appium-xcode-5.2.11.tgz",
package/package.json CHANGED
@@ -8,7 +8,7 @@
8
8
  "xcuitest",
9
9
  "xctest"
10
10
  ],
11
- "version": "7.5.4",
11
+ "version": "7.5.5",
12
12
  "author": "Appium Contributors",
13
13
  "license": "Apache-2.0",
14
14
  "repository": {
@@ -81,7 +81,7 @@
81
81
  "appium-ios-device": "^2.5.4",
82
82
  "appium-ios-simulator": "^5.5.1",
83
83
  "appium-remote-debugger": "^11.0.0",
84
- "appium-webdriveragent": "^7.3.0",
84
+ "appium-webdriveragent": "^8.0.1",
85
85
  "appium-xcode": "^5.1.4",
86
86
  "async-lock": "^1.4.0",
87
87
  "asyncbox": "^3.0.0",