123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- /* 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)
- }
|