Skip to content

Commit acb0aa2

Browse files
authored
Merge pull request #1 from avaly/fix/support-config-argument
Support config CLI flag
2 parents 8dca347 + 237f431 commit acb0aa2

3 files changed

Lines changed: 64 additions & 7 deletions

File tree

lib/index.js

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,14 @@ var _puppeteer = require('puppeteer');
99

1010
var _puppeteer2 = _interopRequireDefault(_puppeteer);
1111

12+
var _path = require('path');
13+
14+
var _path2 = _interopRequireDefault(_path);
15+
16+
var _yargs = require('yargs');
17+
18+
var _yargs2 = _interopRequireDefault(_yargs);
19+
1220
var _get_puppeteer_config = require('./get_puppeteer_config');
1321

1422
var _get_puppeteer_config2 = _interopRequireDefault(_get_puppeteer_config);
@@ -19,14 +27,37 @@ const PATH = './node_modules/jest-puppeteer/';
1927
const PUPPETEER_ENVIRONMENT = PATH + 'puppeteer_environment.js';
2028
const RESULT_PROCESSOR = PATH + 'result_processor.js';
2129

30+
function cleanArgv(argv) {
31+
const clean = argv.slice(0);
32+
argv.forEach((arg, index) => {
33+
if (arg.indexOf('--config=') === 0 || arg.indexOf('-c=') === 0) {
34+
clean.splice(index, 1);
35+
} else if (arg.indexOf('--config') === 0 || arg.indexOf('-c') === 0) {
36+
clean.splice(index, 2);
37+
}
38+
});
39+
return clean;
40+
}
41+
2242
console.log(_chalk2.default.green('Setup Puppeteer Environment.'));
2343
_puppeteer2.default.launch((0, _get_puppeteer_config2.default)()).then(browser => {
2444
global.__BROWSER__ = browser;
25-
process.argv = process.argv.concat([`--env=${PUPPETEER_ENVIRONMENT}`, '--config=' + JSON.stringify({
45+
46+
const args = (0, _yargs2.default)(process.argv.slice(2)).options({
47+
config: {
48+
alias: 'c',
49+
type: 'string'
50+
}
51+
}).argv;
52+
const config = args.config ? require(_path2.default.resolve(args.config)) : {};
53+
const cleanedArgv = cleanArgv(process.argv);
54+
55+
process.argv = cleanedArgv.concat([`--env=${PUPPETEER_ENVIRONMENT}`, '--config=' + JSON.stringify(Object.assign({}, config, {
2656
globals: {
2757
browserWSEndpoint: browser.wsEndpoint()
2858
},
2959
testResultsProcessor: RESULT_PROCESSOR
30-
})]);
60+
}))]);
61+
3162
return require('jest-cli/bin/jest.js');
3263
});

package.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
"result_processor.js"
1919
],
2020
"dependencies": {
21-
"chalk": "^2.1.0"
21+
"chalk": "^2.1.0"
2222
},
2323
"devDependencies": {
2424
"babel-cli": "^6.26.0",
@@ -28,6 +28,7 @@
2828
},
2929
"peerDependencies": {
3030
"jest": "21.3.0-beta.2",
31-
"puppeteer": "^0.12.0"
31+
"puppeteer": "^0.12.0",
32+
"yargs": "^9.0.0"
3233
}
3334
}

src/index.js

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,50 @@
11
#!/usr/bin/env node
22
import chalk from 'chalk'
33
import puppeteer from 'puppeteer'
4+
import path from 'path'
5+
import yargs from 'yargs'
46
import getPuppeteerConfig from './get_puppeteer_config'
57

68
const PATH = './node_modules/jest-puppeteer/'
79
const PUPPETEER_ENVIRONMENT = PATH + 'puppeteer_environment.js'
810
const RESULT_PROCESSOR = PATH + 'result_processor.js'
911

12+
function cleanArgv(argv) {
13+
const clean = argv.slice(0);
14+
argv.forEach((arg, index) => {
15+
if (arg.indexOf('--config=') === 0 || arg.indexOf('-c=') === 0) {
16+
clean.splice(index, 1);
17+
} else if (arg.indexOf('--config') === 0 || arg.indexOf('-c') === 0) {
18+
clean.splice(index, 2);
19+
}
20+
});
21+
return clean;
22+
}
23+
1024
console.log(chalk.green('Setup Puppeteer Environment.'))
1125
puppeteer
1226
.launch(getPuppeteerConfig())
1327
.then(browser => {
1428
global.__BROWSER__ = browser
15-
process.argv = process.argv.concat([
29+
30+
const args = yargs(process.argv.slice(2)).options({
31+
config: {
32+
alias: 'c',
33+
type: 'string'
34+
},
35+
}).argv;
36+
const config = args.config ? require(path.resolve(args.config)) : {}
37+
const cleanedArgv = cleanArgv(process.argv);
38+
39+
process.argv = cleanedArgv.concat([
1640
`--env=${PUPPETEER_ENVIRONMENT}`,
17-
'--config=' + JSON.stringify({
41+
'--config=' + JSON.stringify(Object.assign({}, config, {
1842
globals: {
1943
browserWSEndpoint: browser.wsEndpoint()
2044
},
2145
testResultsProcessor: RESULT_PROCESSOR
22-
})
46+
}))
2347
])
48+
2449
return require('jest-cli/bin/jest.js')
2550
})

0 commit comments

Comments
 (0)