"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const path_1 = __importDefault(require("path")); const mustache_1 = __importDefault(require("mustache")); const os_family_1 = __importDefault(require("os-family")); const exec_1 = require("../utils/exec"); const fs_exists_promised_1 = __importDefault(require("../utils/fs-exists-promised")); const errors_1 = require("../errors"); const debug_1 = __importDefault(require("debug")); const util_1 = require("util"); const LOGGER = debug_1.default('testcafe:browser-tools:open'); function log(data) { try { LOGGER(util_1.inspect(data, { isTestCafeInspect: true, compact: false })); } catch (e) { LOGGER(e.stack ? e.stack : String(e)); } } async function checkBrowserPath(browserInfo) { if (!browserInfo.path) { //NOTE: Path may be undefined when winOpenCmdTemplate is specified (e.g. MS Edge) if (browserInfo.winOpenCmdTemplate) return; throw new errors_1.BrowserPathNotSetError(); } var fileExists = await fs_exists_promised_1.default(browserInfo.path); if (!fileExists) throw new errors_1.UnableToRunBrowsersError({ path: browserInfo.path }); } function getWinOpenCommand(browserInfo, pageUrl) { if (browserInfo.winOpenCmdTemplate) { return mustache_1.default.render(browserInfo.winOpenCmdTemplate, { pageUrl: pageUrl }); } var browserDirPath = path_1.default.dirname(browserInfo.path); var browserExecFileName = path_1.default.basename(browserInfo.path); return `start /D "${browserDirPath}" .\\${browserExecFileName} ${browserInfo.cmd} ${pageUrl}`; } function getMacOpenCommand(browserInfo, pageUrl) { return mustache_1.default.render(browserInfo.macOpenCmdTemplate, { path: browserInfo.path, cmd: browserInfo.cmd, pageUrl: pageUrl }); } function getLinuxOpenCommand(browserInfo, pageUrl) { return `"${browserInfo.path}" ${browserInfo.cmd} "${pageUrl}" 0<&- >/dev/null 2>&1 &`; } var getOpenCommand = null; if (os_family_1.default.win) getOpenCommand = getWinOpenCommand; else if (os_family_1.default.mac) getOpenCommand = getMacOpenCommand; else if (os_family_1.default.linux) getOpenCommand = getLinuxOpenCommand; /** * Opens the web page in a new instance of the browser. * @function * @async * @name open * @param {BrowserInfo} browserInfo - Provides information on the browser where the web page should be opened. * @param {string} pageUrl - Specifies the web page URL. */ async function default_1(browserInfo, pageUrl) { await checkBrowserPath(browserInfo); if (!getOpenCommand) return; var command = getOpenCommand(browserInfo, pageUrl); try { log(command); await exec_1.exec(command); } catch (err) { throw new errors_1.UnableToRunBrowsersError({ path: browserInfo.path }); } } exports.default = default_1; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3Blbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvb3Blbi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGdEQUF3QjtBQUN4Qix3REFBZ0M7QUFDaEMsMERBQTJCO0FBQzNCLHdDQUFxQztBQUNyQyxxRkFBaUQ7QUFDakQsc0NBQTZFO0FBQzdFLGtEQUEwQjtBQUMxQiwrQkFBK0I7QUFFL0IsTUFBTSxNQUFNLEdBQUcsZUFBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7QUFFcEQsU0FBUyxHQUFHLENBQUUsSUFBSTtJQUNkLElBQUk7UUFDQSxNQUFNLENBQUMsY0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0tBQ3RFO0lBQ0QsT0FBTyxDQUFDLEVBQUU7UUFDTixNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDekM7QUFDTCxDQUFDO0FBRUQsS0FBSyxVQUFVLGdCQUFnQixDQUFFLFdBQVc7SUFDeEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUU7UUFDbkIsaUZBQWlGO1FBQ2pGLElBQUksV0FBVyxDQUFDLGtCQUFrQjtZQUM5QixPQUFPO1FBRVgsTUFBTSxJQUFJLCtCQUFzQixFQUFFLENBQUM7S0FDdEM7SUFFRCxJQUFJLFVBQVUsR0FBRyxNQUFNLDRCQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRWhELElBQUksQ0FBQyxVQUFVO1FBQ1gsTUFBTSxJQUFJLGlDQUF3QixDQUFDLEVBQUUsSUFBSSxFQUFFLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQ3ZFLENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUFFLFdBQVcsRUFBRSxPQUFPO0lBQzVDLElBQUksV0FBVyxDQUFDLGtCQUFrQixFQUFFO1FBQ2hDLE9BQU8sa0JBQVEsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLGtCQUFrQixFQUFFO1lBQ25ELE9BQU8sRUFBRSxPQUFPO1NBQ25CLENBQUMsQ0FBQztLQUNOO0lBRUQsSUFBSSxjQUFjLEdBQVEsY0FBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekQsSUFBSSxtQkFBbUIsR0FBRyxjQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUUxRCxPQUFPLGFBQWEsY0FBYyxRQUFRLG1CQUFtQixJQUFJLFdBQVcsQ0FBQyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7QUFDbEcsQ0FBQztBQUVELFNBQVMsaUJBQWlCLENBQUUsV0FBVyxFQUFFLE9BQU87SUFDNUMsT0FBTyxrQkFBUSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsa0JBQWtCLEVBQUU7UUFDbkQsSUFBSSxFQUFLLFdBQVcsQ0FBQyxJQUFJO1FBQ3pCLEdBQUcsRUFBTSxXQUFXLENBQUMsR0FBRztRQUN4QixPQUFPLEVBQUUsT0FBTztLQUNuQixDQUFDLENBQUM7QUFDUCxDQUFDO0FBRUQsU0FBUyxtQkFBbUIsQ0FBRSxXQUFXLEVBQUUsT0FBTztJQUM5QyxPQUFPLElBQUksV0FBVyxDQUFDLElBQUksS0FBSyxXQUFXLENBQUMsR0FBRyxLQUFLLE9BQU8sMEJBQTBCLENBQUM7QUFDMUYsQ0FBQztBQUVELElBQUksY0FBYyxHQUFHLElBQUksQ0FBQztBQUUxQixJQUFJLG1CQUFFLENBQUMsR0FBRztJQUNOLGNBQWMsR0FBRyxpQkFBaUIsQ0FBQztLQUNsQyxJQUFJLG1CQUFFLENBQUMsR0FBRztJQUNYLGNBQWMsR0FBRyxpQkFBaUIsQ0FBQztLQUNsQyxJQUFJLG1CQUFFLENBQUMsS0FBSztJQUNiLGNBQWMsR0FBRyxtQkFBbUIsQ0FBQztBQUV6Qzs7Ozs7OztHQU9HO0FBQ1ksS0FBSyxvQkFBVyxXQUFXLEVBQUUsT0FBTztJQUMvQyxNQUFNLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRXBDLElBQUksQ0FBQyxjQUFjO1FBQ2YsT0FBTztJQUVYLElBQUksT0FBTyxHQUFHLGNBQWMsQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFbkQsSUFBSTtRQUNBLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUViLE1BQU0sV0FBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQ3ZCO0lBQ0QsT0FBTyxHQUFHLEVBQUU7UUFDUixNQUFNLElBQUksaUNBQXdCLENBQUMsRUFBRSxJQUFJLEVBQUUsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7S0FDbEU7QUFDTCxDQUFDO0FBaEJELDRCQWdCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IE11c3RhY2hlIGZyb20gJ211c3RhY2hlJztcbmltcG9ydCBPUyBmcm9tICdvcy1mYW1pbHknO1xuaW1wb3J0IHsgZXhlYyB9IGZyb20gJy4uL3V0aWxzL2V4ZWMnO1xuaW1wb3J0IGV4aXN0cyBmcm9tICcuLi91dGlscy9mcy1leGlzdHMtcHJvbWlzZWQnO1xuaW1wb3J0IHsgQnJvd3NlclBhdGhOb3RTZXRFcnJvciwgVW5hYmxlVG9SdW5Ccm93c2Vyc0Vycm9yIH0gZnJvbSAnLi4vZXJyb3JzJztcbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgeyBpbnNwZWN0IH0gZnJvbSAndXRpbCc7XG5cbmNvbnN0IExPR0dFUiA9IGRlYnVnKCd0ZXN0Y2FmZTpicm93c2VyLXRvb2xzOm9wZW4nKTtcblxuZnVuY3Rpb24gbG9nIChkYXRhKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgTE9HR0VSKGluc3BlY3QoZGF0YSwgeyBpc1Rlc3RDYWZlSW5zcGVjdDogdHJ1ZSwgY29tcGFjdDogZmFsc2UgfSkpO1xuICAgIH1cbiAgICBjYXRjaCAoZSkge1xuICAgICAgICBMT0dHRVIoZS5zdGFjayA/IGUuc3RhY2sgOiBTdHJpbmcoZSkpO1xuICAgIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gY2hlY2tCcm93c2VyUGF0aCAoYnJvd3NlckluZm8pIHtcbiAgICBpZiAoIWJyb3dzZXJJbmZvLnBhdGgpIHtcbiAgICAgICAgLy9OT1RFOiBQYXRoIG1heSBiZSB1bmRlZmluZWQgd2hlbiB3aW5PcGVuQ21kVGVtcGxhdGUgaXMgc3BlY2lmaWVkIChlLmcuIE1TIEVkZ2UpXG4gICAgICAgIGlmIChicm93c2VySW5mby53aW5PcGVuQ21kVGVtcGxhdGUpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgdGhyb3cgbmV3IEJyb3dzZXJQYXRoTm90U2V0RXJyb3IoKTtcbiAgICB9XG5cbiAgICB2YXIgZmlsZUV4aXN0cyA9IGF3YWl0IGV4aXN0cyhicm93c2VySW5mby5wYXRoKTtcblxuICAgIGlmICghZmlsZUV4aXN0cylcbiAgICAgICAgdGhyb3cgbmV3IFVuYWJsZVRvUnVuQnJvd3NlcnNFcnJvcih7IHBhdGg6IGJyb3dzZXJJbmZvLnBhdGggfSk7XG59XG5cbmZ1bmN0aW9uIGdldFdpbk9wZW5Db21tYW5kIChicm93c2VySW5mbywgcGFnZVVybCkge1xuICAgIGlmIChicm93c2VySW5mby53aW5PcGVuQ21kVGVtcGxhdGUpIHtcbiAgICAgICAgcmV0dXJuIE11c3RhY2hlLnJlbmRlcihicm93c2VySW5mby53aW5PcGVuQ21kVGVtcGxhdGUsIHtcbiAgICAgICAgICAgIHBhZ2VVcmw6IHBhZ2VVcmxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdmFyIGJyb3dzZXJEaXJQYXRoICAgICAgPSBwYXRoLmRpcm5hbWUoYnJvd3NlckluZm8ucGF0aCk7XG4gICAgdmFyIGJyb3dzZXJFeGVjRmlsZU5hbWUgPSBwYXRoLmJhc2VuYW1lKGJyb3dzZXJJbmZvLnBhdGgpO1xuXG4gICAgcmV0dXJuIGBzdGFydCAvRCBcIiR7YnJvd3NlckRpclBhdGh9XCIgLlxcXFwke2Jyb3dzZXJFeGVjRmlsZU5hbWV9ICR7YnJvd3NlckluZm8uY21kfSAke3BhZ2VVcmx9YDtcbn1cblxuZnVuY3Rpb24gZ2V0TWFjT3BlbkNvbW1hbmQgKGJyb3dzZXJJbmZvLCBwYWdlVXJsKSB7XG4gICAgcmV0dXJuIE11c3RhY2hlLnJlbmRlcihicm93c2VySW5mby5tYWNPcGVuQ21kVGVtcGxhdGUsIHtcbiAgICAgICAgcGF0aDogICAgYnJvd3NlckluZm8ucGF0aCxcbiAgICAgICAgY21kOiAgICAgYnJvd3NlckluZm8uY21kLFxuICAgICAgICBwYWdlVXJsOiBwYWdlVXJsXG4gICAgfSk7XG59XG5cbmZ1bmN0aW9uIGdldExpbnV4T3BlbkNvbW1hbmQgKGJyb3dzZXJJbmZvLCBwYWdlVXJsKSB7XG4gICAgcmV0dXJuIGBcIiR7YnJvd3NlckluZm8ucGF0aH1cIiAke2Jyb3dzZXJJbmZvLmNtZH0gXCIke3BhZ2VVcmx9XCIgMDwmLSA+L2Rldi9udWxsIDI+JjEgJmA7XG59XG5cbnZhciBnZXRPcGVuQ29tbWFuZCA9IG51bGw7XG5cbmlmIChPUy53aW4pXG4gICAgZ2V0T3BlbkNvbW1hbmQgPSBnZXRXaW5PcGVuQ29tbWFuZDtcbmVsc2UgaWYgKE9TLm1hYylcbiAgICBnZXRPcGVuQ29tbWFuZCA9IGdldE1hY09wZW5Db21tYW5kO1xuZWxzZSBpZiAoT1MubGludXgpXG4gICAgZ2V0T3BlbkNvbW1hbmQgPSBnZXRMaW51eE9wZW5Db21tYW5kO1xuXG4vKipcbiAqIE9wZW5zIHRoZSB3ZWIgcGFnZSBpbiBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgYnJvd3Nlci5cbiAqIEBmdW5jdGlvblxuICogQGFzeW5jXG4gKiBAbmFtZSBvcGVuXG4gKiBAcGFyYW0ge0Jyb3dzZXJJbmZvfSBicm93c2VySW5mbyAtIFByb3ZpZGVzIGluZm9ybWF0aW9uIG9uIHRoZSBicm93c2VyIHdoZXJlIHRoZSB3ZWIgcGFnZSBzaG91bGQgYmUgb3BlbmVkLlxuICogQHBhcmFtIHtzdHJpbmd9IHBhZ2VVcmwgLSBTcGVjaWZpZXMgdGhlIHdlYiBwYWdlIFVSTC5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gKGJyb3dzZXJJbmZvLCBwYWdlVXJsKSB7XG4gICAgYXdhaXQgY2hlY2tCcm93c2VyUGF0aChicm93c2VySW5mbyk7XG5cbiAgICBpZiAoIWdldE9wZW5Db21tYW5kKVxuICAgICAgICByZXR1cm47XG5cbiAgICB2YXIgY29tbWFuZCA9IGdldE9wZW5Db21tYW5kKGJyb3dzZXJJbmZvLCBwYWdlVXJsKTtcblxuICAgIHRyeSB7XG4gICAgICAgIGxvZyhjb21tYW5kKTtcblxuICAgICAgICBhd2FpdCBleGVjKGNvbW1hbmQpO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHRocm93IG5ldyBVbmFibGVUb1J1bkJyb3dzZXJzRXJyb3IoeyBwYXRoOiBicm93c2VySW5mby5wYXRoIH0pO1xuICAgIH1cbn1cbiJdfQ==