immaterial-design/immaterial-design-ripple

View on GitHub
karma.conf.js

Summary

Maintainability
A
0 mins
Test Coverage
const path = require('path');
const packageJson = require('./package');

const init = {
  webpack: {
    module: {
      loaders: [
        {
          test: /\.js$/,
          loader: 'babel',
          exclude: /node_modules/,
        },
        {
          test: /\.json$/,
          loader: 'json',
        },
      ],
    },
    resolve: {
      extensions: ['', '.js', '.json'],
    },
    devtool: 'inline-source-map',
  },
  webpackMiddleware: {
    quiet: true,
    noInfo: true,
  },

  files: [
    'test/index.js',
  ],
  preprocessors: {
    'test/**/*.js': ['webpack', 'sourcemap'],
  },

  colors: true,
  browsers: ['Chrome'],

  frameworks: ['mocha'],
  client: {
    mocha: {
      timeout: 10000,
    },
  },
  reporters: ['mocha'],

  plugins: [
    'karma-phantomjs-launcher',
    'karma-chrome-launcher',
    'karma-sauce-launcher',
    'karma-mocha',

    'karma-webpack',
    'karma-sourcemap-loader',

    'karma-mocha-reporter',
    'karma-coverage',
  ],
};

switch (process.env.npm_lifecycle_event) {
  case 'test':
    if (process.env.TRAVIS) {
      init.browsers = ['PhantomJS'];
      init.phantomjsLauncher = {
        exitOnResourceError: true,
      };
    }
    init.singleRun = true;
    init.webpack.module.loaders.push({
      test: /\.js$/,
      loader: 'isparta',
      include: path.resolve('src'),
    });
    init.reporters.push('coverage');
    init.coverageReporter = {
      reporters: [
        {
          type: 'lcov',
          dir: 'coverage',
          subdir: '.',
        },
        {
          type: 'text',
        },
      ],
    };
    break;

  case 'test-cloud':
    init.singleRun = true;
    init.reporters = ['dots', 'saucelabs'];
    init.customLaunchers = {
      sl_chrome: {
        base: 'SauceLabs',
        browserName: 'chrome',
        version: '35',
      },
      sl_firefox: {
        base: 'SauceLabs',
        browserName: 'firefox',
        version: '40',
      },
      sl_ios_safari: {
        base: 'SauceLabs',
        browserName: 'iphone',
        version: '7.1',
      },
      sl_android: {
        base: 'SauceLabs',
        browserName: 'android',
        version: '4.4',
      },
      sl_ie: {
        base: 'SauceLabs',
        browserName: 'internet explorer',
        version: '10',
      },
    };
    init.browsers = Object.keys(init.customLaunchers);
    init.sauceLabs = {
      recordVideo: true,
      recordScreenshots: true,
      testName: packageJson.name,
    };
    init.browserNoActivityTimeout = 100000;
    break;
}

module.exports = (config) => {
  config.set(init);
};