UNPKG

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
"use strict"; 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