Blame view

test/e2e/runner.js 1.51 KB
93a68cfa1   Jatinder Singh   first commit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
  // 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
    })
  })