theia-extension-tester
Version:
A testing library built on Selenium to test Eclipse Theia extensions / plugins. Eclipse Che is supported as well.
166 lines • 7.66 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.isAuthenticationOptionSupported = exports.optionToCli = exports.CHE_DEFAULT_OPTIONS = exports.THEIA_DEFAULT_OPTIONS = exports.BASE_DEFAULT_OPTIONS = exports.DEVFILE_ATTRIBUTES_OPTIONS_METADATA = exports.AUTHENTICATION_OPTION_METADATA = exports.MOCHA_OPTION_METADATA = exports.ENV_OPTION_METADATA = exports.COPY_FILES_OPTION_METADATA = exports.FOLDER_OPTION_METADATA = exports.QUERY_OPTION_METADATA = exports.TIMEOUTS_OPTION_METADATA = exports.LOG_OPTION_METADATA = exports.CLEAN_OPTION_METADATA = exports.DRIVER_OPTION_METADATA = exports.BROWSER_OPTION_METADATA = exports.URL_OPTION_METADATA = exports.DEVFILE_ARGUMENT = exports.DEVFILE_ATTRIBUTES_OPTIONS = exports.AUTHENTICATION_OPTION = exports.TESTS_ARGUMENT = exports.ENV_OPTION = exports.MOCHA_OPTION = exports.COPY_FILES_OPTION = exports.FOLDER_OPTION = exports.QUERY_OPTION = exports.TIMEOUTS_OPTION = exports.LOG_OPTION = exports.CLEAN_OPTION = exports.DRIVER_OPTION = exports.BROWSER_OPTION = exports.URL_OPTION = void 0;
const _1 = require(".");
const SupportedBrowsers = ['chrome', 'firefox', 'edge', 'opera', 'safari'];
const SupportedAuthenticationMethods = ['openshift'];
const defaultTimeouts = {
implicit: 30000,
pageLoad: 300000
};
exports.URL_OPTION = 'url';
exports.BROWSER_OPTION = 'browser';
exports.DRIVER_OPTION = 'driver';
exports.CLEAN_OPTION = 'clean';
exports.LOG_OPTION = 'log';
exports.TIMEOUTS_OPTION = 'timeouts';
exports.QUERY_OPTION = 'query';
exports.FOLDER_OPTION = 'folder';
exports.COPY_FILES_OPTION = 'copy-files';
exports.MOCHA_OPTION = 'mocha';
exports.ENV_OPTION = 'env';
exports.TESTS_ARGUMENT = 'tests';
exports.AUTHENTICATION_OPTION = 'authentication';
exports.DEVFILE_ATTRIBUTES_OPTIONS = 'devfile-attributes';
exports.DEVFILE_ARGUMENT = 'devfile';
exports.URL_OPTION_METADATA = {
name: exports.URL_OPTION,
shortName: 'u',
description: 'Url location to {{ IDE }}',
defaultValue: 'http://localhost:3000/'
};
exports.BROWSER_OPTION_METADATA = {
name: exports.BROWSER_OPTION,
shortName: 'b',
description: 'Path to the Internet browser binary or one of the supported browser names',
defaultValue: 'chrome'
};
exports.DRIVER_OPTION_METADATA = {
name: exports.DRIVER_OPTION,
shortName: 'd',
description: 'Path to the Selenium WebDriver binary. It can point to binary or parent folder of the binary.',
defaultValue: undefined
};
exports.CLEAN_OPTION_METADATA = {
name: exports.CLEAN_OPTION,
shortName: 'c',
description: 'Clean session after testing',
defaultValue: false
};
exports.LOG_OPTION_METADATA = {
name: exports.LOG_OPTION,
shortName: 'l',
description: 'Log messages from Selenium WebDriver with a given level',
defaultValue: 'Info'
};
exports.TIMEOUTS_OPTION_METADATA = {
name: exports.TIMEOUTS_OPTION,
shortName: 't',
description: 'Test timeouts. Must be path to JSON file or string with JSON format',
defaultValue: JSON.stringify(defaultTimeouts)
};
exports.QUERY_OPTION_METADATA = {
name: exports.QUERY_OPTION,
shortName: 'q',
description: 'HTTP query argument which will be appended to {{ IDE }} url. Must be path to JSON file or JSON string.',
defaultValue: '{}'
};
exports.FOLDER_OPTION_METADATA = {
name: exports.FOLDER_OPTION,
shortName: 'f',
description: 'Open folder before user interface tests are launched',
defaultValue: undefined
};
exports.COPY_FILES_OPTION_METADATA = {
name: exports.COPY_FILES_OPTION,
valueName: 'files',
description: 'Copy files and folders into folder specified by --folder option.',
defaultValue: []
};
exports.ENV_OPTION_METADATA = {
name: exports.ENV_OPTION,
shortName: 'e',
description: 'Path to the .env file which will be loaded.',
defaultValue: undefined
};
exports.MOCHA_OPTION_METADATA = {
name: exports.MOCHA_OPTION,
shortName: 'm',
valueName: 'configuration',
description: 'Mocha configuration. Must be path to mocha file or string with JSON format.',
defaultValue: '{}'
};
exports.AUTHENTICATION_OPTION_METADATA = {
name: exports.AUTHENTICATION_OPTION,
shortName: 'a',
description: 'Authentication mechanism to use when use is about to log in.',
defaultValue: 'openshift'
};
exports.DEVFILE_ATTRIBUTES_OPTIONS_METADATA = {
name: exports.DEVFILE_ATTRIBUTES_OPTIONS,
valueName: 'devfileAttributes',
description: 'Devfile attributes to be overridden or appended to Devfile url.',
defaultValue: undefined
};
exports.BASE_DEFAULT_OPTIONS = {
[exports.URL_OPTION]: exports.URL_OPTION_METADATA.defaultValue,
[exports.BROWSER_OPTION]: exports.BROWSER_OPTION_METADATA.defaultValue,
[exports.DRIVER_OPTION]: exports.DRIVER_OPTION_METADATA.defaultValue,
[exports.CLEAN_OPTION]: exports.CLEAN_OPTION_METADATA.defaultValue,
[exports.LOG_OPTION]: _1.logging.Level[exports.LOG_OPTION_METADATA.defaultValue],
[exports.TIMEOUTS_OPTION]: exports.TIMEOUTS_OPTION_METADATA.defaultValue,
[exports.MOCHA_OPTION]: exports.MOCHA_OPTION_METADATA.defaultValue,
[exports.ENV_OPTION]: exports.ENV_OPTION_METADATA.defaultValue,
[exports.TESTS_ARGUMENT]: Array()
};
exports.THEIA_DEFAULT_OPTIONS = Object.assign(Object.assign({}, exports.BASE_DEFAULT_OPTIONS), { [exports.QUERY_OPTION]: exports.QUERY_OPTION_METADATA.defaultValue, [exports.FOLDER_OPTION]: exports.FOLDER_OPTION_METADATA.defaultValue, [exports.COPY_FILES_OPTION]: exports.COPY_FILES_OPTION_METADATA.defaultValue });
exports.CHE_DEFAULT_OPTIONS = Object.assign(Object.assign({}, exports.BASE_DEFAULT_OPTIONS), { [exports.DEVFILE_ATTRIBUTES_OPTIONS]: exports.DEVFILE_ATTRIBUTES_OPTIONS_METADATA.defaultValue, [exports.AUTHENTICATION_OPTION]: exports.AUTHENTICATION_OPTION_METADATA.defaultValue, [exports.DEVFILE_ARGUMENT]: '' });
function optionToCli(option, replaceDictionary) {
let name = option.name;
let shortName = option.shortName;
let defaultValue = option.defaultValue;
let description = option.description;
for (const key of Object.keys(replaceDictionary)) {
description = description.replace(RegExp(`\\{\\{\\s+${key}\\s+\\}\\}`, 'g'), replaceDictionary[key]);
}
const flags = flagFormatter(name, shortName, getValueName(option));
return [flags, description, defaultValue];
}
exports.optionToCli = optionToCli;
function getValueName(option) {
var _a;
if (typeof option.defaultValue === 'boolean') {
if (option.valueName) {
throw new Error('Unexpected combination of boolean default value and option value name (presence of value name might be wrong).');
}
return undefined;
}
return (_a = option.valueName) !== null && _a !== void 0 ? _a : option.name;
}
function flagFormatter(name, shortName, valueName) {
let flag = '';
if (shortName) {
flag += `-${shortName}`;
}
if (name && shortName) {
flag += `, --${name}`;
}
else if (name) {
flag += `--${name}`;
}
else {
throw new Error((name === null || name === void 0 ? void 0 : name.trim()) === '' ? 'Name is blank.' : `Invalid name "${name}".`);
}
if (valueName && name === exports.COPY_FILES_OPTION_METADATA.name) {
flag += ` <${valueName}...>`;
}
else if (valueName) {
flag += ` <${valueName}>`;
}
return flag;
}
function isAuthenticationOptionSupported(options) {
return SupportedAuthenticationMethods.includes(options[exports.AUTHENTICATION_OPTION].toLowerCase());
}
exports.isAuthenticationOptionSupported = isAuthenticationOptionSupported;
//# sourceMappingURL=options.js.map