testplane
Version:
Tests framework based on mocha and wdio
63 lines • 2.63 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.attachToBrowser = void 0;
const config_1 = require("../../config");
const existing_browser_1 = require("./../existing-browser");
const calibrator_1 = require("./../calibrator");
const events_1 = require("../../events");
const types_1 = require("./../types");
const browser_1 = require("../../utils/browser");
const fs_extra_1 = __importDefault(require("fs-extra"));
const globalFilesToRemove_1 = require("../../globalFilesToRemove");
async function attachToBrowser(session) {
const browserName = session.sessionCaps?.browserName || types_1.BrowserName.CHROME;
const normalizedBrowserName = (0, browser_1.getNormalizedBrowserName)(browserName);
if (!normalizedBrowserName) {
throw new Error([
`Running browser "${browserName}" is unsupported`,
`Supported browsers: "chrome", "firefox", "safari", "edge"`,
].join("\n"));
}
const browserConfig = {
desiredCapabilities: {
browserName,
},
};
const filesToRemove = [];
const config = new config_1.Config({
browsers: {
[browserName]: browserConfig,
},
});
if (!process.env.WDIO_LOG_LEVEL) {
process.env.WDIO_LOG_LEVEL = config.system.debug ? "trace" : "error";
}
const emitter = new events_1.AsyncEmitter();
emitter.on(events_1.MasterEvents.ADD_FILE_TO_REMOVE, (path) => {
filesToRemove.push(path);
});
const existingBrowser = new existing_browser_1.ExistingBrowser(config, {
id: browserName,
version: session.sessionCaps?.browserVersion,
emitter,
state: {},
});
const calibrator = new calibrator_1.Calibrator();
await existingBrowser.init(session, calibrator);
existingBrowser.publicAPI.overwriteCommand("deleteSession", async (originalCommand) => {
await originalCommand({ shutdownDriver: true });
// force kill driver process by pid, because { shutdownDriver: true } in prev command doesn't work :(
if (session.driverPid) {
process.kill(session.driverPid, 9);
}
if (filesToRemove.length > 0 && !(0, globalFilesToRemove_1.hasGlobalFilesToRemove)()) {
await Promise.all(filesToRemove.map(path => fs_extra_1.default.remove(path)));
}
});
return existingBrowser.publicAPI;
}
exports.attachToBrowser = attachToBrowser;
//# sourceMappingURL=attachToBrowser.js.map