appium-chromium-driver
Version:
Appium driver for Chromium-based browsers that work with Chromedriver
71 lines • 4.15 kB
JavaScript
;
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