UNPKG

appium-chromium-driver

Version:

Appium driver for Chromium-based browsers that work with Chromedriver

71 lines 4.15 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getDefaultMsEdgeDriverDir = exports.getMsEdgeBrowserCandidates = exports.discoverMsEdgeBrowserVersion = exports.isMsEdge = exports.getDefaultDriverDir = void 0; exports.determineDriverExecutable = determineDriverExecutable; exports.determineMsEdgeDriverExecutable = determineDriverExecutable; const deployment_1 = require("./deployment"); const browser_identity_1 = require("./browser-identity"); Object.defineProperty(exports, "isMsEdge", { enumerable: true, get: function () { return browser_identity_1.isMsEdge; } }); const browser_candidates_1 = require("./browser-candidates"); Object.defineProperty(exports, "discoverMsEdgeBrowserVersion", { enumerable: true, get: function () { return browser_candidates_1.discoverBrowserVersion; } }); Object.defineProperty(exports, "getMsEdgeBrowserCandidates", { enumerable: true, get: function () { return browser_candidates_1.getBrowserCandidates; } }); const download_1 = require("./download"); const platform_1 = require("./platform"); const storage_1 = require("./storage"); Object.defineProperty(exports, "getDefaultDriverDir", { enumerable: true, get: function () { return storage_1.getDefaultDriverDir; } }); Object.defineProperty(exports, "getDefaultMsEdgeDriverDir", { enumerable: true, get: function () { return storage_1.getDefaultDriverDir; } }); const version_1 = require("./version"); /** * Determine the MSEdgeDriver executable path for the current session request. * It returns opts.executable if it is provided. * If not, it checks whether the browser is Microsoft Edge and returns undefined for non-Edge sessions. * For Edge sessions it prefers an existing executable from opts.executableDir, then falls back to * resolving, downloading, and deploying a compatible driver artifact when autodownload is enabled. * If any step fails for a Microsoft Edge session, it throws an error. * @param opts The options for resolving the driver executable. * @param browserVersionInfo The information about the browser version. * @param isAutodownloadEnabled Whether autodownload is enabled (default: true). * @returns The path to the driver executable, or undefined if it cannot be resolved. * @throws Error if the browser is Microsoft Edge but the executable cannot be resolved. */ async function determineDriverExecutable(opts, browserVersionInfo, isAutodownloadEnabled = true) { if (opts.executable) { return opts.executable; } if (!(0, browser_identity_1.isMsEdge)(opts.browserName)) { return undefined; } const executableName = (0, platform_1.getDriverExecutableName)(); if (opts.executableDir) { const explicitExecutable = await (0, deployment_1.locateDriverExecutableInDir)(opts.executableDir, executableName); if (explicitExecutable) { return explicitExecutable; } } if (!isAutodownloadEnabled) { return undefined; } const browserVersionStr = browserVersionInfo?.info?.Browser; if (!browserVersionStr) { throw new Error('Could not determine the installed Microsoft Edge version required for autodownload. ' + 'Provide ms:edgeOptions.binary or appium:executable.'); } const browserVersion = version_1.Version.from(browserVersionStr); const executableDir = opts.executableDir || (0, storage_1.getDefaultDriverDir)(); try { const driverVersion = await (0, download_1.resolveDriverVersionForBrowser)(browserVersion); const artifact = { archiveName: (0, platform_1.getPlatformConfig)().archiveName, executableName, version: driverVersion.toString(), }; return await (0, deployment_1.deployDriverArtifact)(artifact, executableDir, async (archivePath) => { await (0, download_1.fetchDriverArchive)(driverVersion, archivePath); }); } catch (err) { throw new Error(`Failed to resolve MSEdgeDriver executable for Edge version '${browserVersion}' ` + `in '${executableDir}': ${err.message}`, { cause: err }); } } //# sourceMappingURL=index.js.map