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.
- package/CHANGELOG.md +7 -0
- package/build/index.js +39 -36
- package/build/lib/check-dependencies.d.ts +3 -0
- package/build/lib/check-dependencies.d.ts.map +1 -0
- package/build/lib/check-dependencies.js +38 -32
- package/build/lib/check-dependencies.js.map +1 -1
- package/build/lib/constants.d.ts +12 -0
- package/build/lib/constants.d.ts.map +1 -0
- package/build/lib/constants.js +8 -10
- package/build/lib/constants.js.map +1 -1
- package/build/lib/logger.d.ts +3 -0
- package/build/lib/logger.d.ts.map +1 -0
- package/build/lib/logger.js +5 -11
- package/build/lib/logger.js.map +1 -1
- package/build/lib/no-session-proxy.d.ts +6 -0
- package/build/lib/no-session-proxy.d.ts.map +1 -0
- package/build/lib/no-session-proxy.js +22 -26
- package/build/lib/no-session-proxy.js.map +1 -1
- package/build/lib/utils.d.ts +127 -0
- package/build/lib/utils.d.ts.map +1 -0
- package/build/lib/utils.js +347 -211
- package/build/lib/utils.js.map +1 -1
- package/build/lib/webdriveragent.d.ts +145 -0
- package/build/lib/webdriveragent.d.ts.map +1 -0
- package/build/lib/webdriveragent.js +478 -367
- package/build/lib/webdriveragent.js.map +1 -1
- package/build/lib/xcodebuild.d.ts +58 -0
- package/build/lib/xcodebuild.d.ts.map +1 -0
- package/build/lib/xcodebuild.js +367 -289
- package/build/lib/xcodebuild.js.map +1 -1
- package/lib/check-dependencies.js +3 -4
- package/lib/utils.js +10 -7
- package/lib/webdriveragent.js +14 -9
- package/lib/xcodebuild.js +39 -7
- package/package.json +28 -18
|
@@ -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
|
|
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(
|
|
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}
|
|
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
|
-
|
|
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 {
|
|
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 {
|
|
362
|
+
* @returns {Promise<string[]>} - the list of matched process ids.
|
|
360
363
|
*/
|
|
361
364
|
async function getPIDsListeningOnPort (port, filteringFunc = null) {
|
|
362
365
|
const result = [];
|
package/lib/webdriveragent.js
CHANGED
|
@@ -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 {
|
|
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 {
|
|
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 {
|
|
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
|
|
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(
|
|
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
|
-
|
|
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
|
-
|
|
330
|
-
|
|
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
|
|
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.
|
|
3
|
+
"version": "5.7.0",
|
|
4
4
|
"description": "Package bundling WebDriverAgent",
|
|
5
5
|
"main": "./build/index.js",
|
|
6
6
|
"scripts": {
|
|
7
|
-
"build": "
|
|
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": "^
|
|
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
|
-
"@
|
|
60
|
-
"@
|
|
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
|
-
"
|
|
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": "^
|
|
73
|
-
"eslint-config-prettier": "^8.
|
|
74
|
-
"eslint-
|
|
75
|
-
"eslint-plugin-
|
|
76
|
-
"eslint-plugin-
|
|
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.
|
|
103
|
+
"axios": "^1.4.0",
|
|
94
104
|
"bluebird": "^3.5.5",
|
|
95
105
|
"lodash": "^4.17.11",
|
|
96
106
|
"node-simctl": "^7.0.1",
|