appium-webdriveragent 14.2.1 → 15.1.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 (59) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/WebDriverAgentLib/Categories/XCUIDevice+FBRotation.h +8 -0
  3. package/WebDriverAgentLib/Categories/XCUIDevice+FBRotation.m +21 -0
  4. package/WebDriverAgentLib/Commands/FBOrientationCommands.m +7 -0
  5. package/WebDriverAgentLib/Info.plist +2 -2
  6. package/WebDriverAgentTests/IntegrationTests/XCUIDeviceRotationTests.m +21 -0
  7. package/build/lib/types.d.ts +44 -4
  8. package/build/lib/types.d.ts.map +1 -1
  9. package/build/lib/utils/index.d.ts +11 -0
  10. package/build/lib/utils/index.d.ts.map +1 -0
  11. package/build/lib/utils/index.js +27 -0
  12. package/build/lib/utils/index.js.map +1 -0
  13. package/build/lib/utils/module.d.ts +6 -0
  14. package/build/lib/utils/module.d.ts.map +1 -0
  15. package/build/lib/utils/module.js +31 -0
  16. package/build/lib/utils/module.js.map +1 -0
  17. package/build/lib/utils/platform.d.ts +7 -0
  18. package/build/lib/utils/platform.d.ts.map +1 -0
  19. package/build/lib/utils/platform.js +13 -0
  20. package/build/lib/utils/platform.js.map +1 -0
  21. package/build/lib/utils/processes.d.ts +23 -0
  22. package/build/lib/utils/processes.d.ts.map +1 -0
  23. package/build/lib/utils/processes.js +132 -0
  24. package/build/lib/utils/processes.js.map +1 -0
  25. package/build/lib/utils/security.d.ts +5 -0
  26. package/build/lib/utils/security.d.ts.map +1 -0
  27. package/build/lib/utils/security.js +15 -0
  28. package/build/lib/utils/security.js.map +1 -0
  29. package/build/lib/utils/xctestrun.d.ts +51 -0
  30. package/build/lib/utils/xctestrun.d.ts.map +1 -0
  31. package/build/lib/utils/xctestrun.js +120 -0
  32. package/build/lib/utils/xctestrun.js.map +1 -0
  33. package/build/lib/wda-strategies.d.ts +69 -0
  34. package/build/lib/wda-strategies.d.ts.map +1 -0
  35. package/build/lib/wda-strategies.js +253 -0
  36. package/build/lib/wda-strategies.js.map +1 -0
  37. package/build/lib/webdriveragent.d.ts +3 -14
  38. package/build/lib/webdriveragent.d.ts.map +1 -1
  39. package/build/lib/webdriveragent.js +78 -127
  40. package/build/lib/webdriveragent.js.map +1 -1
  41. package/build/lib/xcodebuild.d.ts.map +1 -1
  42. package/build/lib/xcodebuild.js +29 -7
  43. package/build/lib/xcodebuild.js.map +1 -1
  44. package/lib/types.ts +58 -4
  45. package/lib/utils/index.ts +20 -0
  46. package/lib/utils/module.ts +29 -0
  47. package/lib/utils/platform.ts +10 -0
  48. package/lib/utils/processes.ts +135 -0
  49. package/lib/utils/security.ts +15 -0
  50. package/lib/utils/xctestrun.ts +160 -0
  51. package/lib/wda-strategies.ts +340 -0
  52. package/lib/webdriveragent.ts +89 -163
  53. package/lib/xcodebuild.ts +34 -17
  54. package/package.json +2 -3
  55. package/build/lib/utils.d.ts +0 -105
  56. package/build/lib/utils.d.ts.map +0 -1
  57. package/build/lib/utils.js +0 -413
  58. package/build/lib/utils.js.map +0 -1
  59. package/lib/utils.ts +0 -442
@@ -0,0 +1,120 @@
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.setXctestrunFile = setXctestrunFile;
7
+ exports.getAdditionalRunContent = getAdditionalRunContent;
8
+ exports.getXctestrunFilePath = getXctestrunFilePath;
9
+ exports.getXctestrunFileName = getXctestrunFileName;
10
+ const support_1 = require("@appium/support");
11
+ const node_path_1 = __importDefault(require("node:path"));
12
+ const node_os_1 = require("node:os");
13
+ const logger_1 = require("../logger");
14
+ const platform_1 = require("./platform");
15
+ /**
16
+ * Creates xctestrun file per device & platform version.
17
+ * We expect to have WebDriverAgentRunner_iphoneos${sdkVersion|platformVersion}-arm64.xctestrun for real device
18
+ * and WebDriverAgentRunner_iphonesimulator${sdkVersion|platformVersion}-${x86_64|arm64}.xctestrun for simulator located @bootstrapPath
19
+ * Newer Xcode (Xcode 10.0 at least) generates xctestrun file following sdkVersion.
20
+ * e.g. Xcode which has iOS SDK Version 12.2 on an intel Mac host machine generates WebDriverAgentRunner_iphonesimulator.2-x86_64.xctestrun
21
+ * even if the cap has platform version 11.4
22
+ *
23
+ * @param args
24
+ * @return returns xctestrunFilePath for given device
25
+ * @throws if WebDriverAgentRunner_iphoneos${sdkVersion|platformVersion}-arm64.xctestrun for real device
26
+ * or WebDriverAgentRunner_iphonesimulator${sdkVersion|platformVersion}-x86_64.xctestrun for simulator is not found @bootstrapPath,
27
+ * then it will throw a file not found exception
28
+ */
29
+ async function setXctestrunFile(args) {
30
+ const { deviceInfo, sdkVersion, bootstrapPath, wdaRemotePort, wdaBindingIP, maxHttpRequestBodySize, } = args;
31
+ const xctestrunFilePath = await getXctestrunFilePath(deviceInfo, sdkVersion, bootstrapPath);
32
+ const xctestRunContent = await support_1.plist.parsePlistFile(xctestrunFilePath);
33
+ const updateWDAPort = getAdditionalRunContent(deviceInfo.platformName, wdaRemotePort, wdaBindingIP, maxHttpRequestBodySize);
34
+ const newXctestRunContent = mergeObjects(xctestRunContent, updateWDAPort);
35
+ await support_1.plist.updatePlistFile(xctestrunFilePath, newXctestRunContent, true);
36
+ return xctestrunFilePath;
37
+ }
38
+ /**
39
+ * Return the WDA object which appends existing xctest runner content
40
+ * @param platformName - The name of the platform
41
+ * @param wdaRemotePort - The remote port number
42
+ * @param wdaBindingIP - The IP address to bind to. If not given, it binds to all interfaces.
43
+ * @param maxHttpRequestBodySize - The maximum HTTP request body size in bytes.
44
+ * @return returns a runner object which has USE_PORT and optionally USE_IP
45
+ */
46
+ function getAdditionalRunContent(platformName, wdaRemotePort, wdaBindingIP, maxHttpRequestBodySize) {
47
+ const runner = `WebDriverAgentRunner${(0, platform_1.isTvOS)(platformName) ? '_tvOS' : ''}`;
48
+ return {
49
+ [runner]: {
50
+ EnvironmentVariables: {
51
+ // USE_PORT must be 'string'
52
+ USE_PORT: `${wdaRemotePort}`,
53
+ ...(wdaBindingIP ? { USE_IP: wdaBindingIP } : {}),
54
+ ...(maxHttpRequestBodySize
55
+ ? { MAX_HTTP_REQUEST_BODY_SIZE: `${maxHttpRequestBodySize}` }
56
+ : {}),
57
+ },
58
+ },
59
+ };
60
+ }
61
+ /**
62
+ * Return the path of xctestrun if it exists
63
+ * @param deviceInfo
64
+ * @param sdkVersion - The Xcode SDK version of OS.
65
+ * @param bootstrapPath - The folder path containing xctestrun file.
66
+ */
67
+ async function getXctestrunFilePath(deviceInfo, sdkVersion, bootstrapPath) {
68
+ // First try the SDK path, for Xcode 10 (at least)
69
+ const sdkBased = [
70
+ node_path_1.default.resolve(bootstrapPath, `${deviceInfo.udid}_${sdkVersion}.xctestrun`),
71
+ sdkVersion,
72
+ ];
73
+ // Next try Platform path, for earlier Xcode versions
74
+ const platformBased = [
75
+ node_path_1.default.resolve(bootstrapPath, `${deviceInfo.udid}_${deviceInfo.platformVersion}.xctestrun`),
76
+ deviceInfo.platformVersion,
77
+ ];
78
+ for (const [filePath, version] of [sdkBased, platformBased]) {
79
+ if (await support_1.fs.exists(filePath)) {
80
+ logger_1.log.info(`Using '${filePath}' as xctestrun file`);
81
+ return filePath;
82
+ }
83
+ const originalXctestrunFile = node_path_1.default.resolve(bootstrapPath, getXctestrunFileName(deviceInfo, version));
84
+ if (await support_1.fs.exists(originalXctestrunFile)) {
85
+ // If this is first time run for given device, then first generate xctestrun file for device.
86
+ // We need to have a xctestrun file **per device** because we cannot have same wda port for all devices.
87
+ await support_1.fs.copyFile(originalXctestrunFile, filePath);
88
+ logger_1.log.info(`Using '${filePath}' as xctestrun file copied by '${originalXctestrunFile}'`);
89
+ return filePath;
90
+ }
91
+ }
92
+ throw new Error(`If you are using 'useXctestrunFile' capability then you ` +
93
+ `need to have a xctestrun file (expected: ` +
94
+ `'${node_path_1.default.resolve(bootstrapPath, getXctestrunFileName(deviceInfo, sdkVersion))}')`);
95
+ }
96
+ /**
97
+ * Return the name of xctestrun file
98
+ * @param deviceInfo
99
+ * @param version - The Xcode SDK version of OS.
100
+ * @return returns xctestrunFilePath for given device
101
+ */
102
+ function getXctestrunFileName(deviceInfo, version) {
103
+ const archSuffix = deviceInfo.isRealDevice
104
+ ? `os${version}-arm64`
105
+ : `simulator${version}-${(0, node_os_1.arch)() === 'arm64' ? 'arm64' : 'x86_64'}`;
106
+ return `WebDriverAgentRunner_${(0, platform_1.isTvOS)(deviceInfo.platformName) ? 'tvOS_appletv' : 'iphone'}${archSuffix}.xctestrun`;
107
+ }
108
+ function mergeObjects(target, source) {
109
+ const output = { ...target };
110
+ for (const [key, sourceValue] of Object.entries(source)) {
111
+ const targetValue = output[key];
112
+ if (support_1.util.isPlainObject(targetValue) && support_1.util.isPlainObject(sourceValue)) {
113
+ output[key] = mergeObjects(targetValue, sourceValue);
114
+ continue;
115
+ }
116
+ output[key] = sourceValue;
117
+ }
118
+ return output;
119
+ }
120
+ //# sourceMappingURL=xctestrun.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xctestrun.js","sourceRoot":"","sources":["../../../lib/utils/xctestrun.ts"],"names":[],"mappings":";;;;;AAiCA,4CAqBC;AAUD,0DAmBC;AAQD,oDAuCC;AAQD,oDAKC;AA/ID,6CAAgD;AAChD,0DAA6B;AAC7B,qCAA6B;AAC7B,sCAA8B;AAE9B,yCAAkC;AAclC;;;;;;;;;;;;;GAaG;AACI,KAAK,UAAU,gBAAgB,CAAC,IAAuB;IAC5D,MAAM,EACJ,UAAU,EACV,UAAU,EACV,aAAa,EACb,aAAa,EACb,YAAY,EACZ,sBAAsB,GACvB,GAAG,IAAI,CAAC;IACT,MAAM,iBAAiB,GAAG,MAAM,oBAAoB,CAAC,UAAU,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;IAC5F,MAAM,gBAAgB,GAAG,MAAM,eAAK,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;IACvE,MAAM,aAAa,GAAG,uBAAuB,CAC3C,UAAU,CAAC,YAAY,EACvB,aAAa,EACb,YAAY,EACZ,sBAAsB,CACvB,CAAC;IACF,MAAM,mBAAmB,GAAG,YAAY,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;IAC1E,MAAM,eAAK,CAAC,eAAe,CAAC,iBAAiB,EAAE,mBAAmB,EAAE,IAAI,CAAC,CAAC;IAE1E,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,uBAAuB,CACrC,YAAoB,EACpB,aAA8B,EAC9B,YAAqB,EACrB,sBAAwC;IAExC,MAAM,MAAM,GAAG,uBAAuB,IAAA,iBAAM,EAAC,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAC5E,OAAO;QACL,CAAC,MAAM,CAAC,EAAE;YACR,oBAAoB,EAAE;gBACpB,4BAA4B;gBAC5B,QAAQ,EAAE,GAAG,aAAa,EAAE;gBAC5B,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAC,MAAM,EAAE,YAAY,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/C,GAAG,CAAC,sBAAsB;oBACxB,CAAC,CAAC,EAAC,0BAA0B,EAAE,GAAG,sBAAsB,EAAE,EAAC;oBAC3D,CAAC,CAAC,EAAE,CAAC;aACR;SACF;KACF,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACI,KAAK,UAAU,oBAAoB,CACxC,UAAsB,EACtB,UAAkB,EAClB,aAAqB;IAErB,kDAAkD;IAClD,MAAM,QAAQ,GAAqB;QACjC,mBAAI,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,UAAU,CAAC,IAAI,IAAI,UAAU,YAAY,CAAC;QACzE,UAAU;KACX,CAAC;IACF,qDAAqD;IACrD,MAAM,aAAa,GAAqB;QACtC,mBAAI,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,eAAe,YAAY,CAAC;QACzF,UAAU,CAAC,eAAe;KAC3B,CAAC;IAEF,KAAK,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,EAAE,CAAC;QAC5D,IAAI,MAAM,YAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9B,YAAG,CAAC,IAAI,CAAC,UAAU,QAAQ,qBAAqB,CAAC,CAAC;YAClD,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,MAAM,qBAAqB,GAAG,mBAAI,CAAC,OAAO,CACxC,aAAa,EACb,oBAAoB,CAAC,UAAU,EAAE,OAAO,CAAC,CAC1C,CAAC;QACF,IAAI,MAAM,YAAE,CAAC,MAAM,CAAC,qBAAqB,CAAC,EAAE,CAAC;YAC3C,6FAA6F;YAC7F,wGAAwG;YACxG,MAAM,YAAE,CAAC,QAAQ,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAC;YACnD,YAAG,CAAC,IAAI,CAAC,UAAU,QAAQ,kCAAkC,qBAAqB,GAAG,CAAC,CAAC;YACvF,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CACb,0DAA0D;QACxD,2CAA2C;QAC3C,IAAI,mBAAI,CAAC,OAAO,CAAC,aAAa,EAAE,oBAAoB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,IAAI,CACpF,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAgB,oBAAoB,CAAC,UAAsB,EAAE,OAAe;IAC1E,MAAM,UAAU,GAAG,UAAU,CAAC,YAAY;QACxC,CAAC,CAAC,KAAK,OAAO,QAAQ;QACtB,CAAC,CAAC,YAAY,OAAO,IAAI,IAAA,cAAI,GAAE,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACrE,OAAO,wBAAwB,IAAA,iBAAM,EAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,GAAG,UAAU,YAAY,CAAC;AACtH,CAAC;AAED,SAAS,YAAY,CACnB,MAAS,EACT,MAAS;IAET,MAAM,MAAM,GAAwB,EAAC,GAAG,MAAM,EAAC,CAAC;IAChD,KAAK,MAAM,CAAC,GAAG,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACxD,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,cAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,cAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC;YACvE,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YACrD,SAAS;QACX,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC;IAC5B,CAAC;IACD,OAAO,MAAe,CAAC;AACzB,CAAC"}
@@ -0,0 +1,69 @@
1
+ import type { AppiumLogger, StringRecord } from '@appium/types';
2
+ import type { NoSessionProxy } from './no-session-proxy';
3
+ import type { XcodeBuild } from './xcodebuild';
4
+ import type { AppleDevice, RealDevicePreinstalledHostOps, RealDeviceXcodebuildHostOps, SimulatorHostOps, WdaHostOps, WdaStartupStrategyName } from './types';
5
+ export interface WdaStartupStrategy {
6
+ readonly name: WdaStartupStrategyName;
7
+ launch(sessionId: string): Promise<StringRecord | null>;
8
+ quit(): Promise<void>;
9
+ }
10
+ export interface WdaStartupStrategyContext {
11
+ readonly argsWebDriverAgentUrl?: string;
12
+ readonly webDriverAgentUrl?: string;
13
+ readonly usePreinstalledWDA?: boolean;
14
+ readonly useXctestrunFile?: boolean;
15
+ readonly usePrebuiltWDA?: boolean;
16
+ readonly prebuildWDA?: boolean;
17
+ readonly isRealDevice: boolean;
18
+ readonly device: AppleDevice;
19
+ readonly agentPath: string;
20
+ readonly bootstrapPath: string;
21
+ readonly bundleIdForXctest: string;
22
+ readonly wdaLocalPort?: number;
23
+ readonly wdaRemotePort: number;
24
+ readonly wdaBindingIP?: string;
25
+ readonly wdaLaunchTimeout: number;
26
+ readonly mjpegServerPort?: number;
27
+ readonly maxHttpRequestBodySize?: number;
28
+ readonly platformName?: string;
29
+ readonly platformVersion?: string;
30
+ readonly log: AppiumLogger;
31
+ readonly hostOps: Required<WdaHostOps>;
32
+ setWebDriverAgentUrl(value?: string): void;
33
+ setUrl(value: string): void;
34
+ setupProxies(sessionId: string): void;
35
+ getStatus(timeoutMs?: number): Promise<StringRecord | null>;
36
+ cleanupProjectIfFresh(): Promise<void>;
37
+ xcodebuild(): XcodeBuild;
38
+ noSessionProxy(): NoSessionProxy;
39
+ setStarted(started: boolean): void;
40
+ }
41
+ /**
42
+ * Selects the WDA startup strategy for the provided launch arguments.
43
+ */
44
+ export declare function selectWdaStartupStrategyName(args: {
45
+ realDevice?: boolean;
46
+ webDriverAgentUrl?: string;
47
+ usePreinstalledWDA?: boolean;
48
+ }): WdaStartupStrategyName;
49
+ /**
50
+ * Creates a WDA startup strategy for the current facade state.
51
+ */
52
+ export declare function createWdaStartupStrategy(ctx: WdaStartupStrategyContext): WdaStartupStrategy;
53
+ /**
54
+ * Creates default host operations for flows the package can own directly.
55
+ */
56
+ export declare function createDefaultWdaHostOps(): Required<WdaHostOps>;
57
+ /**
58
+ * Creates default simulator host operations.
59
+ */
60
+ export declare function createDefaultSimulatorWdaHostOps(): SimulatorHostOps;
61
+ /**
62
+ * Creates default real-device preinstalled host operations.
63
+ */
64
+ export declare function createDefaultRealDevicePreinstalledHostOps(): RealDevicePreinstalledHostOps;
65
+ /**
66
+ * Creates default real-device xcodebuild host operations.
67
+ */
68
+ export declare function createDefaultRealDeviceXcodebuildHostOps(): RealDeviceXcodebuildHostOps;
69
+ //# sourceMappingURL=wda-strategies.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wda-strategies.d.ts","sourceRoot":"","sources":["../../lib/wda-strategies.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,253 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.selectWdaStartupStrategyName = selectWdaStartupStrategyName;
4
+ exports.createWdaStartupStrategy = createWdaStartupStrategy;
5
+ exports.createDefaultWdaHostOps = createDefaultWdaHostOps;
6
+ exports.createDefaultSimulatorWdaHostOps = createDefaultSimulatorWdaHostOps;
7
+ exports.createDefaultRealDevicePreinstalledHostOps = createDefaultRealDevicePreinstalledHostOps;
8
+ exports.createDefaultRealDeviceXcodebuildHostOps = createDefaultRealDeviceXcodebuildHostOps;
9
+ const teen_process_1 = require("teen_process");
10
+ const support_1 = require("@appium/support");
11
+ const utils_1 = require("./utils");
12
+ const WDA_AGENT_PORT = 8100;
13
+ const HOST_OPS_REQUIRED_MESSAGE = 'Host operations must be provided to launch or terminate preinstalled WebDriverAgent';
14
+ class ExistingWdaUrlStrategy {
15
+ ctx;
16
+ name = 'existing-url';
17
+ constructor(ctx) {
18
+ this.ctx = ctx;
19
+ }
20
+ async launch(sessionId) {
21
+ this.ctx.log.info(`Using provided WebdriverAgent at '${this.ctx.webDriverAgentUrl}'`);
22
+ this.ctx.setUrl(this.ctx.webDriverAgentUrl);
23
+ this.ctx.setupProxies(sessionId);
24
+ return await this.ctx.getStatus();
25
+ }
26
+ async quit() {
27
+ this.ctx.log.debug('Stopping neither xcodebuild nor XCTest session since WDA lifecycle is not managed by this driver');
28
+ }
29
+ }
30
+ class SimulatorWdaStrategy {
31
+ ctx;
32
+ name = 'simulator';
33
+ constructor(ctx) {
34
+ this.ctx = ctx;
35
+ }
36
+ async launch(sessionId) {
37
+ if (this.ctx.usePreinstalledWDA) {
38
+ return await launchPreinstalled(this.ctx, this.ctx.hostOps.simulator, sessionId);
39
+ }
40
+ return await launchWithXcodebuild(this.ctx, sessionId);
41
+ }
42
+ async quit() {
43
+ if (this.ctx.usePreinstalledWDA) {
44
+ await terminatePreinstalled(this.ctx, this.ctx.hostOps.simulator);
45
+ return;
46
+ }
47
+ await quitXcodebuild(this.ctx);
48
+ }
49
+ }
50
+ class RealDeviceXcodebuildStrategy {
51
+ ctx;
52
+ name = 'real-device-xcodebuild';
53
+ constructor(ctx) {
54
+ this.ctx = ctx;
55
+ }
56
+ async launch(sessionId) {
57
+ return await launchWithXcodebuild(this.ctx, sessionId);
58
+ }
59
+ async quit() {
60
+ await quitXcodebuild(this.ctx);
61
+ }
62
+ }
63
+ class RealDevicePreinstalledStrategy {
64
+ ctx;
65
+ name = 'real-device-preinstalled';
66
+ constructor(ctx) {
67
+ this.ctx = ctx;
68
+ }
69
+ async launch(sessionId) {
70
+ return await launchPreinstalled(this.ctx, this.ctx.hostOps.realDevicePreinstalled, sessionId);
71
+ }
72
+ async quit() {
73
+ await terminatePreinstalled(this.ctx, this.ctx.hostOps.realDevicePreinstalled);
74
+ }
75
+ }
76
+ /**
77
+ * Selects the WDA startup strategy for the provided launch arguments.
78
+ */
79
+ function selectWdaStartupStrategyName(args) {
80
+ if (args.webDriverAgentUrl) {
81
+ return 'existing-url';
82
+ }
83
+ if (!args.realDevice) {
84
+ return 'simulator';
85
+ }
86
+ if (args.usePreinstalledWDA) {
87
+ return 'real-device-preinstalled';
88
+ }
89
+ return 'real-device-xcodebuild';
90
+ }
91
+ /**
92
+ * Creates a WDA startup strategy for the current facade state.
93
+ */
94
+ function createWdaStartupStrategy(ctx) {
95
+ const startupStrategy = selectWdaStartupStrategyName({
96
+ realDevice: ctx.isRealDevice,
97
+ webDriverAgentUrl: ctx.webDriverAgentUrl,
98
+ usePreinstalledWDA: ctx.usePreinstalledWDA,
99
+ });
100
+ switch (startupStrategy) {
101
+ case 'existing-url':
102
+ return new ExistingWdaUrlStrategy(ctx);
103
+ case 'simulator':
104
+ return new SimulatorWdaStrategy(ctx);
105
+ case 'real-device-preinstalled':
106
+ return new RealDevicePreinstalledStrategy(ctx);
107
+ case 'real-device-xcodebuild':
108
+ return new RealDeviceXcodebuildStrategy(ctx);
109
+ default:
110
+ throw new Error(`Unknown WDA startup strategy: ${startupStrategy}`);
111
+ }
112
+ }
113
+ /**
114
+ * Creates default host operations for flows the package can own directly.
115
+ */
116
+ function createDefaultWdaHostOps() {
117
+ return {
118
+ simulator: createDefaultSimulatorWdaHostOps(),
119
+ realDevicePreinstalled: createDefaultRealDevicePreinstalledHostOps(),
120
+ realDeviceXcodebuild: createDefaultRealDeviceXcodebuildHostOps(),
121
+ };
122
+ }
123
+ /**
124
+ * Creates default simulator host operations.
125
+ */
126
+ function createDefaultSimulatorWdaHostOps() {
127
+ return {
128
+ async launchPreinstalled() {
129
+ throw new Error(HOST_OPS_REQUIRED_MESSAGE);
130
+ },
131
+ async terminate() {
132
+ throw new Error(HOST_OPS_REQUIRED_MESSAGE);
133
+ },
134
+ async resetTestProcesses({ udid, isSimulator }) {
135
+ await (0, utils_1.resetTestProcesses)(udid, isSimulator);
136
+ },
137
+ };
138
+ }
139
+ /**
140
+ * Creates default real-device preinstalled host operations.
141
+ */
142
+ function createDefaultRealDevicePreinstalledHostOps() {
143
+ return {
144
+ async launchPreinstalled() {
145
+ throw new Error(HOST_OPS_REQUIRED_MESSAGE);
146
+ },
147
+ async terminate() {
148
+ throw new Error(HOST_OPS_REQUIRED_MESSAGE);
149
+ },
150
+ };
151
+ }
152
+ /**
153
+ * Creates default real-device xcodebuild host operations.
154
+ */
155
+ function createDefaultRealDeviceXcodebuildHostOps() {
156
+ return {
157
+ async resetTestProcesses({ udid, isSimulator }) {
158
+ await (0, utils_1.resetTestProcesses)(udid, isSimulator);
159
+ },
160
+ async cleanupObsoleteProcesses({ udid, port, commandLineIncludes }) {
161
+ const obsoletePids = await (0, utils_1.getPIDsListeningOnPort)(port, (cmdLine) => cmdLine.includes(commandLineIncludes) &&
162
+ !cmdLine.toLowerCase().includes(udid.toLowerCase()));
163
+ if (obsoletePids.length > 0) {
164
+ await (0, teen_process_1.exec)('kill', obsoletePids);
165
+ }
166
+ },
167
+ };
168
+ }
169
+ async function launchWithXcodebuild(ctx, sessionId) {
170
+ ctx.log.info('Launching WebDriverAgent on the device');
171
+ ctx.setupProxies(sessionId);
172
+ if (!ctx.useXctestrunFile && !(await support_1.fs.exists(ctx.agentPath))) {
173
+ throw new Error(`Trying to use WebDriverAgent project at '${ctx.agentPath}' but the ` + 'file does not exist');
174
+ }
175
+ if (ctx.useXctestrunFile || ctx.usePrebuiltWDA) {
176
+ ctx.log.info('Skipped WDA project cleanup according to the provided capabilities');
177
+ }
178
+ else {
179
+ await ctx.cleanupProjectIfFresh();
180
+ }
181
+ const resetTestProcesses = ctx.isRealDevice
182
+ ? ctx.hostOps.realDeviceXcodebuild.resetTestProcesses
183
+ : ctx.hostOps.simulator.resetTestProcesses;
184
+ await resetTestProcesses?.({
185
+ udid: ctx.device.udid,
186
+ isSimulator: !ctx.isRealDevice,
187
+ });
188
+ const xcodebuild = ctx.xcodebuild();
189
+ await xcodebuild.init(ctx.noSessionProxy());
190
+ if (ctx.prebuildWDA) {
191
+ await xcodebuild.prebuild();
192
+ }
193
+ return (await xcodebuild.start());
194
+ }
195
+ async function launchPreinstalled(ctx, hostOps, sessionId) {
196
+ const xctestEnv = createPreinstalledWdaEnvironment(ctx);
197
+ ctx.log.info('Launching WebDriverAgent on the device without xcodebuild');
198
+ await hostOps.launchPreinstalled({
199
+ udid: ctx.device.udid,
200
+ bundleId: ctx.bundleIdForXctest,
201
+ env: xctestEnv,
202
+ wdaLocalPort: ctx.wdaLocalPort,
203
+ wdaRemotePort: ctx.wdaRemotePort,
204
+ platformName: ctx.platformName,
205
+ platformVersion: ctx.platformVersion,
206
+ timeoutMs: ctx.wdaLaunchTimeout,
207
+ });
208
+ ctx.setupProxies(sessionId);
209
+ let status;
210
+ try {
211
+ status = await ctx.getStatus(ctx.wdaLaunchTimeout);
212
+ }
213
+ catch {
214
+ throw new Error(`Failed to start the preinstalled WebDriverAgent in ${ctx.wdaLaunchTimeout} ms. ` +
215
+ `The WebDriverAgent might not be properly built or the device might be locked. ` +
216
+ `The 'appium:wdaLaunchTimeout' capability modifies the timeout.`);
217
+ }
218
+ ctx.setStarted(true);
219
+ return status;
220
+ }
221
+ async function terminatePreinstalled(ctx, hostOps) {
222
+ ctx.log.info('Stopping the XCTest session');
223
+ try {
224
+ await hostOps.terminate({
225
+ udid: ctx.device.udid,
226
+ bundleId: ctx.bundleIdForXctest,
227
+ });
228
+ }
229
+ catch (e) {
230
+ ctx.log.warn(e.message);
231
+ }
232
+ }
233
+ async function quitXcodebuild(ctx) {
234
+ ctx.log.info('Shutting down sub-processes');
235
+ await ctx.xcodebuild().quit();
236
+ }
237
+ function createPreinstalledWdaEnvironment(ctx) {
238
+ const xctestEnv = {
239
+ USE_PORT: ctx.wdaLocalPort || WDA_AGENT_PORT,
240
+ WDA_PRODUCT_BUNDLE_IDENTIFIER: ctx.bundleIdForXctest,
241
+ };
242
+ if (ctx.mjpegServerPort) {
243
+ xctestEnv.MJPEG_SERVER_PORT = ctx.mjpegServerPort;
244
+ }
245
+ if (ctx.wdaBindingIP) {
246
+ xctestEnv.USE_IP = ctx.wdaBindingIP;
247
+ }
248
+ if (ctx.maxHttpRequestBodySize) {
249
+ xctestEnv.MAX_HTTP_REQUEST_BODY_SIZE = ctx.maxHttpRequestBodySize;
250
+ }
251
+ return xctestEnv;
252
+ }
253
+ //# sourceMappingURL=wda-strategies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wda-strategies.js","sourceRoot":"","sources":["../../lib/wda-strategies.ts"],"names":[],"mappings":";;AAiIA,oEAeC;AAKD,4DAkBC;AAKD,0DAMC;AAKD,4EAYC;AAKD,gGASC;AAKD,4FAkBC;AAxOD,+CAAkC;AAClC,6CAAmC;AAEnC,mCAAmE;AAanE,MAAM,cAAc,GAAG,IAAI,CAAC;AAC5B,MAAM,yBAAyB,GAC7B,qFAAqF,CAAC;AAwCxF,MAAM,sBAAsB;IAGG;IAFpB,IAAI,GAAG,cAAuB,CAAC;IAExC,YAA6B,GAA8B;QAA9B,QAAG,GAAH,GAAG,CAA2B;IAAG,CAAC;IAE/D,KAAK,CAAC,MAAM,CAAC,SAAiB;QAC5B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,qCAAqC,IAAI,CAAC,GAAG,CAAC,iBAAiB,GAAG,CAAC,CAAC;QACtF,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,iBAA2B,CAAC,CAAC;QACtD,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QACjC,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAChB,kGAAkG,CACnG,CAAC;IACJ,CAAC;CACF;AAED,MAAM,oBAAoB;IAGK;IAFpB,IAAI,GAAG,WAAoB,CAAC;IAErC,YAA6B,GAA8B;QAA9B,QAAG,GAAH,GAAG,CAA2B;IAAG,CAAC;IAE/D,KAAK,CAAC,MAAM,CAAC,SAAiB;QAC5B,IAAI,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC;YAChC,OAAO,MAAM,kBAAkB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACnF,CAAC;QACD,OAAO,MAAM,oBAAoB,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC;YAChC,MAAM,qBAAqB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAClE,OAAO;QACT,CAAC;QACD,MAAM,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;CACF;AAED,MAAM,4BAA4B;IAGH;IAFpB,IAAI,GAAG,wBAAiC,CAAC;IAElD,YAA6B,GAA8B;QAA9B,QAAG,GAAH,GAAG,CAA2B;IAAG,CAAC;IAE/D,KAAK,CAAC,MAAM,CAAC,SAAiB;QAC5B,OAAO,MAAM,oBAAoB,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;CACF;AAED,MAAM,8BAA8B;IAGL;IAFpB,IAAI,GAAG,0BAAmC,CAAC;IAEpD,YAA6B,GAA8B;QAA9B,QAAG,GAAH,GAAG,CAA2B;IAAG,CAAC;IAE/D,KAAK,CAAC,MAAM,CAAC,SAAiB;QAC5B,OAAO,MAAM,kBAAkB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,sBAAsB,EAAE,SAAS,CAAC,CAAC;IAChG,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,qBAAqB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACjF,CAAC;CACF;AAED;;GAEG;AACH,SAAgB,4BAA4B,CAAC,IAI5C;IACC,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC3B,OAAO,cAAc,CAAC;IACxB,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QACrB,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC5B,OAAO,0BAA0B,CAAC;IACpC,CAAC;IACD,OAAO,wBAAwB,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,SAAgB,wBAAwB,CAAC,GAA8B;IACrE,MAAM,eAAe,GAAG,4BAA4B,CAAC;QACnD,UAAU,EAAE,GAAG,CAAC,YAAY;QAC5B,iBAAiB,EAAE,GAAG,CAAC,iBAAiB;QACxC,kBAAkB,EAAE,GAAG,CAAC,kBAAkB;KAC3C,CAAC,CAAC;IACH,QAAQ,eAAe,EAAE,CAAC;QACxB,KAAK,cAAc;YACjB,OAAO,IAAI,sBAAsB,CAAC,GAAG,CAAC,CAAC;QACzC,KAAK,WAAW;YACd,OAAO,IAAI,oBAAoB,CAAC,GAAG,CAAC,CAAC;QACvC,KAAK,0BAA0B;YAC7B,OAAO,IAAI,8BAA8B,CAAC,GAAG,CAAC,CAAC;QACjD,KAAK,wBAAwB;YAC3B,OAAO,IAAI,4BAA4B,CAAC,GAAG,CAAC,CAAC;QAC/C;YACE,MAAM,IAAI,KAAK,CAAC,iCAAiC,eAAe,EAAE,CAAC,CAAC;IACxE,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,uBAAuB;IACrC,OAAO;QACL,SAAS,EAAE,gCAAgC,EAAE;QAC7C,sBAAsB,EAAE,0CAA0C,EAAE;QACpE,oBAAoB,EAAE,wCAAwC,EAAE;KACjE,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,gCAAgC;IAC9C,OAAO;QACL,KAAK,CAAC,kBAAkB;YACtB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;QACD,KAAK,CAAC,SAAS;YACb,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;QACD,KAAK,CAAC,kBAAkB,CAAC,EAAC,IAAI,EAAE,WAAW,EAAC;YAC1C,MAAM,IAAA,0BAAkB,EAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAC9C,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,0CAA0C;IACxD,OAAO;QACL,KAAK,CAAC,kBAAkB;YACtB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;QACD,KAAK,CAAC,SAAS;YACb,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,wCAAwC;IACtD,OAAO;QACL,KAAK,CAAC,kBAAkB,CAAC,EAAC,IAAI,EAAE,WAAW,EAAC;YAC1C,MAAM,IAAA,0BAAkB,EAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAC9C,CAAC;QACD,KAAK,CAAC,wBAAwB,CAAC,EAAC,IAAI,EAAE,IAAI,EAAE,mBAAmB,EAAC;YAC9D,MAAM,YAAY,GAAG,MAAM,IAAA,8BAAsB,EAC/C,IAAI,EACJ,CAAC,OAAO,EAAE,EAAE,CACV,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC;gBACrC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CACtD,CAAC;YAEF,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5B,MAAM,IAAA,mBAAI,EAAC,MAAM,EAAE,YAAY,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,GAA8B,EAC9B,SAAiB;IAEjB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;IAEvD,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAE5B,IAAI,CAAC,GAAG,CAAC,gBAAgB,IAAI,CAAC,CAAC,MAAM,YAAE,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;QAC/D,MAAM,IAAI,KAAK,CACb,4CAA4C,GAAG,CAAC,SAAS,YAAY,GAAG,qBAAqB,CAC9F,CAAC;IACJ,CAAC;IAED,IAAI,GAAG,CAAC,gBAAgB,IAAI,GAAG,CAAC,cAAc,EAAE,CAAC;QAC/C,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC;IACrF,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,CAAC,qBAAqB,EAAE,CAAC;IACpC,CAAC;IAED,MAAM,kBAAkB,GAAG,GAAG,CAAC,YAAY;QACzC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAoB,CAAC,kBAAkB;QACrD,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,kBAAkB,CAAC;IAC7C,MAAM,kBAAkB,EAAE,CAAC;QACzB,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI;QACrB,WAAW,EAAE,CAAC,GAAG,CAAC,YAAY;KAC/B,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;IACpC,MAAM,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC;IAE5C,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;QACpB,MAAM,UAAU,CAAC,QAAQ,EAAE,CAAC;IAC9B,CAAC;IACD,OAAO,CAAC,MAAM,UAAU,CAAC,KAAK,EAAE,CAAwB,CAAC;AAC3D,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC/B,GAA8B,EAC9B,OAAyD,EACzD,SAAiB;IAEjB,MAAM,SAAS,GAAG,gCAAgC,CAAC,GAAG,CAAC,CAAC;IACxD,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;IAC1E,MAAM,OAAO,CAAC,kBAAkB,CAAC;QAC/B,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI;QACrB,QAAQ,EAAE,GAAG,CAAC,iBAAiB;QAC/B,GAAG,EAAE,SAAS;QACd,YAAY,EAAE,GAAG,CAAC,YAAY;QAC9B,aAAa,EAAE,GAAG,CAAC,aAAa;QAChC,YAAY,EAAE,GAAG,CAAC,YAAY;QAC9B,eAAe,EAAE,GAAG,CAAC,eAAe;QACpC,SAAS,EAAE,GAAG,CAAC,gBAAgB;KAChC,CAAC,CAAC;IAEH,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAC5B,IAAI,MAA2B,CAAC;IAChC,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,sDAAsD,GAAG,CAAC,gBAAgB,OAAO;YAC/E,gFAAgF;YAChF,gEAAgE,CACnE,CAAC;IACJ,CAAC;IACD,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACrB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,GAA8B,EAC9B,OAAyD;IAEzD,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IAC5C,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,SAAS,CAAC;YACtB,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI;YACrB,QAAQ,EAAE,GAAG,CAAC,iBAAiB;SAChC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,GAA8B;IAC1D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IAC5C,MAAM,GAAG,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC;AAChC,CAAC;AAED,SAAS,gCAAgC,CAAC,GAA8B;IACtE,MAAM,SAAS,GAAyB;QACtC,QAAQ,EAAE,GAAG,CAAC,YAAY,IAAI,cAAc;QAC5C,6BAA6B,EAAE,GAAG,CAAC,iBAAiB;KACrD,CAAC;IACF,IAAI,GAAG,CAAC,eAAe,EAAE,CAAC;QACxB,SAAS,CAAC,iBAAiB,GAAG,GAAG,CAAC,eAAe,CAAC;IACpD,CAAC;IACD,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;QACrB,SAAS,CAAC,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC;IACtC,CAAC;IACD,IAAI,GAAG,CAAC,sBAAsB,EAAE,CAAC;QAC/B,SAAS,CAAC,0BAA0B,GAAG,GAAG,CAAC,sBAAsB,CAAC;IACpE,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -33,6 +33,8 @@ export declare class WebDriverAgent {
33
33
  private readonly wdaLaunchTimeout;
34
34
  private readonly usePreinstalledWDA?;
35
35
  private readonly updatedWDABundleIdSuffix;
36
+ private readonly hostOps;
37
+ private activeStartupStrategy?;
36
38
  private _xcodebuild?;
37
39
  private _url?;
38
40
  /**
@@ -147,6 +149,7 @@ export declare class WebDriverAgent {
147
149
  * @returns The WDA URL used for caching on success, or `undefined` if caching was skipped.
148
150
  */
149
151
  setupCaching(): Promise<string | undefined>;
152
+ private createStartupStrategy;
150
153
  private setupProxies;
151
154
  private toUrl;
152
155
  private setWDAPaths;
@@ -173,19 +176,5 @@ export declare class WebDriverAgent {
173
176
  */
174
177
  private getStatus;
175
178
  private _cleanupProjectIfFresh;
176
- /**
177
- * Launch WDA with preinstalled package with 'xcrun devicectl device process launch'.
178
- * The WDA package must be prepared properly like published via
179
- * https://github.com/appium/WebDriverAgent/releases
180
- * with proper sign for this case.
181
- *
182
- * @param opts launching WDA with devicectl command options.
183
- */
184
- private _launchViaDevicectl;
185
- /**
186
- * Launch WDA with preinstalled package without xcodebuild.
187
- * @param sessionId Launch WDA and establish the session with this sessionId
188
- */
189
- private launchWithPreinstalledWDA;
190
179
  }
191
180
  //# sourceMappingURL=webdriveragent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"webdriveragent.d.ts","sourceRoot":"","sources":["../../lib/webdriveragent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"webdriveragent.d.ts","sourceRoot":"","sources":["../../lib/webdriveragent.ts"],"names":[],"mappings":"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"}