UNPKG

9.62 kBJavaScriptView Raw
1"use strict";
2var __importDefault = (this && this.__importDefault) || function (mod) {
3 return (mod && mod.__esModule) ? mod : { "default": mod };
4};
5Object.defineProperty(exports, "__esModule", { value: true });
6const runtime_1 = require("./errors/runtime");
7const types_1 = require("./errors/types");
8const embedding_utils_1 = __importDefault(require("./embedding-utils"));
9const exportable_lib_1 = __importDefault(require("./api/exportable-lib"));
10const testcafe_configuration_1 = __importDefault(require("./configuration/testcafe-configuration"));
11const option_names_1 = __importDefault(require("./configuration/option-names"));
12const lazyRequire = require('import-lazy')(require);
13const TestCafe = lazyRequire('./testcafe');
14const endpointUtils = lazyRequire('endpoint-utils');
15const setupExitHook = lazyRequire('async-exit-hook');
16// Validations
17async function getValidHostname(hostname) {
18 if (hostname) {
19 const valid = await endpointUtils.isMyHostname(hostname);
20 if (!valid)
21 throw new runtime_1.GeneralError(types_1.RUNTIME_ERRORS.invalidHostname, hostname);
22 }
23 else
24 hostname = endpointUtils.getIPAddress();
25 return hostname;
26}
27async function getValidPort(port) {
28 if (port) {
29 const isFree = await endpointUtils.isFreePort(port);
30 if (!isFree)
31 throw new runtime_1.GeneralError(types_1.RUNTIME_ERRORS.portIsNotFree, port);
32 }
33 else
34 port = await endpointUtils.getFreePort();
35 return port;
36}
37// API
38async function getConfiguration(args) {
39 const configuration = new testcafe_configuration_1.default();
40 if (args.length === 1 && typeof args[0] === 'object')
41 await configuration.init(args[0]);
42 else {
43 const [hostname, port1, port2, ssl, developmentMode, retryTestPages] = args;
44 await configuration.init({
45 hostname,
46 port1,
47 port2,
48 ssl,
49 developmentMode,
50 retryTestPages
51 });
52 }
53 return configuration;
54}
55// API
56async function createTestCafe(...args) {
57 const configuration = await getConfiguration(args);
58 const [hostname, port1, port2] = await Promise.all([
59 getValidHostname(configuration.getOption(option_names_1.default.hostname)),
60 getValidPort(configuration.getOption(option_names_1.default.port1)),
61 getValidPort(configuration.getOption(option_names_1.default.port2))
62 ]);
63 configuration.mergeOptions({ hostname, port1, port2 });
64 const testcafe = new TestCafe(configuration);
65 setupExitHook(cb => testcafe.close().then(cb));
66 return testcafe;
67}
68// Embedding utils
69createTestCafe.embeddingUtils = embedding_utils_1.default;
70// Common API
71Object.keys(exportable_lib_1.default).forEach(key => {
72 Object.defineProperty(createTestCafe, key, { get: () => exportable_lib_1.default[key] });
73});
74exports.default = createTestCafe;
75module.exports = exports.default;
76//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXguanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw4Q0FBZ0Q7QUFDaEQsMENBQWdEO0FBQ2hELHdFQUErQztBQUMvQywwRUFBaUQ7QUFDakQsb0dBQTJFO0FBQzNFLGdGQUF3RDtBQUV4RCxNQUFNLFdBQVcsR0FBSyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDdEQsTUFBTSxRQUFRLEdBQVEsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQ2hELE1BQU0sYUFBYSxHQUFHLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBQ3BELE1BQU0sYUFBYSxHQUFHLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBRXJELGNBQWM7QUFDZCxLQUFLLFVBQVUsZ0JBQWdCLENBQUUsUUFBUTtJQUNyQyxJQUFJLFFBQVEsRUFBRTtRQUNWLE1BQU0sS0FBSyxHQUFHLE1BQU0sYUFBYSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUV6RCxJQUFJLENBQUMsS0FBSztZQUNOLE1BQU0sSUFBSSxzQkFBWSxDQUFDLHNCQUFjLENBQUMsZUFBZSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0tBQ3hFOztRQUVHLFFBQVEsR0FBRyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFNUMsT0FBTyxRQUFRLENBQUM7QUFDcEIsQ0FBQztBQUVELEtBQUssVUFBVSxZQUFZLENBQUUsSUFBSTtJQUM3QixJQUFJLElBQUksRUFBRTtRQUNOLE1BQU0sTUFBTSxHQUFHLE1BQU0sYUFBYSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVwRCxJQUFJLENBQUMsTUFBTTtZQUNQLE1BQU0sSUFBSSxzQkFBWSxDQUFDLHNCQUFjLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQ2xFOztRQUVHLElBQUksR0FBRyxNQUFNLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUU3QyxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDO0FBRUQsTUFBTTtBQUNOLEtBQUssVUFBVSxnQkFBZ0IsQ0FBRSxJQUFJO0lBQ2pDLE1BQU0sYUFBYSxHQUFHLElBQUksZ0NBQXFCLEVBQUUsQ0FBQztJQUVsRCxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVE7UUFDaEQsTUFBTSxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2pDO1FBQ0QsTUFBTSxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxlQUFlLEVBQUUsY0FBYyxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBRTVFLE1BQU0sYUFBYSxDQUFDLElBQUksQ0FBQztZQUNyQixRQUFRO1lBQ1IsS0FBSztZQUNMLEtBQUs7WUFDTCxHQUFHO1lBQ0gsZUFBZTtZQUNmLGNBQWM7U0FDakIsQ0FBQyxDQUFDO0tBQ047SUFFRCxPQUFPLGFBQWEsQ0FBQztBQUN6QixDQUFDO0FBRUQsTUFBTTtBQUNOLEtBQUssVUFBVSxjQUFjLENBQUUsR0FBRyxJQUFJO0lBQ2xDLE1BQU0sYUFBYSxHQUFHLE1BQU0sZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFbkQsTUFBTSxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDO1FBQy9DLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsc0JBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoRSxZQUFZLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxzQkFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pELFlBQVksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLHNCQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDNUQsQ0FBQyxDQUFDO0lBRUgsYUFBYSxDQUFDLFlBQVksQ0FBQyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUV2RCxNQUFNLFFBQVEsR0FBRyxJQUFJLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUU3QyxhQUFhLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFL0MsT0FBTyxRQUFRLENBQUM7QUFDcEIsQ0FBQztBQUVELGtCQUFrQjtBQUNsQixjQUFjLENBQUMsY0FBYyxHQUFHLHlCQUFjLENBQUM7QUFFL0MsYUFBYTtBQUNiLE1BQU0sQ0FBQyxJQUFJLENBQUMsd0JBQWEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtJQUNyQyxNQUFNLENBQUMsY0FBYyxDQUFDLGNBQWMsRUFBRSxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsd0JBQWEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDbEYsQ0FBQyxDQUFDLENBQUM7QUFFSCxrQkFBZSxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHZW5lcmFsRXJyb3IgfSBmcm9tICcuL2Vycm9ycy9ydW50aW1lJztcbmltcG9ydCB7IFJVTlRJTUVfRVJST1JTIH0gZnJvbSAnLi9lcnJvcnMvdHlwZXMnO1xuaW1wb3J0IGVtYmVkZGluZ1V0aWxzIGZyb20gJy4vZW1iZWRkaW5nLXV0aWxzJztcbmltcG9ydCBleHBvcnRhYmxlTGliIGZyb20gJy4vYXBpL2V4cG9ydGFibGUtbGliJztcbmltcG9ydCBUZXN0Q2FmZUNvbmZpZ3VyYXRpb24gZnJvbSAnLi9jb25maWd1cmF0aW9uL3Rlc3RjYWZlLWNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IE9QVElPTl9OQU1FUyBmcm9tICcuL2NvbmZpZ3VyYXRpb24vb3B0aW9uLW5hbWVzJztcblxuY29uc3QgbGF6eVJlcXVpcmUgICA9IHJlcXVpcmUoJ2ltcG9ydC1sYXp5JykocmVxdWlyZSk7XG5jb25zdCBUZXN0Q2FmZSAgICAgID0gbGF6eVJlcXVpcmUoJy4vdGVzdGNhZmUnKTtcbmNvbnN0IGVuZHBvaW50VXRpbHMgPSBsYXp5UmVxdWlyZSgnZW5kcG9pbnQtdXRpbHMnKTtcbmNvbnN0IHNldHVwRXhpdEhvb2sgPSBsYXp5UmVxdWlyZSgnYXN5bmMtZXhpdC1ob29rJyk7XG5cbi8vIFZhbGlkYXRpb25zXG5hc3luYyBmdW5jdGlvbiBnZXRWYWxpZEhvc3RuYW1lIChob3N0bmFtZSkge1xuICAgIGlmIChob3N0bmFtZSkge1xuICAgICAgICBjb25zdCB2YWxpZCA9IGF3YWl0IGVuZHBvaW50VXRpbHMuaXNNeUhvc3RuYW1lKGhvc3RuYW1lKTtcblxuICAgICAgICBpZiAoIXZhbGlkKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEdlbmVyYWxFcnJvcihSVU5USU1FX0VSUk9SUy5pbnZhbGlkSG9zdG5hbWUsIGhvc3RuYW1lKTtcbiAgICB9XG4gICAgZWxzZVxuICAgICAgICBob3N0bmFtZSA9IGVuZHBvaW50VXRpbHMuZ2V0SVBBZGRyZXNzKCk7XG5cbiAgICByZXR1cm4gaG9zdG5hbWU7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldFZhbGlkUG9ydCAocG9ydCkge1xuICAgIGlmIChwb3J0KSB7XG4gICAgICAgIGNvbnN0IGlzRnJlZSA9IGF3YWl0IGVuZHBvaW50VXRpbHMuaXNGcmVlUG9ydChwb3J0KTtcblxuICAgICAgICBpZiAoIWlzRnJlZSlcbiAgICAgICAgICAgIHRocm93IG5ldyBHZW5lcmFsRXJyb3IoUlVOVElNRV9FUlJPUlMucG9ydElzTm90RnJlZSwgcG9ydCk7XG4gICAgfVxuICAgIGVsc2VcbiAgICAgICAgcG9ydCA9IGF3YWl0IGVuZHBvaW50VXRpbHMuZ2V0RnJlZVBvcnQoKTtcblxuICAgIHJldHVybiBwb3J0O1xufVxuXG4vLyBBUElcbmFzeW5jIGZ1bmN0aW9uIGdldENvbmZpZ3VyYXRpb24gKGFyZ3MpIHtcbiAgICBjb25zdCBjb25maWd1cmF0aW9uID0gbmV3IFRlc3RDYWZlQ29uZmlndXJhdGlvbigpO1xuXG4gICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxICYmIHR5cGVvZiBhcmdzWzBdID09PSAnb2JqZWN0JylcbiAgICAgICAgYXdhaXQgY29uZmlndXJhdGlvbi5pbml0KGFyZ3NbMF0pO1xuICAgIGVsc2Uge1xuICAgICAgICBjb25zdCBbaG9zdG5hbWUsIHBvcnQxLCBwb3J0Miwgc3NsLCBkZXZlbG9wbWVudE1vZGUsIHJldHJ5VGVzdFBhZ2VzXSA9IGFyZ3M7XG5cbiAgICAgICAgYXdhaXQgY29uZmlndXJhdGlvbi5pbml0KHtcbiAgICAgICAgICAgIGhvc3RuYW1lLFxuICAgICAgICAgICAgcG9ydDEsXG4gICAgICAgICAgICBwb3J0MixcbiAgICAgICAgICAgIHNzbCxcbiAgICAgICAgICAgIGRldmVsb3BtZW50TW9kZSxcbiAgICAgICAgICAgIHJldHJ5VGVzdFBhZ2VzXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBjb25maWd1cmF0aW9uO1xufVxuXG4vLyBBUElcbmFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVRlc3RDYWZlICguLi5hcmdzKSB7XG4gICAgY29uc3QgY29uZmlndXJhdGlvbiA9IGF3YWl0IGdldENvbmZpZ3VyYXRpb24oYXJncyk7XG5cbiAgICBjb25zdCBbaG9zdG5hbWUsIHBvcnQxLCBwb3J0Ml0gPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICAgIGdldFZhbGlkSG9zdG5hbWUoY29uZmlndXJhdGlvbi5nZXRPcHRpb24oT1BUSU9OX05BTUVTLmhvc3RuYW1lKSksXG4gICAgICAgIGdldFZhbGlkUG9ydChjb25maWd1cmF0aW9uLmdldE9wdGlvbihPUFRJT05fTkFNRVMucG9ydDEpKSxcbiAgICAgICAgZ2V0VmFsaWRQb3J0KGNvbmZpZ3VyYXRpb24uZ2V0T3B0aW9uKE9QVElPTl9OQU1FUy5wb3J0MikpXG4gICAgXSk7XG5cbiAgICBjb25maWd1cmF0aW9uLm1lcmdlT3B0aW9ucyh7IGhvc3RuYW1lLCBwb3J0MSwgcG9ydDIgfSk7XG5cbiAgICBjb25zdCB0ZXN0Y2FmZSA9IG5ldyBUZXN0Q2FmZShjb25maWd1cmF0aW9uKTtcblxuICAgIHNldHVwRXhpdEhvb2soY2IgPT4gdGVzdGNhZmUuY2xvc2UoKS50aGVuKGNiKSk7XG5cbiAgICByZXR1cm4gdGVzdGNhZmU7XG59XG5cbi8vIEVtYmVkZGluZyB1dGlsc1xuY3JlYXRlVGVzdENhZmUuZW1iZWRkaW5nVXRpbHMgPSBlbWJlZGRpbmdVdGlscztcblxuLy8gQ29tbW9uIEFQSVxuT2JqZWN0LmtleXMoZXhwb3J0YWJsZUxpYikuZm9yRWFjaChrZXkgPT4ge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjcmVhdGVUZXN0Q2FmZSwga2V5LCB7IGdldDogKCkgPT4gZXhwb3J0YWJsZUxpYltrZXldIH0pO1xufSk7XG5cbmV4cG9ydCBkZWZhdWx0IGNyZWF0ZVRlc3RDYWZlO1xuIl19
\No newline at end of file