text: 'use strict'
  
  const path = require('path')
  const merge = require('webpack-merge')
  const webpack = require('webpack')
  
  const baseConfig = require('../../.electron-vue/webpack.renderer.config')
  const projectRoot = path.resolve(__dirname, '../../src/renderer')
  
  console.log('Project root is', projectRoot)
  
  // Set BABEL_ENV to use proper preset config
  process.env.BABEL_ENV = 'test'
  
  let webpackConfig = merge(baseConfig, {
    devtool: '#inline-source-map',
    plugins: [
      new webpack.DefinePlugin({
        'process.env.NODE_ENV': '"testing"'
      })
    ]
  })
  
  // don't treat dependencies as externals
  delete webpackConfig.entry
  delete webpackConfig.externals
  delete webpackConfig.output.libraryTarget
  
  // apply vue option to apply isparta-loader on js
  webpackConfig.module.rules
    .find(rule => rule.use.loader === 'vue-loader').use.options.loaders.js = 'babel-loader'
  
  module.exports = config => {
    config.set({
      browsers: ['visibleElectron'],
      client: {
        useIframe: false
      },
      coverageReporter: {
        dir: './coverage',
        reporters: [
          { type: 'lcov', subdir: '.' },
          { type: 'text-summary' }
        ]
      },
      customLaunchers: {
        'visibleElectron': {
          base: 'Electron',
          flags: ['--show']
        }
      },
      frameworks: ['mocha', 'chai'],
      files: ['./index.js'],
      preprocessors: {
        './index.js': ['webpack', 'sourcemap']
      },
      reporters: ['spec', 'coverage'],
      singleRun: true,
      webpack: webpackConfig,
      webpackMiddleware: {
        noInfo: true
      }
    })
  }
  