diff options
Diffstat (limited to 'assets/scss/bootstrap/js/tests/karma.conf.js')
-rwxr-xr-x | assets/scss/bootstrap/js/tests/karma.conf.js | 143 |
1 files changed, 143 insertions, 0 deletions
diff --git a/assets/scss/bootstrap/js/tests/karma.conf.js b/assets/scss/bootstrap/js/tests/karma.conf.js new file mode 100755 index 0000000..52a3ba2 --- /dev/null +++ b/assets/scss/bootstrap/js/tests/karma.conf.js @@ -0,0 +1,143 @@ +/* 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( + '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/dist/util.js', + 'js/dist/tooltip.js', + 'js/dist/!(util|index|tooltip).js' // include all of our js/dist files except util.js, index.js and tooltip.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/util.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 + ]) + 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, + functions: 89, + lines: 90 + } + } + } +} + +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) +} |