Dive into secure and efficient coding practices with our curated list of the top 10 examples showcasing 'appium-xcode' in functional components in JavaScript. Our advanced machine learning engine meticulously scans each line of code, cross-referencing millions of open source libraries to ensure your implementation is not just functional, but also robust and secure. Elevate your React applications to new heights by mastering the art of handling side effects, API calls, and asynchronous operations with confidence and precision.
it('should double tap on an element', async function () {
// FIXME: Multitouch does not work as expected in Xcode < 9.
// cloud tests are run on Linux, so no Xcode version to check
if (!process.env.CLOUD && (await xcode.getVersion(true)).major < 9) {
return this.skip();
}
await driver.execute('mobile: scroll', {direction: 'down'});
await driver.elementByAccessibilityId('Steppers').click();
let stepper = await driver.elementByAccessibilityId('Increment');
let action = new wd.TouchAction(driver);
action.tap({el: stepper, count: 2});
await action.perform();
await driver.elementByAccessibilityId('2')
.should.not.be.rejected;
});
it(`should swipe the table and the bottom cell's Y position should change accordingly`, async function () {
before(async function () {
// Don't do these tests on Sauce Labs
if (process.env.CLOUD) {
this.skip();
}
xcodeVersion = await getVersion(true);
});
describe('with fresh sim', function () {
async function killAllSimulators (timeout = DEFAULT_SIM_SHUTDOWN_TIMEOUT) {
log.debug('Killing all iOS Simulators');
const xcodeVersion = await getVersion(true);
const appName = xcodeVersion.major >= 7 ? 'Simulator' : 'iOS Simulator';
// later versions are slower to close
timeout = timeout * (xcodeVersion.major >= 8 ? 2 : 1);
try {
await exec('xcrun', ['simctl', 'shutdown', xcodeVersion.major > 8 ? 'all' : 'booted'], {timeout});
} catch (ign) {}
const pids = [];
try {
const {stdout} = await exec('pgrep', ['-f', `${appName}.app/Contents/MacOS/`]);
if (stdout.trim()) {
pids.push(...(stdout.trim().split(/\s+/)));
}
} catch (e) {
async function quickLaunch (udid, appPath = path.resolve(__dirname, '..', '..', 'assets', 'TestApp.app')) {
let traceTemplatePath = await xcode.getAutomationTraceTemplatePath();
let scriptPath = path.resolve(__dirname, '..', '..', 'assets', 'blank_instruments_test.js');
let traceDocument = path.resolve('/', 'tmp', 'testTrace.trace');
let resultsPath = path.resolve('/', 'tmp');
// the trace document can be in a weird state
// but we never do anything with it, so delete
await fs.rimraf(traceDocument);
let args = ['instruments',
'-D', traceDocument,
'-t', traceTemplatePath,
'-w', udid,
appPath,
'-e', 'UIASCRIPT', scriptPath,
'-e', 'UIARESULTSPATH', resultsPath];
log.debug(`Running command: 'xcrun ${args.join(' ')}'`);
async function quickLaunch (udid, appPath = path.resolve(__dirname, '..', '..', 'assets', 'TestApp.app')) {
let traceTemplatePath = await xcode.getAutomationTraceTemplatePath();
let scriptPath = path.resolve(__dirname, '..', '..', 'assets', 'blank_instruments_test.js');
let traceDocument = path.resolve('/', 'tmp', 'testTrace.trace');
let resultsPath = path.resolve('/', 'tmp');
// the trace document can be in a weird state
// but we never do anything with it, so delete
await fs.rimraf(traceDocument);
let args = [
'instruments',
'-D', traceDocument,
'-t', traceTemplatePath,
'-w', udid,
appPath,
'-e', 'UIASCRIPT', scriptPath,
'-e', 'UIARESULTSPATH', resultsPath];
async function prepareIosOpts (opts) {
opts.backendRetries = 4;
opts.withoutDelay = !opts.nativeInstrumentsLib;
opts.reset = !opts.noReset;
opts.initialOrientation = opts.deviceOrientation ||
opts.orientation ||
'PORTRAIT';
opts.useRobot = opts.robotPort > 0;
opts.robotUrl = opts.useRobot ?
`http://${opts.robotAddress}:${opts.robotPort}` : null;
if (opts.locationServicesAuthorized && !opts.bundleId) {
throw new Error('You must set the bundleId cap if using locationServicesEnabled');
}
opts.platformVersion = opts.platformVersion || await xcode.getMaxIOSSDK();
let pv = parseFloat(opts.platformVersion);
if (pv < 8) {
logger.warn(`iOS version ${opts.platformVersion} support has been ` +
`deprecated and will be removed in a future version of ` +
`Appium.`);
}
opts.localizableStringsDir = opts.localizableStringsDir || 'en.lproj';
opts.autoAcceptAlerts = _.isNull(opts.autoAcceptAlerts) || _.isUndefined(opts.autoAcceptAlerts) ? false : opts.autoAcceptAlerts;
opts.autoDismissAlerts = _.isNull(opts.autoDismissAlerts) || _.isUndefined(opts.autoDismissAlerts) ? false : opts.autoDismissAlerts;
if ((opts.browserName || '').toLowerCase() === 'safari' ||
(opts.app || '').toLowerCase() === 'safari' ||
(opts.bundleId || '').toLowerCase() === SAFARI_BUNDLE) {
// preparing a safari session
if (opts.udid) {
// on a real device
static async _getDeviceStringPlatformVersion (platformVersion) {
let reqVersion = platformVersion;
if (!reqVersion) {
reqVersion = await xcode.getMaxIOSSDK();
log.warn(`No platform version set. Using max SDK version: ${reqVersion}`);
// this will be a number, and possibly an integer (e.g., if max iOS SDK is 9)
// so turn it into a string and add a .0 if necessary
if (!_.isString(reqVersion)) {
reqVersion = (reqVersion % 1) ? String(reqVersion) : `${reqVersion}.0`;
}
}
return reqVersion;
}
before(async function () {
let exists = await fs.exists(app);
if (!exists) {
app = path.resolve(__dirname, '..', '..', '..', 'test', 'assets', 'TestApp-iphonesimulator.app');
}
xcodeVersion = await xcode.getVersion(true);
});
before(async function () {
({major, minor} = await xcode.getVersion(true));
if (major < 8 || (major === 8 && minor < 1)) {
return this.skip();
}
const sdk = process.env.IOS_SDK || _.last(validSdks);
udid = await createDevice('runningSimTest', DEVICE_NAME, sdk);
await bootDevice(udid);
await startBootMonitor(udid, {timeout: MOCHA_TIMEOUT});
});
after(async function () {
async function getAndCheckIosSdkVersion () {
try {
return await xcode.getMaxIOSSDK();
} catch (err) {
log.errorAndThrow(`Could not determine iOS SDK version: ${err.message}`);
}
}