appium-webdriveragent 14.2.0 → 15.0.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 (55) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/WebDriverAgentLib/Info.plist +2 -2
  3. package/build/lib/types.d.ts +44 -4
  4. package/build/lib/types.d.ts.map +1 -1
  5. package/build/lib/utils/index.d.ts +11 -0
  6. package/build/lib/utils/index.d.ts.map +1 -0
  7. package/build/lib/utils/index.js +27 -0
  8. package/build/lib/utils/index.js.map +1 -0
  9. package/build/lib/utils/module.d.ts +6 -0
  10. package/build/lib/utils/module.d.ts.map +1 -0
  11. package/build/lib/utils/module.js +31 -0
  12. package/build/lib/utils/module.js.map +1 -0
  13. package/build/lib/utils/platform.d.ts +7 -0
  14. package/build/lib/utils/platform.d.ts.map +1 -0
  15. package/build/lib/utils/platform.js +13 -0
  16. package/build/lib/utils/platform.js.map +1 -0
  17. package/build/lib/utils/processes.d.ts +23 -0
  18. package/build/lib/utils/processes.d.ts.map +1 -0
  19. package/build/lib/utils/processes.js +132 -0
  20. package/build/lib/utils/processes.js.map +1 -0
  21. package/build/lib/utils/security.d.ts +5 -0
  22. package/build/lib/utils/security.d.ts.map +1 -0
  23. package/build/lib/utils/security.js +15 -0
  24. package/build/lib/utils/security.js.map +1 -0
  25. package/build/lib/utils/xctestrun.d.ts +51 -0
  26. package/build/lib/utils/xctestrun.d.ts.map +1 -0
  27. package/build/lib/utils/xctestrun.js +120 -0
  28. package/build/lib/utils/xctestrun.js.map +1 -0
  29. package/build/lib/wda-strategies.d.ts +69 -0
  30. package/build/lib/wda-strategies.d.ts.map +1 -0
  31. package/build/lib/wda-strategies.js +253 -0
  32. package/build/lib/wda-strategies.js.map +1 -0
  33. package/build/lib/webdriveragent.d.ts +3 -14
  34. package/build/lib/webdriveragent.d.ts.map +1 -1
  35. package/build/lib/webdriveragent.js +78 -127
  36. package/build/lib/webdriveragent.js.map +1 -1
  37. package/build/lib/xcodebuild.d.ts.map +1 -1
  38. package/build/lib/xcodebuild.js +29 -7
  39. package/build/lib/xcodebuild.js.map +1 -1
  40. package/lib/types.ts +58 -4
  41. package/lib/utils/index.ts +20 -0
  42. package/lib/utils/module.ts +29 -0
  43. package/lib/utils/platform.ts +10 -0
  44. package/lib/utils/processes.ts +135 -0
  45. package/lib/utils/security.ts +15 -0
  46. package/lib/utils/xctestrun.ts +160 -0
  47. package/lib/wda-strategies.ts +340 -0
  48. package/lib/webdriveragent.ts +89 -163
  49. package/lib/xcodebuild.ts +34 -17
  50. package/package.json +3 -4
  51. package/build/lib/utils.d.ts +0 -105
  52. package/build/lib/utils.d.ts.map +0 -1
  53. package/build/lib/utils.js +0 -413
  54. package/build/lib/utils.js.map +0 -1
  55. package/lib/utils.ts +0 -442
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xctestrun.js","sourceRoot":"","sources":["../../../lib/utils/xctestrun.ts"],"names":[],"mappings":"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"}
@@ -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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"}
@@ -13,9 +13,9 @@ const no_session_proxy_1 = require("./no-session-proxy");
13
13
  const utils_1 = require("./utils");
14
14
  const xcodebuild_1 = require("./xcodebuild");
15
15
  const async_lock_1 = __importDefault(require("async-lock"));
16
- const teen_process_1 = require("teen_process");
17
16
  const constants_1 = require("./constants");
18
17
  const strongbox_1 = require("@appium/strongbox");
18
+ const wda_strategies_1 = require("./wda-strategies");
19
19
  const WDA_LAUNCH_TIMEOUT = 60 * 1000;
20
20
  const WDA_AGENT_PORT = 8100;
21
21
  const SHARED_RESOURCES_GUARD = new async_lock_1.default();
@@ -51,6 +51,8 @@ class WebDriverAgent {
51
51
  wdaLaunchTimeout;
52
52
  usePreinstalledWDA;
53
53
  updatedWDABundleIdSuffix;
54
+ hostOps;
55
+ activeStartupStrategy;
54
56
  _xcodebuild;
55
57
  _url;
56
58
  /**
@@ -88,6 +90,21 @@ class WebDriverAgent {
88
90
  this.wdaLaunchTimeout = args.wdaLaunchTimeout || WDA_LAUNCH_TIMEOUT;
89
91
  this.usePreinstalledWDA = args.usePreinstalledWDA;
90
92
  this.updatedWDABundleIdSuffix = args.updatedWDABundleIdSuffix ?? constants_1.DEFAULT_TEST_BUNDLE_SUFFIX;
93
+ const defaultHostOps = (0, wda_strategies_1.createDefaultWdaHostOps)();
94
+ this.hostOps = {
95
+ simulator: {
96
+ ...defaultHostOps.simulator,
97
+ ...args.hostOps?.simulator,
98
+ },
99
+ realDevicePreinstalled: {
100
+ ...defaultHostOps.realDevicePreinstalled,
101
+ ...args.hostOps?.realDevicePreinstalled,
102
+ },
103
+ realDeviceXcodebuild: {
104
+ ...defaultHostOps.realDeviceXcodebuild,
105
+ ...args.hostOps?.realDeviceXcodebuild,
106
+ },
107
+ };
91
108
  this._xcodebuild = this.canSkipXcodebuild
92
109
  ? null
93
110
  : new xcodebuild_1.XcodeBuild(this.device, {
@@ -204,21 +221,15 @@ class WebDriverAgent {
204
221
  * that are listening on the same port but belong to different devices.
205
222
  */
206
223
  async cleanupObsoleteProcesses() {
207
- const obsoletePids = await (0, utils_1.getPIDsListeningOnPort)(this.url.port, (cmdLine) => cmdLine.includes('/WebDriverAgentRunner') &&
208
- !cmdLine.toLowerCase().includes(this.device.udid.toLowerCase()));
209
- if (obsoletePids.length === 0) {
210
- this.log.debug(`No obsolete cached processes from previous WDA sessions ` +
211
- `listening on port ${this.url.port} have been found`);
212
- return;
213
- }
214
- this.log.info(`Detected ${obsoletePids.length} obsolete cached process${obsoletePids.length === 1 ? '' : 'es'} ` +
215
- `from previous WDA sessions. Cleaning them up`);
216
224
  try {
217
- await (0, teen_process_1.exec)('kill', obsoletePids);
225
+ await this.hostOps.realDeviceXcodebuild.cleanupObsoleteProcesses?.({
226
+ udid: this.device.udid,
227
+ port: this.url.port,
228
+ commandLineIncludes: '/WebDriverAgentRunner',
229
+ });
218
230
  }
219
231
  catch (e) {
220
- this.log.warn(`Failed to kill obsolete cached process${obsoletePids.length === 1 ? '' : 'es'} '${obsoletePids}'. ` +
221
- `Original error: ${e.message}`);
232
+ this.log.warn(`Failed to clean obsolete cached processes. Original error: ${e.message}`);
222
233
  }
223
234
  }
224
235
  /**
@@ -246,41 +257,10 @@ class WebDriverAgent {
246
257
  * @param sessionId Launch WDA and establish the session with this sessionId
247
258
  */
248
259
  async launch(sessionId) {
249
- if (this.webDriverAgentUrl) {
250
- this.log.info(`Using provided WebdriverAgent at '${this.webDriverAgentUrl}'`);
251
- this.url = this.webDriverAgentUrl;
252
- this.setupProxies(sessionId);
253
- return await this.getStatus();
254
- }
255
- if (this.usePreinstalledWDA) {
256
- return await this.launchWithPreinstalledWDA(sessionId);
257
- }
258
- this.log.info('Launching WebDriverAgent on the device');
259
- this.setupProxies(sessionId);
260
- if (!this.useXctestrunFile && !(await support_1.fs.exists(this.agentPath))) {
261
- throw new Error(`Trying to use WebDriverAgent project at '${this.agentPath}' but the ` +
262
- 'file does not exist');
263
- }
264
- // useXctestrunFile and usePrebuiltWDA use existing dependencies
265
- // It depends on user side
266
- if (this.useXctestrunFile || this.usePrebuiltWDA) {
267
- this.log.info('Skipped WDA project cleanup according to the provided capabilities');
268
- }
269
- else {
270
- const synchronizationKey = node_path_1.default.normalize(this.bootstrapPath);
271
- await SHARED_RESOURCES_GUARD.acquire(synchronizationKey, async () => await this._cleanupProjectIfFresh());
272
- }
273
- // We need to provide WDA local port, because it might be occupied
274
- await (0, utils_1.resetTestProcesses)(this.device.udid, !this.isRealDevice);
275
- if (!this.noSessionProxy) {
276
- throw new Error('noSessionProxy is not available');
277
- }
278
- await this.xcodebuild.init(this.noSessionProxy);
279
- // Start the xcodebuild process
280
- if (this.prebuildWDA) {
281
- await this.xcodebuild.prebuild();
282
- }
283
- return (await this.xcodebuild.start());
260
+ const startupStrategy = this.createStartupStrategy();
261
+ this.log.info(`Selected '${startupStrategy.name}' WebDriverAgent startup strategy`);
262
+ this.activeStartupStrategy = startupStrategy;
263
+ return await startupStrategy.launch(sessionId);
284
264
  }
285
265
  /**
286
266
  * Checks if the WebDriverAgent source is fresh by verifying
@@ -296,29 +276,7 @@ class WebDriverAgent {
296
276
  * Handles both preinstalled WDA and xcodebuild-based sessions.
297
277
  */
298
278
  async quit() {
299
- if (this.usePreinstalledWDA) {
300
- this.log.info('Stopping the XCTest session');
301
- try {
302
- if (this.device.simctl) {
303
- await this.device.simctl.terminateApp(this.bundleIdForXctest);
304
- }
305
- else if (this.device.devicectl) {
306
- await this.device.devicectl.terminateApp(this.bundleIdForXctest);
307
- }
308
- }
309
- catch (e) {
310
- this.log.warn(e.message);
311
- }
312
- }
313
- else if (!this.args.webDriverAgentUrl) {
314
- this.log.info('Shutting down sub-processes');
315
- if (this._xcodebuild) {
316
- await this.xcodebuild.quit();
317
- }
318
- }
319
- else {
320
- this.log.debug('Stopping neither xcodebuild nor XCTest session since WDA lifecycle is not managed by this driver');
321
- }
279
+ await (this.activeStartupStrategy ?? this.createStartupStrategy()).quit();
322
280
  if (this.jwproxy) {
323
281
  this.jwproxy.sessionId = null;
324
282
  }
@@ -328,6 +286,7 @@ class WebDriverAgent {
328
286
  // then clean that up. If the url was supplied, we want to keep it
329
287
  this.webDriverAgentUrl = undefined;
330
288
  }
289
+ this.activeStartupStrategy = undefined;
331
290
  }
332
291
  /**
333
292
  * Retrieves Xcode build settings.
@@ -395,6 +354,54 @@ class WebDriverAgent {
395
354
  this.webDriverAgentUrl = cachedUrl;
396
355
  return cachedUrl;
397
356
  }
357
+ createStartupStrategy() {
358
+ const context = {
359
+ argsWebDriverAgentUrl: this.args.webDriverAgentUrl,
360
+ webDriverAgentUrl: this.webDriverAgentUrl,
361
+ usePreinstalledWDA: this.usePreinstalledWDA,
362
+ useXctestrunFile: this.useXctestrunFile,
363
+ usePrebuiltWDA: this.usePrebuiltWDA,
364
+ prebuildWDA: this.prebuildWDA,
365
+ isRealDevice: this.isRealDevice,
366
+ device: this.device,
367
+ agentPath: this.agentPath,
368
+ bootstrapPath: this.bootstrapPath,
369
+ bundleIdForXctest: this.bundleIdForXctest,
370
+ wdaLocalPort: this.wdaLocalPort,
371
+ wdaRemotePort: this.wdaRemotePort,
372
+ wdaBindingIP: this.wdaBindingIP,
373
+ wdaLaunchTimeout: this.wdaLaunchTimeout,
374
+ mjpegServerPort: this.mjpegServerPort,
375
+ maxHttpRequestBodySize: this.maxHttpRequestBodySize,
376
+ platformName: this.platformName,
377
+ platformVersion: this.platformVersion,
378
+ log: this.log,
379
+ hostOps: this.hostOps,
380
+ setWebDriverAgentUrl: (value) => {
381
+ this.webDriverAgentUrl = value;
382
+ },
383
+ setUrl: (value) => {
384
+ this.url = value;
385
+ },
386
+ setupProxies: (sessionId) => this.setupProxies(sessionId),
387
+ getStatus: async (timeoutMs) => await this.getStatus(timeoutMs),
388
+ cleanupProjectIfFresh: async () => {
389
+ const synchronizationKey = node_path_1.default.normalize(this.bootstrapPath);
390
+ await SHARED_RESOURCES_GUARD.acquire(synchronizationKey, async () => await this._cleanupProjectIfFresh());
391
+ },
392
+ xcodebuild: () => this.xcodebuild,
393
+ noSessionProxy: () => {
394
+ if (!this.noSessionProxy) {
395
+ throw new Error('noSessionProxy is not available');
396
+ }
397
+ return this.noSessionProxy;
398
+ },
399
+ setStarted: (started) => {
400
+ this.started = started;
401
+ },
402
+ };
403
+ return (0, wda_strategies_1.createWdaStartupStrategy)(context);
404
+ }
398
405
  setupProxies(sessionId) {
399
406
  const proxyOpts = {
400
407
  log: this.log,
@@ -556,62 +563,6 @@ class WebDriverAgent {
556
563
  this.log.warn(`Cannot perform WebDriverAgent project cleanup. Original error: ${e.message}`);
557
564
  }
558
565
  }
559
- /**
560
- * Launch WDA with preinstalled package with 'xcrun devicectl device process launch'.
561
- * The WDA package must be prepared properly like published via
562
- * https://github.com/appium/WebDriverAgent/releases
563
- * with proper sign for this case.
564
- *
565
- * @param opts launching WDA with devicectl command options.
566
- */
567
- async _launchViaDevicectl(opts = {}) {
568
- const { env } = opts;
569
- await this.device.devicectl.launchApp(this.bundleIdForXctest, {
570
- env,
571
- terminateExisting: true,
572
- });
573
- }
574
- /**
575
- * Launch WDA with preinstalled package without xcodebuild.
576
- * @param sessionId Launch WDA and establish the session with this sessionId
577
- */
578
- async launchWithPreinstalledWDA(sessionId) {
579
- const xctestEnv = {
580
- USE_PORT: this.wdaLocalPort || WDA_AGENT_PORT,
581
- WDA_PRODUCT_BUNDLE_IDENTIFIER: this.bundleIdForXctest,
582
- };
583
- if (this.mjpegServerPort) {
584
- xctestEnv.MJPEG_SERVER_PORT = this.mjpegServerPort;
585
- }
586
- if (this.wdaBindingIP) {
587
- xctestEnv.USE_IP = this.wdaBindingIP;
588
- }
589
- if (this.maxHttpRequestBodySize) {
590
- xctestEnv.MAX_HTTP_REQUEST_BODY_SIZE = this.maxHttpRequestBodySize;
591
- }
592
- this.log.info('Launching WebDriverAgent on the device without xcodebuild');
593
- if (this.isRealDevice) {
594
- await this._launchViaDevicectl({ env: xctestEnv });
595
- }
596
- else {
597
- await this.device.simctl.exec('launch', {
598
- args: ['--terminate-running-process', this.device.udid, this.bundleIdForXctest],
599
- env: xctestEnv,
600
- });
601
- }
602
- this.setupProxies(sessionId);
603
- let status;
604
- try {
605
- status = await this.getStatus(this.wdaLaunchTimeout);
606
- }
607
- catch {
608
- throw new Error(`Failed to start the preinstalled WebDriverAgent in ${this.wdaLaunchTimeout} ms. ` +
609
- `The WebDriverAgent might not be properly built or the device might be locked. ` +
610
- `The 'appium:wdaLaunchTimeout' capability modifies the timeout.`);
611
- }
612
- this.started = true;
613
- return status;
614
- }
615
566
  }
616
567
  exports.WebDriverAgent = WebDriverAgent;
617
568
  //# sourceMappingURL=webdriveragent.js.map