0
0
mirror of https://github.com/twbs/bootstrap.git synced 2024-12-14 02:24:00 +01:00
Bootstrap/js/tests/karma.conf.js

172 lines
4.0 KiB
JavaScript
Raw Normal View History

/* eslint-env node */
'use strict'
const path = require('path')
2018-09-13 09:42:15 +02:00
const ip = require('ip')
const { babel } = require('@rollup/plugin-babel')
2019-08-29 15:20:49 +02:00
const istanbul = require('rollup-plugin-istanbul')
const { nodeResolve } = require('@rollup/plugin-node-resolve')
2020-06-19 10:17:01 +02:00
const replace = require('@rollup/plugin-replace')
const { browsers } = require('./browsers')
const ENV = process.env
const BROWSERSTACK = Boolean(ENV.BROWSERSTACK)
const DEBUG = Boolean(ENV.DEBUG)
const JQUERY_TEST = Boolean(ENV.JQUERY)
const frameworks = [
2019-03-13 15:23:50 +01:00
'jasmine'
]
2018-10-14 13:59:51 +02:00
const plugins = [
2019-03-13 15:23:50 +01:00
'karma-jasmine',
'karma-rollup-preprocessor'
2018-10-14 13:59:51 +02:00
]
2018-09-13 09:42:15 +02:00
const reporters = ['dots']
const detectBrowsers = {
usePhantomJS: false,
postDetection(availableBrowser) {
// On CI just use Chrome
if (ENV.CI === true) {
return ['ChromeHeadless']
}
if (availableBrowser.includes('Chrome')) {
return DEBUG ? ['Chrome'] : ['ChromeHeadless']
2018-09-13 09:42:15 +02:00
}
if (availableBrowser.includes('Chromium')) {
return DEBUG ? ['Chromium'] : ['ChromiumHeadless']
}
2018-09-13 09:42:15 +02:00
if (availableBrowser.includes('Firefox')) {
return DEBUG ? ['Firefox'] : ['FirefoxHeadless']
2018-09-13 09:42:15 +02:00
}
throw new Error('Please install Chrome, Chromium or Firefox')
2018-09-13 09:42:15 +02:00
}
}
2021-10-29 09:38:35 +02:00
const config = {
2018-09-13 09:42:15 +02:00
basePath: '../..',
port: 9876,
colors: true,
autoWatch: false,
singleRun: true,
concurrency: Number.POSITIVE_INFINITY,
2018-09-13 09:42:15 +02:00
client: {
2019-03-13 15:23:50 +01:00
clearContext: false
},
files: [
'node_modules/hammer-simulator/index.js',
2020-11-09 19:33:20 +01:00
{
pattern: 'js/tests/unit/**/!(jquery).spec.js',
watched: !BROWSERSTACK
2020-11-09 19:33:20 +01:00
}
],
preprocessors: {
'js/tests/unit/**/*.spec.js': ['rollup']
},
rollupPreprocessor: {
plugins: [
2020-06-19 10:17:01 +02:00
replace({
'process.env.NODE_ENV': '"dev"',
preventAssignment: true
2020-06-19 10:17:01 +02:00
}),
istanbul({
2020-05-09 21:28:09 +02:00
exclude: [
'node_modules/**',
'js/tests/unit/**/*.spec.js',
'js/tests/helpers/**/*.js'
]
}),
babel({
// Only transpile our source code
exclude: 'node_modules/**',
// Inline the required helpers in each file
babelHelpers: 'inline'
}),
nodeResolve()
],
output: {
format: 'iife',
name: 'bootstrapTest',
sourcemap: 'inline',
generatedCode: 'es2015'
}
2018-09-13 09:42:15 +02:00
}
}
if (BROWSERSTACK) {
2021-10-29 09:38:35 +02:00
config.hostname = ip.address()
config.browserStack = {
username: ENV.BROWSER_STACK_USERNAME,
accessKey: ENV.BROWSER_STACK_ACCESS_KEY,
build: `bootstrap-${ENV.GITHUB_SHA ? ENV.GITHUB_SHA.slice(0, 7) + '-' : ''}${new Date().toISOString()}`,
2018-09-13 09:42:15 +02:00
project: 'Bootstrap',
retryLimit: 2
}
2019-03-13 15:23:50 +01:00
plugins.push('karma-browserstack-launcher', 'karma-jasmine-html-reporter')
2021-10-29 09:38:35 +02:00
config.customLaunchers = browsers
config.browsers = Object.keys(browsers)
2019-03-13 15:23:50 +01:00
reporters.push('BrowserStack', 'kjhtml')
} else if (JQUERY_TEST) {
frameworks.push('detectBrowsers')
plugins.push(
'karma-chrome-launcher',
'karma-firefox-launcher',
'karma-detect-browsers'
)
2021-10-29 09:38:35 +02:00
config.detectBrowsers = detectBrowsers
config.files = [
'node_modules/jquery/dist/jquery.slim.min.js',
2020-11-09 19:33:20 +01:00
{
pattern: 'js/tests/unit/jquery.spec.js',
watched: false
}
]
2018-09-13 09:42:15 +02:00
} else {
frameworks.push('detectBrowsers')
plugins.push(
'karma-chrome-launcher',
'karma-firefox-launcher',
'karma-detect-browsers',
'karma-coverage-istanbul-reporter'
)
reporters.push('coverage-istanbul')
2021-10-29 09:38:35 +02:00
config.detectBrowsers = detectBrowsers
config.coverageIstanbulReporter = {
dir: path.resolve(__dirname, '../coverage/'),
2018-09-13 09:42:15 +02:00
reports: ['lcov', 'text-summary'],
thresholds: {
emitWarning: false,
global: {
statements: 90,
branches: 89,
2019-03-13 15:23:50 +01:00
functions: 90,
2018-09-13 09:42:15 +02:00
lines: 90
}
}
2018-09-13 09:42:15 +02:00
}
if (DEBUG) {
2021-10-29 09:38:35 +02:00
config.hostname = ip.address()
2019-03-13 15:23:50 +01:00
plugins.push('karma-jasmine-html-reporter')
reporters.push('kjhtml')
2021-10-29 09:38:35 +02:00
config.singleRun = false
config.autoWatch = true
}
}
2018-09-13 09:42:15 +02:00
2021-10-29 09:38:35 +02:00
config.frameworks = frameworks
config.plugins = plugins
config.reporters = reporters
2018-09-13 09:42:15 +02:00
2019-02-26 12:20:34 +01:00
module.exports = karmaConfig => {
2021-10-29 09:38:35 +02:00
config.logLevel = karmaConfig.LOG_ERROR
karmaConfig.set(config)
}