karma.conf.js 4.28 KiB
/* eslint-env node */
/* eslint no-process-env: 0 */
const path = require('path')
const ip = require('ip')
const {
  browsers,
  browsersKeys
} = require('./browsers')
const jqueryFile = process.env.USE_OLD_JQUERY ? 'https://code.jquery.com/jquery-1.9.1.min.js' : 'node_modules/jquery/dist/jquery.slim.min.js'
const bundle = process.env.BUNDLE === 'true'
const browserStack = process.env.BROWSER === 'true'
const frameworks = [
  'qunit',
  'sinon'
const plugins = [
  'karma-qunit',
  'karma-sinon'
const reporters = ['dots']
const detectBrowsers = {
  usePhantomJS: false,
  postDetection(availableBrowser) {
    if (typeof process.env.TRAVIS_JOB_ID !== 'undefined' || availableBrowser.includes('Chrome')) {
      return ['ChromeHeadless']
    if (availableBrowser.includes('Firefox')) {
      return ['FirefoxHeadless']
    throw new Error('Please install Firefox or Chrome')
const customLaunchers = {
  FirefoxHeadless: {
    base: 'Firefox',
    flags: ['-headless']
let files = [
  'node_modules/popper.js/dist/umd/popper.min.js',
  'node_modules/hammer-simulator/index.js'
const conf = {
  basePath: '../..',
  port: 9876,
  colors: true,
  autoWatch: false,
  singleRun: true,
  concurrency: Infinity,
  client: {
    qunit: {
      showUI: true
if (bundle) {
  frameworks.push('detectBrowsers')
  plugins.push(
7172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
'karma-chrome-launcher', 'karma-firefox-launcher', 'karma-detect-browsers' ) conf.customLaunchers = customLaunchers conf.detectBrowsers = detectBrowsers files = files.concat([ jqueryFile, 'dist/js/bootstrap.js' ]) } else if (browserStack) { conf.hostname = ip.address() conf.browserStack = { username: process.env.BROWSER_STACK_USERNAME, accessKey: process.env.BROWSER_STACK_ACCESS_KEY, build: `bootstrap-${new Date().toISOString()}`, project: 'Bootstrap', retryLimit: 2 } plugins.push('karma-browserstack-launcher') conf.customLaunchers = browsers conf.browsers = browsersKeys reporters.push('BrowserStack') files = files.concat([ 'node_modules/jquery/dist/jquery.slim.min.js', 'js/coverage/dist/dom/eventHandler.js', 'js/coverage/dist/dom/selectorEngine.js', 'js/coverage/dist/dom/data.js', 'js/coverage/dist/dom/manipulator.js', 'js/coverage/dist/util.js', 'js/coverage/dist/dom/polyfill.js', 'js/coverage/dist/dom/!(polyfill).js', 'js/coverage/dist/tooltip.js', 'js/coverage/dist/!(util|index|tooltip).js', // include all of our js/dist files except util.js, index.js and tooltip.js 'js/tests/unit/*.js', 'js/tests/unit/dom/*.js' ]) } else { frameworks.push('detectBrowsers') plugins.push( 'karma-chrome-launcher', 'karma-firefox-launcher', 'karma-detect-browsers', 'karma-coverage-istanbul-reporter' ) files = files.concat([ jqueryFile, 'js/coverage/dist/dom/eventHandler.js', 'js/coverage/dist/dom/selectorEngine.js', 'js/coverage/dist/dom/data.js', 'js/coverage/dist/dom/manipulator.js', 'js/coverage/dist/util.js', 'js/coverage/dist/dom/polyfill.js', 'js/coverage/dist/dom/!(polyfill).js', 'js/coverage/dist/tooltip.js', 'js/coverage/dist/!(util|index|tooltip).js', // include all of our js/dist files except util.js, index.js and tooltip.js 'js/tests/unit/*.js', 'js/tests/unit/dom/*.js' ]) reporters.push('coverage-istanbul') conf.customLaunchers = customLaunchers conf.detectBrowsers = detectBrowsers conf.coverageIstanbulReporter = { dir: path.resolve(__dirname, '../coverage/'), reports: ['lcov', 'text-summary'], thresholds: { emitWarning: false, global: { statements: 90, branches: 86,
141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
functions: 89, lines: 90 }, each: { overrides: { 'js/src/dom/polyfill.js': { statements: 39, lines: 37, branches: 19, functions: 50 } } } } } } files.push('js/tests/unit/*.js') conf.frameworks = frameworks conf.plugins = plugins conf.reporters = reporters conf.files = files module.exports = (karmaConfig) => { // possible values: karmaConfig.LOG_DISABLE || karmaConfig.LOG_ERROR || karmaConfig.LOG_WARN || karmaConfig.LOG_INFO || karmaConfig.LOG_DEBUG conf.logLevel = karmaConfig.LOG_ERROR || karmaConfig.LOG_WARN karmaConfig.set(conf) }