@browserstack/testcafe
Version:
Automated browser testing for the modern web development stack.
35 lines • 5.66 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const argument_parsing_1 = require("../../../utils/argument-parsing");
const AVAILABLE_MODES = ['userProfile', 'headless'];
const configCache = {};
function hasCustomProfile(userArgs) {
return !!(userArgs.match(/-P\s/) || userArgs.match(/-profile\s/));
}
function parseModes(modesStr, userArgs) {
const parsed = argument_parsing_1.splitEscaped(modesStr, ':');
const path = argument_parsing_1.getPathFromParsedModes(parsed, AVAILABLE_MODES);
const detectedModes = argument_parsing_1.getModes(parsed, AVAILABLE_MODES);
const optionsString = parsed.filter(item => !!item).join(':');
const options = parsed.length ? argument_parsing_1.splitEscaped(optionsString, ';') : [];
return {
path: path,
userProfile: detectedModes.userProfile || hasCustomProfile(userArgs),
headless: detectedModes.headless,
marionettePort: argument_parsing_1.findMatch(options, /^marionettePort=(.*)/),
disableMultiprocessing: argument_parsing_1.isMatchTrue(options, /^disableMultiprocessing=(.*)/)
};
}
function getNewConfig(configString) {
const { userArgs, modesString } = argument_parsing_1.parseConfig(configString);
const modes = parseModes(modesString, userArgs);
return Object.assign({ userArgs }, modes);
}
function default_1(configString) {
if (!configCache[configString])
configCache[configString] = getNewConfig(configString);
return configCache[configString];
}
exports.default = default_1;
module.exports = exports.default;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2Jyb3dzZXIvcHJvdmlkZXIvYnVpbHQtaW4vZGVkaWNhdGVkL2ZpcmVmb3gvY29uZmlnLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsc0VBQXNJO0FBR3RJLE1BQU0sZUFBZSxHQUFHLENBQUMsYUFBYSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBRXBELE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQztBQUV2QixTQUFTLGdCQUFnQixDQUFFLFFBQVE7SUFDL0IsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztBQUN0RSxDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUUsUUFBUSxFQUFFLFFBQVE7SUFDbkMsTUFBTSxNQUFNLEdBQVUsK0JBQVksQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDbEQsTUFBTSxJQUFJLEdBQVkseUNBQXNCLENBQUMsTUFBTSxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQ3RFLE1BQU0sYUFBYSxHQUFHLDJCQUFRLENBQUMsTUFBTSxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQ3hELE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzlELE1BQU0sT0FBTyxHQUFTLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLCtCQUFZLENBQUMsYUFBYSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFFNUUsT0FBTztRQUNILElBQUksRUFBb0IsSUFBSTtRQUM1QixXQUFXLEVBQWEsYUFBYSxDQUFDLFdBQVcsSUFBSSxnQkFBZ0IsQ0FBQyxRQUFRLENBQUM7UUFDL0UsUUFBUSxFQUFnQixhQUFhLENBQUMsUUFBUTtRQUM5QyxjQUFjLEVBQVUsNEJBQVMsQ0FBQyxPQUFPLEVBQUUsc0JBQXNCLENBQUM7UUFDbEUsc0JBQXNCLEVBQUUsOEJBQVcsQ0FBQyxPQUFPLEVBQUUsOEJBQThCLENBQUM7S0FDL0UsQ0FBQztBQUNOLENBQUM7QUFHRCxTQUFTLFlBQVksQ0FBRSxZQUFZO0lBQy9CLE1BQU0sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLEdBQUcsOEJBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUM1RCxNQUFNLEtBQUssR0FBdUIsVUFBVSxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUVwRSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUM5QyxDQUFDO0FBRUQsbUJBQXlCLFlBQVk7SUFDakMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUM7UUFDMUIsV0FBVyxDQUFDLFlBQVksQ0FBQyxHQUFHLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUUzRCxPQUFPLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUNyQyxDQUFDO0FBTEQsNEJBS0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmaW5kTWF0Y2gsIGlzTWF0Y2hUcnVlLCBzcGxpdEVzY2FwZWQsIHBhcnNlQ29uZmlnLCBnZXRNb2RlcywgZ2V0UGF0aEZyb21QYXJzZWRNb2RlcyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2FyZ3VtZW50LXBhcnNpbmcnO1xuXG5cbmNvbnN0IEFWQUlMQUJMRV9NT0RFUyA9IFsndXNlclByb2ZpbGUnLCAnaGVhZGxlc3MnXTtcblxuY29uc3QgY29uZmlnQ2FjaGUgPSB7fTtcblxuZnVuY3Rpb24gaGFzQ3VzdG9tUHJvZmlsZSAodXNlckFyZ3MpIHtcbiAgICByZXR1cm4gISEodXNlckFyZ3MubWF0Y2goLy1QXFxzLykgfHwgdXNlckFyZ3MubWF0Y2goLy1wcm9maWxlXFxzLykpO1xufVxuXG5mdW5jdGlvbiBwYXJzZU1vZGVzIChtb2Rlc1N0ciwgdXNlckFyZ3MpIHtcbiAgICBjb25zdCBwYXJzZWQgICAgICAgID0gc3BsaXRFc2NhcGVkKG1vZGVzU3RyLCAnOicpO1xuICAgIGNvbnN0IHBhdGggICAgICAgICAgPSBnZXRQYXRoRnJvbVBhcnNlZE1vZGVzKHBhcnNlZCwgQVZBSUxBQkxFX01PREVTKTtcbiAgICBjb25zdCBkZXRlY3RlZE1vZGVzID0gZ2V0TW9kZXMocGFyc2VkLCBBVkFJTEFCTEVfTU9ERVMpO1xuICAgIGNvbnN0IG9wdGlvbnNTdHJpbmcgPSBwYXJzZWQuZmlsdGVyKGl0ZW0gPT4gISFpdGVtKS5qb2luKCc6Jyk7XG4gICAgY29uc3Qgb3B0aW9ucyAgICAgICA9IHBhcnNlZC5sZW5ndGggPyBzcGxpdEVzY2FwZWQob3B0aW9uc1N0cmluZywgJzsnKSA6IFtdO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgcGF0aDogICAgICAgICAgICAgICAgICAgcGF0aCxcbiAgICAgICAgdXNlclByb2ZpbGU6ICAgICAgICAgICAgZGV0ZWN0ZWRNb2Rlcy51c2VyUHJvZmlsZSB8fCBoYXNDdXN0b21Qcm9maWxlKHVzZXJBcmdzKSxcbiAgICAgICAgaGVhZGxlc3M6ICAgICAgICAgICAgICAgZGV0ZWN0ZWRNb2Rlcy5oZWFkbGVzcyxcbiAgICAgICAgbWFyaW9uZXR0ZVBvcnQ6ICAgICAgICAgZmluZE1hdGNoKG9wdGlvbnMsIC9ebWFyaW9uZXR0ZVBvcnQ9KC4qKS8pLFxuICAgICAgICBkaXNhYmxlTXVsdGlwcm9jZXNzaW5nOiBpc01hdGNoVHJ1ZShvcHRpb25zLCAvXmRpc2FibGVNdWx0aXByb2Nlc3Npbmc9KC4qKS8pXG4gICAgfTtcbn1cblxuXG5mdW5jdGlvbiBnZXROZXdDb25maWcgKGNvbmZpZ1N0cmluZykge1xuICAgIGNvbnN0IHsgdXNlckFyZ3MsIG1vZGVzU3RyaW5nIH0gPSBwYXJzZUNvbmZpZyhjb25maWdTdHJpbmcpO1xuICAgIGNvbnN0IG1vZGVzICAgICAgICAgICAgICAgICAgICAgPSBwYXJzZU1vZGVzKG1vZGVzU3RyaW5nLCB1c2VyQXJncyk7XG5cbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7IHVzZXJBcmdzIH0sIG1vZGVzKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKGNvbmZpZ1N0cmluZykge1xuICAgIGlmICghY29uZmlnQ2FjaGVbY29uZmlnU3RyaW5nXSlcbiAgICAgICAgY29uZmlnQ2FjaGVbY29uZmlnU3RyaW5nXSA9IGdldE5ld0NvbmZpZyhjb25maWdTdHJpbmcpO1xuXG4gICAgcmV0dXJuIGNvbmZpZ0NhY2hlW2NvbmZpZ1N0cmluZ107XG59XG4iXX0=