summaryrefslogtreecommitdiff
path: root/date-fns/config/karma.js
diff options
context:
space:
mode:
Diffstat (limited to 'date-fns/config/karma.js')
-rw-r--r--date-fns/config/karma.js220
1 files changed, 220 insertions, 0 deletions
diff --git a/date-fns/config/karma.js b/date-fns/config/karma.js
new file mode 100644
index 0000000..e43fe80
--- /dev/null
+++ b/date-fns/config/karma.js
@@ -0,0 +1,220 @@
+process.env.PHANTOMJS_BIN = 'node_modules/.bin/phantomjs'
+process.env.NODE_ENV = 'test'
+
+const webpackConfig = require('./webpack')
+const countReporter = require('./_lib/countReporter')
+const benchmarkJSONReporter = require('./_lib/benchmarkJSONReporter')
+
+const sauceLabsLaunchers = {
+ // TODO: See if Safari became more reliable
+ safari: {
+ base: 'SauceLabs',
+ platform: 'OS X 10.11',
+ browserName: 'safari',
+ version: '9.0',
+ },
+
+ chrome: {
+ base: 'SauceLabs',
+ platform: 'Windows 8.1',
+ browserName: 'chrome',
+ version: '46.0',
+ },
+
+ firefox: {
+ base: 'SauceLabs',
+ platform: 'Windows 8.1',
+ browserName: 'firefox',
+ version: '41.0',
+ },
+
+ ie8: {
+ base: 'SauceLabs',
+ platform: 'Windows 7',
+ browserName: 'internet explorer',
+ version: '8.0',
+ },
+
+ ie9: {
+ base: 'SauceLabs',
+ platform: 'Windows 7',
+ browserName: 'internet explorer',
+ version: '9.0',
+ },
+
+ ie10: {
+ base: 'SauceLabs',
+ platform: 'Windows 7',
+ browserName: 'internet explorer',
+ version: '10.0',
+ },
+
+ ie11: {
+ base: 'SauceLabs',
+ platform: 'Windows 8.1',
+ browserName: 'internet explorer',
+ version: '11.0',
+ },
+
+ edge: {
+ base: 'SauceLabs',
+ platform: 'Windows 10',
+ browserName: 'microsoftedge',
+ version: '20.10240',
+ },
+
+ // TODO: See if iPhone became more reliable
+ // ios: {
+ // base: 'SauceLabs',
+ // browserName: 'iphone',
+ // platform: 'OS X 10.10',
+ // version: '9.1',
+ // deviceName: 'iPhone 6',
+ // deviceOrientation: 'portrait'
+ // },
+
+ android: {
+ base: 'SauceLabs',
+ browserName: 'android',
+ platform: 'Linux',
+ version: '5.1',
+ deviceName: 'Android Emulator',
+ deviceOrientation: 'portrait',
+ },
+}
+
+const localLaunchers = {
+ LocalChrome: {
+ base: 'Chrome',
+ },
+}
+
+const ciLaunchers = {
+ CIChrome: {
+ base: 'ChromeHeadless',
+ },
+}
+
+function config(config) {
+ config.set({
+ frameworks: getFrameworksConfig(),
+ files: getFilesConfig(),
+ preprocessors: getPreprocessorsConfig(),
+ webpack: webpackConfig,
+ webpackMiddleware: {
+ stats: {
+ assets: false,
+ chunks: false,
+ hash: false,
+ timings: false,
+ version: false,
+ },
+ },
+
+ // We are limited in the number of parallel VMs in SauceLabs (5)
+ // and Karma don't know how to limit parallel browser instances
+ // so waiting time must be insanely high.
+ browserNoActivityTimeout: process.env.TEST_CROSS_BROWSER
+ ? 60 * 60 * 1000 /* 1 hour */
+ : 10 * 1000 /* 10 sec */,
+ captureTimeout: process.env.TEST_CROSS_BROWSER
+ ? 120 * 1000 /* 2 min */
+ : 60 * 1000 /* 1 min */,
+
+ sauceLabs: {
+ startConnect: false,
+ tunnelIdentifier: process.env.GITHUB_RUN_ID,
+ recordScreenshots: false,
+ public: 'public',
+ },
+
+ coveageIstanbulReporter: {
+ reports: ['html', 'lcovonly'],
+ fixWebpackSourcePaths: true,
+ },
+
+ mochaReporter: {
+ output: 'minimal',
+ },
+
+ plugins: (process.env.COVERAGE_REPORT
+ ? ['karma-coverage', 'karma-coverage-istanbul-reporter']
+ : []
+ ).concat([
+ 'karma-mocha',
+ 'karma-mocha-reporter',
+ 'karma-phantomjs-launcher',
+ 'karma-chrome-launcher',
+ // TODO: Make it work
+ // 'karma-sauce-launcher',
+ 'karma-sourcemap-loader',
+ 'karma-webpack',
+ 'karma-benchmark',
+ 'karma-benchmark-reporter',
+ { 'reporter:count': ['type', countReporter] },
+ { 'reporter:benchmark-json': ['type', benchmarkJSONReporter] },
+ ]),
+
+ customLaunchers: process.env.TEST_CROSS_BROWSER
+ ? sauceLabsLaunchers
+ : process.env.CI
+ ? ciLaunchers
+ : localLaunchers,
+ browsers: getBrowsersConfig(),
+ reporters: getReportersConfig(),
+ })
+}
+
+function getFrameworksConfig() {
+ if (process.env.TEST_BENCHMARK) {
+ return ['benchmark']
+ } else {
+ return ['mocha']
+ }
+}
+
+function getFilesConfig() {
+ if (process.env.USE_STATIC_TESTS) {
+ return ['../tmp/tests.js']
+ } else if (process.env.TEST_BENCHMARK) {
+ return ['../node_modules/moment/moment.js', '../benchmark.js']
+ } else {
+ return ['../test.js']
+ }
+}
+
+function getPreprocessorsConfig() {
+ if (process.env.USE_STATIC_TESTS) {
+ return { '../tmp/tests.js': ['sourcemap'] }
+ } else if (process.env.TEST_BENCHMARK) {
+ return { '../benchmark.js': ['webpack', 'sourcemap'] }
+ } else {
+ return { '../test.js': ['webpack', 'sourcemap'] }
+ }
+}
+
+function getBrowsersConfig() {
+ if (process.env.TEST_CROSS_BROWSER) {
+ return Object.keys(sauceLabsLaunchers)
+ } else if (process.env.TEST_BENCHMARK) {
+ return ['PhantomJS']
+ } else if (process.env.CI) {
+ return Object.keys(ciLaunchers)
+ } else {
+ return Object.keys(localLaunchers)
+ }
+}
+
+function getReportersConfig() {
+ if (process.env.TEST_CROSS_BROWSER) {
+ return ['dots', 'saucelabs', 'count']
+ } else if (process.env.TEST_BENCHMARK) {
+ return ['benchmark', 'benchmark-json']
+ } else if (process.env.COVERAGE_REPORT) {
+ return ['coverage-istanbul']
+ } else {
+ return ['mocha', 'count']
+ }
+}
+
+module.exports = config