124 lines
18 KiB
JavaScript
124 lines
18 KiB
JavaScript
|
"use strict";
|
||
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
||
|
if (k2 === undefined) k2 = k;
|
||
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
||
|
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
||
|
desc = { enumerable: true, get: function() { return m[k]; } };
|
||
|
}
|
||
|
Object.defineProperty(o, k2, desc);
|
||
|
}) : (function(o, m, k, k2) {
|
||
|
if (k2 === undefined) k2 = k;
|
||
|
o[k2] = m[k];
|
||
|
}));
|
||
|
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
||
|
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
||
|
}) : function(o, v) {
|
||
|
o["default"] = v;
|
||
|
});
|
||
|
var __importStar = (this && this.__importStar) || function (mod) {
|
||
|
if (mod && mod.__esModule) return mod;
|
||
|
var result = {};
|
||
|
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
||
|
__setModuleDefault(result, mod);
|
||
|
return result;
|
||
|
};
|
||
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||
|
};
|
||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||
|
const runtime_1 = require("./errors/runtime");
|
||
|
const types_1 = require("./errors/types");
|
||
|
const content_types_1 = __importDefault(require("./assets/content-types"));
|
||
|
const option_names_1 = __importDefault(require("./configuration/option-names"));
|
||
|
const INJECTABLES = __importStar(require("./assets/injectables"));
|
||
|
const setup_sourcemap_support_1 = require("./utils/setup-sourcemap-support");
|
||
|
const lazyRequire = require('import-lazy')(require);
|
||
|
const hammerhead = lazyRequire('testcafe-hammerhead');
|
||
|
const loadAssets = lazyRequire('./load-assets');
|
||
|
const errorHandlers = lazyRequire('./utils/handle-errors');
|
||
|
const BrowserConnectionGateway = lazyRequire('./browser/connection/gateway');
|
||
|
const BrowserConnection = lazyRequire('./browser/connection');
|
||
|
const browserProviderPool = lazyRequire('./browser/provider/pool');
|
||
|
const CompilerHost = lazyRequire('./services/compiler/host');
|
||
|
const Runner = lazyRequire('./runner');
|
||
|
const LiveModeRunner = lazyRequire('./live/test-runner');
|
||
|
// NOTE: CoffeeScript can't be loaded lazily, because it will break stack traces
|
||
|
require('coffeescript');
|
||
|
class TestCafe {
|
||
|
constructor(configuration) {
|
||
|
(0, setup_sourcemap_support_1.setupSourceMapSupport)();
|
||
|
errorHandlers.registerErrorHandlers();
|
||
|
const { hostname, port1, port2, options } = configuration.startOptions;
|
||
|
this.closed = false;
|
||
|
this.proxy = new hammerhead.Proxy(hostname, port1, port2, options);
|
||
|
this.runners = [];
|
||
|
this.configuration = configuration;
|
||
|
this.browserConnectionGateway = new BrowserConnectionGateway(this.proxy, {
|
||
|
retryTestPages: configuration.getOption(option_names_1.default.retryTestPages),
|
||
|
proxyless: configuration.getOption(option_names_1.default.experimentalProxyless),
|
||
|
});
|
||
|
if (configuration.getOption(option_names_1.default.experimentalDebug)) {
|
||
|
const developmentMode = configuration.getOption(option_names_1.default.developmentMode);
|
||
|
const v8Flags = configuration.getOption(option_names_1.default.v8Flags);
|
||
|
this.compilerService = new CompilerHost({ developmentMode, v8Flags });
|
||
|
}
|
||
|
this._registerAssets(options.developmentMode);
|
||
|
}
|
||
|
_registerAssets(developmentMode) {
|
||
|
const { favIcon, coreScript, driverScript, uiScript, uiStyle, uiSprite, uiSpriteSvg, automationScript, legacyRunnerScript } = loadAssets(developmentMode);
|
||
|
this.proxy.GET(INJECTABLES.TESTCAFE_CORE, { content: coreScript, contentType: content_types_1.default.javascript });
|
||
|
this.proxy.GET(INJECTABLES.TESTCAFE_DRIVER, { content: driverScript, contentType: content_types_1.default.javascript });
|
||
|
this.proxy.GET(INJECTABLES.TESTCAFE_LEGACY_RUNNER, {
|
||
|
content: legacyRunnerScript,
|
||
|
contentType: content_types_1.default.javascript,
|
||
|
});
|
||
|
this.proxy.GET(INJECTABLES.TESTCAFE_AUTOMATION, { content: automationScript, contentType: content_types_1.default.javascript });
|
||
|
this.proxy.GET(INJECTABLES.TESTCAFE_UI, { content: uiScript, contentType: content_types_1.default.javascript });
|
||
|
this.proxy.GET(INJECTABLES.TESTCAFE_UI_SPRITE, { content: uiSprite, contentType: content_types_1.default.png });
|
||
|
this.proxy.GET(INJECTABLES.TESTCAFE_UI_SPRITE_SVG, { content: uiSpriteSvg, contentType: content_types_1.default.svg });
|
||
|
this.proxy.GET(INJECTABLES.DEFAULT_FAVICON_PATH, { content: favIcon, contentType: content_types_1.default.icon });
|
||
|
this.proxy.GET(INJECTABLES.TESTCAFE_UI_STYLES, {
|
||
|
content: uiStyle,
|
||
|
contentType: content_types_1.default.css,
|
||
|
isShadowUIStylesheet: true,
|
||
|
});
|
||
|
}
|
||
|
_createRunner(isLiveMode) {
|
||
|
const Ctor = isLiveMode ? LiveModeRunner : Runner;
|
||
|
const newRunner = new Ctor({
|
||
|
proxy: this.proxy,
|
||
|
browserConnectionGateway: this.browserConnectionGateway,
|
||
|
configuration: this.configuration.clone(option_names_1.default.hooks),
|
||
|
compilerService: this.compilerService,
|
||
|
});
|
||
|
this.runners.push(newRunner);
|
||
|
return newRunner;
|
||
|
}
|
||
|
// API
|
||
|
async createBrowserConnection() {
|
||
|
const browserInfo = await browserProviderPool.getBrowserInfo('remote');
|
||
|
return new BrowserConnection(this.browserConnectionGateway, browserInfo, true);
|
||
|
}
|
||
|
createRunner() {
|
||
|
return this._createRunner(false);
|
||
|
}
|
||
|
createLiveModeRunner() {
|
||
|
if (this.runners.some(runner => runner instanceof LiveModeRunner))
|
||
|
throw new runtime_1.GeneralError(types_1.RUNTIME_ERRORS.cannotCreateMultipleLiveModeRunners);
|
||
|
return this._createRunner(true);
|
||
|
}
|
||
|
async close() {
|
||
|
if (this.closed)
|
||
|
return;
|
||
|
this.closed = true;
|
||
|
await Promise.all(this.runners.map(runner => runner.stop()));
|
||
|
await browserProviderPool.dispose();
|
||
|
if (this.compilerService)
|
||
|
this.compilerService.stop();
|
||
|
await this.browserConnectionGateway.close();
|
||
|
this.proxy.close();
|
||
|
}
|
||
|
}
|
||
|
exports.default = TestCafe;
|
||
|
module.exports = exports.default;
|
||
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdGNhZmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdGVzdGNhZmUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDhDQUFnRDtBQUNoRCwwQ0FBZ0Q7QUFDaEQsMkVBQW1EO0FBQ25ELGdGQUF3RDtBQUN4RCxrRUFBb0Q7QUFDcEQsNkVBQXdFO0FBRXhFLE1BQU0sV0FBVyxHQUFnQixPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDakUsTUFBTSxVQUFVLEdBQWlCLFdBQVcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0FBQ3BFLE1BQU0sVUFBVSxHQUFpQixXQUFXLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDOUQsTUFBTSxhQUFhLEdBQWMsV0FBVyxDQUFDLHVCQUF1QixDQUFDLENBQUM7QUFDdEUsTUFBTSx3QkFBd0IsR0FBRyxXQUFXLENBQUMsOEJBQThCLENBQUMsQ0FBQztBQUM3RSxNQUFNLGlCQUFpQixHQUFVLFdBQVcsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0FBQ3JFLE1BQU0sbUJBQW1CLEdBQVEsV0FBVyxDQUFDLHlCQUF5QixDQUFDLENBQUM7QUFDeEUsTUFBTSxZQUFZLEdBQWUsV0FBVyxDQUFDLDBCQUEwQixDQUFDLENBQUM7QUFDekUsTUFBTSxNQUFNLEdBQXFCLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUN6RCxNQUFNLGNBQWMsR0FBYSxXQUFXLENBQUMsb0JBQW9CLENBQUMsQ0FBQztBQUVuRSxnRkFBZ0Y7QUFDaEYsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBRXhCLE1BQXFCLFFBQVE7SUFDekIsWUFBYSxhQUFhO1FBQ3RCLElBQUEsK0NBQXFCLEdBQUUsQ0FBQztRQUN4QixhQUFhLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUV0QyxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxF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
|