1 | #!/usr/bin/env node
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 | import path from 'path';
|
8 | import meow from 'meow';
|
9 | import dbg from 'debug';
|
10 | import cucumber from 'cucumber';
|
11 | import { startMocking } from './cli/rewire.js';
|
12 | import Mink from './mink.js';
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 | const debug = dbg('mink:cli');
|
19 |
|
20 | const cli = meow(`
|
21 | Usage: cucumber-mink [options] -- [CUCUMBER ARGS]
|
22 |
|
23 | Options:
|
24 | --inject Mink auto-inject in context [Boolean] [default: true]
|
25 | --browser Desired browser name [String] [default: "firefox"]
|
26 | --port Selenium server port [default: 4444]
|
27 | -h, --help Display help message [Boolean]
|
28 | -v, --version Display package version [Boolean]
|
29 | `, {
|
30 | default: {
|
31 | inject: true,
|
32 | browser: 'firefox',
|
33 | port: 4444,
|
34 | },
|
35 | boolean: ['inject'],
|
36 | alias: {
|
37 | v: 'version',
|
38 | h: 'help',
|
39 | },
|
40 | });
|
41 |
|
42 | const injectArgs = (flags) => {
|
43 | if (!flags.inject) return [];
|
44 |
|
45 | const params = Mink.DEFAULT_PARAMS;
|
46 | params.driver.desiredCapabilities.browserName = flags.browser;
|
47 | params.driver.port = flags.port;
|
48 |
|
49 | const inject = require('./cli/support/mink_inject.js');
|
50 | const injectPath = path.join(__dirname, '/cli/support/mink_inject.js');
|
51 | startMocking(injectPath, inject(params));
|
52 |
|
53 | return ['--require', injectPath];
|
54 | };
|
55 |
|
56 | const execArgs = [
|
57 | 'node', 'cucumber-js',
|
58 | ...injectArgs(cli.flags),
|
59 | ...cli.input,
|
60 | ];
|
61 |
|
62 | debug(execArgs);
|
63 |
|
64 | cucumber.Cli(execArgs).run((success) => {
|
65 | process.exit(success ? 0 : 1);
|
66 | });
|