Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/twbs/bootstrap.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohann-S <johann.servoire@gmail.com>2018-09-13 10:42:15 +0300
committerJohann-S <johann.servoire@gmail.com>2018-09-13 22:59:37 +0300
commit9efed8252249065b7903731d3a2b578df89d2ce0 (patch)
tree7d078212f3f6f3330d3aabd4df83778e4dcd9cd3 /js/tests/karma.conf.js
parentc543f360c9923fe5641d6470c5c2697bbd60e289 (diff)
refactor karma config in one file
Diffstat (limited to 'js/tests/karma.conf.js')
-rw-r--r--js/tests/karma.conf.js193
1 files changed, 128 insertions, 65 deletions
diff --git a/js/tests/karma.conf.js b/js/tests/karma.conf.js
index 397f8b8e37..e32c2e2fd0 100644
--- a/js/tests/karma.conf.js
+++ b/js/tests/karma.conf.js
@@ -1,76 +1,139 @@
/* eslint-env node */
/* eslint no-process-env: 0 */
+const ip = require('ip')
+const {
+ browsers,
+ browsersKeys
+} = require('./browsers')
const path = require('path')
const jsCoveragePath = path.resolve(__dirname, '../coverage')
-module.exports = (config) => {
- const jqueryFile = process.env.USE_OLD_JQUERY ? 'https://code.jquery.com/jquery-1.9.1.min.js' : 'site/docs/4.1/assets/js/vendor/jquery-slim.min.js'
+const jqueryFile = process.env.USE_OLD_JQUERY ? 'https://code.jquery.com/jquery-1.9.1.min.js' : 'site/docs/4.1/assets/js/vendor/jquery-slim.min.js'
+const bundle = process.env.BUNDLE === 'true'
+const browserStack = process.env.BROWSER === 'true'
- config.set({
- basePath: '../..',
- frameworks: ['qunit', 'sinon', 'detectBrowsers'],
- plugins: [
- 'karma-chrome-launcher',
- 'karma-firefox-launcher',
- 'karma-qunit',
- 'karma-sinon',
- 'karma-detect-browsers',
- 'karma-coverage-istanbul-reporter'
- ],
- // list of files / patterns to load in the browser
- files: [
- jqueryFile,
- 'site/docs/4.1/assets/js/vendor/popper.min.js',
- '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
- 'js/tests/unit/*.js'
- ],
- reporters: ['dots', 'coverage-istanbul'],
- port: 9876,
- colors: true,
- // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
- logLevel: config.LOG_ERROR || config.LOG_WARN,
- autoWatch: false,
- customLaunchers: {
- FirefoxHeadless: {
- base: 'Firefox',
- flags: ['-headless']
- }
- },
- singleRun: true,
- concurrency: Infinity,
- detectBrowsers: {
- usePhantomJS: false,
- postDetection(availableBrowser) {
- if (typeof process.env.TRAVIS_JOB_ID !== 'undefined' || availableBrowser.includes('Chrome')) {
- return ['ChromeHeadless']
- }
+const frameworks = [
+ 'qunit',
+ 'sinon'
+]
- if (availableBrowser.includes('Firefox')) {
- return ['FirefoxHeadless']
- }
+const plugins = [
+ 'karma-qunit',
+ 'karma-sinon'
+]
- throw new Error('Please install Firefox or Chrome')
- }
- },
- coverageIstanbulReporter: {
- dir: jsCoveragePath,
- reports: ['lcov', 'text-summary'],
- thresholds: {
- emitWarning: false,
- global: {
- statements: 90,
- branches: 84,
- functions: 87,
- lines: 90
- }
- }
- },
- client: {
- qunit: {
- showUI: true
+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 = ['site/docs/4.1/assets/js/vendor/popper.min.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([
+ 'site/docs/4.1/assets/js/vendor/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: jsCoveragePath,
+ reports: ['lcov', 'text-summary'],
+ thresholds: {
+ emitWarning: false,
+ global: {
+ statements: 90,
+ branches: 84,
+ functions: 87,
+ 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)
}