appium-xcuitest-driver
Version:
Appium driver for iOS using XCUITest for backend
43 lines (39 loc) • 1.52 kB
JavaScript
const {WebDriverAgent} = require('appium-webdriveragent');
const xcode = require('appium-xcode');
const {Simctl} = require('node-simctl');
const {getSimulator} = require('appium-ios-simulator');
const {logger} = require('appium/support');
const {parseArgValue} = require('./utils');
const log = logger.getLogger('WDA');
async function build() {
const customDevice = parseArgValue('name');
const xcodeVersion = await xcode.getVersion(true);
const platformVersion = parseArgValue('sdk') || (await xcode.getMaxIOSSDK());
const iosDevices = await new Simctl().getDevices(platformVersion, 'iOS');
const verifyDevicePresence = (info) => {
if (!info) {
throw new Error(
`Cannot find any available iOS ${platformVersion} ${customDevice ? `${customDevice} ` : ''}simulator on your system. Only the following simulators are available:\n${iosDevices.map((e) => e.name).join('\n')}`,
);
}
return info;
};
const deviceInfo = verifyDevicePresence(
iosDevices.find(({name}) => name.includes(customDevice || 'iPhone')),
);
const device = await getSimulator(deviceInfo.udid, {
platform: deviceInfo.platform,
checkExistence: false,
});
const wda = new WebDriverAgent(xcodeVersion, {
iosSdkVersion: platformVersion,
platformVersion,
showXcodeLog: true,
device,
});
log.info(
`Building WDA for ${deviceInfo.name} ${platformVersion} with udid '${deviceInfo.udid}' Simulator...`,
);
await wda.xcodebuild.start(true);
}
(async () => await build())();