|
// 1. start the dev server using production config
|
|
process.env.NODE_ENV = 'testing'
|
|
|
|
const webpack = require('webpack')
|
|
const DevServer = require('webpack-dev-server')
|
|
|
|
const webpackConfig = require('../../build/webpack.prod.conf')
|
|
const devConfigPromise = require('../../build/webpack.dev.conf')
|
|
|
|
let server
|
|
|
|
devConfigPromise.then(devConfig => {
|
|
const devServerOptions = devConfig.devServer
|
|
const compiler = webpack(webpackConfig)
|
|
server = new DevServer(compiler, devServerOptions)
|
|
const port = devServerOptions.port
|
|
const host = devServerOptions.host
|
|
return server.listen(port, host)
|
|
})
|
|
.then(() => {
|
|
// 2. run the nightwatch test suite against it
|
|
// to run in additional browsers:
|
|
// 1. add an entry in test/e2e/nightwatch.conf.js under "test_settings"
|
|
// 2. add it to the --env flag below
|
|
// or override the environment flag, for example: `npm run e2e -- --env chrome,firefox`
|
|
// For more information on Nightwatch's config file, see
|
|
// http://nightwatchjs.org/guide#settings-file
|
|
let opts = process.argv.slice(2)
|
|
if (opts.indexOf('--config') === -1) {
|
|
opts = opts.concat(['--config', 'test/e2e/nightwatch.conf.js'])
|
|
}
|
|
if (opts.indexOf('--env') === -1) {
|
|
opts = opts.concat(['--env', 'chrome'])
|
|
}
|
|
|
|
const spawn = require('cross-spawn')
|
|
const runner = spawn('./node_modules/.bin/nightwatch', opts, { stdio: 'inherit' })
|
|
|
|
runner.on('exit', function (code) {
|
|
server.close()
|
|
process.exit(code)
|
|
})
|
|
|
|
runner.on('error', function (err) {
|
|
server.close()
|
|
throw err
|
|
})
|
|
})
|