UNPKG

webdriverio-automation

Version:

WebdriverIO-Automation android ios project

147 lines (118 loc) 6.25 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.handler = handler; exports.runConfig = exports.builder = exports.cmdArgs = exports.desc = exports.command = void 0; var _path = _interopRequireDefault(require("path")); var _util = _interopRequireDefault(require("util")); var _yarnInstall = _interopRequireDefault(require("yarn-install")); var _constants = require("../constants"); var _utils = require("../utils"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } const command = 'config'; exports.command = command; const desc = 'Initialize WebdriverIO and setup configuration in your current project.'; exports.desc = desc; const cmdArgs = { yarn: { type: 'boolean', desc: 'Install packages via yarn package manager.', default: (0, _utils.hasFile)('yarn.lock') }, yes: { alias: 'y', desc: 'will fill in all config defaults without prompting', type: 'boolean', default: false } }; exports.cmdArgs = cmdArgs; const builder = yargs => { return yargs.options(cmdArgs).epilogue(_constants.CLI_EPILOGUE).help(); }; exports.builder = builder; const runConfig = async function (useYarn, yes, exit) { console.log(_constants.CONFIG_HELPER_INTRO); const answers = await (0, _utils.getAnswers)(yes); const packageAnswers = ['reporters', 'runner', 'services', 'framework']; Object.keys(answers).forEach(key => { if (packageAnswers.includes(key)) { if (Array.isArray(answers[key])) { answers[key] = answers[key].map(answer => (0, _utils.convertPackageHashToObject)(answer)); } else { answers[key] = (0, _utils.convertPackageHashToObject)(answers[key]); } } }); const packagesToInstall = [answers.runner && answers.runner.package || '@wdio/local-runner', answers.framework.package, ...answers.reporters.map(reporter => reporter.package), ...answers.services.map(service => service.package)]; const syncExecution = answers.executionMode === 'sync'; if (syncExecution) { packagesToInstall.push('@wdio/sync'); } (0, _utils.addServiceDeps)(answers.services, packagesToInstall); console.log('\nInstalling wdio packages:\n-', packagesToInstall.join('\n- ')); const result = (0, _yarnInstall.default)({ deps: packagesToInstall, dev: true, respectNpm5: !useYarn }); if (result.status !== 0) { throw new Error(result.stderr); } console.log('\nPackages installed successfully, creating configuration file...'); const defaultRunner = _constants.SUPPORTED_PACKAGES.runner[0].name; const destSpecRootPath = _path.default.join(process.cwd(), _path.default.dirname(answers.specs || '').replace(/\*\*$/, '')); const destStepRootPath = _path.default.join(process.cwd(), _path.default.dirname(answers.stepDefinitions || '')); const destPageObjectRootPath = answers.usePageObjects ? _path.default.join(process.cwd(), _path.default.dirname(answers.pages || '').replace(/\*\*$/, '')) : ''; const relativePath = answers.generateTestFiles && answers.usePageObjects ? !(answers.framework === 'cucumber') ? _path.default.relative(destSpecRootPath, destPageObjectRootPath) : _path.default.relative(destStepRootPath, destPageObjectRootPath) : ''; const parsedAnswers = _objectSpread(_objectSpread({}, answers), {}, { runner: answers.runner && answers.runner.short || defaultRunner, framework: answers.framework.short, reporters: answers.reporters.map(({ short }) => short), services: answers.services.map(({ short }) => short), packagesToInstall, isUsingTypeScript: answers.isUsingCompiler === _constants.COMPILER_OPTIONS.ts, isUsingBabel: answers.isUsingCompiler === _constants.COMPILER_OPTIONS.babel, isSync: syncExecution, _async: syncExecution ? '' : 'async ', _await: syncExecution ? '' : 'await ', destSpecRootPath: destSpecRootPath, destPageObjectRootPath: destPageObjectRootPath, relativePath: relativePath }); try { await (0, _utils.renderConfigurationFile)(parsedAnswers); if (answers.generateTestFiles) { console.log('\nConfig file installed successfully, creating test files...'); await (0, _utils.generateTestFiles)(parsedAnswers); } } catch (e) { console.error(`Couldn't write config file: ${e.stack}`); return !process.env.JEST_WORKER_ID && process.exit(1); } if (answers.isUsingCompiler === _constants.COMPILER_OPTIONS.ts) { const wdioTypes = syncExecution ? '@wdio/sync' : 'webdriverio'; const tsPkgs = `"${[wdioTypes, answers.framework.package, ...answers.services.map(service => service.package).filter(service => service.startsWith('@wdio'))].join('", "')}"`; console.log(_util.default.format(_constants.TS_COMPILER_INSTRUCTIONS, tsPkgs)); } console.log(_constants.CONFIG_HELPER_SUCCESS_MESSAGE); if (exit && !process.env.JEST_WORKER_ID) { process.exit(0); } }; exports.runConfig = runConfig; async function handler(argv) { try { await runConfig(argv.yarn, argv.yes); } catch (error) { throw new Error(`something went wrong during setup: ${error.stack.slice(7)}`); } }