appium-webdriveragent 5.6.2 → 5.7.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.
@@ -1 +1 @@
1
- {"version":3,"file":"xcodebuild.js","names":["_asyncbox","require","_teen_process","_support","_logger","_interopRequireDefault","_bluebird","_utils","_lodash","_path","_os","_constants","DEFAULT_SIGNING_ID","PREBUILD_DELAY","RUNNER_SCHEME_IOS","LIB_SCHEME_IOS","ERROR_WRITING_ATTACHMENT","ERROR_COPYING_ATTACHMENT","IGNORED_ERRORS","RUNNER_SCHEME_TV","LIB_SCHEME_TV","xcodeLog","logger","getLogger","XcodeBuild","constructor","xcodeVersion","device","args","log","defaultLogger","realDevice","agentPath","bootstrapPath","platformVersion","platformName","iosSdkVersion","showXcodeLog","xcodeConfigFile","xcodeOrgId","xcodeSigningId","keychainPath","keychainPassword","prebuildWDA","usePrebuiltWDA","useSimpleBuildTest","useXctestrunFile","launchTimeout","wdaRemotePort","updatedWDABundleId","derivedDataPath","mjpegServerPort","prebuildDelay","_","isNumber","allowProvisioningDeviceRegistration","resultBundlePath","resultBundleVersion","init","noSessionProxy","deviveInfo","isRealDevice","udid","xctestrunFilePath","setXctestrunFile","resetProjectFile","updateProjectFile","retrieveDerivedDataPath","_derivedDataPathPromise","stdout","exec","err","warn","message","pattern","match","truncate","length","debug","path","dirname","normalize","reset","prebuild","start","xcodebuild","B","delay","cleanProject","libScheme","isTvOS","runnerScheme","scheme","getCommand","buildOnly","cmd","buildCmd","testCmd","push","versionMatch","RegExp","process","env","APPIUM_XCUITEST_TREAT_WARNINGS_AS_ERRORS","createSubProcess","setRealDeviceSecurity","generateXcodeConfigFile","join","Object","assign","USE_PORT","WDA_PRODUCT_BUNDLE_IDENTIFIER","WDA_RUNNER_BUNDLE_ID","MJPEG_SERVER_PORT","upgradeTimestamp","getWDAUpgradeTimestamp","UPGRADE_TIMESTAMP","SubProcess","cwd","detached","stdio","logXcodeOutput","logMsg","isBoolean","on","stderr","out","includes","logLocation","first","remove","trim","split","v","startsWith","sep","ignoreError","some","x","_wda_error_occurred","line","EOL","error","_wda_error_message","resolve","reject","code","signal","data","fs","readFile","processExited","Error","timer","timing","Timer","status","waitForStart","msg","currentStatus","retries","parseInt","retryInterval","proxyTimeout","timeout","command","ios","ip","agentUrl","JSON","stringify","getDuration","asMilliSeconds","toFixed","quit","killProcess","exports","_default","default"],"sources":["../../lib/xcodebuild.js"],"sourcesContent":["import { retryInterval } from 'asyncbox';\nimport { SubProcess, exec } from 'teen_process';\nimport { fs, logger, timing } from '@appium/support';\nimport defaultLogger from './logger';\nimport B from 'bluebird';\nimport {\n setRealDeviceSecurity, generateXcodeConfigFile, setXctestrunFile,\n updateProjectFile, resetProjectFile, killProcess,\n getWDAUpgradeTimestamp, isTvOS } from './utils';\nimport _ from 'lodash';\nimport path from 'path';\nimport { EOL } from 'os';\nimport { WDA_RUNNER_BUNDLE_ID } from './constants';\n\n\nconst DEFAULT_SIGNING_ID = 'iPhone Developer';\nconst PREBUILD_DELAY = 0;\nconst RUNNER_SCHEME_IOS = 'WebDriverAgentRunner';\nconst LIB_SCHEME_IOS = 'WebDriverAgentLib';\n\nconst ERROR_WRITING_ATTACHMENT = 'Error writing attachment data to file';\nconst ERROR_COPYING_ATTACHMENT = 'Error copying testing attachment';\nconst IGNORED_ERRORS = [\n ERROR_WRITING_ATTACHMENT,\n ERROR_COPYING_ATTACHMENT,\n 'Failed to remove screenshot at path',\n];\n\nconst RUNNER_SCHEME_TV = 'WebDriverAgentRunner_tvOS';\nconst LIB_SCHEME_TV = 'WebDriverAgentLib_tvOS';\n\nconst xcodeLog = logger.getLogger('Xcode');\n\n\nclass XcodeBuild {\n constructor (xcodeVersion, device, args = {}, log = null) {\n this.xcodeVersion = xcodeVersion;\n\n this.device = device;\n this.log = log ?? defaultLogger;\n\n this.realDevice = args.realDevice;\n\n this.agentPath = args.agentPath;\n this.bootstrapPath = args.bootstrapPath;\n\n this.platformVersion = args.platformVersion;\n this.platformName = args.platformName;\n this.iosSdkVersion = args.iosSdkVersion;\n\n this.showXcodeLog = args.showXcodeLog;\n\n this.xcodeConfigFile = args.xcodeConfigFile;\n this.xcodeOrgId = args.xcodeOrgId;\n this.xcodeSigningId = args.xcodeSigningId || DEFAULT_SIGNING_ID;\n this.keychainPath = args.keychainPath;\n this.keychainPassword = args.keychainPassword;\n\n this.prebuildWDA = args.prebuildWDA;\n this.usePrebuiltWDA = args.usePrebuiltWDA;\n this.useSimpleBuildTest = args.useSimpleBuildTest;\n\n this.useXctestrunFile = args.useXctestrunFile;\n\n this.launchTimeout = args.launchTimeout;\n\n this.wdaRemotePort = args.wdaRemotePort;\n\n this.updatedWDABundleId = args.updatedWDABundleId;\n this.derivedDataPath = args.derivedDataPath;\n\n this.mjpegServerPort = args.mjpegServerPort;\n\n this.prebuildDelay = _.isNumber(args.prebuildDelay) ? args.prebuildDelay : PREBUILD_DELAY;\n\n this.allowProvisioningDeviceRegistration = args.allowProvisioningDeviceRegistration;\n\n this.resultBundlePath = args.resultBundlePath;\n this.resultBundleVersion = args.resultBundleVersion;\n }\n\n async init (noSessionProxy) {\n this.noSessionProxy = noSessionProxy;\n\n if (this.useXctestrunFile) {\n const deviveInfo = {\n isRealDevice: this.realDevice,\n udid: this.device.udid,\n platformVersion: this.platformVersion,\n platformName: this.platformName\n };\n this.xctestrunFilePath = await setXctestrunFile(deviveInfo, this.iosSdkVersion, this.bootstrapPath, this.wdaRemotePort);\n return;\n }\n\n // if necessary, update the bundleId to user's specification\n if (this.realDevice) {\n // In case the project still has the user specific bundle ID, reset the project file first.\n // - We do this reset even if updatedWDABundleId is not specified,\n // since the previous updatedWDABundleId test has generated the user specific bundle ID project file.\n // - We don't call resetProjectFile for simulator,\n // since simulator test run will work with any user specific bundle ID.\n await resetProjectFile(this.agentPath);\n if (this.updatedWDABundleId) {\n await updateProjectFile(this.agentPath, this.updatedWDABundleId);\n }\n }\n }\n\n async retrieveDerivedDataPath () {\n if (this.derivedDataPath) {\n return this.derivedDataPath;\n }\n\n // avoid race conditions\n if (this._derivedDataPathPromise) {\n return await this._derivedDataPathPromise;\n }\n\n this._derivedDataPathPromise = (async () => {\n let stdout;\n try {\n ({stdout} = await exec('xcodebuild', ['-project', this.agentPath, '-showBuildSettings']));\n } catch (err) {\n this.log.warn(`Cannot retrieve WDA build settings. Original error: ${err.message}`);\n return;\n }\n\n const pattern = /^\\s*BUILD_DIR\\s+=\\s+(\\/.*)/m;\n const match = pattern.exec(stdout);\n if (!match) {\n this.log.warn(`Cannot parse WDA build dir from ${_.truncate(stdout, {length: 300})}`);\n return;\n }\n this.log.debug(`Parsed BUILD_DIR configuration value: '${match[1]}'`);\n // Derived data root is two levels higher over the build dir\n this.derivedDataPath = path.dirname(path.dirname(path.normalize(match[1])));\n this.log.debug(`Got derived data root: '${this.derivedDataPath}'`);\n return this.derivedDataPath;\n })();\n return await this._derivedDataPathPromise;\n }\n\n async reset () {\n // if necessary, reset the bundleId to original value\n if (this.realDevice && this.updatedWDABundleId) {\n await resetProjectFile(this.agentPath);\n }\n }\n\n async prebuild () {\n // first do a build phase\n this.log.debug('Pre-building WDA before launching test');\n this.usePrebuiltWDA = true;\n await this.start(true);\n\n this.xcodebuild = null;\n\n // pause a moment\n await B.delay(this.prebuildDelay);\n }\n\n async cleanProject () {\n const libScheme = isTvOS(this.platformName) ? LIB_SCHEME_TV : LIB_SCHEME_IOS;\n const runnerScheme = isTvOS(this.platformName) ? RUNNER_SCHEME_TV : RUNNER_SCHEME_IOS;\n\n for (const scheme of [libScheme, runnerScheme]) {\n this.log.debug(`Cleaning the project scheme '${scheme}' to make sure there are no leftovers from previous installs`);\n await exec('xcodebuild', [\n 'clean',\n '-project', this.agentPath,\n '-scheme', scheme,\n ]);\n }\n }\n\n getCommand (buildOnly = false) {\n let cmd = 'xcodebuild';\n let args;\n\n // figure out the targets for xcodebuild\n const [buildCmd, testCmd] = this.useSimpleBuildTest ? ['build', 'test'] : ['build-for-testing', 'test-without-building'];\n if (buildOnly) {\n args = [buildCmd];\n } else if (this.usePrebuiltWDA || this.useXctestrunFile) {\n args = [testCmd];\n } else {\n args = [buildCmd, testCmd];\n }\n\n if (this.allowProvisioningDeviceRegistration) {\n // To -allowProvisioningDeviceRegistration flag takes effect, -allowProvisioningUpdates needs to be passed as well.\n args.push('-allowProvisioningUpdates', '-allowProvisioningDeviceRegistration');\n }\n\n if (this.resultBundlePath) {\n args.push('-resultBundlePath', this.resultBundlePath);\n }\n\n if (this.resultBundleVersion) {\n args.push('-resultBundleVersion', this.resultBundleVersion);\n }\n\n if (this.useXctestrunFile) {\n args.push('-xctestrun', this.xctestrunFilePath);\n } else {\n const runnerScheme = isTvOS(this.platformName) ? RUNNER_SCHEME_TV : RUNNER_SCHEME_IOS;\n args.push('-project', this.agentPath, '-scheme', runnerScheme);\n if (this.derivedDataPath) {\n args.push('-derivedDataPath', this.derivedDataPath);\n }\n }\n args.push('-destination', `id=${this.device.udid}`);\n\n const versionMatch = new RegExp(/^(\\d+)\\.(\\d+)/).exec(this.platformVersion);\n if (versionMatch) {\n args.push(\n `${isTvOS(this.platformName) ? 'TV' : 'IPHONE'}OS_DEPLOYMENT_TARGET=${versionMatch[1]}.${versionMatch[2]}`\n );\n } else {\n this.log.warn(`Cannot parse major and minor version numbers from platformVersion \"${this.platformVersion}\". ` +\n 'Will build for the default platform instead');\n }\n\n if (this.realDevice && this.xcodeConfigFile) {\n this.log.debug(`Using Xcode configuration file: '${this.xcodeConfigFile}'`);\n args.push('-xcconfig', this.xcodeConfigFile);\n }\n\n if (!process.env.APPIUM_XCUITEST_TREAT_WARNINGS_AS_ERRORS) {\n // This sometimes helps to survive Xcode updates\n args.push('GCC_TREAT_WARNINGS_AS_ERRORS=0');\n }\n\n // Below option slightly reduces build time in debug build\n // with preventing to generate `/Index/DataStore` which is used by development\n args.push('COMPILER_INDEX_STORE_ENABLE=NO');\n\n return {cmd, args};\n }\n\n async createSubProcess (buildOnly = false) {\n if (!this.useXctestrunFile && this.realDevice) {\n if (this.keychainPath && this.keychainPassword) {\n await setRealDeviceSecurity(this.keychainPath, this.keychainPassword);\n }\n if (this.xcodeOrgId && this.xcodeSigningId && !this.xcodeConfigFile) {\n this.xcodeConfigFile = await generateXcodeConfigFile(this.xcodeOrgId, this.xcodeSigningId);\n }\n }\n\n const {cmd, args} = this.getCommand(buildOnly);\n this.log.debug(`Beginning ${buildOnly ? 'build' : 'test'} with command '${cmd} ${args.join(' ')}' ` +\n `in directory '${this.bootstrapPath}'`);\n const env = Object.assign({}, process.env, {\n USE_PORT: this.wdaRemotePort,\n WDA_PRODUCT_BUNDLE_IDENTIFIER: this.updatedWDABundleId || WDA_RUNNER_BUNDLE_ID,\n });\n if (this.mjpegServerPort) {\n // https://github.com/appium/WebDriverAgent/pull/105\n env.MJPEG_SERVER_PORT = this.mjpegServerPort;\n }\n const upgradeTimestamp = await getWDAUpgradeTimestamp(this.bootstrapPath);\n if (upgradeTimestamp) {\n env.UPGRADE_TIMESTAMP = upgradeTimestamp;\n }\n const xcodebuild = new SubProcess(cmd, args, {\n cwd: this.bootstrapPath,\n env,\n detached: true,\n stdio: ['ignore', 'pipe', 'pipe'],\n });\n\n let logXcodeOutput = !!this.showXcodeLog;\n const logMsg = _.isBoolean(this.showXcodeLog)\n ? `Output from xcodebuild ${this.showXcodeLog ? 'will' : 'will not'} be logged`\n : 'Output from xcodebuild will only be logged if any errors are present there';\n this.log.debug(`${logMsg}. To change this, use 'showXcodeLog' desired capability`);\n xcodebuild.on('output', (stdout, stderr) => {\n let out = stdout || stderr;\n // we want to pull out the log file that is created, and highlight it\n // for diagnostic purposes\n if (out.includes('Writing diagnostic log for test session to')) {\n // pull out the first line that begins with the path separator\n // which *should* be the line indicating the log file generated\n xcodebuild.logLocation = _.first(_.remove(out.trim().split('\\n'), (v) => v.startsWith(path.sep)));\n xcodeLog.debug(`Log file for xcodebuild test: ${xcodebuild.logLocation}`);\n }\n\n // if we have an error we want to output the logs\n // otherwise the failure is inscrutible\n // but do not log permission errors from trying to write to attachments folder\n const ignoreError = IGNORED_ERRORS.some((x) => out.includes(x));\n if (this.showXcodeLog !== false && out.includes('Error Domain=') && !ignoreError) {\n logXcodeOutput = true;\n\n // terrible hack to handle case where xcode return 0 but is failing\n xcodebuild._wda_error_occurred = true;\n }\n\n // do not log permission errors from trying to write to attachments folder\n if (logXcodeOutput && !ignoreError) {\n for (const line of out.split(EOL)) {\n xcodeLog.error(line);\n if (line) {\n xcodebuild._wda_error_message += `${EOL}${line}`;\n }\n }\n }\n });\n\n return xcodebuild;\n }\n\n async start (buildOnly = false) {\n this.xcodebuild = await this.createSubProcess(buildOnly);\n // Store xcodebuild message\n this.xcodebuild._wda_error_message = '';\n\n // wrap the start procedure in a promise so that we can catch, and report,\n // any startup errors that are thrown as events\n return await new B((resolve, reject) => {\n this.xcodebuild.on('exit', async (code, signal) => {\n xcodeLog.error(`xcodebuild exited with code '${code}' and signal '${signal}'`);\n // print out the xcodebuild file if users have asked for it\n if (this.showXcodeLog && this.xcodebuild.logLocation) {\n xcodeLog.error(`Contents of xcodebuild log file '${this.xcodebuild.logLocation}':`);\n try {\n let data = await fs.readFile(this.xcodebuild.logLocation, 'utf8');\n for (let line of data.split('\\n')) {\n xcodeLog.error(line);\n }\n } catch (err) {\n xcodeLog.error(`Unable to access xcodebuild log file: '${err.message}'`);\n }\n }\n this.xcodebuild.processExited = true;\n if (this.xcodebuild._wda_error_occurred || (!signal && code !== 0)) {\n return reject(new Error(`xcodebuild failed with code ${code}${EOL}` +\n `xcodebuild error message:${EOL}${this.xcodebuild._wda_error_message}`));\n }\n // in the case of just building, the process will exit and that is our finish\n if (buildOnly) {\n return resolve();\n }\n });\n\n return (async () => {\n try {\n const timer = new timing.Timer().start();\n await this.xcodebuild.start(true);\n if (!buildOnly) {\n let status = await this.waitForStart(timer);\n resolve(status);\n }\n } catch (err) {\n let msg = `Unable to start WebDriverAgent: ${err}`;\n this.log.error(msg);\n reject(new Error(msg));\n }\n })();\n });\n }\n\n async waitForStart (timer) {\n // try to connect once every 0.5 seconds, until `launchTimeout` is up\n this.log.debug(`Waiting up to ${this.launchTimeout}ms for WebDriverAgent to start`);\n let currentStatus = null;\n try {\n let retries = parseInt(this.launchTimeout / 500, 10);\n await retryInterval(retries, 1000, async () => {\n if (this.xcodebuild.processExited) {\n // there has been an error elsewhere and we need to short-circuit\n return;\n }\n const proxyTimeout = this.noSessionProxy.timeout;\n this.noSessionProxy.timeout = 1000;\n try {\n currentStatus = await this.noSessionProxy.command('/status', 'GET');\n if (currentStatus && currentStatus.ios && currentStatus.ios.ip) {\n this.agentUrl = currentStatus.ios.ip;\n }\n this.log.debug(`WebDriverAgent information:`);\n this.log.debug(JSON.stringify(currentStatus, null, 2));\n } catch (err) {\n throw new Error(`Unable to connect to running WebDriverAgent: ${err.message}`);\n } finally {\n this.noSessionProxy.timeout = proxyTimeout;\n }\n });\n\n if (this.xcodebuild.processExited) {\n // there has been an error elsewhere and we need to short-circuit\n return currentStatus;\n }\n\n this.log.debug(`WebDriverAgent successfully started after ${timer.getDuration().asMilliSeconds.toFixed(0)}ms`);\n } catch (err) {\n // at this point, if we have not had any errors from xcode itself (reported\n // elsewhere), we can let this go through and try to create the session\n this.log.debug(err.message);\n this.log.warn(`Getting status of WebDriverAgent on device timed out. Continuing`);\n }\n return currentStatus;\n }\n\n async quit () {\n await killProcess('xcodebuild', this.xcodebuild);\n }\n}\n\nexport { XcodeBuild };\nexport default XcodeBuild;\n"],"mappings":"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"}
1
+ {"version":3,"file":"xcodebuild.js","sourceRoot":"","sources":["../../lib/xcodebuild.js"],"names":[],"mappings":"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"}
@@ -27,10 +27,9 @@ async function checkForDependencies () {
27
27
  return false;
28
28
  }
29
29
 
30
- async function bundleWDASim (xcodebuild, opts = {}) {
30
+ async function bundleWDASim (xcodebuild) {
31
31
  if (xcodebuild && !_.isFunction(xcodebuild.retrieveDerivedDataPath)) {
32
- xcodebuild = new XcodeBuild();
33
- opts = xcodebuild;
32
+ xcodebuild = new XcodeBuild('', {});
34
33
  }
35
34
 
36
35
  const derivedDataPath = await xcodebuild.retrieveDerivedDataPath();
@@ -38,7 +37,7 @@ async function bundleWDASim (xcodebuild, opts = {}) {
38
37
  if (await fs.exists(wdaBundlePath)) {
39
38
  return wdaBundlePath;
40
39
  }
41
- await buildWDASim(xcodebuild, opts);
40
+ await buildWDASim();
42
41
  return wdaBundlePath;
43
42
  }
44
43
 
package/lib/utils.js CHANGED
@@ -188,8 +188,8 @@ CODE_SIGN_IDENTITY = ${signingId}
188
188
  * @param {DeviceInfo} deviceInfo
189
189
  * @param {string} sdkVersion - The Xcode SDK version of OS.
190
190
  * @param {string} bootstrapPath - The folder path containing xctestrun file.
191
- * @param {string} wdaRemotePort - The remote port WDA is listening on.
192
- * @return {string} returns xctestrunFilePath for given device
191
+ * @param {number|string} wdaRemotePort - The remote port WDA is listening on.
192
+ * @return {Promise<string>} returns xctestrunFilePath for given device
193
193
  * @throws if WebDriverAgentRunner_iphoneos${sdkVersion|platformVersion}-arm64.xctestrun for real device
194
194
  * or WebDriverAgentRunner_iphonesimulator${sdkVersion|platformVersion}-x86_64.xctestrun for simulator is not found @bootstrapPath,
195
195
  * then it will throw file not found exception
@@ -207,7 +207,7 @@ async function setXctestrunFile (deviceInfo, sdkVersion, bootstrapPath, wdaRemot
207
207
  /**
208
208
  * Return the WDA object which appends existing xctest runner content
209
209
  * @param {string} platformName - The name of the platform
210
- * @param {string} version - The Xcode SDK version of OS.
210
+ * @param {number|string} wdaRemotePort - The remote port number
211
211
  * @return {object} returns a runner object which has USE_PORT
212
212
  */
213
213
  function getAdditionalRunContent (platformName, wdaRemotePort) {
@@ -228,6 +228,7 @@ function getAdditionalRunContent (platformName, wdaRemotePort) {
228
228
  * @param {DeviceInfo} deviceInfo
229
229
  * @param {string} sdkVersion - The Xcode SDK version of OS.
230
230
  * @param {string} bootstrapPath - The folder path containing xctestrun file.
231
+ * @returns {Promise<string>}
231
232
  */
232
233
  async function getXctestrunFilePath (deviceInfo, sdkVersion, bootstrapPath) {
233
234
  // First try the SDK path, for Xcode 10 (at least)
@@ -256,9 +257,11 @@ async function getXctestrunFilePath (deviceInfo, sdkVersion, bootstrapPath) {
256
257
  }
257
258
  }
258
259
 
259
- log.errorAndThrow(`If you are using 'useXctestrunFile' capability then you ` +
260
+ throw new Error(
261
+ `If you are using 'useXctestrunFile' capability then you ` +
260
262
  `need to have a xctestrun file (expected: ` +
261
- `'${path.resolve(bootstrapPath, getXctestrunFileName(deviceInfo, sdkVersion))}')`);
263
+ `'${path.resolve(bootstrapPath, getXctestrunFileName(deviceInfo, sdkVersion))}')`
264
+ );
262
265
  }
263
266
 
264
267
 
@@ -316,7 +319,7 @@ function randomInt (low, high) {
316
319
  /**
317
320
  * Retrieves WDA upgrade timestamp
318
321
  *
319
- * @return {?number} The UNIX timestamp of the package manifest. The manifest only gets modified on
322
+ * @return {Promise<number?>} The UNIX timestamp of the package manifest. The manifest only gets modified on
320
323
  * package upgrade.
321
324
  */
322
325
  async function getWDAUpgradeTimestamp () {
@@ -356,7 +359,7 @@ async function resetTestProcesses (udid, isSimulator) {
356
359
  * listening on given port, and is expected to return
357
360
  * either true or false to include/exclude the corresponding PID
358
361
  * from the resulting array.
359
- * @returns {Array<string>} - the list of matched process ids.
362
+ * @returns {Promise<string[]>} - the list of matched process ids.
360
363
  */
361
364
  async function getPIDsListeningOnPort (port, filteringFunc = null) {
362
365
  const result = [];
@@ -150,7 +150,7 @@ class WebDriverAgent {
150
150
 
151
151
  /**
152
152
  * Return boolean if WDA is running or not
153
- * @return {boolean} True if WDA is running
153
+ * @return {Promise<boolean>} True if WDA is running
154
154
  * @throws {Error} If there was invalid response code or body
155
155
  */
156
156
  async isRunning () {
@@ -183,7 +183,7 @@ class WebDriverAgent {
183
183
  * }
184
184
  * }
185
185
  *
186
- * @return {?object} State Object
186
+ * @return {Promise<any?>} State Object
187
187
  * @throws {Error} If there was invalid response code or body
188
188
  */
189
189
  async getStatus () {
@@ -234,7 +234,7 @@ class WebDriverAgent {
234
234
  const box = strongbox(packageInfo.name);
235
235
  let boxItem = box.getItem(RECENT_MODULE_VERSION_ITEM_NAME);
236
236
  if (!boxItem) {
237
- const timestampPath = path.resolve(process.env.HOME, WDA_UPGRADE_TIMESTAMP_PATH);
237
+ const timestampPath = path.resolve(process.env.HOME ?? '', WDA_UPGRADE_TIMESTAMP_PATH);
238
238
  if (await fs.exists(timestampPath)) {
239
239
  // TODO: It is probably a bit ugly to hardcode the recent version string,
240
240
  // TODO: hovewer it should do the job as a temporary transition trick
@@ -279,6 +279,7 @@ class WebDriverAgent {
279
279
  `(${recentModuleVersion} < ${packageInfo.version})`
280
280
  );
281
281
  try {
282
+ // @ts-ignore xcodebuild should be set
282
283
  await this.xcodebuild.cleanProject();
283
284
  await boxItem.write(packageInfo.version);
284
285
  } catch (e) {
@@ -289,7 +290,7 @@ class WebDriverAgent {
289
290
  /**
290
291
  * Launch WDA with preinstalled package without xcodebuild.
291
292
  * @param {string} sessionId Launch WDA and establish the session with this sessionId
292
- * @return {?object} State Object
293
+ * @return {Promise<any?>} State Object
293
294
  */
294
295
  async launchWithPreinstalledWDA(sessionId) {
295
296
  const xctestEnv = {
@@ -330,7 +331,7 @@ class WebDriverAgent {
330
331
  * }
331
332
  *
332
333
  * @param {string} sessionId Launch WDA and establish the session with this sessionId
333
- * @return {?object} State Object
334
+ * @return {Promise<any?>} State Object
334
335
  * @throws {Error} If there was invalid response code or body
335
336
  */
336
337
  async launch (sessionId) {
@@ -374,12 +375,15 @@ class WebDriverAgent {
374
375
  return await this.startWithIDB();
375
376
  }
376
377
 
378
+ // @ts-ignore xcodebuild should be set
377
379
  await this.xcodebuild.init(this.noSessionProxy);
378
380
 
379
381
  // Start the xcodebuild process
380
382
  if (this.prebuildWDA) {
383
+ // @ts-ignore xcodebuild should be set
381
384
  await this.xcodebuild.prebuild();
382
385
  }
386
+ // @ts-ignore xcodebuild should be set
383
387
  return await this.xcodebuild.start();
384
388
  }
385
389
 
@@ -463,7 +467,9 @@ class WebDriverAgent {
463
467
  }
464
468
  } else if (!this.args.webDriverAgentUrl) {
465
469
  this.log.info('Shutting down sub-processes');
470
+ // @ts-ignore xcodebuild should be set
466
471
  await this.xcodebuild.quit();
472
+ // @ts-ignore xcodebuild should be set
467
473
  await this.xcodebuild.reset();
468
474
  } else {
469
475
  this.log.debug('Do not stop xcodebuild nor XCTest session ' +
@@ -504,14 +510,15 @@ class WebDriverAgent {
504
510
  return this.started;
505
511
  }
506
512
 
507
- set fullyStarted (started = false) {
508
- this.started = started;
513
+ set fullyStarted (started) {
514
+ this.started = started ?? false;
509
515
  }
510
516
 
511
517
  async retrieveDerivedDataPath () {
512
518
  if (this.canSkipXcodebuild) {
513
519
  return;
514
520
  }
521
+ // @ts-ignore xcodebuild should be set
515
522
  return await this.xcodebuild.retrieveDerivedDataPath();
516
523
  }
517
524
 
@@ -519,8 +526,6 @@ class WebDriverAgent {
519
526
  * Reuse running WDA if it has the same bundle id with updatedWDABundleId.
520
527
  * Or reuse it if it has the default id without updatedWDABundleId.
521
528
  * Uninstall it if the method faces an exception for the above situation.
522
- *
523
- * @param {string} updatedWDABundleId BundleId you'd like to use
524
529
  */
525
530
  async setupCaching () {
526
531
  const status = await this.getStatus();
package/lib/xcodebuild.js CHANGED
@@ -11,6 +11,7 @@ import _ from 'lodash';
11
11
  import path from 'path';
12
12
  import { EOL } from 'os';
13
13
  import { WDA_RUNNER_BUNDLE_ID } from './constants';
14
+ import readline from 'node:readline';
14
15
 
15
16
 
16
17
  const DEFAULT_SIGNING_ID = 'iPhone Developer';
@@ -33,6 +34,12 @@ const xcodeLog = logger.getLogger('Xcode');
33
34
 
34
35
 
35
36
  class XcodeBuild {
37
+ /**
38
+ * @param {string} xcodeVersion
39
+ * @param {any} device
40
+ * @param {any} args
41
+ * @param {import('@appium/types').AppiumLogger?} log
42
+ */
36
43
  constructor (xcodeVersion, device, args = {}, log = null) {
37
44
  this.xcodeVersion = xcodeVersion;
38
45
 
@@ -201,7 +208,7 @@ class XcodeBuild {
201
208
  args.push('-resultBundleVersion', this.resultBundleVersion);
202
209
  }
203
210
 
204
- if (this.useXctestrunFile) {
211
+ if (this.useXctestrunFile && this.xctestrunFilePath) {
205
212
  args.push('-xctestrun', this.xctestrunFilePath);
206
213
  } else {
207
214
  const runnerScheme = isTvOS(this.platformName) ? RUNNER_SCHEME_TV : RUNNER_SCHEME_IOS;
@@ -252,6 +259,7 @@ class XcodeBuild {
252
259
  const {cmd, args} = this.getCommand(buildOnly);
253
260
  this.log.debug(`Beginning ${buildOnly ? 'build' : 'test'} with command '${cmd} ${args.join(' ')}' ` +
254
261
  `in directory '${this.bootstrapPath}'`);
262
+ /** @type {Record<string, any>} */
255
263
  const env = Object.assign({}, process.env, {
256
264
  USE_PORT: this.wdaRemotePort,
257
265
  WDA_PRODUCT_BUNDLE_IDENTIFIER: this.updatedWDABundleId || WDA_RUNNER_BUNDLE_ID,
@@ -260,7 +268,7 @@ class XcodeBuild {
260
268
  // https://github.com/appium/WebDriverAgent/pull/105
261
269
  env.MJPEG_SERVER_PORT = this.mjpegServerPort;
262
270
  }
263
- const upgradeTimestamp = await getWDAUpgradeTimestamp(this.bootstrapPath);
271
+ const upgradeTimestamp = await getWDAUpgradeTimestamp();
264
272
  if (upgradeTimestamp) {
265
273
  env.UPGRADE_TIMESTAMP = upgradeTimestamp;
266
274
  }
@@ -283,7 +291,9 @@ class XcodeBuild {
283
291
  if (out.includes('Writing diagnostic log for test session to')) {
284
292
  // pull out the first line that begins with the path separator
285
293
  // which *should* be the line indicating the log file generated
294
+ // @ts-ignore logLocation is a custom property
286
295
  xcodebuild.logLocation = _.first(_.remove(out.trim().split('\n'), (v) => v.startsWith(path.sep)));
296
+ // @ts-ignore logLocation is a custom property
287
297
  xcodeLog.debug(`Log file for xcodebuild test: ${xcodebuild.logLocation}`);
288
298
  }
289
299
 
@@ -295,6 +305,7 @@ class XcodeBuild {
295
305
  logXcodeOutput = true;
296
306
 
297
307
  // terrible hack to handle case where xcode return 0 but is failing
308
+ // @ts-ignore _wda_error_occurred is a custom property
298
309
  xcodebuild._wda_error_occurred = true;
299
310
  }
300
311
 
@@ -303,6 +314,7 @@ class XcodeBuild {
303
314
  for (const line of out.split(EOL)) {
304
315
  xcodeLog.error(line);
305
316
  if (line) {
317
+ // @ts-ignore _wda_error_message is a custom property
306
318
  xcodebuild._wda_error_message += `${EOL}${line}`;
307
319
  }
308
320
  }
@@ -315,28 +327,45 @@ class XcodeBuild {
315
327
  async start (buildOnly = false) {
316
328
  this.xcodebuild = await this.createSubProcess(buildOnly);
317
329
  // Store xcodebuild message
330
+ // @ts-ignore _wda_error_message is a custom property
318
331
  this.xcodebuild._wda_error_message = '';
319
332
 
320
333
  // wrap the start procedure in a promise so that we can catch, and report,
321
334
  // any startup errors that are thrown as events
322
335
  return await new B((resolve, reject) => {
336
+ // @ts-ignore xcodebuild must be present here
323
337
  this.xcodebuild.on('exit', async (code, signal) => {
324
338
  xcodeLog.error(`xcodebuild exited with code '${code}' and signal '${signal}'`);
325
339
  // print out the xcodebuild file if users have asked for it
326
- if (this.showXcodeLog && this.xcodebuild.logLocation) {
340
+ // @ts-ignore logLocation is a custom property
341
+ if (this.showXcodeLog && this.xcodebuild?.logLocation) {
342
+ // @ts-ignore logLocation is a custom property
327
343
  xcodeLog.error(`Contents of xcodebuild log file '${this.xcodebuild.logLocation}':`);
328
344
  try {
329
- let data = await fs.readFile(this.xcodebuild.logLocation, 'utf8');
330
- for (let line of data.split('\n')) {
345
+ const logFile = readline.createInterface({
346
+ // @ts-ignore logLocation is a custom property
347
+ input: fs.createReadStream(this.xcodebuild.logLocation),
348
+ terminal: false
349
+ });
350
+ logFile.on('line', (line) => {
331
351
  xcodeLog.error(line);
332
- }
352
+ });
353
+ await new B((_resolve) => {
354
+ logFile.once('close', () => {
355
+ logFile.removeAllListeners();
356
+ _resolve();
357
+ });
358
+ });
333
359
  } catch (err) {
334
360
  xcodeLog.error(`Unable to access xcodebuild log file: '${err.message}'`);
335
361
  }
336
362
  }
363
+ // @ts-ignore processExited is a custom property
337
364
  this.xcodebuild.processExited = true;
365
+ // @ts-ignore _wda_error_occurred is a custom property
338
366
  if (this.xcodebuild._wda_error_occurred || (!signal && code !== 0)) {
339
367
  return reject(new Error(`xcodebuild failed with code ${code}${EOL}` +
368
+ // @ts-ignore _wda_error_message is a custom property
340
369
  `xcodebuild error message:${EOL}${this.xcodebuild._wda_error_message}`));
341
370
  }
342
371
  // in the case of just building, the process will exit and that is our finish
@@ -348,6 +377,7 @@ class XcodeBuild {
348
377
  return (async () => {
349
378
  try {
350
379
  const timer = new timing.Timer().start();
380
+ // @ts-ignore this.xcodebuild must be defined
351
381
  await this.xcodebuild.start(true);
352
382
  if (!buildOnly) {
353
383
  let status = await this.waitForStart(timer);
@@ -367,8 +397,9 @@ class XcodeBuild {
367
397
  this.log.debug(`Waiting up to ${this.launchTimeout}ms for WebDriverAgent to start`);
368
398
  let currentStatus = null;
369
399
  try {
370
- let retries = parseInt(this.launchTimeout / 500, 10);
400
+ let retries = parseInt(`${this.launchTimeout / 500}`, 10);
371
401
  await retryInterval(retries, 1000, async () => {
402
+ // @ts-ignore processExited is a custom property
372
403
  if (this.xcodebuild.processExited) {
373
404
  // there has been an error elsewhere and we need to short-circuit
374
405
  return;
@@ -389,6 +420,7 @@ class XcodeBuild {
389
420
  }
390
421
  });
391
422
 
423
+ // @ts-ignore processExited is a custom property
392
424
  if (this.xcodebuild.processExited) {
393
425
  // there has been an error elsewhere and we need to short-circuit
394
426
  return currentStatus;
package/package.json CHANGED
@@ -1,11 +1,12 @@
1
1
  {
2
2
  "name": "appium-webdriveragent",
3
- "version": "5.6.2",
3
+ "version": "5.7.0",
4
4
  "description": "Package bundling WebDriverAgent",
5
5
  "main": "./build/index.js",
6
6
  "scripts": {
7
- "build": "rm -rf build && babel --out-dir=build/lib lib && babel --out-dir=build index.js",
7
+ "build": "tsc -b",
8
8
  "dev": "npm run build -- --watch",
9
+ "clean": "npm run build -- --clean",
9
10
  "lint": "eslint .",
10
11
  "lint:fix": "npm run lint -- --fix",
11
12
  "precommit-msg": "echo 'Pre-commit checks...' && exit 0",
@@ -54,43 +55,52 @@
54
55
  },
55
56
  "homepage": "https://github.com/appium/WebDriverAgent#readme",
56
57
  "devDependencies": {
57
- "@appium/eslint-config-appium": "^6.0.0",
58
+ "@appium/eslint-config-appium": "^8.0.4",
59
+ "@appium/eslint-config-appium-ts": "^0.3.1",
58
60
  "@appium/test-support": "^3.0.0",
59
- "@babel/cli": "^7.18.10",
60
- "@babel/core": "^7.18.10",
61
- "@babel/eslint-parser": "^7.18.9",
62
- "@babel/plugin-transform-runtime": "^7.18.10",
63
- "@babel/preset-env": "^7.18.10",
64
- "@babel/register": "^7.18.9",
61
+ "@appium/tsconfig": "^0.3.0",
62
+ "@appium/types": "^0.13.2",
65
63
  "@semantic-release/changelog": "^6.0.1",
66
64
  "@semantic-release/git": "^10.0.1",
67
- "babel-plugin-source-map-support": "^2.2.0",
65
+ "@types/bluebird": "^3.5.38",
66
+ "@types/chai": "^4.3.5",
67
+ "@types/chai-as-promised": "^7.1.5",
68
+ "@types/lodash": "^4.14.196",
69
+ "@types/mocha": "^10.0.1",
70
+ "@types/node": "^20.4.7",
71
+ "@types/sinon": "^10.0.16",
72
+ "@types/sinon-chai": "^3.2.9",
73
+ "@types/teen_process": "2.0.0",
74
+ "@typescript-eslint/eslint-plugin": "^5.62.0",
75
+ "@typescript-eslint/parser": "^5.62.0",
68
76
  "appium-xcode": "^5.0.0",
69
77
  "chai": "^4.2.0",
70
78
  "chai-as-promised": "^7.1.1",
71
79
  "conventional-changelog-conventionalcommits": "^6.0.0",
72
- "eslint": "^7.32.0",
73
- "eslint-config-prettier": "^8.5.0",
74
- "eslint-plugin-import": "^2.26.0",
75
- "eslint-plugin-mocha": "^9.0.0",
76
- "eslint-plugin-promise": "^6.0.0",
80
+ "eslint": "^8.46.0",
81
+ "eslint-config-prettier": "^8.9.0",
82
+ "eslint-import-resolver-typescript": "^3.5.5",
83
+ "eslint-plugin-import": "^2.28.0",
84
+ "eslint-plugin-mocha": "^10.1.0",
85
+ "eslint-plugin-promise": "^6.1.1",
77
86
  "lint-staged": "^14.0.0",
78
87
  "mocha": "^10.0.0",
79
88
  "pre-commit": "^1.2.2",
80
89
  "prettier": "^3.0.0",
81
90
  "semantic-release": "^20.0.2",
82
- "sinon": "^15.0.0"
91
+ "sinon": "^15.0.0",
92
+ "ts-node": "^10.9.1",
93
+ "typescript": "^5.1.6"
83
94
  },
84
95
  "dependencies": {
85
96
  "@appium/base-driver": "^9.0.0",
86
97
  "@appium/strongbox": "^0.x",
87
98
  "@appium/support": "^4.0.0",
88
- "@babel/runtime": "^7.0.0",
89
99
  "appium-ios-device": "^2.5.0",
90
100
  "appium-ios-simulator": "^5.0.1",
91
101
  "async-lock": "^1.0.0",
92
102
  "asyncbox": "^2.5.3",
93
- "axios": "^1.x",
103
+ "axios": "^1.4.0",
94
104
  "bluebird": "^3.5.5",
95
105
  "lodash": "^4.17.11",
96
106
  "node-simctl": "^7.0.1",