Innovenergy_trunk/frontend/node_modules/testcafe/lib/test-run/session-controller.js

123 lines
16 KiB
JavaScript
Raw Normal View History

"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 testcafe_hammerhead_1 = require("testcafe-hammerhead");
const _1 = __importDefault(require("./"));
const ACTIVE_SESSIONS_MAP = {};
const UPLOADS_DIR_NAME = '_uploads_';
// NOTE: Proxyless cookie implementation doesn't require client-server communication.
// This stub was created to reduce conditional logic in connected classes.
class ProxylessCookieStub {
getClientString() {
return '';
}
takePendingSyncCookies() {
return [];
}
}
class SessionController extends testcafe_hammerhead_1.Session {
constructor(uploadRoots, options) {
super(uploadRoots, options);
this.currentTestRun = null;
}
// Hammerhead payload
async getPayloadScript() {
return this.currentTestRun.getPayloadScript();
}
async getIframePayloadScript() {
return this.currentTestRun.getIframePayloadScript();
}
// Hammerhead handlers
handleServiceMessage(msg, serverInfo) {
if (this.currentTestRun[msg.cmd])
return super.handleServiceMessage.call(this.currentTestRun, msg, serverInfo);
return super.handleServiceMessage(msg, serverInfo);
}
getAuthCredentials() {
return this.currentTestRun.getAuthCredentials();
}
handleFileDownload() {
return this.currentTestRun.handleFileDownload();
}
handleAttachment(data) {
return this.currentTestRun.handleAttachment(data);
}
handlePageError(ctx, err) {
return this.currentTestRun.handlePageError(ctx, err);
}
createCookies() {
return this.options.proxyless ? new ProxylessCookieStub() : super.createCookies();
}
// API
static getSession(testRun) {
let sessionInfo = ACTIVE_SESSIONS_MAP[testRun.browserConnection.id];
if (!sessionInfo || !testRun.disablePageReloads) {
if (sessionInfo && sessionInfo.url)
SessionController.closeSession(testRun);
let session = null;
if (testRun.test.isLegacy)
session = testRun;
else {
const fixtureDir = path_1.default.dirname(testRun.test.fixture.path);
const uploadRoots = [
path_1.default.resolve(UPLOADS_DIR_NAME),
path_1.default.resolve(fixtureDir, UPLOADS_DIR_NAME),
fixtureDir,
];
const options = {
disablePageCaching: testRun.disablePageCaching,
allowMultipleWindows: _1.default.isMultipleWindowsAllowed(testRun),
requestTimeout: testRun.requestTimeout,
proxyless: testRun.opts.proxyless,
};
if (options.allowMultipleWindows)
options.windowId = testRun.browserConnection.activeWindowId;
session = new SessionController(uploadRoots, options);
session.currentTestRun = testRun;
}
sessionInfo = {
session: session,
proxy: null,
url: null,
};
ACTIVE_SESSIONS_MAP[testRun.browserConnection.id] = sessionInfo;
}
else if (!testRun.test.isLegacy)
sessionInfo.session.currentTestRun = testRun;
return sessionInfo.session;
}
static getSessionUrl(testRun, proxy) {
let sessionInfo = ACTIVE_SESSIONS_MAP[testRun.browserConnection.id];
if (!sessionInfo || testRun.test.isLegacy) {
SessionController.getSession(testRun);
sessionInfo = ACTIVE_SESSIONS_MAP[testRun.browserConnection.id];
}
if (!sessionInfo.url) {
const pageUrl = testRun.test.pageUrl;
const externalProxyHost = testRun.opts.proxy;
let externalProxySettings = null;
if (externalProxyHost) {
externalProxySettings = {
url: externalProxyHost,
bypassRules: testRun.opts.proxyBypass,
};
}
sessionInfo.proxy = proxy;
sessionInfo.url = proxy.openSession(pageUrl, sessionInfo.session, externalProxySettings);
}
return sessionInfo.url;
}
static closeSession(testRun) {
const sessionInfo = ACTIVE_SESSIONS_MAP[testRun.browserConnection.id];
if (!sessionInfo || !sessionInfo.url || !sessionInfo.proxy)
return;
sessionInfo.proxy.closeSession(sessionInfo.session);
delete ACTIVE_SESSIONS_MAP[testRun.browserConnection.id];
}
}
exports.default = SessionController;
module.exports = exports.default;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi1jb250cm9sbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rlc3QtcnVuL3Nlc3Npb24tY29udHJvbGxlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGdEQUF3QjtBQUN4Qiw2REFBOEM7QUFDOUMsMENBQXlCO0FBR3pCLE1BQU0sbUJBQW1CLEdBQUcsRUFBRSxDQUFDO0FBQy9CLE1BQU0sZ0JBQWdCLEdBQUcsV0FBVyxDQUFDO0FBRXJDLHFGQUFxRjtBQUNyRiwwRUFBMEU7QUFDMUUsTUFBTSxtQkFBbUI7SUFDckIsZUFBZTtRQUNYLE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVELHNCQUFzQjtRQUNsQixPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7Q0FDSjtBQUVELE1BQXFCLGlCQUFrQixTQUFRLDZCQUFPO0lBQ2xELFlBQWEsV0FBVyxFQUFFLE9BQU87UUFDN0IsS0FBSyxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUU1QixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRUQscUJBQXFCO0lBQ3JCLEtBQUssQ0FBQyxnQkFBZ0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDbEQsQ0FBQztJQUVELEtBQUssQ0FBQyxzQkFBc0I7UUFDeEIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDeEQsQ0FBQztJQUdELHNCQUFzQjtJQUN0QixvQkFBb0IsQ0FBRSxHQUFHLEVBQUUsVUFBVTtRQUNqQyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztZQUM1QixPQUFPLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFakYsT0FBTyxLQUFLLENB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