appium-xcuitest-driver 7.3.1 → 7.4.1
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 +14 -0
- package/build/lib/driver.d.ts +20 -19
- package/build/lib/driver.d.ts.map +1 -1
- package/build/lib/driver.js +42 -43
- package/build/lib/driver.js.map +1 -1
- package/build/lib/real-device-management.d.ts +16 -3
- package/build/lib/real-device-management.d.ts.map +1 -1
- package/build/lib/real-device-management.js +19 -1
- package/build/lib/real-device-management.js.map +1 -1
- package/build/lib/simulator-management.d.ts.map +1 -1
- package/build/lib/simulator-management.js +3 -10
- package/build/lib/simulator-management.js.map +1 -1
- package/lib/driver.js +55 -59
- package/lib/real-device-management.js +19 -1
- package/lib/simulator-management.js +4 -10
- package/npm-shrinkwrap.json +60 -98
- package/package.json +2 -2
|
@@ -17,8 +17,17 @@ export type InstallOptions = {
|
|
|
17
17
|
shouldEnforceUninstall?: boolean | undefined;
|
|
18
18
|
};
|
|
19
19
|
export function getConnectedDevices(): Promise<any>;
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
/**
|
|
21
|
+
* @param {string} udid
|
|
22
|
+
* @returns {Promise<string>}
|
|
23
|
+
*/
|
|
24
|
+
export function getOSVersion(udid: string): Promise<string>;
|
|
25
|
+
/**
|
|
26
|
+
* @param {IOSDeploy} device
|
|
27
|
+
* @param {import('./driver').XCUITestDriverOpts} opts
|
|
28
|
+
* @returns {Promise<void>}
|
|
29
|
+
*/
|
|
30
|
+
export function runRealDeviceReset(device: IOSDeploy, opts: import('./driver').XCUITestDriverOpts): Promise<void>;
|
|
22
31
|
/**
|
|
23
32
|
* @typedef {Object} InstallOptions
|
|
24
33
|
*
|
|
@@ -34,6 +43,10 @@ export function runRealDeviceReset(device: any, opts: any): Promise<void>;
|
|
|
34
43
|
* @param {InstallOptions} [opts]
|
|
35
44
|
*/
|
|
36
45
|
export function installToRealDevice(device: IOSDeploy, app?: string | undefined, bundleId?: string | undefined, opts?: InstallOptions | undefined): Promise<void>;
|
|
37
|
-
|
|
46
|
+
/**
|
|
47
|
+
* @param {string} udid
|
|
48
|
+
* @returns {IOSDeploy}
|
|
49
|
+
*/
|
|
50
|
+
export function getRealDeviceObj(udid: string): IOSDeploy;
|
|
38
51
|
import IOSDeploy from './ios-deploy';
|
|
39
52
|
//# sourceMappingURL=real-device-management.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"real-device-management.d.ts","sourceRoot":"","sources":["../../lib/real-device-management.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAKA,oDAEC;AAED,
|
|
1
|
+
{"version":3,"file":"real-device-management.d.ts","sourceRoot":"","sources":["../../lib/real-device-management.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAKA,oDAEC;AAED;;;GAGG;AACH,mCAHW,MAAM,GACJ,QAAQ,MAAM,CAAC,CAI3B;AAqCD;;;;GAIG;AACH,2CAJW,SAAS,QACT,OAAO,UAAU,EAAE,kBAAkB,GACnC,QAAQ,IAAI,CAAC,CAWzB;AAED;;;;;;;GAOG;AAEH;;;;;GAKG;AACH,4CALW,SAAS,6GA4CnB;AAED;;;GAGG;AACH,uCAHW,MAAM,GACJ,SAAS,CAKrB;sBAlIqB,cAAc"}
|
|
@@ -12,10 +12,19 @@ async function getConnectedDevices() {
|
|
|
12
12
|
return await appium_ios_device_1.utilities.getConnectedDevices();
|
|
13
13
|
}
|
|
14
14
|
exports.getConnectedDevices = getConnectedDevices;
|
|
15
|
+
/**
|
|
16
|
+
* @param {string} udid
|
|
17
|
+
* @returns {Promise<string>}
|
|
18
|
+
*/
|
|
15
19
|
async function getOSVersion(udid) {
|
|
16
20
|
return await appium_ios_device_1.utilities.getOSVersion(udid);
|
|
17
21
|
}
|
|
18
22
|
exports.getOSVersion = getOSVersion;
|
|
23
|
+
/**
|
|
24
|
+
* @param {IOSDeploy} device
|
|
25
|
+
* @param {import('./driver').XCUITestDriverOpts} opts
|
|
26
|
+
* @returns {Promise<void>}
|
|
27
|
+
*/
|
|
19
28
|
async function resetRealDevice(device, opts) {
|
|
20
29
|
const { bundleId, fullReset } = opts;
|
|
21
30
|
if (!bundleId) {
|
|
@@ -23,7 +32,7 @@ async function resetRealDevice(device, opts) {
|
|
|
23
32
|
}
|
|
24
33
|
if (bundleId === app_utils_1.SAFARI_BUNDLE_ID) {
|
|
25
34
|
logger_1.default.debug('Reset requested. About to terminate Safari');
|
|
26
|
-
await device.terminateApp(bundleId);
|
|
35
|
+
await device.terminateApp(bundleId, opts.platformVersion);
|
|
27
36
|
return;
|
|
28
37
|
}
|
|
29
38
|
if (!fullReset) {
|
|
@@ -43,6 +52,11 @@ async function resetRealDevice(device, opts) {
|
|
|
43
52
|
}
|
|
44
53
|
logger_1.default.debug(`Reset: removed '${bundleId}'`);
|
|
45
54
|
}
|
|
55
|
+
/**
|
|
56
|
+
* @param {IOSDeploy} device
|
|
57
|
+
* @param {import('./driver').XCUITestDriverOpts} opts
|
|
58
|
+
* @returns {Promise<void>}
|
|
59
|
+
*/
|
|
46
60
|
async function runRealDeviceReset(device, opts) {
|
|
47
61
|
if (!opts.noReset || opts.fullReset) {
|
|
48
62
|
logger_1.default.debug('Reset: running ios real device reset flow');
|
|
@@ -105,6 +119,10 @@ async function installToRealDevice(device, app, bundleId, opts) {
|
|
|
105
119
|
}
|
|
106
120
|
}
|
|
107
121
|
exports.installToRealDevice = installToRealDevice;
|
|
122
|
+
/**
|
|
123
|
+
* @param {string} udid
|
|
124
|
+
* @returns {IOSDeploy}
|
|
125
|
+
*/
|
|
108
126
|
function getRealDeviceObj(udid) {
|
|
109
127
|
logger_1.default.debug(`Creating iDevice object with udid '${udid}'`);
|
|
110
128
|
return new ios_deploy_1.default(udid);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"real-device-management.js","sourceRoot":"","sources":["../../lib/real-device-management.js"],"names":[],"mappings":";;;;;;AAAA,yDAA4C;AAC5C,8DAAqC;AACrC,sDAA2B;AAC3B,2CAA6C;AAE7C,KAAK,UAAU,mBAAmB;IAChC,OAAO,MAAM,6BAAS,CAAC,mBAAmB,EAAE,CAAC;AAC/C,CAAC;
|
|
1
|
+
{"version":3,"file":"real-device-management.js","sourceRoot":"","sources":["../../lib/real-device-management.js"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simulator-management.d.ts","sourceRoot":"","sources":["../../lib/simulator-management.js"],"names":[],"mappings":";;;;gBAoBc,MAAM;;;;qBACN,MAAM;;;;;;;;;;;;qBAuCN,MAAM;;;;;;;;;;;;;;;;;;;;;;;;AA1CpB;;;;;;GAMG;AACH;;;;;GAKG;AACH,gCAHW,QAAQ,wBAAwB,CAAC,GAC/B,QAAQ,MAAM,CAAC,CA0B3B;AAED;;;;;;;GAOG;AAEH;;;;;GAKG;AACH,sCAHW,sBAAsB,GACpB,QAAQ,GAAG,GAAC,IAAI,CAAC,CAoD7B;AAQD,yEAuEC;AAED;;;;;GAKG;AAEH;;;;;GAKG;AACH,2CALW,GAAG,OACH,MAAM,wCAEN,cAAc,
|
|
1
|
+
{"version":3,"file":"simulator-management.d.ts","sourceRoot":"","sources":["../../lib/simulator-management.js"],"names":[],"mappings":";;;;gBAoBc,MAAM;;;;qBACN,MAAM;;;;;;;;;;;;qBAuCN,MAAM;;;;;;;;;;;;;;;;;;;;;;;;AA1CpB;;;;;;GAMG;AACH;;;;;GAKG;AACH,gCAHW,QAAQ,wBAAwB,CAAC,GAC/B,QAAQ,MAAM,CAAC,CA0B3B;AAED;;;;;;;GAOG;AAEH;;;;;GAKG;AACH,sCAHW,sBAAsB,GACpB,QAAQ,GAAG,GAAC,IAAI,CAAC,CAoD7B;AAQD,yEAuEC;AAED;;;;;GAKG;AAEH;;;;;GAKG;AACH,2CALW,GAAG,OACH,MAAM,wCAEN,cAAc,iBAwBxB;AAlHD,8DAIC;AAgHD,2EAyBC;AAED;;;;;;GAMG;AACH,oCAJW,GAAG,SACH,MAAM,GACL,QAAQ,OAAO,CAAC,CAqB3B;AAED;;;;;;GAMG;AACH,0CAJW,GAAG,SACH,MAAM,GACJ,QAAQ,OAAO,CAAC,CAqB5B"}
|
|
@@ -200,16 +200,9 @@ async function installToSimulator(device, app, bundleId, opts = /** @type {Insta
|
|
|
200
200
|
await device.removeApp(bundleId);
|
|
201
201
|
}
|
|
202
202
|
logger_1.default.debug(`Installing '${app}' on Simulator with UUID '${device.udid}'...`);
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
}
|
|
206
|
-
catch (e) {
|
|
207
|
-
// it sometimes fails on Xcode 10 because of a race condition
|
|
208
|
-
logger_1.default.info(`Got an error on '${app}' install: ${e.message}`);
|
|
209
|
-
logger_1.default.info('Retrying application install');
|
|
210
|
-
await device.installApp(app);
|
|
211
|
-
}
|
|
212
|
-
logger_1.default.debug('The app has been installed successfully.');
|
|
203
|
+
const timer = new support_1.timing.Timer().start();
|
|
204
|
+
await device.installApp(app);
|
|
205
|
+
logger_1.default.info(`The app has been successfully installed in ${timer.getDuration().asMilliSeconds.toFixed(0)}ms`);
|
|
213
206
|
}
|
|
214
207
|
exports.installToSimulator = installToSimulator;
|
|
215
208
|
async function shutdownOtherSimulators(currentDevice) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simulator-management.js","sourceRoot":"","sources":["../../lib/simulator-management.js"],"names":[],"mappings":";;;;;;AAAA,+DAAkD;AAClD,8DAAiC;AACjC,iEAAyD;AACzD,oDAAuB;AACvB,sDAA2B;AAC3B,
|
|
1
|
+
{"version":3,"file":"simulator-management.js","sourceRoot":"","sources":["../../lib/simulator-management.js"],"names":[],"mappings":"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"}
|
package/lib/driver.js
CHANGED
|
@@ -4,7 +4,7 @@ import {WebDriverAgent} from 'appium-webdriveragent';
|
|
|
4
4
|
import {BaseDriver, DeviceSettings, errors} from 'appium/driver';
|
|
5
5
|
import {fs, mjpeg, util, timing} from 'appium/support';
|
|
6
6
|
import AsyncLock from 'async-lock';
|
|
7
|
-
import {
|
|
7
|
+
import {retryInterval} from 'asyncbox';
|
|
8
8
|
import B from 'bluebird';
|
|
9
9
|
import _ from 'lodash';
|
|
10
10
|
import {LRUCache} from 'lru-cache';
|
|
@@ -65,7 +65,7 @@ import {
|
|
|
65
65
|
} from './utils';
|
|
66
66
|
|
|
67
67
|
const SHUTDOWN_OTHER_FEAT_NAME = 'shutdown_other_sims';
|
|
68
|
-
const
|
|
68
|
+
const CUSTOMIZE_RESULT_BUNDLE_PATH = 'customize_result_bundle_path';
|
|
69
69
|
|
|
70
70
|
const SUPPORTED_EXTENSIONS = [IPA_EXT, APP_EXT];
|
|
71
71
|
const MAX_ARCHIVE_SCAN_DEPTH = 1;
|
|
@@ -631,7 +631,7 @@ class XCUITestDriver extends BaseDriver {
|
|
|
631
631
|
}
|
|
632
632
|
|
|
633
633
|
// @ts-expect-error - do not assign arbitrary properties to `this.opts`
|
|
634
|
-
await this.startWda(this.opts.sessionId
|
|
634
|
+
await this.startWda(this.opts.sessionId);
|
|
635
635
|
|
|
636
636
|
if (this.opts.orientation) {
|
|
637
637
|
await this.setInitialOrientation(this.opts.orientation);
|
|
@@ -708,9 +708,8 @@ class XCUITestDriver extends BaseDriver {
|
|
|
708
708
|
/**
|
|
709
709
|
* Start WebDriverAgentRunner
|
|
710
710
|
* @param {string} sessionId - The id of the target session to launch WDA with.
|
|
711
|
-
* @param {boolean} realDevice - Equals to true if the test target device is a real device.
|
|
712
711
|
*/
|
|
713
|
-
async startWda(sessionId
|
|
712
|
+
async startWda(sessionId) {
|
|
714
713
|
// Don't cleanup the processes if webDriverAgentUrl is set
|
|
715
714
|
if (!util.hasValue(this.wda.webDriverAgentUrl)) {
|
|
716
715
|
await this.wda.cleanupObsoleteProcesses();
|
|
@@ -744,21 +743,11 @@ class XCUITestDriver extends BaseDriver {
|
|
|
744
743
|
);
|
|
745
744
|
}
|
|
746
745
|
|
|
747
|
-
if (this.opts.usePreinstalledWDA) {
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
);
|
|
753
|
-
}
|
|
754
|
-
// below will be only for real devices if the caps has "this.opts.usePreinstalledWDA"
|
|
755
|
-
|
|
756
|
-
if (this.opts.prebuiltWDAPath && !(await fs.exists(this.opts.prebuiltWDAPath))) {
|
|
757
|
-
throw new Error(
|
|
758
|
-
`'${this.opts.prebuiltWDAPath}' provided as 'prebuiltWDAPath' capability did not exist. ` +
|
|
759
|
-
`Please make sure if the path exits at the given path.`,
|
|
760
|
-
);
|
|
761
|
-
}
|
|
746
|
+
if (this.opts.usePreinstalledWDA && this.opts.prebuiltWDAPath && !(await fs.exists(this.opts.prebuiltWDAPath))) {
|
|
747
|
+
throw new Error(
|
|
748
|
+
`The prebuilt WebDriverAgent app at '${this.opts.prebuiltWDAPath}' provided as 'prebuiltWDAPath' ` +
|
|
749
|
+
`capability value does not exist or is not accessible`
|
|
750
|
+
);
|
|
762
751
|
}
|
|
763
752
|
|
|
764
753
|
return await SHARED_RESOURCES_GUARD.acquire(synchronizationKey, async () => {
|
|
@@ -789,7 +778,7 @@ class XCUITestDriver extends BaseDriver {
|
|
|
789
778
|
|
|
790
779
|
// Used in the following WDA build
|
|
791
780
|
if (this.opts.resultBundlePath) {
|
|
792
|
-
this.assertFeatureEnabled(
|
|
781
|
+
this.assertFeatureEnabled(CUSTOMIZE_RESULT_BUNDLE_PATH);
|
|
793
782
|
}
|
|
794
783
|
|
|
795
784
|
const startupRetries =
|
|
@@ -818,47 +807,17 @@ class XCUITestDriver extends BaseDriver {
|
|
|
818
807
|
}
|
|
819
808
|
try {
|
|
820
809
|
if (this.opts.usePreinstalledWDA) {
|
|
821
|
-
|
|
822
|
-
await this.mobileKillApp(this.wda.bundleIdForXctest);
|
|
823
|
-
|
|
824
|
-
if (this.opts.prebuiltWDAPath) {
|
|
825
|
-
const candidateBundleId = await extractBundleId(this.opts.prebuiltWDAPath);
|
|
826
|
-
this.wda.updatedWDABundleId = candidateBundleId.replace('.xctrunner', '');
|
|
827
|
-
this.log.info(`Installing prebuilt WDA ${this.opts.prebuiltWDAPath}`);
|
|
828
|
-
// Note: The CFBundleVersion in the test bundle was always 1.
|
|
829
|
-
// It may not be able to compare with the installed versio.
|
|
830
|
-
await installToRealDevice(
|
|
831
|
-
// @ts-expect-error - do not assign arbitrary properties to `this.opts`
|
|
832
|
-
this.opts.device,
|
|
833
|
-
this.opts.prebuiltWDAPath,
|
|
834
|
-
candidateBundleId,
|
|
835
|
-
{
|
|
836
|
-
skipUninstall: true,
|
|
837
|
-
timeout: this.opts.appPushTimeout,
|
|
838
|
-
strategy: this.opts.appInstallStrategy,
|
|
839
|
-
},
|
|
840
|
-
);
|
|
841
|
-
}
|
|
810
|
+
await this.preparePreinstalledWda();
|
|
842
811
|
}
|
|
843
812
|
|
|
844
|
-
|
|
845
|
-
// directory before fully moving it there, and fail. Retrying once
|
|
846
|
-
// immediately helps
|
|
847
|
-
this.cachedWdaStatus = await retry(
|
|
848
|
-
2,
|
|
849
|
-
this.wda.launch.bind(this.wda),
|
|
850
|
-
sessionId,
|
|
851
|
-
realDevice,
|
|
852
|
-
);
|
|
813
|
+
this.cachedWdaStatus = await this.wda.launch(sessionId);
|
|
853
814
|
} catch (err) {
|
|
854
815
|
this.logEvent('wdaStartFailed');
|
|
816
|
+
this.log.debug(err.stack);
|
|
855
817
|
retryCount++;
|
|
856
|
-
let errorMsg = `Unable to launch WebDriverAgent
|
|
818
|
+
let errorMsg = `Unable to launch WebDriverAgent. Original error: ${err.message}`;
|
|
857
819
|
if (this.isRealDevice()) {
|
|
858
|
-
errorMsg +=
|
|
859
|
-
`. Make sure you follow the tutorial at ${WDA_REAL_DEV_TUTORIAL_URL}. ` +
|
|
860
|
-
`Try to remove the WebDriverAgentRunner application from the device if it is installed ` +
|
|
861
|
-
`and reboot the device.`;
|
|
820
|
+
errorMsg += `. Make sure you follow the tutorial at ${WDA_REAL_DEV_TUTORIAL_URL}`;
|
|
862
821
|
}
|
|
863
822
|
if (this.opts.usePreinstalledWDA) {
|
|
864
823
|
// In case the bundle id process start got failed because of
|
|
@@ -867,8 +826,8 @@ class XCUITestDriver extends BaseDriver {
|
|
|
867
826
|
// Mostly it failed to start the WDA process as no the bundle id
|
|
868
827
|
// e.g. '<bundle id of WDA> not found on device <udid>'
|
|
869
828
|
throw new Error(
|
|
870
|
-
`Unable to launch WebDriverAgent
|
|
871
|
-
`
|
|
829
|
+
`Unable to launch WebDriverAgent. Original error: ${err.message}. ` +
|
|
830
|
+
`Make sure the application ${this.wda.bundleIdForXctest} exists and it is launchable. ` +
|
|
872
831
|
`${WDA_REAL_DEV_TUTORIAL_URL} may help to complete the preparation.`,
|
|
873
832
|
);
|
|
874
833
|
} else {
|
|
@@ -893,7 +852,7 @@ class XCUITestDriver extends BaseDriver {
|
|
|
893
852
|
shortCircuitError = err;
|
|
894
853
|
return;
|
|
895
854
|
}
|
|
896
|
-
let errorMsg = `Unable to start WebDriverAgent session
|
|
855
|
+
let errorMsg = `Unable to start WebDriverAgent session. Original error: ${err.message}`;
|
|
897
856
|
if (this.isRealDevice() && _.includes(err.message, 'xcodebuild')) {
|
|
898
857
|
errorMsg += ` Make sure you follow the tutorial at ${WDA_REAL_DEV_TUTORIAL_URL}.`;
|
|
899
858
|
}
|
|
@@ -1802,6 +1761,43 @@ class XCUITestDriver extends BaseDriver {
|
|
|
1802
1761
|
);
|
|
1803
1762
|
}
|
|
1804
1763
|
|
|
1764
|
+
async preparePreinstalledWda() {
|
|
1765
|
+
if (this.isRealDevice()) {
|
|
1766
|
+
// Stop the existing process before starting a new one to start a fresh WDA process every session.
|
|
1767
|
+
await this.mobileKillApp(this.wda.bundleIdForXctest);
|
|
1768
|
+
}
|
|
1769
|
+
|
|
1770
|
+
if (!this.opts.prebuiltWDAPath) {
|
|
1771
|
+
return;
|
|
1772
|
+
}
|
|
1773
|
+
|
|
1774
|
+
const candidateBundleId = await extractBundleId(this.opts.prebuiltWDAPath);
|
|
1775
|
+
this.wda.updatedWDABundleId = candidateBundleId.replace('.xctrunner', '');
|
|
1776
|
+
this.log.info(
|
|
1777
|
+
`Installing prebuilt WDA at '${this.opts.prebuiltWDAPath}'. ` +
|
|
1778
|
+
`Bundle identifier: ${candidateBundleId}.`
|
|
1779
|
+
);
|
|
1780
|
+
// @ts-expect-error - do not assign arbitrary properties to `this.opts`
|
|
1781
|
+
const device = this.opts.device;
|
|
1782
|
+
|
|
1783
|
+
// Note: The CFBundleVersion in the test bundle was always 1.
|
|
1784
|
+
// It may not be able to compare with the installed versio.
|
|
1785
|
+
if (this.isRealDevice()) {
|
|
1786
|
+
await installToRealDevice(
|
|
1787
|
+
device,
|
|
1788
|
+
this.opts.prebuiltWDAPath,
|
|
1789
|
+
candidateBundleId,
|
|
1790
|
+
{
|
|
1791
|
+
skipUninstall: true,
|
|
1792
|
+
timeout: this.opts.appPushTimeout,
|
|
1793
|
+
strategy: this.opts.appInstallStrategy,
|
|
1794
|
+
},
|
|
1795
|
+
);
|
|
1796
|
+
} else {
|
|
1797
|
+
await installToSimulator(device, this.opts.prebuiltWDAPath, candidateBundleId);
|
|
1798
|
+
}
|
|
1799
|
+
}
|
|
1800
|
+
|
|
1805
1801
|
/*---------------+
|
|
1806
1802
|
| ACTIVEAPPINFO |
|
|
1807
1803
|
+---------------+*/
|
|
@@ -7,10 +7,19 @@ async function getConnectedDevices() {
|
|
|
7
7
|
return await utilities.getConnectedDevices();
|
|
8
8
|
}
|
|
9
9
|
|
|
10
|
+
/**
|
|
11
|
+
* @param {string} udid
|
|
12
|
+
* @returns {Promise<string>}
|
|
13
|
+
*/
|
|
10
14
|
async function getOSVersion(udid) {
|
|
11
15
|
return await utilities.getOSVersion(udid);
|
|
12
16
|
}
|
|
13
17
|
|
|
18
|
+
/**
|
|
19
|
+
* @param {IOSDeploy} device
|
|
20
|
+
* @param {import('./driver').XCUITestDriverOpts} opts
|
|
21
|
+
* @returns {Promise<void>}
|
|
22
|
+
*/
|
|
14
23
|
async function resetRealDevice(device, opts) {
|
|
15
24
|
const {bundleId, fullReset} = opts;
|
|
16
25
|
if (!bundleId) {
|
|
@@ -19,7 +28,7 @@ async function resetRealDevice(device, opts) {
|
|
|
19
28
|
|
|
20
29
|
if (bundleId === SAFARI_BUNDLE_ID) {
|
|
21
30
|
log.debug('Reset requested. About to terminate Safari');
|
|
22
|
-
await device.terminateApp(bundleId);
|
|
31
|
+
await device.terminateApp(bundleId, opts.platformVersion);
|
|
23
32
|
return;
|
|
24
33
|
}
|
|
25
34
|
|
|
@@ -41,6 +50,11 @@ async function resetRealDevice(device, opts) {
|
|
|
41
50
|
log.debug(`Reset: removed '${bundleId}'`);
|
|
42
51
|
}
|
|
43
52
|
|
|
53
|
+
/**
|
|
54
|
+
* @param {IOSDeploy} device
|
|
55
|
+
* @param {import('./driver').XCUITestDriverOpts} opts
|
|
56
|
+
* @returns {Promise<void>}
|
|
57
|
+
*/
|
|
44
58
|
async function runRealDeviceReset(device, opts) {
|
|
45
59
|
if (!opts.noReset || opts.fullReset) {
|
|
46
60
|
log.debug('Reset: running ios real device reset flow');
|
|
@@ -108,6 +122,10 @@ async function installToRealDevice(device, app, bundleId, opts) {
|
|
|
108
122
|
}
|
|
109
123
|
}
|
|
110
124
|
|
|
125
|
+
/**
|
|
126
|
+
* @param {string} udid
|
|
127
|
+
* @returns {IOSDeploy}
|
|
128
|
+
*/
|
|
111
129
|
function getRealDeviceObj(udid) {
|
|
112
130
|
log.debug(`Creating iDevice object with udid '${udid}'`);
|
|
113
131
|
return new IOSDeploy(udid);
|
|
@@ -3,7 +3,7 @@ import Simctl from 'node-simctl';
|
|
|
3
3
|
import {resetTestProcesses} from 'appium-webdriveragent';
|
|
4
4
|
import _ from 'lodash';
|
|
5
5
|
import log from './logger';
|
|
6
|
-
import {util} from 'appium/support';
|
|
6
|
+
import {util, timing} from 'appium/support';
|
|
7
7
|
import {UDID_AUTO, normalizePlatformName} from './utils';
|
|
8
8
|
|
|
9
9
|
const APPIUM_SIM_PREFIX = 'appiumTest';
|
|
@@ -233,15 +233,9 @@ async function installToSimulator(
|
|
|
233
233
|
}
|
|
234
234
|
|
|
235
235
|
log.debug(`Installing '${app}' on Simulator with UUID '${device.udid}'...`);
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
// it sometimes fails on Xcode 10 because of a race condition
|
|
240
|
-
log.info(`Got an error on '${app}' install: ${e.message}`);
|
|
241
|
-
log.info('Retrying application install');
|
|
242
|
-
await device.installApp(app);
|
|
243
|
-
}
|
|
244
|
-
log.debug('The app has been installed successfully.');
|
|
236
|
+
const timer = new timing.Timer().start();
|
|
237
|
+
await device.installApp(app);
|
|
238
|
+
log.info(`The app has been successfully installed in ${timer.getDuration().asMilliSeconds.toFixed(0)}ms`);
|
|
245
239
|
}
|
|
246
240
|
|
|
247
241
|
async function shutdownOtherSimulators(currentDevice) {
|