UNPKG

appium-xcuitest-driver

Version:

Appium driver for iOS using XCUITest for backend

124 lines 4.78 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.TVOS_CAPS = exports.SAFARI_CAPS = exports.SETTINGS_CAPS = exports.GENERIC_CAPS = exports.DEVICE_NAME_FOR_SAFARI_IPAD = exports.DEVICE_NAME = exports.PLATFORM_VERSION = void 0; exports.amendCapabilities = amendCapabilities; exports.extractCapabilityValue = extractCapabilityValue; exports.isIosVersionAtLeast = isIosVersionAtLeast; exports.isIosVersionBelow = isIosVersionBelow; exports.getUICatalogCaps = getUICatalogCaps; exports.getUICatalogSimCaps = getUICatalogSimCaps; exports.getMultipleApps = getMultipleApps; exports.getTestAppCaps = getTestAppCaps; const lodash_1 = __importDefault(require("lodash")); const support_1 = require("appium/support"); const setup_1 = require("../setup"); // translate integer environment variable to a boolean 0=false, !0=true function checkFeatureInEnv(envArg) { /** @type {string|number} */ let feature = parseInt(String(process.env[envArg]), 10); if (isNaN(feature)) { feature = String(process.env[envArg]); } return !!feature; } function amendCapabilities(baseCaps, ...newCaps) { return support_1.node.deepFreeze({ alwaysMatch: lodash_1.default.cloneDeep(Object.assign({}, baseCaps.alwaysMatch, ...newCaps)), firstMatch: [{}], }); } function extractCapabilityValue(caps, capName) { return caps?.alwaysMatch?.[capName]; } exports.PLATFORM_VERSION = process.env.PLATFORM_VERSION || '17.4'; exports.DEVICE_NAME = process.env.DEVICE_NAME || 'iPhone 15'; exports.DEVICE_NAME_FOR_SAFARI_IPAD = process.env.DEVICE_NAME_FOR_SAFARI_IPAD || 'iPad Simulator'; const SHOW_XCODE_LOG = checkFeatureInEnv('SHOW_XCODE_LOG'); const initTimeout = 60 * 1000 * 4; const prebuiltWdaOpts = process.env.PREBUILT_WDA_PATH ? { 'appium:usePreinstalledWDA': true, 'appium:prebuiltWDAPath': process.env.PREBUILT_WDA_PATH, } : {}; exports.GENERIC_CAPS = support_1.node.deepFreeze({ alwaysMatch: { platformName: 'iOS', 'appium:platformVersion': exports.PLATFORM_VERSION, 'appium:deviceName': exports.DEVICE_NAME, 'appium:automationName': 'XCUITest', 'appium:noReset': true, 'appium:maxTypingFrequency': 30, 'appium:clearSystemFiles': true, 'appium:showXcodeLog': SHOW_XCODE_LOG, 'appium:wdaLaunchTimeout': initTimeout, 'appium:wdaConnectionTimeout': initTimeout, 'appium:webviewConnectTimeout': Math.round(initTimeout * 0.8), 'appium:simulatorStartupTimeout': initTimeout, 'appium:forceAppLaunch': true, ...prebuiltWdaOpts, }, firstMatch: [{}], }); /** * * @param {string} minVersion * @returns {boolean} */ function isIosVersionAtLeast(minVersion) { return support_1.util.compareVersions(exports.PLATFORM_VERSION, '>=', minVersion); } /** * * @param {string} minVersion * @returns {boolean} */ function isIosVersionBelow(maxVersion) { return support_1.util.compareVersions(exports.PLATFORM_VERSION, '<', maxVersion); } // Export async getter functions for caps async function getUICatalogCaps() { const uiCatalogApp = await (0, setup_1.getUIKitCatalogPath)(); return amendCapabilities(exports.GENERIC_CAPS, { 'appium:app': uiCatalogApp, }); } async function getUICatalogSimCaps() { const uiCatalogApp = await (0, setup_1.getUIKitCatalogPath)(); return amendCapabilities(exports.GENERIC_CAPS, { 'appium:app': uiCatalogApp, 'appium:noReset': false, }); // do not want to have no reset on the tests that use this } async function getMultipleApps() { const [uiCatalogApp, testApp] = await Promise.all([ (0, setup_1.getUIKitCatalogPath)(), (0, setup_1.getTestAppPath)(), ]); return amendCapabilities(exports.GENERIC_CAPS, { 'appium:app': uiCatalogApp, 'appium:otherApps': testApp, }); } // Note: Tests should use getUICatalogCaps(), getUICatalogSimCaps(), or getMultipleApps() directly exports.SETTINGS_CAPS = amendCapabilities(exports.GENERIC_CAPS, { 'appium:bundleId': 'com.apple.Preferences', }); exports.SAFARI_CAPS = amendCapabilities(exports.GENERIC_CAPS, { browserName: 'Safari', 'appium:nativeWebTap': false, }); async function getTestAppCaps() { const testApp = await (0, setup_1.getTestAppPath)(); return amendCapabilities(exports.GENERIC_CAPS, { 'appium:app': testApp, }); } exports.TVOS_CAPS = amendCapabilities(exports.GENERIC_CAPS, { platformName: 'tvOS', 'appium:bundleId': 'com.apple.TVSettings', 'appium:deviceName': 'Apple TV', }); //# sourceMappingURL=desired.js.map