UNPKG

testcafe

Version:

Automated browser testing for the modern web development stack.

66 lines 8.26 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const pinkie_1 = __importDefault(require("pinkie")); const runtime_1 = require("./errors/runtime"); const types_1 = require("./errors/types"); 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 lazyRequire = require('import-lazy')(require); const TestCafe = lazyRequire('./testcafe'); const endpointUtils = lazyRequire('endpoint-utils'); const setupExitHook = lazyRequire('async-exit-hook'); // Validations async function getValidHostname(hostname) { if (hostname) { const valid = await endpointUtils.isMyHostname(hostname); if (!valid) throw new runtime_1.GeneralError(types_1.RUNTIME_ERRORS.invalidHostname, hostname); } else hostname = endpointUtils.getIPAddress(); return hostname; } async function getValidPort(port) { if (port) { const isFree = await endpointUtils.isFreePort(port); if (!isFree) throw new runtime_1.GeneralError(types_1.RUNTIME_ERRORS.portIsNotFree, port); } else port = await endpointUtils.getFreePort(); return port; } // API async function createTestCafe(hostname, port1, port2, sslOptions, developmentMode, retryTestPages) { const configuration = new testcafe_configuration_1.default(); await configuration.init({ hostname, port1, port2, ssl: sslOptions, developmentMode, retryTestPages }); [hostname, port1, port2] = await pinkie_1.default.all([ getValidHostname(configuration.getOption('hostname')), getValidPort(configuration.getOption('port1')), getValidPort(configuration.getOption('port2')) ]); configuration.mergeOptions({ hostname, 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXguanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxvREFBNkI7QUFDN0IsOENBQWdEO0FBQ2hELDBDQUFnRDtBQUNoRCx3RUFBK0M7QUFDL0MsMEVBQWlEO0FBQ2pELG9HQUEyRTtBQUUzRSxNQUFNLFdBQVcsR0FBSyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDdEQsTUFBTSxRQUFRLEdBQVEsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQ2hELE1BQU0sYUFBYSxHQUFHLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBQ3BELE1BQU0sYUFBYSxHQUFHLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBRXJELGNBQWM7QUFDZCxLQUFLLFVBQVUsZ0JBQWdCLENBQUUsUUFBUTtJQUNyQyxJQUFJLFFBQVEsRUFBRTtRQUNWLE1BQU0sS0FBSyxHQUFHLE1BQU0sYUFBYSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUV6RCxJQUFJLENBQUMsS0FBSztZQUNOLE1BQU0sSUFBSSxzQkFBWSxDQUFDLHNCQUFjLENBQUMsZUFBZSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0tBQ3hFOztRQUVHLFFBQVEsR0FBRyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFNUMsT0FBTyxRQUFRLENBQUM7QUFDcEIsQ0FBQztBQUVELEtBQUssVUFBVSxZQUFZLENBQUUsSUFBSTtJQUM3QixJQUFJLElBQUksRUFBRTtRQUNOLE1BQU0sTUFBTSxHQUFHLE1BQU0sYUFBYSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVwRCxJQUFJLENBQUMsTUFBTTtZQUNQLE1BQU0sSUFBSSxzQkFBWSxDQUFDLHNCQUFjLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQ2xFOztRQUVHLElBQUksR0FBRyxNQUFNLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUU3QyxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDO0FBRUQsTUFBTTtBQUNOLEtBQUssVUFBVSxjQUFjLENBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxjQUFjO0lBQzlGLE1BQU0sYUFBYSxHQUFHLElBQUksZ0NBQXFCLEVBQUUsQ0FBQztJQUVsRCxNQUFNLGFBQWEsQ0FBQyxJQUFJLENBQUM7UUFDckIsUUFBUTtRQUNSLEtBQUs7UUFDTCxLQUFLO1FBQ0wsR0FBRyxFQUFFLFVBQVU7UUFDZixlQUFlO1FBQ2YsY0FBYztLQUNqQixDQUFDLENBQUM7SUFFSCxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEdBQUcsTUFBTSxnQkFBTyxDQUFDLEdBQUcsQ0FBQztRQUN6QyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3JELFlBQVksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlDLFlBQVksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQ2pELENBQUMsQ0FBQztJQUVILGFBQWEsQ0FBQyxZQUFZLENBQUMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFFdkQsTUFBTSxRQUFRLEdBQUcsSUFBSSxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7SUFFN0MsYUFBYSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRS9DLE9BQU8sUUFBUSxDQUFDO0FBQ3BCLENBQUM7QUFFRCxrQkFBa0I7QUFDbEIsY0FBYyxDQUFDLGNBQWMsR0FBRyx5QkFBYyxDQUFDO0FBRS9DLGFBQWE7QUFDYixNQUFNLENBQUMsSUFBSSxDQUFDLHdCQUFhLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7SUFDckMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxjQUFjLEVBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLHdCQUFhLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2xGLENBQUMsQ0FBQyxDQUFDO0FBRUgsa0JBQWUsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFByb21pc2UgZnJvbSAncGlua2llJztcbmltcG9ydCB7IEdlbmVyYWxFcnJvciB9IGZyb20gJy4vZXJyb3JzL3J1bnRpbWUnO1xuaW1wb3J0IHsgUlVOVElNRV9FUlJPUlMgfSBmcm9tICcuL2Vycm9ycy90eXBlcyc7XG5pbXBvcnQgZW1iZWRkaW5nVXRpbHMgZnJvbSAnLi9lbWJlZGRpbmctdXRpbHMnO1xuaW1wb3J0IGV4cG9ydGFibGVMaWIgZnJvbSAnLi9hcGkvZXhwb3J0YWJsZS1saWInO1xuaW1wb3J0IFRlc3RDYWZlQ29uZmlndXJhdGlvbiBmcm9tICcuL2NvbmZpZ3VyYXRpb24vdGVzdGNhZmUtY29uZmlndXJhdGlvbic7XG5cbmNvbnN0IGxhenlSZXF1aXJlICAgPSByZXF1aXJlKCdpbXBvcnQtbGF6eScpKHJlcXVpcmUpO1xuY29uc3QgVGVzdENhZmUgICAgICA9IGxhenlSZXF1aXJlKCcuL3Rlc3RjYWZlJyk7XG5jb25zdCBlbmRwb2ludFV0aWxzID0gbGF6eVJlcXVpcmUoJ2VuZHBvaW50LXV0aWxzJyk7XG5jb25zdCBzZXR1cEV4aXRIb29rID0gbGF6eVJlcXVpcmUoJ2FzeW5jLWV4aXQtaG9vaycpO1xuXG4vLyBWYWxpZGF0aW9uc1xuYXN5bmMgZnVuY3Rpb24gZ2V0VmFsaWRIb3N0bmFtZSAoaG9zdG5hbWUpIHtcbiAgICBpZiAoaG9zdG5hbWUpIHtcbiAgICAgICAgY29uc3QgdmFsaWQgPSBhd2FpdCBlbmRwb2ludFV0aWxzLmlzTXlIb3N0bmFtZShob3N0bmFtZSk7XG5cbiAgICAgICAgaWYgKCF2YWxpZClcbiAgICAgICAgICAgIHRocm93IG5ldyBHZW5lcmFsRXJyb3IoUlVOVElNRV9FUlJPUlMuaW52YWxpZEhvc3RuYW1lLCBob3N0bmFtZSk7XG4gICAgfVxuICAgIGVsc2VcbiAgICAgICAgaG9zdG5hbWUgPSBlbmRwb2ludFV0aWxzLmdldElQQWRkcmVzcygpO1xuXG4gICAgcmV0dXJuIGhvc3RuYW1lO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRWYWxpZFBvcnQgKHBvcnQpIHtcbiAgICBpZiAocG9ydCkge1xuICAgICAgICBjb25zdCBpc0ZyZWUgPSBhd2FpdCBlbmRwb2ludFV0aWxzLmlzRnJlZVBvcnQocG9ydCk7XG5cbiAgICAgICAgaWYgKCFpc0ZyZWUpXG4gICAgICAgICAgICB0aHJvdyBuZXcgR2VuZXJhbEVycm9yKFJVTlRJTUVfRVJST1JTLnBvcnRJc05vdEZyZWUsIHBvcnQpO1xuICAgIH1cbiAgICBlbHNlXG4gICAgICAgIHBvcnQgPSBhd2FpdCBlbmRwb2ludFV0aWxzLmdldEZyZWVQb3J0KCk7XG5cbiAgICByZXR1cm4gcG9ydDtcbn1cblxuLy8gQVBJXG5hc3luYyBmdW5jdGlvbiBjcmVhdGVUZXN0Q2FmZSAoaG9zdG5hbWUsIHBvcnQxLCBwb3J0Miwgc3NsT3B0aW9ucywgZGV2ZWxvcG1lbnRNb2RlLCByZXRyeVRlc3RQYWdlcykge1xuICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBuZXcgVGVzdENhZmVDb25maWd1cmF0aW9uKCk7XG5cbiAgICBhd2FpdCBjb25maWd1cmF0aW9uLmluaXQoe1xuICAgICAgICBob3N0bmFtZSxcbiAgICAgICAgcG9ydDEsXG4gICAgICAgIHBvcnQyLFxuICAgICAgICBzc2w6IHNzbE9wdGlvbnMsXG4gICAgICAgIGRldmVsb3BtZW50TW9kZSxcbiAgICAgICAgcmV0cnlUZXN0UGFnZXNcbiAgICB9KTtcblxuICAgIFtob3N0bmFtZSwgcG9ydDEsIHBvcnQyXSA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgICAgZ2V0VmFsaWRIb3N0bmFtZShjb25maWd1cmF0aW9uLmdldE9wdGlvbignaG9zdG5hbWUnKSksXG4gICAgICAgIGdldFZhbGlkUG9ydChjb25maWd1cmF0aW9uLmdldE9wdGlvbigncG9ydDEnKSksXG4gICAgICAgIGdldFZhbGlkUG9ydChjb25maWd1cmF0aW9uLmdldE9wdGlvbigncG9ydDInKSlcbiAgICBdKTtcblxuICAgIGNvbmZpZ3VyYXRpb24ubWVyZ2VPcHRpb25zKHsgaG9zdG5hbWUsIHBvcnQxLCBwb3J0MiB9KTtcblxuICAgIGNvbnN0IHRlc3RjYWZlID0gbmV3IFRlc3RDYWZlKGNvbmZpZ3VyYXRpb24pO1xuXG4gICAgc2V0dXBFeGl0SG9vayhjYiA9PiB0ZXN0Y2FmZS5jbG9zZSgpLnRoZW4oY2IpKTtcblxuICAgIHJldHVybiB0ZXN0Y2FmZTtcbn1cblxuLy8gRW1iZWRkaW5nIHV0aWxzXG5jcmVhdGVUZXN0Q2FmZS5lbWJlZGRpbmdVdGlscyA9IGVtYmVkZGluZ1V0aWxzO1xuXG4vLyBDb21tb24gQVBJXG5PYmplY3Qua2V5cyhleHBvcnRhYmxlTGliKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNyZWF0ZVRlc3RDYWZlLCBrZXksIHsgZ2V0OiAoKSA9PiBleHBvcnRhYmxlTGliW2tleV0gfSk7XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgY3JlYXRlVGVzdENhZmU7XG4iXX0=