UNPKG

@kronoslive/codeceptjs

Version:

Supercharged End 2 End Testing Framework for NodeJS

191 lines (165 loc) 8.62 kB
#!/usr/bin/env node const program = require('commander'); const Codecept = require('../lib/codecept'); const { print, error } = require('../lib/output'); if (process.versions.node && process.versions.node.split('.') && process.versions.node.split('.')[0] < 8) { error('NodeJS >= 8 is required to run.'); print(); print('Please upgrade your NodeJS engine'); print(`Current NodeJS version: ${process.version}`); process.exit(1); } program.usage('<command> [options]'); program.version(Codecept.version()); program.command('init [path]') .description('Creates dummy config in current dir or [path]') .action(require('../lib/command/init')); program.command('migrate [path]') .description('Migrate json config to js config in current dir or [path]') .action(require('../lib/command/configMigrate')); program.command('shell [path]') .alias('sh') .description('Interactive shell') .option('--verbose', 'output internal logging information') .option('--profile [value]', 'configuration profile to be used') .action(require('../lib/command/interactive')); program.command('list [path]') .alias('l') .description('List all actions for I.') .action(require('../lib/command/list')); program.command('def [path]') .description('Generates TypeScript definitions for all I actions.') .option('-c, --config [file]', 'configuration file to be used') .option('-o, --output [folder]', 'target folder to paste definitions') .action(require('../lib/command/definitions')); program.command('gherkin:init [path]') .alias('bdd:init') .description('Prepare CodeceptJS to run feature files.') .option('-c, --config [file]', 'configuration file to be used') .action(require('../lib/command/gherkin/init')); program.command('gherkin:steps [path]') .alias('bdd:steps') .description('Prints all defined gherkin steps.') .option('-c, --config [file]', 'configuration file to be used') .action(require('../lib/command/gherkin/steps')); program.command('gherkin:snippets [path]') .alias('bdd:snippets') .description('Generate step definitions from steps.') .option('--dry-run', "don't save snippets to file") .option('-c, --config [file]', 'configuration file to be used') .option('--feature [file]', 'feature files(s) to scan') .option('--path [file]', 'file in which to place the new snippets') .action(require('../lib/command/gherkin/snippets')); program.command('generate:test [path]') .alias('gt') .description('Generates an empty test') .action(require('../lib/command/generate').test); program.command('generate:pageobject [path]') .alias('gpo') .description('Generates an empty page object') .action(require('../lib/command/generate').pageObject); program.command('generate:object [path]') .alias('go') .option('--type, -t [kind]', 'type of object to be created') .description('Generates an empty support object (page/step/fragment)') .action(require('../lib/command/generate').pageObject); program.command('generate:helper [path]') .alias('gh') .description('Generates a new helper') .action(require('../lib/command/generate').helper); program.command('run [test]') .description('Executes tests') // codecept-only options .option('--steps', 'show step-by-step execution') .option('--debug', 'output additional information') .option('--verbose', 'output internal logging information') .option('-o, --override [value]', 'override current config options') .option('--profile [value]', 'configuration profile to be used') .option('-c, --config [file]', 'configuration file to be used') .option('--features', 'run only *.feature files and skip tests') .option('--tests', 'run only JS test files and skip features') .option('-p, --plugins <k=v,k2=v2,...>', 'enable plugins, comma-separated') // mocha options .option('--colors', 'force enabling of colors') .option('--no-colors', 'force disabling of colors') .option('-G, --growl', 'enable growl notification support') .option('-O, --reporter-options <k=v,k2=v2,...>', 'reporter-specific options') .option('-R, --reporter <name>', 'specify the reporter to use') .option('-S, --sort', 'sort test files') .option('-b, --bail', 'bail after first test failure') .option('-d, --debug', "enable node's debugger, synonym for node --debug") .option('-g, --grep <pattern>', 'only run tests matching <pattern>') .option('-f, --fgrep <string>', 'only run tests containing <string>') .option('-i, --invert', 'inverts --grep and --fgrep matches') .option('--full-trace', 'display the full stack trace') .option('--compilers <ext>:<module>,...', 'use the given module(s) to compile files') .option('--debug-brk', "enable node's debugger breaking on the first line") .option('--inline-diffs', 'display actual/expected differences inline within each string') .option('--no-exit', 'require a clean shutdown of the event loop: mocha will not call process.exit') .option('--recursive', 'include sub directories') .option('--trace', 'trace function calls') .option('--child <string>', 'option for child processes') .action(require('../lib/command/run')); program.command('run-workers <workers>') .description('Executes tests in workers') .option('-c, --config [file]', 'configuration file to be used') .option('-g, --grep <pattern>', 'only run tests matching <pattern>') .option('-i, --invert', 'inverts --grep matches') .option('-o, --override [value]', 'override current config options') .option('--suites', 'parallel execution of suites not single tests') .option('--debug', 'output additional information') .option('--verbose', 'output internal logging information') .option('--features', 'run only *.feature files and skip tests') .option('--tests', 'run only JS test files and skip features') .option('--profile [value]', 'configuration profile to be used') .option('-p, --plugins <k=v,k2=v2,...>', 'enable plugins, comma-separated') .action(require('../lib/command/run-workers')); program.command('run-multiple [suites...]') .description('Executes tests multiple') .option('-c, --config [file]', 'configuration file to be used') .option('--profile [value]', 'configuration profile to be used') .option('--all', 'run all suites') .option('--features', 'run only *.feature files and skip tests') .option('--tests', 'run only JS test files and skip features') .option('-g, --grep <pattern>', 'only run tests matching <pattern>') .option('-f, --fgrep <string>', 'only run tests containing <string>') .option('-i, --invert', 'inverts --grep and --fgrep matches') .option('--steps', 'show step-by-step execution') .option('--outputStyle [value]', 'output style for step-by-step show') .option('--verbose', 'output internal logging information') .option('--debug', 'output additional information') .option('-p, --plugins <k=v,k2=v2,...>', 'enable plugins, comma-separated') .option('-o, --override [value]', 'override current config options') .option('-O, --reporter-options <k=v,k2=v2,...>', 'reporter-specific options') .option('-R, --reporter <name>', 'specify the reporter to use') .option('--recursive', 'include sub directories') // mocha options .option('--colors', 'force enabling of colors') .action(require('../lib/command/run-multiple')); program.command('info [path]') .description('Print debugging information concerning the local environment') .option('-c, --config', 'your config file path') .action(require('../lib/command/info')); program.command('dry-run [test]') .description('Prints step-by-step scenario for a test without actually running it') .option('-p, --plugins <k=v,k2=v2,...>', 'enable plugins, comma-separated') .option('--bootstrap', 'enable bootstrap script for dry-run') .option('-c, --config [file]', 'configuration file to be used') .option('--all', 'run all suites') .option('--features', 'run only *.feature files and skip tests') .option('--tests', 'run only JS test files and skip features') .option('-g, --grep <pattern>', 'only run tests matching <pattern>') .option('-f, --fgrep <string>', 'only run tests containing <string>') .option('-i, --invert', 'inverts --grep and --fgrep matches') .option('--steps', 'show step-by-step execution') .option('--verbose', 'output internal logging information') .option('--debug', 'output additional information') .action(require('../lib/command/dryRun')); program.on('command:*', (cmd) => { console.log(`\nUnknown command ${cmd}\n`); program.outputHelp(); }); if (process.argv.length <= 2) { program.outputHelp(); } program.parse(process.argv);