appium-xcuitest-driver 10.8.2 → 10.8.4

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 (71) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/build/lib/commands/app-management.js +1 -1
  3. package/build/lib/commands/app-management.js.map +1 -1
  4. package/build/lib/commands/file-movement.d.ts.map +1 -1
  5. package/build/lib/commands/file-movement.js +4 -4
  6. package/build/lib/commands/file-movement.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/performance.d.ts.map +1 -1
  10. package/build/lib/commands/performance.js +13 -4
  11. package/build/lib/commands/performance.js.map +1 -1
  12. package/build/lib/commands/xctest-record-screen.js +1 -1
  13. package/build/lib/commands/xctest-record-screen.js.map +1 -1
  14. package/build/lib/desired-caps.d.ts +9 -7
  15. package/build/lib/desired-caps.d.ts.map +1 -1
  16. package/build/lib/desired-caps.js +1 -0
  17. package/build/lib/desired-caps.js.map +1 -1
  18. package/build/lib/device/device-connections-factory.d.ts +18 -0
  19. package/build/lib/device/device-connections-factory.d.ts.map +1 -0
  20. package/build/lib/{device-connections-factory.js → device/device-connections-factory.js} +57 -41
  21. package/build/lib/device/device-connections-factory.js.map +1 -0
  22. package/build/lib/device/real-device-management.d.ts +146 -0
  23. package/build/lib/device/real-device-management.d.ts.map +1 -0
  24. package/build/lib/device/real-device-management.js +727 -0
  25. package/build/lib/device/real-device-management.js.map +1 -0
  26. package/build/lib/device/simulator-management.d.ts +65 -0
  27. package/build/lib/device/simulator-management.d.ts.map +1 -0
  28. package/build/lib/{simulator-management.js → device/simulator-management.js} +23 -42
  29. package/build/lib/device/simulator-management.js.map +1 -0
  30. package/build/lib/driver.d.ts +4 -1
  31. package/build/lib/driver.d.ts.map +1 -1
  32. package/build/lib/driver.js +5 -6
  33. package/build/lib/driver.js.map +1 -1
  34. package/lib/commands/app-management.js +1 -1
  35. package/lib/commands/file-movement.js +8 -4
  36. package/lib/commands/memory.js +1 -1
  37. package/lib/commands/performance.js +12 -1
  38. package/lib/commands/xctest-record-screen.js +1 -1
  39. package/lib/desired-caps.js +1 -0
  40. package/lib/{device-connections-factory.js → device/device-connections-factory.ts} +96 -60
  41. package/lib/device/real-device-management.ts +818 -0
  42. package/lib/{simulator-management.js → device/simulator-management.ts} +68 -61
  43. package/lib/driver.js +3 -5
  44. package/npm-shrinkwrap.json +2 -2
  45. package/package.json +1 -1
  46. package/build/lib/device-connections-factory.d.ts +0 -13
  47. package/build/lib/device-connections-factory.d.ts.map +0 -1
  48. package/build/lib/device-connections-factory.js.map +0 -1
  49. package/build/lib/ios-fs-helpers.d.ts +0 -75
  50. package/build/lib/ios-fs-helpers.d.ts.map +0 -1
  51. package/build/lib/ios-fs-helpers.js +0 -370
  52. package/build/lib/ios-fs-helpers.js.map +0 -1
  53. package/build/lib/real-device-management.d.ts +0 -53
  54. package/build/lib/real-device-management.d.ts.map +0 -1
  55. package/build/lib/real-device-management.js +0 -128
  56. package/build/lib/real-device-management.js.map +0 -1
  57. package/build/lib/real-device.d.ts +0 -112
  58. package/build/lib/real-device.d.ts.map +0 -1
  59. package/build/lib/real-device.js +0 -352
  60. package/build/lib/real-device.js.map +0 -1
  61. package/build/lib/simulator-management.d.ts +0 -96
  62. package/build/lib/simulator-management.d.ts.map +0 -1
  63. package/build/lib/simulator-management.js.map +0 -1
  64. package/build/lib/xcrun.d.ts +0 -3
  65. package/build/lib/xcrun.d.ts.map +0 -1
  66. package/build/lib/xcrun.js +0 -17
  67. package/build/lib/xcrun.js.map +0 -1
  68. package/lib/ios-fs-helpers.js +0 -355
  69. package/lib/real-device-management.js +0 -133
  70. package/lib/real-device.js +0 -347
  71. package/lib/xcrun.js +0 -16
@@ -1,370 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.IO_TIMEOUT_MS = void 0;
40
- exports.pullFile = pullFile;
41
- exports.pullFolder = pullFolder;
42
- exports.pushFile = pushFile;
43
- exports.pushFolder = pushFolder;
44
- const lodash_1 = __importDefault(require("lodash"));
45
- const bluebird_1 = __importStar(require("bluebird"));
46
- const support_1 = require("appium/support");
47
- const path_1 = __importDefault(require("path"));
48
- const logger_1 = __importDefault(require("./logger"));
49
- exports.IO_TIMEOUT_MS = 4 * 60 * 1000;
50
- // Mobile devices use NAND memory modules for the storage,
51
- // and the parallelism there is not as performant as on regular SSDs
52
- const MAX_IO_CHUNK_SIZE = 8;
53
- /**
54
- * Retrieve a file from a real device
55
- *
56
- * @param {any} afcService Apple File Client service instance from
57
- * 'appium-ios-device' module
58
- * @param {string} remotePath Relative path to the file on the device
59
- * @returns {Promise<Buffer>} The file content as a buffer
60
- */
61
- async function pullFile(afcService, remotePath) {
62
- const stream = await afcService.createReadStream(remotePath, { autoDestroy: true });
63
- const pullPromise = new bluebird_1.default((resolve, reject) => {
64
- stream.on('close', resolve);
65
- stream.on('error', reject);
66
- }).timeout(exports.IO_TIMEOUT_MS);
67
- const buffers = [];
68
- stream.on('data', (data) => buffers.push(data));
69
- await pullPromise;
70
- return Buffer.concat(buffers);
71
- }
72
- /**
73
- * Checks a presence of a local folder.
74
- *
75
- * @param {string} folderPath Full path to the local folder
76
- * @returns {Promise<boolean>} True if the folder exists and is actually a folder
77
- */
78
- async function folderExists(folderPath) {
79
- try {
80
- return (await support_1.fs.stat(folderPath)).isDirectory();
81
- }
82
- catch {
83
- return false;
84
- }
85
- }
86
- /**
87
- * Retrieve a folder from a real device
88
- *
89
- * @param {any} afcService Apple File Client service instance from
90
- * 'appium-ios-device' module
91
- * @param {string} remoteRootPath Relative path to the folder on the device
92
- * @returns {Promise<Buffer>} The folder content as a zipped base64-encoded buffer
93
- */
94
- async function pullFolder(afcService, remoteRootPath) {
95
- const tmpFolder = await support_1.tempDir.openDir();
96
- try {
97
- let localTopItem = null;
98
- let countFilesSuccess = 0;
99
- let countFilesFail = 0;
100
- let countFolders = 0;
101
- const pullPromises = [];
102
- await afcService.walkDir(remoteRootPath, true, async (remotePath, isDir) => {
103
- const localPath = path_1.default.join(tmpFolder, remotePath);
104
- const dirname = isDir ? localPath : path_1.default.dirname(localPath);
105
- if (!(await folderExists(dirname))) {
106
- await (0, support_1.mkdirp)(dirname);
107
- }
108
- if (!localTopItem || localPath.split(path_1.default.sep).length < localTopItem.split(path_1.default.sep).length) {
109
- localTopItem = localPath;
110
- }
111
- if (isDir) {
112
- ++countFolders;
113
- return;
114
- }
115
- const readStream = await afcService.createReadStream(remotePath, { autoDestroy: true });
116
- const writeStream = support_1.fs.createWriteStream(localPath, { autoClose: true });
117
- pullPromises.push(new bluebird_1.default((resolve) => {
118
- writeStream.on('close', () => {
119
- ++countFilesSuccess;
120
- resolve();
121
- });
122
- const onStreamingError = (e) => {
123
- readStream.unpipe(writeStream);
124
- logger_1.default.warn(`Cannot pull '${remotePath}' to '${localPath}'. ` +
125
- `The file will be skipped. Original error: ${e.message}`);
126
- ++countFilesFail;
127
- resolve();
128
- };
129
- writeStream.on('error', onStreamingError);
130
- readStream.on('error', onStreamingError);
131
- }).timeout(exports.IO_TIMEOUT_MS));
132
- readStream.pipe(writeStream);
133
- if (pullPromises.length >= MAX_IO_CHUNK_SIZE) {
134
- await bluebird_1.default.any(pullPromises);
135
- for (let i = pullPromises.length - 1; i >= 0; i--) {
136
- if (pullPromises[i].isFulfilled()) {
137
- pullPromises.splice(i, 1);
138
- }
139
- }
140
- }
141
- });
142
- // Wait for the rest of files to be pulled
143
- if (!lodash_1.default.isEmpty(pullPromises)) {
144
- await bluebird_1.default.all(pullPromises);
145
- }
146
- logger_1.default.info(`Pulled ${support_1.util.pluralize('file', countFilesSuccess, true)} out of ` +
147
- `${countFilesSuccess + countFilesFail} and ${support_1.util.pluralize('folder', countFolders, true)} ` +
148
- `from '${remoteRootPath}'`);
149
- return await support_1.zip.toInMemoryZip(localTopItem ? path_1.default.dirname(localTopItem) : tmpFolder, {
150
- encodeToBase64: true,
151
- });
152
- }
153
- finally {
154
- await support_1.fs.rimraf(tmpFolder);
155
- }
156
- }
157
- /**
158
- * Creates remote folder path recursively. Noop if the given path
159
- * already exists
160
- *
161
- * @param {any} afcService Apple File Client service instance from
162
- * 'appium-ios-device' module
163
- * @param {string} remoteRoot The relative path to the remote folder structure
164
- * to be created
165
- */
166
- async function remoteMkdirp(afcService, remoteRoot) {
167
- if (remoteRoot === '.' || remoteRoot === '/') {
168
- return;
169
- }
170
- try {
171
- await afcService.listDirectory(remoteRoot);
172
- return;
173
- }
174
- catch {
175
- // This means that the directory is missing and we got an object not found error.
176
- // Therefore, we are going to the parent
177
- await remoteMkdirp(afcService, path_1.default.dirname(remoteRoot));
178
- }
179
- await afcService.createDirectory(remoteRoot);
180
- }
181
- /**
182
- * @typedef {Object} PushFileOptions
183
- * @property {number} [timeoutMs=240000] The maximum count of milliceconds to wait until
184
- * file push is completed. Cannot be lower than 60000ms
185
- */
186
- /**
187
- * Pushes a file to a real device
188
- *
189
- * @param {any} afcService afcService Apple File Client service instance from
190
- * 'appium-ios-device' module
191
- * @param {string|Buffer} localPathOrPayload Either full path to the source file
192
- * or a buffer payload to be written into the remote destination
193
- * @param {string} remotePath Relative path to the file on the device. The remote
194
- * folder structure is created automatically if necessary.
195
- * @param {PushFileOptions} [opts={}]
196
- */
197
- async function pushFile(afcService, localPathOrPayload, remotePath, opts = {}) {
198
- const { timeoutMs = exports.IO_TIMEOUT_MS } = opts;
199
- const timer = new support_1.timing.Timer().start();
200
- await remoteMkdirp(afcService, path_1.default.dirname(remotePath));
201
- const source = Buffer.isBuffer(localPathOrPayload)
202
- ? localPathOrPayload
203
- : support_1.fs.createReadStream(localPathOrPayload, { autoClose: true });
204
- const writeStream = await afcService.createWriteStream(remotePath, {
205
- autoDestroy: true,
206
- });
207
- writeStream.on('finish', writeStream.destroy);
208
- let pushError = null;
209
- const filePushPromise = new bluebird_1.default((resolve, reject) => {
210
- writeStream.on('close', () => {
211
- if (pushError) {
212
- reject(pushError);
213
- }
214
- else {
215
- resolve();
216
- }
217
- });
218
- const onStreamError = (e) => {
219
- if (!Buffer.isBuffer(source)) {
220
- source.unpipe(writeStream);
221
- }
222
- logger_1.default.debug(e);
223
- pushError = e;
224
- };
225
- writeStream.on('error', onStreamError);
226
- if (!Buffer.isBuffer(source)) {
227
- source.on('error', onStreamError);
228
- }
229
- });
230
- if (Buffer.isBuffer(source)) {
231
- writeStream.write(source);
232
- writeStream.end();
233
- }
234
- else {
235
- source.pipe(writeStream);
236
- }
237
- await filePushPromise.timeout(Math.max(timeoutMs, 60000));
238
- const fileSize = Buffer.isBuffer(localPathOrPayload)
239
- ? localPathOrPayload.length
240
- : (await support_1.fs.stat(localPathOrPayload)).size;
241
- logger_1.default.debug(`Successfully pushed the file payload (${support_1.util.toReadableSizeString(fileSize)}) ` +
242
- `to the remote location '${remotePath}' in ${timer.getDuration().asMilliSeconds.toFixed(0)}ms`);
243
- }
244
- /**
245
- * @typedef {Object} PushFolderOptions
246
- *
247
- * @property {number} [timeoutMs=240000] The maximum timeout to wait until a
248
- * single file is copied
249
- * @property {boolean} [enableParallelPush=false] Whether to push files in parallel.
250
- * This usually gives better performance, but might sometimes be less stable.
251
- */
252
- /**
253
- * Pushes a folder to a real device
254
- *
255
- * @param {any} afcService Apple File Client service instance from
256
- * 'appium-ios-device' module
257
- * @param {string} srcRootPath The full path to the source folder
258
- * @param {string} dstRootPath The relative path to the destination folder. The folder
259
- * will be deleted if already exists.
260
- * @param {PushFolderOptions} opts
261
- */
262
- async function pushFolder(afcService, srcRootPath, dstRootPath, opts = {}) {
263
- const { timeoutMs = exports.IO_TIMEOUT_MS, enableParallelPush = false } = opts;
264
- const timer = new support_1.timing.Timer().start();
265
- const allItems = /** @type {import('path-scurry').Path[]} */ (
266
- /** @type {unknown} */ (await support_1.fs.glob('**', {
267
- cwd: srcRootPath,
268
- withFileTypes: true,
269
- })));
270
- logger_1.default.debug(`Successfully scanned the tree structure of '${srcRootPath}'`);
271
- // top-level folders go first
272
- /** @type {string[]} */
273
- const foldersToPush = allItems
274
- .filter((x) => x.isDirectory())
275
- .map((x) => x.relative())
276
- .sort((a, b) => a.split(path_1.default.sep).length - b.split(path_1.default.sep).length);
277
- // larger files go first
278
- /** @type {string[]} */
279
- const filesToPush = allItems
280
- .filter((x) => !x.isDirectory())
281
- .sort((a, b) => (b.size ?? 0) - (a.size ?? 0))
282
- .map((x) => x.relative());
283
- logger_1.default.debug(`Got ${support_1.util.pluralize('folder', foldersToPush.length, true)} and ` +
284
- `${support_1.util.pluralize('file', filesToPush.length, true)} to push`);
285
- // create the folder structure first
286
- try {
287
- await afcService.deleteDirectory(dstRootPath);
288
- }
289
- catch { }
290
- await afcService.createDirectory(dstRootPath);
291
- for (const relativeFolderPath of foldersToPush) {
292
- // createDirectory does not accept folder names ending with a path separator
293
- const absoluteFolderPath = lodash_1.default.trimEnd(path_1.default.join(dstRootPath, relativeFolderPath), path_1.default.sep);
294
- if (absoluteFolderPath) {
295
- await afcService.createDirectory(absoluteFolderPath);
296
- }
297
- }
298
- // do not forget about the root folder
299
- logger_1.default.debug(`Successfully created the remote folder structure ` +
300
- `(${support_1.util.pluralize('item', foldersToPush.length + 1, true)})`);
301
- const _pushFile = async (/** @type {string} */ relativePath) => {
302
- const absoluteSourcePath = path_1.default.join(srcRootPath, relativePath);
303
- const readStream = support_1.fs.createReadStream(absoluteSourcePath, { autoClose: true });
304
- const absoluteDestinationPath = path_1.default.join(dstRootPath, relativePath);
305
- const writeStream = await afcService.createWriteStream(absoluteDestinationPath, {
306
- autoDestroy: true,
307
- });
308
- writeStream.on('finish', writeStream.destroy);
309
- let pushError = null;
310
- const filePushPromise = new bluebird_1.default((resolve, reject) => {
311
- writeStream.on('close', () => {
312
- if (pushError) {
313
- reject(pushError);
314
- }
315
- else {
316
- resolve();
317
- }
318
- });
319
- const onStreamError = (e) => {
320
- readStream.unpipe(writeStream);
321
- logger_1.default.debug(e);
322
- pushError = e;
323
- };
324
- writeStream.on('error', onStreamError);
325
- readStream.on('error', onStreamError);
326
- });
327
- readStream.pipe(writeStream);
328
- await filePushPromise.timeout(Math.max(timeoutMs - timer.getDuration().asMilliSeconds, 60000));
329
- };
330
- if (enableParallelPush) {
331
- logger_1.default.debug(`Proceeding to parallel files push (max ${MAX_IO_CHUNK_SIZE} writers)`);
332
- const pushPromises = [];
333
- for (const relativeFilePath of filesToPush) {
334
- pushPromises.push(bluebird_1.default.resolve(_pushFile(relativeFilePath)));
335
- // keep the push queue filled
336
- if (pushPromises.length >= MAX_IO_CHUNK_SIZE) {
337
- await bluebird_1.default.any(pushPromises);
338
- const elapsedMs = timer.getDuration().asMilliSeconds;
339
- if (elapsedMs > timeoutMs) {
340
- throw new bluebird_1.TimeoutError(`Timed out after ${elapsedMs} ms`);
341
- }
342
- }
343
- for (let i = pushPromises.length - 1; i >= 0; i--) {
344
- if (pushPromises[i].isFulfilled()) {
345
- pushPromises.splice(i, 1);
346
- }
347
- }
348
- }
349
- if (!lodash_1.default.isEmpty(pushPromises)) {
350
- const remainingPromises = pushPromises.filter((p) => !p.isFulfilled());
351
- if (remainingPromises.length > 0) {
352
- await bluebird_1.default.all(remainingPromises).timeout(Math.max(timeoutMs - timer.getDuration().asMilliSeconds, 60000));
353
- }
354
- }
355
- }
356
- else {
357
- logger_1.default.debug(`Proceeding to serial files push`);
358
- for (const relativeFilePath of filesToPush) {
359
- await _pushFile(relativeFilePath);
360
- const elapsedMs = timer.getDuration().asMilliSeconds;
361
- if (elapsedMs > timeoutMs) {
362
- throw new bluebird_1.TimeoutError(`Timed out after ${elapsedMs} ms`);
363
- }
364
- }
365
- }
366
- logger_1.default.debug(`Successfully pushed ${support_1.util.pluralize('folder', foldersToPush.length, true)} ` +
367
- `and ${support_1.util.pluralize('file', filesToPush.length, true)} ` +
368
- `within ${timer.getDuration().asMilliSeconds.toFixed(0)}ms`);
369
- }
370
- //# sourceMappingURL=ios-fs-helpers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ios-fs-helpers.js","sourceRoot":"","sources":["../../lib/ios-fs-helpers.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmBA,4BAUC;AAwBD,gCAwEC;AA2CD,4BA8CC;AAqBD,gCAuHC;AAlWD,oDAAuB;AACvB,qDAAyC;AACzC,4CAAsE;AACtE,gDAAwB;AACxB,sDAA2B;AAEd,QAAA,aAAa,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAC3C,0DAA0D;AAC1D,oEAAoE;AACpE,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAE5B;;;;;;;GAOG;AACI,KAAK,UAAU,QAAQ,CAAC,UAAU,EAAE,UAAU;IACnD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,gBAAgB,CAAC,UAAU,EAAE,EAAC,WAAW,EAAE,IAAI,EAAC,CAAC,CAAC;IAClF,MAAM,WAAW,GAAG,IAAI,kBAAC,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC5C,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC5B,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC,OAAO,CAAC,qBAAa,CAAC,CAAC;IAC1B,MAAM,OAAO,GAAG,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAChD,MAAM,WAAW,CAAC;IAClB,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,YAAY,CAAC,UAAU;IACpC,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,YAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IACnD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACI,KAAK,UAAU,UAAU,CAAC,UAAU,EAAE,cAAc;IACzD,MAAM,SAAS,GAAG,MAAM,iBAAO,CAAC,OAAO,EAAE,CAAC;IAC1C,IAAI,CAAC;QACH,IAAI,YAAY,GAAG,IAAI,CAAC;QACxB,IAAI,iBAAiB,GAAG,CAAC,CAAC;QAC1B,IAAI,cAAc,GAAG,CAAC,CAAC;QACvB,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,MAAM,YAAY,GAAG,EAAE,CAAC;QACxB,MAAM,UAAU,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE;YACzE,MAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;YACnD,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAC5D,IAAI,CAAC,CAAC,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;gBACnC,MAAM,IAAA,gBAAM,EAAC,OAAO,CAAC,CAAC;YACxB,CAAC;YACD,IAAI,CAAC,YAAY,IAAI,SAAS,CAAC,KAAK,CAAC,cAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,cAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;gBAC5F,YAAY,GAAG,SAAS,CAAC;YAC3B,CAAC;YACD,IAAI,KAAK,EAAE,CAAC;gBACV,EAAE,YAAY,CAAC;gBACf,OAAO;YACT,CAAC;YAED,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,gBAAgB,CAAC,UAAU,EAAE,EAAC,WAAW,EAAE,IAAI,EAAC,CAAC,CAAC;YACtF,MAAM,WAAW,GAAG,YAAE,CAAC,iBAAiB,CAAC,SAAS,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAC;YACvE,YAAY,CAAC,IAAI,CACf,IAAI,kBAAC,CAAC,CAAC,OAAO,EAAE,EAAE;gBAChB,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;oBAC3B,EAAE,iBAAiB,CAAC;oBACpB,OAAO,EAAE,CAAC;gBACZ,CAAC,CAAC,CAAC;gBACH,MAAM,gBAAgB,GAAG,CAAC,CAAC,EAAE,EAAE;oBAC7B,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;oBAC/B,gBAAG,CAAC,IAAI,CACN,gBAAgB,UAAU,SAAS,SAAS,KAAK;wBAC/C,6CAA6C,CAAC,CAAC,OAAO,EAAE,CAC3D,CAAC;oBACF,EAAE,cAAc,CAAC;oBACjB,OAAO,EAAE,CAAC;gBACZ,CAAC,CAAC;gBACF,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;gBAC1C,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;YAC3C,CAAC,CAAC,CAAC,OAAO,CAAC,qBAAa,CAAC,CAC1B,CAAC;YACF,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC7B,IAAI,YAAY,CAAC,MAAM,IAAI,iBAAiB,EAAE,CAAC;gBAC7C,MAAM,kBAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;gBAC1B,KAAK,IAAI,CAAC,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;oBAClD,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;wBAClC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC5B,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QACH,0CAA0C;QAC1C,IAAI,CAAC,gBAAC,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YAC7B,MAAM,kBAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC5B,CAAC;QACD,gBAAG,CAAC,IAAI,CACN,UAAU,cAAI,CAAC,SAAS,CAAC,MAAM,EAAE,iBAAiB,EAAE,IAAI,CAAC,UAAU;YACjE,GAAG,iBAAiB,GAAG,cAAc,QAAQ,cAAI,CAAC,SAAS,CACzD,QAAQ,EACR,YAAY,EACZ,IAAI,CACL,GAAG;YACJ,SAAS,cAAc,GAAG,CAC7B,CAAC;QACF,OAAO,MAAM,aAAG,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,cAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE;YACpF,cAAc,EAAE,IAAI;SACrB,CAAC,CAAC;IACL,CAAC;YAAS,CAAC;QACT,MAAM,YAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,KAAK,UAAU,YAAY,CAAC,UAAU,EAAE,UAAU;IAChD,IAAI,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;QAC7C,OAAO;IACT,CAAC;IACD,IAAI,CAAC;QACH,MAAM,UAAU,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAC3C,OAAO;IACT,CAAC;IAAC,MAAM,CAAC;QACP,iFAAiF;QACjF,wCAAwC;QACxC,MAAM,YAAY,CAAC,UAAU,EAAE,cAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;IAC3D,CAAC;IACD,MAAM,UAAU,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;AAC/C,CAAC;AAED;;;;GAIG;AAEH;;;;;;;;;;GAUG;AACI,KAAK,UAAU,QAAQ,CAAC,UAAU,EAAE,kBAAkB,EAAE,UAAU,EAAE,IAAI,GAAG,EAAE;IAClF,MAAM,EAAC,SAAS,GAAG,qBAAa,EAAC,GAAG,IAAI,CAAC;IACzC,MAAM,KAAK,GAAG,IAAI,gBAAM,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC;IACzC,MAAM,YAAY,CAAC,UAAU,EAAE,cAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QAChD,CAAC,CAAC,kBAAkB;QACpB,CAAC,CAAC,YAAE,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAC;IAC/D,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,iBAAiB,CAAC,UAAU,EAAE;QACjE,WAAW,EAAE,IAAI;KAClB,CAAC,CAAC;IACH,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAC9C,IAAI,SAAS,GAAG,IAAI,CAAC;IACrB,MAAM,eAAe,GAAG,IAAI,kBAAC,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAChD,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YAC3B,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,CAAC,SAAS,CAAC,CAAC;YACpB,CAAC;iBAAM,CAAC;gBACN,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC,CAAC,CAAC;QACH,MAAM,aAAa,GAAG,CAAC,CAAC,EAAE,EAAE;YAC1B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC7B,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAC7B,CAAC;YACD,gBAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACb,SAAS,GAAG,CAAC,CAAC;QAChB,CAAC,CAAC;QACF,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7B,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QACpC,CAAC;IACH,CAAC,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5B,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC1B,WAAW,CAAC,GAAG,EAAE,CAAC;IACpB,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC3B,CAAC;IACD,MAAM,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IAC1D,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QAClD,CAAC,CAAC,kBAAkB,CAAC,MAAM;QAC3B,CAAC,CAAC,CAAC,MAAM,YAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7C,gBAAG,CAAC,KAAK,CACP,yCAAyC,cAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,IAAI;QAC9E,2BAA2B,UAAU,QAAQ,KAAK,CAAC,WAAW,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CACjG,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AAEH;;;;;;;;;GASG;AACI,KAAK,UAAU,UAAU,CAAC,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,IAAI,GAAG,EAAE;IAC9E,MAAM,EAAC,SAAS,GAAG,qBAAa,EAAE,kBAAkB,GAAG,KAAK,EAAC,GAAG,IAAI,CAAC;IAErE,MAAM,KAAK,GAAG,IAAI,gBAAM,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC;IACzC,MAAM,QAAQ,GAAG,2CAA2C,CAAC;IAC3D,sBAAsB,CAAC,CACrB,MAAM,YAAE,CAAC,IAAI,CAAC,IAAI,EAAE;QAClB,GAAG,EAAE,WAAW;QAChB,aAAa,EAAE,IAAI;KACpB,CAAC,CACH,CACF,CAAC;IACF,gBAAG,CAAC,KAAK,CAAC,+CAA+C,WAAW,GAAG,CAAC,CAAC;IACzE,6BAA6B;IAC7B,uBAAuB;IACvB,MAAM,aAAa,GAAG,QAAQ;SAC3B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;SAC9B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;SACxB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,cAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,cAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;IACvE,wBAAwB;IACxB,uBAAuB;IACvB,MAAM,WAAW,GAAG,QAAQ;SACzB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;SAC/B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;SAC7C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC5B,gBAAG,CAAC,KAAK,CACP,OAAO,cAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO;QAChE,GAAG,cAAI,CAAC,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAChE,CAAC;IACF,oCAAoC;IACpC,IAAI,CAAC;QACH,MAAM,UAAU,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;IACV,MAAM,UAAU,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;IAC9C,KAAK,MAAM,kBAAkB,IAAI,aAAa,EAAE,CAAC;QAC/C,4EAA4E;QAC5E,MAAM,kBAAkB,GAAG,gBAAC,CAAC,OAAO,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,kBAAkB,CAAC,EAAE,cAAI,CAAC,GAAG,CAAC,CAAC;QAC3F,IAAI,kBAAkB,EAAE,CAAC;YACvB,MAAM,UAAU,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IACD,sCAAsC;IACtC,gBAAG,CAAC,KAAK,CACP,mDAAmD;QACjD,IAAI,cAAI,CAAC,SAAS,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAChE,CAAC;IAEF,MAAM,SAAS,GAAG,KAAK,EAAE,qBAAqB,CAAC,YAAY,EAAE,EAAE;QAC7D,MAAM,kBAAkB,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAChE,MAAM,UAAU,GAAG,YAAE,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAC;QAC9E,MAAM,uBAAuB,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QACrE,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,iBAAiB,CAAC,uBAAuB,EAAE;YAC9E,WAAW,EAAE,IAAI;SAClB,CAAC,CAAC;QACH,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,SAAS,GAAG,IAAI,CAAC;QACrB,MAAM,eAAe,GAAG,IAAI,kBAAC,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAChD,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBAC3B,IAAI,SAAS,EAAE,CAAC;oBACd,MAAM,CAAC,SAAS,CAAC,CAAC;gBACpB,CAAC;qBAAM,CAAC;oBACN,OAAO,EAAE,CAAC;gBACZ,CAAC;YACH,CAAC,CAAC,CAAC;YACH,MAAM,aAAa,GAAG,CAAC,CAAC,EAAE,EAAE;gBAC1B,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;gBAC/B,gBAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACb,SAAS,GAAG,CAAC,CAAC;YAChB,CAAC,CAAC;YACF,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;YACvC,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QACH,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7B,MAAM,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;IACjG,CAAC,CAAC;IAEF,IAAI,kBAAkB,EAAE,CAAC;QACvB,gBAAG,CAAC,KAAK,CAAC,0CAA0C,iBAAiB,WAAW,CAAC,CAAC;QAClF,MAAM,YAAY,GAAG,EAAE,CAAC;QACxB,KAAK,MAAM,gBAAgB,IAAI,WAAW,EAAE,CAAC;YAC3C,YAAY,CAAC,IAAI,CAAC,kBAAC,CAAC,OAAO,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;YAC1D,6BAA6B;YAC7B,IAAI,YAAY,CAAC,MAAM,IAAI,iBAAiB,EAAE,CAAC;gBAC7C,MAAM,kBAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;gBAC1B,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,cAAc,CAAC;gBACrD,IAAI,SAAS,GAAG,SAAS,EAAE,CAAC;oBAC1B,MAAM,IAAI,uBAAY,CAAC,mBAAmB,SAAS,KAAK,CAAC,CAAC;gBAC5D,CAAC;YACH,CAAC;YACD,KAAK,IAAI,CAAC,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAClD,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;oBAClC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC5B,CAAC;YACH,CAAC;QACH,CAAC;QACD,IAAI,CAAC,gBAAC,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YAC7B,MAAM,iBAAiB,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;YACvE,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACjC,MAAM,kBAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,OAAO,CACpC,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,cAAc,EAAE,KAAK,CAAC,CAChE,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,gBAAG,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;QAC7C,KAAK,MAAM,gBAAgB,IAAI,WAAW,EAAE,CAAC;YAC3C,MAAM,SAAS,CAAC,gBAAgB,CAAC,CAAC;YAClC,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,cAAc,CAAC;YACrD,IAAI,SAAS,GAAG,SAAS,EAAE,CAAC;gBAC1B,MAAM,IAAI,uBAAY,CAAC,mBAAmB,SAAS,KAAK,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;IACH,CAAC;IAED,gBAAG,CAAC,KAAK,CACP,uBAAuB,cAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG;QAC5E,OAAO,cAAI,CAAC,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG;QAC1D,UAAU,KAAK,CAAC,WAAW,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAC9D,CAAC;AACJ,CAAC"}
@@ -1,53 +0,0 @@
1
- /**
2
- * @typedef {Object} InstallOptions
3
- *
4
- * @property {boolean} [skipUninstall] Whether to skip app uninstall before installing it
5
- * @property {number} [timeout=480000] App install timeout
6
- * @property {boolean} [shouldEnforceUninstall] Whether to enforce the app uninstallation. e.g. fullReset, or enforceAppInstall is true
7
- */
8
- /**
9
- * @this {import('./driver').XCUITestDriver}
10
- * @param {string} [app] The app to the path
11
- * @param {string} [bundleId] The bundle id to ensure it is already installed and uninstall it
12
- * @param {InstallOptions} [opts={}]
13
- */
14
- export function installToRealDevice(this: import("./driver").XCUITestDriver, app?: string, bundleId?: string, opts?: InstallOptions): Promise<void>;
15
- /**
16
- * @this {import('./driver').XCUITestDriver}
17
- * @returns {Promise<void>}
18
- */
19
- export function runRealDeviceReset(this: import("./driver").XCUITestDriver): Promise<void>;
20
- /**
21
- * Configures Safari startup options based on the given session capabilities.
22
- *
23
- * !!! This method mutates driver options.
24
- *
25
- * @this {import('./driver').XCUITestDriver}
26
- * @return {boolean} true if process arguments have been modified
27
- */
28
- export function applySafariStartupArgs(this: import("./driver").XCUITestDriver): boolean;
29
- /**
30
- * @this {XCUITestDriver}
31
- * @returns {Promise<string>}
32
- */
33
- export function detectUdid(this: import("./driver").XCUITestDriver): Promise<string>;
34
- export type InstallOptions = {
35
- /**
36
- * Whether to skip app uninstall before installing it
37
- */
38
- skipUninstall?: boolean | undefined;
39
- /**
40
- * App install timeout
41
- */
42
- timeout?: number | undefined;
43
- /**
44
- * Whether to enforce the app uninstallation. e.g. fullReset, or enforceAppInstall is true
45
- */
46
- shouldEnforceUninstall?: boolean | undefined;
47
- };
48
- /**
49
- * }
50
- */
51
- export type RealDevice = import("./real-device").RealDevice;
52
- export type XCUITestDriver = import("./driver").XCUITestDriver;
53
- //# sourceMappingURL=real-device-management.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"real-device-management.d.ts","sourceRoot":"","sources":["../../lib/real-device-management.js"],"names":[],"mappings":"AAMA;;;;;;GAMG;AAEH;;;;;GAKG;AACH,mFAJW,MAAM,aACN,MAAM,SACN,cAAc,iBAkDxB;AAED;;;GAGG;AACH,6EAFa,OAAO,CAAC,IAAI,CAAC,CAWzB;AAED;;;;;;;GAOG;AACH,iFAFY,OAAO,CAiBlB;AAED;;;GAGG;AACH,qEAFa,OAAO,CAAC,MAAM,CAAC,CAe3B;;;;;;;;;;;;;;;;;;yBAGY,OAAO,eAAe,EAAE,UAAU;6BAClC,OAAO,UAAU,EAAE,cAAc"}
@@ -1,128 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.installToRealDevice = installToRealDevice;
7
- exports.runRealDeviceReset = runRealDeviceReset;
8
- exports.applySafariStartupArgs = applySafariStartupArgs;
9
- exports.detectUdid = detectUdid;
10
- const lodash_1 = __importDefault(require("lodash"));
11
- const app_utils_1 = require("./app-utils");
12
- const real_device_1 = require("./real-device");
13
- const DEFAULT_APP_INSTALLATION_TIMEOUT_MS = 8 * 60 * 1000;
14
- /**
15
- * @typedef {Object} InstallOptions
16
- *
17
- * @property {boolean} [skipUninstall] Whether to skip app uninstall before installing it
18
- * @property {number} [timeout=480000] App install timeout
19
- * @property {boolean} [shouldEnforceUninstall] Whether to enforce the app uninstallation. e.g. fullReset, or enforceAppInstall is true
20
- */
21
- /**
22
- * @this {import('./driver').XCUITestDriver}
23
- * @param {string} [app] The app to the path
24
- * @param {string} [bundleId] The bundle id to ensure it is already installed and uninstall it
25
- * @param {InstallOptions} [opts={}]
26
- */
27
- async function installToRealDevice(app, bundleId, opts = {}) {
28
- const device = /** @type {RealDevice} */ (this.device);
29
- if (!device.udid || !app || !bundleId) {
30
- this.log.debug('No device id, app or bundle id, not installing to real device.');
31
- return;
32
- }
33
- const { skipUninstall, timeout = DEFAULT_APP_INSTALLATION_TIMEOUT_MS, } = opts;
34
- if (!skipUninstall) {
35
- this.log.info(`Reset requested. Removing app with id '${bundleId}' from the device`);
36
- await device.remove(bundleId);
37
- }
38
- this.log.debug(`Installing '${app}' on the device with UUID '${device.udid}'`);
39
- try {
40
- await device.install(app, bundleId, {
41
- timeoutMs: timeout,
42
- });
43
- this.log.debug('The app has been installed successfully.');
44
- }
45
- catch (e) {
46
- // Want to clarify the device's application installation state in this situation.
47
- if (!skipUninstall || !e.message.includes('MismatchedApplicationIdentifierEntitlement')) {
48
- // Other error cases that could not be recoverable by here.
49
- // Exact error will be in the log.
50
- // We cannot recover 'ApplicationVerificationFailed' situation since this reason is clearly the app's provisioning profile was invalid.
51
- // [XCUITest] Error installing app '/path/to.app': Unexpected data: {"Error":"ApplicationVerificationFailed","ErrorDetail":-402620395,"ErrorDescription":"Failed to verify code signature of /path/to.app : 0xe8008015 (A valid provisioning profile for this executable was not found.)"}
52
- throw e;
53
- }
54
- // If the error was by below error case, we could recover the situation
55
- // by uninstalling the device's app bundle id explicitly regard less the app exists on the device or not (e.g. offload app).
56
- // [XCUITest] Error installing app '/path/to.app': Unexpected data: {"Error":"MismatchedApplicationIdentifierEntitlement","ErrorDescription":"Upgrade's application-identifier entitlement string (TEAM_ID.com.kazucocoa.example) does not match installed application's application-identifier string (ANOTHER_TEAM_ID.com.kazucocoa.example); rejecting upgrade."}
57
- this.log.info(`The application identified by '${bundleId}' cannot be installed because it might ` +
58
- `be already cached on the device, probably with a different signature. ` +
59
- `Will try to remove it and install a new copy. Original error: ${e.message}`);
60
- await device.remove(bundleId);
61
- await device.install(app, bundleId, {
62
- timeoutMs: timeout,
63
- });
64
- this.log.debug('The app has been installed after one retrial.');
65
- }
66
- }
67
- /**
68
- * @this {import('./driver').XCUITestDriver}
69
- * @returns {Promise<void>}
70
- */
71
- async function runRealDeviceReset() {
72
- if (!this.opts.noReset || this.opts.fullReset) {
73
- this.log.debug('Reset: running ios real device reset flow');
74
- if (!this.opts.noReset) {
75
- await /** @type {RealDevice} */ (this.device).reset(this.opts);
76
- }
77
- }
78
- else {
79
- this.log.debug('Reset: fullReset not set. Leaving as is');
80
- }
81
- }
82
- /**
83
- * Configures Safari startup options based on the given session capabilities.
84
- *
85
- * !!! This method mutates driver options.
86
- *
87
- * @this {import('./driver').XCUITestDriver}
88
- * @return {boolean} true if process arguments have been modified
89
- */
90
- function applySafariStartupArgs() {
91
- const prefs = (0, app_utils_1.buildSafariPreferences)(this.opts);
92
- if (lodash_1.default.isEmpty(prefs)) {
93
- return false;
94
- }
95
- const args = lodash_1.default.toPairs(prefs)
96
- .flatMap(([key, value]) => [lodash_1.default.startsWith(key, '-') ? key : `-${key}`, String(value)]);
97
- this.log.debug(`Generated Safari command line arguments: ${args.join(' ')}`);
98
- if (lodash_1.default.isPlainObject(this.opts.processArguments)) {
99
- this.opts.processArguments.args = [...(this.opts.processArguments.args ?? []), ...args];
100
- }
101
- else {
102
- this.opts.processArguments = { args };
103
- }
104
- return true;
105
- }
106
- /**
107
- * @this {XCUITestDriver}
108
- * @returns {Promise<string>}
109
- */
110
- async function detectUdid() {
111
- this.log.debug('Auto-detecting real device udid...');
112
- const udids = await (0, real_device_1.getConnectedDevices)();
113
- if (lodash_1.default.isEmpty(udids)) {
114
- throw new Error('No real devices are connected to the host');
115
- }
116
- const udid = udids[udids.length - 1];
117
- if (udids.length > 1) {
118
- this.log.info(`Multiple devices found: ${udids.join(', ')}`);
119
- this.log.info(`Choosing '${udid}'. Consider settings the 'udid' capability if another device must be selected`);
120
- }
121
- this.log.debug(`Detected real device udid: '${udid}'`);
122
- return udid;
123
- }
124
- /**
125
- * @typedef {import('./real-device').RealDevice} RealDevice}
126
- * @typedef {import('./driver').XCUITestDriver} XCUITestDriver
127
- */
128
- //# sourceMappingURL=real-device-management.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"real-device-management.js","sourceRoot":"","sources":["../../lib/real-device-management.js"],"names":[],"mappings":"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"}