testcafe
Version:
Automated browser testing for the modern web development stack.
68 lines • 9.32 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const embedding_utils_1 = __importDefault(require("./embedding-utils"));
const exportable_lib_1 = __importDefault(require("./api/exportable-lib"));
const testcafe_configuration_1 = __importDefault(require("./configuration/testcafe-configuration"));
const option_names_1 = __importDefault(require("./configuration/option-names"));
const user_variables_1 = __importDefault(require("./api/user-variables"));
const utils_1 = require("./configuration/utils");
const get_testcafe_version_1 = __importDefault(require("./utils/get-testcafe-version"));
const debug_loggers_1 = require("./utils/debug-loggers");
const lazyRequire = require('import-lazy')(require);
const TestCafe = lazyRequire('./testcafe');
const setupExitHook = lazyRequire('async-exit-hook');
// API
async function getConfiguration(args) {
var _a;
let configuration;
if (args.length === 1 && typeof args[0] === 'object') {
configuration = new testcafe_configuration_1.default((_a = args[0]) === null || _a === void 0 ? void 0 : _a.configFile);
await configuration.init(args[0]);
}
else {
// NOTE: Positional arguments support is left only for backward compatibility.
// It should be removed in future TestCafe versions.
// All new APIs should be enabled through the configuration object in the upper clause.
// Please do not add new APIs here.
const [hostname, port1, port2, ssl, developmentMode, retryTestPages, cache, configFile] = args;
configuration = new testcafe_configuration_1.default(configFile);
await configuration.init({
hostname,
port1,
port2,
ssl,
developmentMode,
retryTestPages,
cache,
});
}
return configuration;
}
// API
async function createTestCafe(...args) {
(0, debug_loggers_1.versionLogger)((0, get_testcafe_version_1.default)());
const configuration = await getConfiguration(args);
const [port1, port2] = await Promise.all([
(0, utils_1.getValidPort)(configuration.getOption(option_names_1.default.port1)),
(0, utils_1.getValidPort)(configuration.getOption(option_names_1.default.port2)),
]);
const userVariablesOption = configuration.getOption(option_names_1.default.userVariables);
if (userVariablesOption)
user_variables_1.default.value = userVariablesOption;
configuration.mergeOptions({ port1, port2 });
const testcafe = new TestCafe(configuration);
setupExitHook(cb => testcafe.close().then(cb));
return testcafe;
}
// Embedding utils
createTestCafe.embeddingUtils = embedding_utils_1.default;
// Common API
Object.keys(exportable_lib_1.default).forEach(key => {
Object.defineProperty(createTestCafe, key, { get: () => exportable_lib_1.default[key] });
});
exports.default = createTestCafe;
module.exports = exports.default;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXguanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx3RUFBK0M7QUFDL0MsMEVBQWlEO0FBQ2pELG9HQUEyRTtBQUMzRSxnRkFBd0Q7QUFDeEQsMEVBQWlEO0FBQ2pELGlEQUFxRDtBQUNyRCx3RkFBOEQ7QUFDOUQseURBQXNEO0FBRXRELE1BQU0sV0FBVyxHQUFLLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN0RCxNQUFNLFFBQVEsR0FBUSxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDaEQsTUFBTSxhQUFhLEdBQUcsV0FBVyxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFFckQsTUFBTTtBQUNOLEtBQUssVUFBVSxnQkFBZ0IsQ0FBRSxJQUFJOztJQUNqQyxJQUFJLGFBQWEsQ0FBQztJQUVsQixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsRUFBRTtRQUNsRCxhQUFhLEdBQUcsSUFBSSxnQ0FBcUIsQ0FBQyxNQUFBLElBQUksQ0FBQyxDQUFDLENBQUMsMENBQUUsVUFBVSxDQUFDLENBQUM7UUFFL0QsTUFBTSxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ3JDO1NBQ0k7UUFDRCw4RUFBOEU7UUFDOUUsb0RBQW9EO1FBQ3BELHVGQUF1RjtRQUN2RixtQ0FBbUM7UUFDbkMsTUFBTSxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUM7UUFFL0YsYUFBYSxHQUFHLElBQUksZ0NBQXFCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFdEQsTUFBTSxhQUFhLENBQUMsSUFBSSxDQUFDO1lBQ3JCLFFBQVE7WUFDUixLQUFLO1lBQ0wsS0FBSztZQUNMLEdBQUc7WUFDSCxlQUFlO1lBQ2YsY0FBYztZQUNkLEtBQUs7U0FDUixDQUFDLENBQUM7S0FDTjtJQUVELE9BQU8sYUFBYSxDQUFDO0FBQ3pCLENBQUM7QUFFRCxNQUFNO0FBQ04sS0FBSyxVQUFVLGNBQWMsQ0FBRSxHQUFHLElBQUk7SUFDbEMsSUFBQSw2QkFBYSxFQUFDLElBQUEsOEJBQWtCLEdBQUUsQ0FBQyxDQUFDO0lBRXBDLE1BQU0sYUFBYSxHQUFHLE1BQU0sZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFbkQsTUFBTSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUM7UUFDckMsSUFBQSxvQkFBWSxFQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsc0JBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6RCxJQUFBLG9CQUFZLEVBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxzQkFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQzVELENBQUMsQ0FBQztJQUVILE1BQU0sbUJBQW1CLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxzQkFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBRWhGLElBQUksbUJBQW1CO1FBQ25CLHdCQUFhLENBQUMsS0FBSyxHQUFHLG1CQUFtQixDQUFDO0lBRTlDLGFBQWEsQ0FBQyxZQUFZLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUU3QyxNQUFNLFFBQVEsR0FBRyxJQUFJLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUU3QyxhQUFhLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFL0MsT0FBTyxRQUFRLENBQUM7QUFDcEIsQ0FBQztBQUVELGtCQUFrQjtBQUNsQixjQUFjLENBQUMsY0FBYyxHQUFHLHlCQUFjLENBQUM7QUFFL0MsYUFBYTtBQUNiLE1BQU0sQ0FBQyxJQUFJLENBQUMsd0JBQWEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtJQUNyQyxNQUFNLENBQUMsY0FBYyxDQUFDLGNBQWMsRUFBRSxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsd0JBQWEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDbEYsQ0FBQyxDQUFDLENBQUM7QUFFSCxrQkFBZSxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZW1iZWRkaW5nVXRpbHMgZnJvbSAnLi9lbWJlZGRpbmctdXRpbHMnO1xuaW1wb3J0IGV4cG9ydGFibGVMaWIgZnJvbSAnLi9hcGkvZXhwb3J0YWJsZS1saWInO1xuaW1wb3J0IFRlc3RDYWZlQ29uZmlndXJhdGlvbiBmcm9tICcuL2NvbmZpZ3VyYXRpb24vdGVzdGNhZmUtY29uZmlndXJhdGlvbic7XG5pbXBvcnQgT1BUSU9OX05BTUVTIGZyb20gJy4vY29uZmlndXJhdGlvbi9vcHRpb24tbmFtZXMnO1xuaW1wb3J0IHVzZXJWYXJpYWJsZXMgZnJvbSAnLi9hcGkvdXNlci12YXJpYWJsZXMnO1xuaW1wb3J0IHsgZ2V0VmFsaWRQb3J0IH0gZnJvbSAnLi9jb25maWd1cmF0aW9uL3V0aWxzJztcbmltcG9ydCBnZXRUZXN0Q2FmZVZlcnNpb24gZnJvbSAnLi91dGlscy9nZXQtdGVzdGNhZmUtdmVyc2lvbic7XG5pbXBvcnQgeyB2ZXJzaW9uTG9nZ2VyIH0gZnJvbSAnLi91dGlscy9kZWJ1Zy1sb2dnZXJzJztcblxuY29uc3QgbGF6eVJlcXVpcmUgICA9IHJlcXVpcmUoJ2ltcG9ydC1sYXp5JykocmVxdWlyZSk7XG5jb25zdCBUZXN0Q2FmZSAgICAgID0gbGF6eVJlcXVpcmUoJy4vdGVzdGNhZmUnKTtcbmNvbnN0IHNldHVwRXhpdEhvb2sgPSBsYXp5UmVxdWlyZSgnYXN5bmMtZXhpdC1ob29rJyk7XG5cbi8vIEFQSVxuYXN5bmMgZnVuY3Rpb24gZ2V0Q29uZmlndXJhdGlvbiAoYXJncykge1xuICAgIGxldCBjb25maWd1cmF0aW9uO1xuXG4gICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxICYmIHR5cGVvZiBhcmdzWzBdID09PSAnb2JqZWN0Jykge1xuICAgICAgICBjb25maWd1cmF0aW9uID0gbmV3IFRlc3RDYWZlQ29uZmlndXJhdGlvbihhcmdzWzBdPy5jb25maWdGaWxlKTtcblxuICAgICAgICBhd2FpdCBjb25maWd1cmF0aW9uLmluaXQoYXJnc1swXSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICAvLyBOT1RFOiBQb3NpdGlvbmFsIGFyZ3VtZW50cyBzdXBwb3J0IGlzIGxlZnQgb25seSBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS5cbiAgICAgICAgLy8gSXQgc2hvdWxkIGJlIHJlbW92ZWQgaW4gZnV0dXJlIFRlc3RDYWZlIHZlcnNpb25zLlxuICAgICAgICAvLyBBbGwgbmV3IEFQSXMgc2hvdWxkIGJlIGVuYWJsZWQgdGhyb3VnaCB0aGUgY29uZmlndXJhdGlvbiBvYmplY3QgaW4gdGhlIHVwcGVyIGNsYXVzZS5cbiAgICAgICAgLy8gUGxlYXNlIGRvIG5vdCBhZGQgbmV3IEFQSXMgaGVyZS5cbiAgICAgICAgY29uc3QgW2hvc3RuYW1lLCBwb3J0MSwgcG9ydDIsIHNzbCwgZGV2ZWxvcG1lbnRNb2RlLCByZXRyeVRlc3RQYWdlcywgY2FjaGUsIGNvbmZpZ0ZpbGVdID0gYXJncztcblxuICAgICAgICBjb25maWd1cmF0aW9uID0gbmV3IFRlc3RDYWZlQ29uZmlndXJhdGlvbihjb25maWdGaWxlKTtcblxuICAgICAgICBhd2FpdCBjb25maWd1cmF0aW9uLmluaXQoe1xuICAgICAgICAgICAgaG9zdG5hbWUsXG4gICAgICAgICAgICBwb3J0MSxcbiAgICAgICAgICAgIHBvcnQyLFxuICAgICAgICAgICAgc3NsLFxuICAgICAgICAgICAgZGV2ZWxvcG1lbnRNb2RlLFxuICAgICAgICAgICAgcmV0cnlUZXN0UGFnZXMsXG4gICAgICAgICAgICBjYWNoZSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247XG59XG5cbi8vIEFQSVxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlVGVzdENhZmUgKC4uLmFyZ3MpIHtcbiAgICB2ZXJzaW9uTG9nZ2VyKGdldFRlc3RDYWZlVmVyc2lvbigpKTtcblxuICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBhd2FpdCBnZXRDb25maWd1cmF0aW9uKGFyZ3MpO1xuXG4gICAgY29uc3QgW3BvcnQxLCBwb3J0Ml0gPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICAgIGdldFZhbGlkUG9ydChjb25maWd1cmF0aW9uLmdldE9wdGlvbihPUFRJT05fTkFNRVMucG9ydDEpKSxcbiAgICAgICAgZ2V0VmFsaWRQb3J0KGNvbmZpZ3VyYXRpb24uZ2V0T3B0aW9uKE9QVElPTl9OQU1FUy5wb3J0MikpLFxuICAgIF0pO1xuXG4gICAgY29uc3QgdXNlclZhcmlhYmxlc09wdGlvbiA9IGNvbmZpZ3VyYXRpb24uZ2V0T3B0aW9uKE9QVElPTl9OQU1FUy51c2VyVmFyaWFibGVzKTtcblxuICAgIGlmICh1c2VyVmFyaWFibGVzT3B0aW9uKVxuICAgICAgICB1c2VyVmFyaWFibGVzLnZhbHVlID0gdXNlclZhcmlhYmxlc09wdGlvbjtcblxuICAgIGNvbmZpZ3VyYXRpb24ubWVyZ2VPcHRpb25zKHsgcG9ydDEsIHBvcnQyIH0pO1xuXG4gICAgY29uc3QgdGVzdGNhZmUgPSBuZXcgVGVzdENhZmUoY29uZmlndXJhdGlvbik7XG5cbiAgICBzZXR1cEV4aXRIb29rKGNiID0+IHRlc3RjYWZlLmNsb3NlKCkudGhlbihjYikpO1xuXG4gICAgcmV0dXJuIHRlc3RjYWZlO1xufVxuXG4vLyBFbWJlZGRpbmcgdXRpbHNcbmNyZWF0ZVRlc3RDYWZlLmVtYmVkZGluZ1V0aWxzID0gZW1iZWRkaW5nVXRpbHM7XG5cbi8vIENvbW1vbiBBUElcbk9iamVjdC5rZXlzKGV4cG9ydGFibGVMaWIpLmZvckVhY2goa2V5ID0+IHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY3JlYXRlVGVzdENhZmUsIGtleSwgeyBnZXQ6ICgpID0+IGV4cG9ydGFibGVMaWJba2V5XSB9KTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBjcmVhdGVUZXN0Q2FmZTtcbiJdfQ==