appium-webdriveragent 8.4.0 → 8.5.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 CHANGED
@@ -1,3 +1,17 @@
1
+ ## [8.5.1](https://github.com/appium/WebDriverAgent/compare/v8.5.0...v8.5.1) (2024-04-08)
2
+
3
+
4
+ ### Miscellaneous Chores
5
+
6
+ * Add more type declarations ([#886](https://github.com/appium/WebDriverAgent/issues/886)) ([9ca7632](https://github.com/appium/WebDriverAgent/commit/9ca7632faf999931e7f5edf47267fcce6d6392b2))
7
+
8
+ ## [8.5.0](https://github.com/appium/WebDriverAgent/compare/v8.4.0...v8.5.0) (2024-04-07)
9
+
10
+
11
+ ### Features
12
+
13
+ * Add types for WDA caps and settings ([#885](https://github.com/appium/WebDriverAgent/issues/885)) ([4b3c220](https://github.com/appium/WebDriverAgent/commit/4b3c220c0c609802924b7b6ff9a4dfa7a98eb5f4))
14
+
1
15
  ## [8.4.0](https://github.com/appium/WebDriverAgent/compare/v8.3.1...v8.4.0) (2024-04-01)
2
16
 
3
17
 
@@ -15,11 +15,11 @@
15
15
  <key>CFBundlePackageType</key>
16
16
  <string>FMWK</string>
17
17
  <key>CFBundleShortVersionString</key>
18
- <string>8.4.0</string>
18
+ <string>8.5.1</string>
19
19
  <key>CFBundleSignature</key>
20
20
  <string>????</string>
21
21
  <key>CFBundleVersion</key>
22
- <string>8.4.0</string>
22
+ <string>8.5.1</string>
23
23
  <key>NSPrincipalClass</key>
24
24
  <string/>
25
25
  </dict>
@@ -0,0 +1,7 @@
1
+ export { checkForDependencies, bundleWDASim } from './lib/check-dependencies';
2
+ export { NoSessionProxy } from './lib/no-session-proxy';
3
+ export { WebDriverAgent } from './lib/webdriveragent';
4
+ export { WDA_BASE_URL, WDA_RUNNER_BUNDLE_ID, PROJECT_FILE } from './lib/constants';
5
+ export { resetTestProcesses, BOOTSTRAP_PATH } from './lib/utils';
6
+ export * from './lib/types';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACnF,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAEjE,cAAc,aAAa,CAAC"}
package/build/index.js CHANGED
@@ -10,37 +10,24 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
10
10
  if (k2 === undefined) k2 = k;
11
11
  o[k2] = m[k];
12
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 (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
24
15
  };
25
16
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.WDA_BASE_URL = exports.PROJECT_FILE = exports.WDA_RUNNER_BUNDLE_ID = exports.BOOTSTRAP_PATH = exports.resetTestProcesses = exports.bundleWDASim = exports.checkForDependencies = exports.NoSessionProxy = exports.WebDriverAgent = void 0;
27
- const dependencies = __importStar(require("./lib/check-dependencies"));
28
- const proxies = __importStar(require("./lib/no-session-proxy"));
29
- const driver = __importStar(require("./lib/webdriveragent"));
30
- const constants = __importStar(require("./lib/constants"));
31
- const utils = __importStar(require("./lib/utils"));
32
- const { checkForDependencies, bundleWDASim } = dependencies;
33
- exports.checkForDependencies = checkForDependencies;
34
- exports.bundleWDASim = bundleWDASim;
35
- const { NoSessionProxy } = proxies;
36
- exports.NoSessionProxy = NoSessionProxy;
37
- const { WebDriverAgent } = driver;
38
- exports.WebDriverAgent = WebDriverAgent;
39
- const { WDA_BASE_URL, WDA_RUNNER_BUNDLE_ID, PROJECT_FILE } = constants;
40
- exports.WDA_BASE_URL = WDA_BASE_URL;
41
- exports.WDA_RUNNER_BUNDLE_ID = WDA_RUNNER_BUNDLE_ID;
42
- exports.PROJECT_FILE = PROJECT_FILE;
43
- const { resetTestProcesses, BOOTSTRAP_PATH } = utils;
44
- exports.resetTestProcesses = resetTestProcesses;
45
- exports.BOOTSTRAP_PATH = BOOTSTRAP_PATH;
17
+ exports.BOOTSTRAP_PATH = exports.resetTestProcesses = exports.PROJECT_FILE = exports.WDA_RUNNER_BUNDLE_ID = exports.WDA_BASE_URL = exports.WebDriverAgent = exports.NoSessionProxy = exports.bundleWDASim = exports.checkForDependencies = void 0;
18
+ var check_dependencies_1 = require("./lib/check-dependencies");
19
+ Object.defineProperty(exports, "checkForDependencies", { enumerable: true, get: function () { return check_dependencies_1.checkForDependencies; } });
20
+ Object.defineProperty(exports, "bundleWDASim", { enumerable: true, get: function () { return check_dependencies_1.bundleWDASim; } });
21
+ var no_session_proxy_1 = require("./lib/no-session-proxy");
22
+ Object.defineProperty(exports, "NoSessionProxy", { enumerable: true, get: function () { return no_session_proxy_1.NoSessionProxy; } });
23
+ var webdriveragent_1 = require("./lib/webdriveragent");
24
+ Object.defineProperty(exports, "WebDriverAgent", { enumerable: true, get: function () { return webdriveragent_1.WebDriverAgent; } });
25
+ var constants_1 = require("./lib/constants");
26
+ Object.defineProperty(exports, "WDA_BASE_URL", { enumerable: true, get: function () { return constants_1.WDA_BASE_URL; } });
27
+ Object.defineProperty(exports, "WDA_RUNNER_BUNDLE_ID", { enumerable: true, get: function () { return constants_1.WDA_RUNNER_BUNDLE_ID; } });
28
+ Object.defineProperty(exports, "PROJECT_FILE", { enumerable: true, get: function () { return constants_1.PROJECT_FILE; } });
29
+ var utils_1 = require("./lib/utils");
30
+ Object.defineProperty(exports, "resetTestProcesses", { enumerable: true, get: function () { return utils_1.resetTestProcesses; } });
31
+ Object.defineProperty(exports, "BOOTSTRAP_PATH", { enumerable: true, get: function () { return utils_1.BOOTSTRAP_PATH; } });
32
+ __exportStar(require("./lib/types"), exports);
46
33
  //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,+DAA8E;AAArE,0HAAA,oBAAoB,OAAA;AAAE,kHAAA,YAAY,OAAA;AAC3C,2DAAwD;AAA/C,kHAAA,cAAc,OAAA;AACvB,uDAAsD;AAA7C,gHAAA,cAAc,OAAA;AACvB,6CAAmF;AAA1E,yGAAA,YAAY,OAAA;AAAE,iHAAA,oBAAoB,OAAA;AAAE,yGAAA,YAAY,OAAA;AACzD,qCAAiE;AAAxD,2GAAA,kBAAkB,OAAA;AAAE,uGAAA,cAAc,OAAA;AAE3C,8CAA4B"}
@@ -1,3 +1,9 @@
1
1
  export function checkForDependencies(): Promise<boolean>;
2
- export function bundleWDASim(xcodebuild: any): Promise<string>;
2
+ /**
3
+ *
4
+ * @param {XcodeBuild} xcodebuild
5
+ * @returns {Promise<string>}
6
+ */
7
+ export function bundleWDASim(xcodebuild: XcodeBuild): Promise<string>;
8
+ import XcodeBuild from './xcodebuild';
3
9
  //# sourceMappingURL=check-dependencies.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"check-dependencies.d.ts","sourceRoot":"","sources":["../../lib/check-dependencies.js"],"names":[],"mappings":"AAwBA,yDAGC;AAED,+DAYC"}
1
+ {"version":3,"file":"check-dependencies.d.ts","sourceRoot":"","sources":["../../lib/check-dependencies.js"],"names":[],"mappings":"AAyBA,yDAGC;AAED;;;;GAIG;AACH,yCAHW,UAAU,GACR,QAAQ,MAAM,CAAC,CAiB3B;uBA9CsB,cAAc"}
@@ -9,6 +9,7 @@ const lodash_1 = __importDefault(require("lodash"));
9
9
  const teen_process_1 = require("teen_process");
10
10
  const path_1 = __importDefault(require("path"));
11
11
  const xcodebuild_1 = __importDefault(require("./xcodebuild"));
12
+ const appium_xcode_1 = __importDefault(require("appium-xcode"));
12
13
  const constants_1 = require("./constants");
13
14
  const utils_1 = require("./utils");
14
15
  const logger_1 = __importDefault(require("./logger"));
@@ -29,11 +30,19 @@ async function checkForDependencies() {
29
30
  return false;
30
31
  }
31
32
  exports.checkForDependencies = checkForDependencies;
33
+ /**
34
+ *
35
+ * @param {XcodeBuild} xcodebuild
36
+ * @returns {Promise<string>}
37
+ */
32
38
  async function bundleWDASim(xcodebuild) {
33
39
  if (xcodebuild && !lodash_1.default.isFunction(xcodebuild.retrieveDerivedDataPath)) {
34
- xcodebuild = new xcodebuild_1.default('', {});
40
+ xcodebuild = new xcodebuild_1.default(/** @type {import('appium-xcode').XcodeVersion} */ (await appium_xcode_1.default.getVersion(true)), {});
35
41
  }
36
42
  const derivedDataPath = await xcodebuild.retrieveDerivedDataPath();
43
+ if (!derivedDataPath) {
44
+ throw new Error('Cannot retrieve the path to the Xcode derived data folder');
45
+ }
37
46
  const wdaBundlePath = path_1.default.join(derivedDataPath, 'Build', 'Products', 'Debug-iphonesimulator', constants_1.WDA_RUNNER_APP);
38
47
  if (await support_1.fs.exists(wdaBundlePath)) {
39
48
  return wdaBundlePath;
@@ -1 +1 @@
1
- {"version":3,"file":"check-dependencies.js","sourceRoot":"","sources":["../../lib/check-dependencies.js"],"names":[],"mappings":";;;;;;AAAA,6CAAqC;AACrC,oDAAuB;AACvB,+CAAoC;AACpC,gDAAwB;AACxB,8DAAsC;AACtC,2CAEqB;AACrB,mCAAyC;AACzC,sDAA2B;AAE3B,KAAK,UAAU,WAAW;IACxB,MAAM,IAAI,GAAG;QACX,UAAU,EAAE,cAAI,CAAC,IAAI,CAAC,sBAAc,EAAE,0BAA0B,CAAC;QACjE,SAAS,EAAE,sBAAU;QACrB,MAAM,EAAE,yBAAa;QACrB,uBAAuB;QACvB,4BAA4B;QAC5B,gCAAgC;KACjC,CAAC;IACF,MAAM,IAAA,mBAAI,EAAC,YAAY,EAAE,IAAI,CAAC,CAAC;AACjC,CAAC;AAED,yCAAyC;AACzC,KAAK,UAAU,oBAAoB;IACjC,gBAAG,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACzC,OAAO,KAAK,CAAC;AACf,CAAC;AAgBQ,oDAAoB;AAd7B,KAAK,UAAU,YAAY,CAAE,UAAU;IACrC,IAAI,UAAU,IAAI,CAAC,gBAAC,CAAC,UAAU,CAAC,UAAU,CAAC,uBAAuB,CAAC,EAAE,CAAC;QACpE,UAAU,GAAG,IAAI,oBAAU,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,eAAe,GAAG,MAAM,UAAU,CAAC,uBAAuB,EAAE,CAAC;IACnE,MAAM,aAAa,GAAG,cAAI,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,EAAE,UAAU,EAAE,uBAAuB,EAAE,0BAAc,CAAC,CAAC;IAC/G,IAAI,MAAM,YAAE,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;QACnC,OAAO,aAAa,CAAC;IACvB,CAAC;IACD,MAAM,WAAW,EAAE,CAAC;IACpB,OAAO,aAAa,CAAC;AACvB,CAAC;AAE8B,oCAAY"}
1
+ {"version":3,"file":"check-dependencies.js","sourceRoot":"","sources":["../../lib/check-dependencies.js"],"names":[],"mappings":";;;;;;AAAA,6CAAqC;AACrC,oDAAuB;AACvB,+CAAoC;AACpC,gDAAwB;AACxB,8DAAsC;AACtC,gEAAiC;AACjC,2CAEqB;AACrB,mCAAyC;AACzC,sDAA2B;AAE3B,KAAK,UAAU,WAAW;IACxB,MAAM,IAAI,GAAG;QACX,UAAU,EAAE,cAAI,CAAC,IAAI,CAAC,sBAAc,EAAE,0BAA0B,CAAC;QACjE,SAAS,EAAE,sBAAU;QACrB,MAAM,EAAE,yBAAa;QACrB,uBAAuB;QACvB,4BAA4B;QAC5B,gCAAgC;KACjC,CAAC;IACF,MAAM,IAAA,mBAAI,EAAC,YAAY,EAAE,IAAI,CAAC,CAAC;AACjC,CAAC;AAED,yCAAyC;AAClC,KAAK,UAAU,oBAAoB;IACxC,gBAAG,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACzC,OAAO,KAAK,CAAC;AACf,CAAC;AAHD,oDAGC;AAED;;;;GAIG;AACI,KAAK,UAAU,YAAY,CAAE,UAAU;IAC5C,IAAI,UAAU,IAAI,CAAC,gBAAC,CAAC,UAAU,CAAC,UAAU,CAAC,uBAAuB,CAAC,EAAE,CAAC;QACpE,UAAU,GAAG,IAAI,oBAAU,CAAC,kDAAkD,CAAC,CAAC,MAAM,sBAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACrH,CAAC;IAED,MAAM,eAAe,GAAG,MAAM,UAAU,CAAC,uBAAuB,EAAE,CAAC;IACnE,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;IAC/E,CAAC;IACD,MAAM,aAAa,GAAG,cAAI,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,EAAE,UAAU,EAAE,uBAAuB,EAAE,0BAAc,CAAC,CAAC;IAC/G,IAAI,MAAM,YAAE,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;QACnC,OAAO,aAAa,CAAC;IACvB,CAAC;IACD,MAAM,WAAW,EAAE,CAAC;IACpB,OAAO,aAAa,CAAC;AACvB,CAAC;AAfD,oCAeC"}
@@ -0,0 +1,48 @@
1
+ export interface WDASettings {
2
+ elementResponseAttribute?: string;
3
+ shouldUseCompactResponses?: boolean;
4
+ mjpegServerScreenshotQuality?: number;
5
+ mjpegServerFramerate?: number;
6
+ screenshotQuality?: number;
7
+ elementResponseAttributes?: string;
8
+ mjpegScalingFactor?: number;
9
+ mjpegFixOrientation?: boolean;
10
+ keyboardAutocorrection?: boolean;
11
+ keyboardPrediction?: boolean;
12
+ customSnapshotTimeout?: number;
13
+ snapshotMaxDepth?: number;
14
+ useFirstMatch?: boolean;
15
+ boundElementsByIndex?: boolean;
16
+ reduceMotion?: boolean;
17
+ defaultActiveApplication?: string;
18
+ activeAppDetectionPoint?: string;
19
+ includeNonModalElements?: boolean;
20
+ defaultAlertAction?: 'accept' | 'dismiss';
21
+ acceptAlertButtonSelector?: string;
22
+ dismissAlertButtonSelector?: string;
23
+ screenshotOrientation?: 'auto' | 'portrait' | 'portraitUpsideDown' | 'landscapeRight' | 'landscapeLeft';
24
+ waitForIdleTimeout?: number;
25
+ animationCoolOffTimeout?: number;
26
+ }
27
+ export interface WDACapabilities {
28
+ bundleId?: string;
29
+ initialUrl?: string;
30
+ arguments?: string[];
31
+ environment?: Record<string, string>;
32
+ eventloopIdleDelaySec?: number;
33
+ shouldWaitForQuiescence?: boolean;
34
+ shouldUseTestManagerForVisibilityDetection?: boolean;
35
+ maxTypingFrequency?: number;
36
+ shouldUseSingletonTestManager?: boolean;
37
+ waitForIdleTimeout?: number;
38
+ shouldUseCompactResponses?: number;
39
+ elementResponseFields?: unknown;
40
+ disableAutomaticScreenshots?: boolean;
41
+ shouldTerminateApp?: boolean;
42
+ forceAppLaunch?: boolean;
43
+ useNativeCachingStrategy?: boolean;
44
+ forceSimulatorSoftwareKeyboardPresence?: boolean;
45
+ defaultAlertAction?: 'accept' | 'dismiss';
46
+ appLaunchStateTimeoutSec?: number;
47
+ }
48
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../lib/types.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,WAAW;IAC1B,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,4BAA4B,CAAC,EAAE,MAAM,CAAC;IACtC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,kBAAkB,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC1C,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,qBAAqB,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,oBAAoB,GAAG,gBAAgB,GAAG,eAAe,CAAA;IACvG,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC;AAGD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,0CAA0C,CAAC,EAAE,OAAO,CAAC;IACrD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,6BAA6B,CAAC,EAAE,OAAO,CAAC;IACxC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,sCAAsC,CAAC,EAAE,OAAO,CAAC;IACjD,kBAAkB,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC1C,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../lib/types.ts"],"names":[],"mappings":""}
@@ -1,8 +1,18 @@
1
- export default WebDriverAgent;
1
+ /// <reference types="node" />
2
2
  export class WebDriverAgent {
3
- constructor(xcodeVersion: any, args?: {}, log?: null);
4
- xcodeVersion: any;
5
- args: {};
3
+ /**
4
+ * @param {import('appium-xcode').XcodeVersion} xcodeVersion
5
+ * // TODO: make args typed
6
+ * @param {import('@appium/types').StringRecord} [args={}]
7
+ * @param {import('@appium/types').AppiumLogger?} [log=null]
8
+ */
9
+ constructor(xcodeVersion: import('appium-xcode').XcodeVersion, args?: import("@appium/types").StringRecord<any> | undefined, log?: import("@appium/types").AppiumLogger | null | undefined);
10
+ /** @type {string} */
11
+ bootstrapPath: string;
12
+ /** @type {string} */
13
+ agentPath: string;
14
+ xcodeVersion: import("appium-xcode/build/lib/xcode").XcodeVersion;
15
+ args: import("@appium/types").StringRecord<any>;
6
16
  log: import("@appium/types").AppiumLogger;
7
17
  device: any;
8
18
  platformVersion: any;
@@ -43,9 +53,14 @@ export class WebDriverAgent {
43
53
  * @returns {string} Bundle ID for Xctest.
44
54
  */
45
55
  get bundleIdForXctest(): string;
46
- setWDAPaths(bootstrapPath: any, agentPath: any): void;
47
- bootstrapPath: any;
48
- agentPath: any;
56
+ /**
57
+ * @param {string} [bootstrapPath]
58
+ * @param {string} [agentPath]
59
+ */
60
+ setWDAPaths(bootstrapPath?: string | undefined, agentPath?: string | undefined): void;
61
+ /**
62
+ * @returns {Promise<void>}
63
+ */
49
64
  cleanupObsoleteProcesses(): Promise<void>;
50
65
  /**
51
66
  * Return boolean if WDA is running or not
@@ -53,7 +68,10 @@ export class WebDriverAgent {
53
68
  * @throws {Error} If there was invalid response code or body
54
69
  */
55
70
  isRunning(): Promise<boolean>;
56
- get basePath(): any;
71
+ /**
72
+ * @returns {string}
73
+ */
74
+ get basePath(): string;
57
75
  /**
58
76
  * Return current running WDA's status like below
59
77
  * {
@@ -85,6 +103,8 @@ export class WebDriverAgent {
85
103
  * Uninstall WDAs from the test device.
86
104
  * Over Xcode 11, multiple WDA can be in the device since Xcode 11 generates different WDA.
87
105
  * Appium does not expect multiple WDAs are running on a device.
106
+ *
107
+ * @returns {Promise<void>}
88
108
  */
89
109
  uninstall(): Promise<void>;
90
110
  _cleanupProjectIfFresh(): Promise<void>;
@@ -142,38 +162,83 @@ export class WebDriverAgent {
142
162
  * @throws {Error} If there was invalid response code or body
143
163
  */
144
164
  launch(sessionId: string): Promise<any | null>;
145
- set url(_url: any);
146
- get url(): any;
147
- startWithIDB(): Promise<any>;
148
- parseBundleId(wdaBundlePath: any): Promise<any>;
165
+ /**
166
+ * @param {string} _url
167
+ * @returns {void}
168
+ */
169
+ set url(_url: url.UrlWithStringQuery);
170
+ /**
171
+ * @returns {import('url').UrlWithStringQuery}
172
+ */
173
+ get url(): url.UrlWithStringQuery;
174
+ /**
175
+ * @returns {Promise<void>}
176
+ */
177
+ startWithIDB(): Promise<void>;
178
+ /**
179
+ *
180
+ * @param {string} wdaBundlePath
181
+ * @returns {Promise<string>}
182
+ */
183
+ parseBundleId(wdaBundlePath: string): Promise<string>;
184
+ /**
185
+ * @returns {Promise<{wdaBundleId: string, testBundleId: string, wdaBundlePath: string}>}
186
+ */
149
187
  prepareWDA(): Promise<{
150
- wdaBundleId: any;
151
- testBundleId: any;
188
+ wdaBundleId: string;
189
+ testBundleId: string;
152
190
  wdaBundlePath: string;
153
191
  }>;
192
+ /**
193
+ * @returns {Promise<string>}
194
+ */
154
195
  fetchWDABundle(): Promise<string>;
196
+ /**
197
+ * @returns {Promise<boolean>}
198
+ */
155
199
  isSourceFresh(): Promise<boolean>;
156
- setupProxies(sessionId: any): void;
200
+ /**
201
+ * @param {string} sessionId
202
+ * @returns {void}
203
+ */
204
+ setupProxies(sessionId: string): void;
157
205
  jwproxy: JWProxy | undefined;
158
206
  proxyReqRes: any;
159
207
  noSessionProxy: NoSessionProxy | undefined;
208
+ /**
209
+ * @returns {Promise<void>}
210
+ */
160
211
  quit(): Promise<void>;
161
- _url: any;
212
+ _url: url.UrlWithStringQuery | undefined;
213
+ /**
214
+ * @param {boolean} started
215
+ * @returns {void}s
216
+ */
162
217
  set fullyStarted(started: boolean);
218
+ /**
219
+ * @returns {boolean}
220
+ */
163
221
  get fullyStarted(): boolean;
164
- retrieveDerivedDataPath(): Promise<any>;
222
+ /**
223
+ * @returns {Promise<string|undefined>}
224
+ */
225
+ retrieveDerivedDataPath(): Promise<string | undefined>;
165
226
  /**
166
227
  * Reuse running WDA if it has the same bundle id with updatedWDABundleId.
167
228
  * Or reuse it if it has the default id without updatedWDABundleId.
168
229
  * Uninstall it if the method faces an exception for the above situation.
230
+ * @returns {Promise<void>}
169
231
  */
170
232
  setupCaching(): Promise<void>;
171
233
  /**
172
234
  * Quit and uninstall running WDA.
235
+ * @returns {Promise<void>}
173
236
  */
174
237
  quitAndUninstall(): Promise<void>;
175
238
  }
239
+ export default WebDriverAgent;
176
240
  import XcodeBuild from './xcodebuild';
241
+ import url from 'url';
177
242
  import { JWProxy } from '@appium/base-driver';
178
243
  import { NoSessionProxy } from './no-session-proxy';
179
244
  //# sourceMappingURL=webdriveragent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"webdriveragent.d.ts","sourceRoot":"","sources":["../../lib/webdriveragent.js"],"names":[],"mappings":";AA6BA;IACE,sDAuEC;IAtEC,kBAAgC;IAEhC,SAAyB;IACzB,0CAA+B;IAE/B,YAAyB;IACzB,qBAA2C;IAC3C,kBAAqC;IACrC,mBAAuC;IACvC,UAAqB;IACrB,sBAAqC;IACrC,SAAkC;IAClC,mBAAuC;IAIvC,kBAAqC;IACrC,mBAAwD;IACxD,gBAAiD;IAEjD,iBAAmC;IAKnC,uBAA+C;IAE/C,iBAAoB;IAEpB,0BAAqD;IAErD,sBAA6C;IAC7C,oBAAyC;IACzC,qBAA2C;IAC3C,qBAA2C;IAE3C,wBAAiD;IAEjD,sBAAmE;IACnE,wBAAiD;IACjD,qBAA2B;IAC3B,8BAA2F;IAE3F,8BA0Bc;IAGhB;;;OAGG;IACH,iCAIC;IAED;;;;;;;OAOG;IACH,gCAEC;IAED,sDASC;IANC,mBAAoD;IAIpD,eAA0F;IAI5F,0CAmBC;IAED;;;;OAIG;IACH,aAHY,QAAQ,OAAO,CAAC,CAK3B;IAED,oBAKC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,2CAJY,QAAQ,OAAO,eAAe,EAAE,YAAY,GAAC,IAAI,CAAC,CA4C7D;IAED;;;;OAIG;IACH,2BAiBC;IAED,wCA4DC;IAGD;;;OAGG;IAEH;;;;;;;;;;;OAWG;IACH;;;;;oBAFY,QAAQ,IAAI,CAAC,CAQxB;IAED;;;;;;OAMG;IACH,qCALW,MAAM,GACL,QAAQ,OAAO,eAAe,EAAE,YAAY,GAAC,IAAI,CAAC,CA+C7D;IAED;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,kBAJW,MAAM,GACL,QAAQ,GAAG,QAAE,CAmDxB;IAyHD,mBAEC;IAfD,eAWC;IArHD,6BAYC;IAED,gDAOC;IAED;;;;OAQC;IAED,kCAWC;IAED,kCAMC;IAED,mCAeC;IALC,6BAAqC;IAErC,iBAA8D;IAE9D,2CAAmD;IAGrD,sBAiCC;IAKK,UAA6C;IAkBnD,mCAEC;IAND,4BAEC;IAMD,wCAMC;IAED;;;;OAIG;IACH,8BAoCC;IAED;;OAEG;IACH,kCAGC;CACF;uBA/oBsB,cAAc;wBAPb,qBAAqB;+BAGd,oBAAoB"}
1
+ {"version":3,"file":"webdriveragent.d.ts","sourceRoot":"","sources":["../../lib/webdriveragent.js"],"names":[],"mappings":";AA6BA;IAOE;;;;;OAKG;IACH,0BALW,OAAO,cAAc,EAAE,YAAY,+HA4E7C;IAnFD,qBAAqB;IACrB,eADW,MAAM,CACH;IAEd,qBAAqB;IACrB,WADW,MAAM,CACP;IASR,kEAAgC;IAEhC,gDAAyB;IACzB,0CAA+B;IAE/B,YAAyB;IACzB,qBAA2C;IAC3C,kBAAqC;IACrC,mBAAuC;IACvC,UAAqB;IACrB,sBAAqC;IACrC,SAAkC;IAClC,mBAAuC;IAIvC,kBAAqC;IACrC,mBAAwD;IACxD,gBAAiD;IAEjD,iBAAmC;IAKnC,uBAA+C;IAE/C,iBAAoB;IAEpB,0BAAqD;IAErD,sBAA6C;IAC7C,oBAAyC;IACzC,qBAA2C;IAC3C,qBAA2C;IAE3C,wBAAiD;IAEjD,sBAAmE;IACnE,wBAAiD;IACjD,qBAA2B;IAC3B,8BAA2F;IAE3F,8BA0Bc;IAGhB;;;OAGG;IACH,iCAIC;IAED;;;;;;;OAOG;IACH,gCAEC;IAED;;;OAGG;IACH,sFASC;IAED;;OAEG;IACH,4BAFa,QAAQ,IAAI,CAAC,CAqBzB;IAED;;;;OAIG;IACH,aAHY,QAAQ,OAAO,CAAC,CAK3B;IAED;;OAEG;IACH,uBAKC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,2CAJY,QAAQ,OAAO,eAAe,EAAE,YAAY,GAAC,IAAI,CAAC,CA4C7D;IAED;;;;;;OAMG;IACH,aAFa,QAAQ,IAAI,CAAC,CAmBzB;IAED,wCA4DC;IAGD;;;OAGG;IAEH;;;;;;;;;;;OAWG;IACH;;;;;oBAFY,QAAQ,IAAI,CAAC,CAQxB;IAED;;;;;;OAMG;IACH,qCALW,MAAM,GACL,QAAQ,OAAO,eAAe,EAAE,YAAY,GAAC,IAAI,CAAC,CA+C7D;IAED;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,kBAJW,MAAM,GACL,QAAQ,GAAG,QAAE,CAmDxB;IAoJD;;;OAGG;IACH,sCAEC;IAtBD;;OAEG;IACH,kCAWC;IAhJD;;OAEG;IACH,gBAFa,QAAQ,IAAI,CAAC,CAczB;IAED;;;;OAIG;IACH,6BAHW,MAAM,GACJ,QAAQ,MAAM,CAAC,CAS3B;IAED;;OAEG;IACH,cAFa,QAAQ;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAC,CAAC,CAUvF;IAED;;OAEG;IACH,kBAFa,QAAQ,MAAM,CAAC,CAa3B;IAED;;OAEG;IACH,iBAFa,QAAQ,OAAO,CAAC,CAQ5B;IAED;;;OAGG;IACH,wBAHW,MAAM,GACJ,IAAI,CAiBhB;IALC,6BAAqC;IAErC,iBAA8D;IAE9D,2CAAmD;IAGrD;;OAEG;IACH,QAFa,QAAQ,IAAI,CAAC,CAmCzB;IAQK,yCAA6C;IAyBnD;;;OAGG;IACH,mCAEC;IAbD;;OAEG;IACH,4BAEC;IAUD;;OAEG;IACH,2BAFa,QAAQ,MAAM,GAAC,SAAS,CAAC,CAOrC;IAED;;;;;OAKG;IACH,gBAFa,QAAQ,IAAI,CAAC,CAsCzB;IAED;;;OAGG;IACH,oBAFa,QAAQ,IAAI,CAAC,CAKzB;CACF;;uBAjtBsB,cAAc;gBATrB,KAAK;wBAEG,qBAAqB;+BAGd,oBAAoB"}
@@ -27,6 +27,12 @@ const WDA_CF_BUNDLE_NAME = 'WebDriverAgentRunner-Runner';
27
27
  const SHARED_RESOURCES_GUARD = new async_lock_1.default();
28
28
  const RECENT_MODULE_VERSION_ITEM_NAME = 'recentWdaModuleVersion';
29
29
  class WebDriverAgent {
30
+ /**
31
+ * @param {import('appium-xcode').XcodeVersion} xcodeVersion
32
+ * // TODO: make args typed
33
+ * @param {import('@appium/types').StringRecord} [args={}]
34
+ * @param {import('@appium/types').AppiumLogger?} [log=null]
35
+ */
30
36
  constructor(xcodeVersion, args = {}, log = null) {
31
37
  this.xcodeVersion = xcodeVersion;
32
38
  this.args = lodash_1.default.clone(args);
@@ -107,6 +113,10 @@ class WebDriverAgent {
107
113
  get bundleIdForXctest() {
108
114
  return `${this.updatedWDABundleId ? this.updatedWDABundleId : constants_1.WDA_RUNNER_BUNDLE_ID}${this.updatedWDABundleIdSuffix}`;
109
115
  }
116
+ /**
117
+ * @param {string} [bootstrapPath]
118
+ * @param {string} [agentPath]
119
+ */
110
120
  setWDAPaths(bootstrapPath, agentPath) {
111
121
  // allow the user to specify a place for WDA. This is undocumented and
112
122
  // only here for the purposes of testing development of WDA
@@ -116,8 +126,11 @@ class WebDriverAgent {
116
126
  this.agentPath = agentPath || path_1.default.resolve(this.bootstrapPath, 'WebDriverAgent.xcodeproj');
117
127
  this.log.info(`Using WDA agent: '${this.agentPath}'`);
118
128
  }
129
+ /**
130
+ * @returns {Promise<void>}
131
+ */
119
132
  async cleanupObsoleteProcesses() {
120
- const obsoletePids = await (0, utils_1.getPIDsListeningOnPort)(this.url.port, (cmdLine) => cmdLine.includes('/WebDriverAgentRunner') &&
133
+ const obsoletePids = await (0, utils_1.getPIDsListeningOnPort)(/** @type {string} */ (this.url.port), (cmdLine) => cmdLine.includes('/WebDriverAgentRunner') &&
121
134
  !cmdLine.toLowerCase().includes(this.device.udid.toLowerCase()));
122
135
  if (lodash_1.default.isEmpty(obsoletePids)) {
123
136
  this.log.debug(`No obsolete cached processes from previous WDA sessions ` +
@@ -142,6 +155,9 @@ class WebDriverAgent {
142
155
  async isRunning() {
143
156
  return !!(await this.getStatus());
144
157
  }
158
+ /**
159
+ * @returns {string}
160
+ */
145
161
  get basePath() {
146
162
  if (this.url.path === '/') {
147
163
  return '';
@@ -219,6 +235,8 @@ class WebDriverAgent {
219
235
  * Uninstall WDAs from the test device.
220
236
  * Over Xcode 11, multiple WDA can be in the device since Xcode 11 generates different WDA.
221
237
  * Appium does not expect multiple WDAs are running on a device.
238
+ *
239
+ * @returns {Promise<void>}
222
240
  */
223
241
  async uninstall() {
224
242
  try {
@@ -430,6 +448,9 @@ class WebDriverAgent {
430
448
  // @ts-ignore xcodebuild should be set
431
449
  return await this.xcodebuild.start();
432
450
  }
451
+ /**
452
+ * @returns {Promise<void>}
453
+ */
433
454
  async startWithIDB() {
434
455
  this.log.info('Will launch WDA with idb instead of xcodebuild since the corresponding flag is enabled');
435
456
  const { wdaBundleId, testBundleId } = await this.prepareWDA();
@@ -442,6 +463,11 @@ class WebDriverAgent {
442
463
  }
443
464
  return await this.idb.runXCUITest(wdaBundleId, wdaBundleId, testBundleId, { env });
444
465
  }
466
+ /**
467
+ *
468
+ * @param {string} wdaBundlePath
469
+ * @returns {Promise<string>}
470
+ */
445
471
  async parseBundleId(wdaBundlePath) {
446
472
  const infoPlistPath = path_1.default.join(wdaBundlePath, 'Info.plist');
447
473
  const infoPlist = await support_1.plist.parsePlist(await support_1.fs.readFile(infoPlistPath));
@@ -450,6 +476,9 @@ class WebDriverAgent {
450
476
  }
451
477
  return infoPlist.CFBundleIdentifier;
452
478
  }
479
+ /**
480
+ * @returns {Promise<{wdaBundleId: string, testBundleId: string, wdaBundlePath: string}>}
481
+ */
453
482
  async prepareWDA() {
454
483
  const wdaBundlePath = this.wdaBundlePath || await this.fetchWDABundle();
455
484
  const wdaBundleId = await this.parseBundleId(wdaBundlePath);
@@ -459,9 +488,12 @@ class WebDriverAgent {
459
488
  const testBundleId = await this.idb.installXCTestBundle(path_1.default.join(wdaBundlePath, 'PlugIns', 'WebDriverAgentRunner.xctest'));
460
489
  return { wdaBundleId, testBundleId, wdaBundlePath };
461
490
  }
491
+ /**
492
+ * @returns {Promise<string>}
493
+ */
462
494
  async fetchWDABundle() {
463
495
  if (!this.derivedDataPath) {
464
- return await (0, check_dependencies_1.bundleWDASim)(this.xcodebuild);
496
+ return await (0, check_dependencies_1.bundleWDASim)(/** @type {XcodeBuild} */ (this.xcodebuild));
465
497
  }
466
498
  const wdaBundlePaths = await support_1.fs.glob(`${this.derivedDataPath}/**/*${constants_1.WDA_RUNNER_APP}/`, {
467
499
  absolute: true,
@@ -471,13 +503,20 @@ class WebDriverAgent {
471
503
  }
472
504
  return wdaBundlePaths[0];
473
505
  }
506
+ /**
507
+ * @returns {Promise<boolean>}
508
+ */
474
509
  async isSourceFresh() {
475
510
  const existsPromises = [
476
511
  'Resources',
477
512
  `Resources${path_1.default.sep}WebDriverAgent.bundle`,
478
- ].map((subPath) => support_1.fs.exists(path_1.default.resolve(this.bootstrapPath, subPath)));
513
+ ].map((subPath) => support_1.fs.exists(path_1.default.resolve(/** @type {String} */ (this.bootstrapPath), subPath)));
479
514
  return (await bluebird_1.default.all(existsPromises)).some((v) => v === false);
480
515
  }
516
+ /**
517
+ * @param {string} sessionId
518
+ * @returns {void}
519
+ */
481
520
  setupProxies(sessionId) {
482
521
  const proxyOpts = {
483
522
  log: this.log,
@@ -492,6 +531,9 @@ class WebDriverAgent {
492
531
  this.proxyReqRes = this.jwproxy.proxyReqRes.bind(this.jwproxy);
493
532
  this.noSessionProxy = new no_session_proxy_1.NoSessionProxy(proxyOpts);
494
533
  }
534
+ /**
535
+ * @returns {Promise<void>}
536
+ */
495
537
  async quit() {
496
538
  if (this.usePreinstalledWDA) {
497
539
  this.log.info('Stopping the XCTest session');
@@ -527,6 +569,9 @@ class WebDriverAgent {
527
569
  this.webDriverAgentUrl = null;
528
570
  }
529
571
  }
572
+ /**
573
+ * @returns {import('url').UrlWithStringQuery}
574
+ */
530
575
  get url() {
531
576
  if (!this._url) {
532
577
  if (this.webDriverAgentUrl) {
@@ -540,26 +585,40 @@ class WebDriverAgent {
540
585
  }
541
586
  return this._url;
542
587
  }
588
+ /**
589
+ * @param {string} _url
590
+ * @returns {void}
591
+ */
543
592
  set url(_url) {
544
593
  this._url = url_1.default.parse(_url);
545
594
  }
595
+ /**
596
+ * @returns {boolean}
597
+ */
546
598
  get fullyStarted() {
547
599
  return this.started;
548
600
  }
601
+ /**
602
+ * @param {boolean} started
603
+ * @returns {void}s
604
+ */
549
605
  set fullyStarted(started) {
550
606
  this.started = started ?? false;
551
607
  }
608
+ /**
609
+ * @returns {Promise<string|undefined>}
610
+ */
552
611
  async retrieveDerivedDataPath() {
553
612
  if (this.canSkipXcodebuild) {
554
613
  return;
555
614
  }
556
- // @ts-ignore xcodebuild should be set
557
- return await this.xcodebuild.retrieveDerivedDataPath();
615
+ return await /** @type {XcodeBuild} */ (this.xcodebuild).retrieveDerivedDataPath();
558
616
  }
559
617
  /**
560
618
  * Reuse running WDA if it has the same bundle id with updatedWDABundleId.
561
619
  * Or reuse it if it has the default id without updatedWDABundleId.
562
620
  * Uninstall it if the method faces an exception for the above situation.
621
+ * @returns {Promise<void>}
563
622
  */
564
623
  async setupCaching() {
565
624
  const status = await this.getStatus();
@@ -594,6 +653,7 @@ class WebDriverAgent {
594
653
  }
595
654
  /**
596
655
  * Quit and uninstall running WDA.
656
+ * @returns {Promise<void>}
597
657
  */
598
658
  async quitAndUninstall() {
599
659
  await this.quit();