summaryrefslogtreecommitdiffstats
path: root/.config
diff options
context:
space:
mode:
authordotnetCarpenter <jon.ronnenberg@gmail.com>2018-11-12 16:13:58 +0100
committerdotnetCarpenter <jon.ronnenberg@gmail.com>2018-11-12 16:13:58 +0100
commit85cc7cc130d4894c1acb232c57adaa130c66ce43 (patch)
treed3a73d7dffe829e77c59a9080bd8fb62c3fa0897 /.config
parent0f1320e3e63a18f296b6f900c4894120c26ea779 (diff)
downloadsvg.js-85cc7cc130d4894c1acb232c57adaa130c66ce43.tar.gz
svg.js-85cc7cc130d4894c1acb232c57adaa130c66ce43.zip
testing saucelabs
Diffstat (limited to '.config')
-rw-r--r--.config/karma.conf.common.js66
-rw-r--r--.config/karma.conf.js138
-rw-r--r--.config/karma.conf.saucelabs.js130
3 files changed, 241 insertions, 93 deletions
diff --git a/.config/karma.conf.common.js b/.config/karma.conf.common.js
new file mode 100644
index 0000000..1c791e7
--- /dev/null
+++ b/.config/karma.conf.common.js
@@ -0,0 +1,66 @@
+// Karma shared configuration
+
+const os = require('os')
+const cpuCount = os.cpus().length
+
+module.exports = function (config) {
+ return {
+ // base path that will be used to resolve all patterns (eg. files, exclude)
+ basePath: '../',
+
+ // frameworks to use
+ // available frameworks: https://npmjs.org/browse/keyword/karma-adapter
+ frameworks: ['jasmine'],
+
+ // list of files / patterns to load in the browser
+ files: [
+ '.config/pretest.js',
+ 'spec/RAFPlugin.js',
+ {
+ pattern: 'spec/fixtures/fixture.css',
+ included: false,
+ served: true
+ },
+ {
+ pattern: 'spec/fixtures/fixture.svg',
+ included: false,
+ served: true
+ },
+ {
+ pattern: 'spec/fixtures/pixel.png',
+ included: false,
+ served: true
+ },
+ 'dist/svg.js',
+ 'spec/spec/**/*.js'
+ ],
+
+ proxies: {
+ '/fixtures/': '/base/spec/fixtures/'
+ },
+
+ // web server port
+ port: 9876,
+
+ // enable / disable colors in the output (reporters and logs)
+ colors: true,
+
+ // level of logging
+ // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
+ logLevel: config.LOG_INFO,
+
+ // enable / disable watching file and executing tests whenever any file changes
+ autoWatch: false,
+
+ // Continuous Integration mode
+ // if true, Karma captures browsers, runs the tests and exits
+ singleRun: true,
+
+ // Concurrency level
+ // how many browser should be started simultaneous
+ concurrency: cpuCount || Infinity,
+
+ // list of files to exclude
+ exclude: [],
+ }
+}
diff --git a/.config/karma.conf.js b/.config/karma.conf.js
index 8e534d7..46068e5 100644
--- a/.config/karma.conf.js
+++ b/.config/karma.conf.js
@@ -1,101 +1,53 @@
// Karma configuration
-// Generated on Tue Oct 04 2016 13:53:46 GMT+0200 (CEST)
-module.exports = function(config) {
- config.set({
-
- // base path that will be used to resolve all patterns (eg. files, exclude)
- basePath: '../',
-
- // frameworks to use
- // available frameworks: https://npmjs.org/browse/keyword/karma-adapter
- frameworks: ['jasmine'],
+const karmaCommon = require('./karma.conf.common.js')
+
+let chromeBin = 'ChromeHeadless'
+if (process.platform === 'linux') {
+ // We need to choose either Chrome or Chromium.
+ // Canary is not available on linux.
+ // If we do not find Chromium then we can deduce that
+ // either Chrome is installed or there is no Chrome variant at all,
+ // in which case karma-chrome-launcher will output an error.
+ // If `which` finds nothing it will throw an error.
+ const { execSync } = require('child_process')
+
+ try {
+ if (execSync('which chromium-browser')) chromeBin = 'ChromiumHeadless'
+ } catch (e) {}
+}
+module.exports = function (config) {
+ config.set(
+ Object.assign(karmaCommon(config), {
+ // list of files to exclude
+ exclude: [],
- // list of files / patterns to load in the browser
- files: [
- '.config/pretest.js',
- 'spec/RAFPlugin.js',
- {
- pattern: 'spec/fixtures/fixture.css',
- included: false,
- served: true
- },
- {
- pattern: 'spec/fixtures/fixture.svg',
- included: false,
- served: true
+ // preprocess matching files before serving them to the browser
+ // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
+ preprocessors: {
+ 'dist/svg.js': ['coverage']
},
- {
- pattern: 'spec/fixtures/pixel.png',
- included: false,
- served: true
- },
- 'dist/svg.js',
- 'spec/spec/**/*.js'
- ],
-
- proxies: {
- '/fixtures/': '/base/spec/fixtures/'
- },
-
-
- // list of files to exclude
- exclude: [],
-
-
- // preprocess matching files before serving them to the browser
- // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
- preprocessors: {
- 'dist/svg.js': ['coverage']
- },
-
-
- // test results reporter to use
- // possible values: 'dots', 'progress'
- // available reporters: https://npmjs.org/browse/keyword/karma-reporter
- reporters: ['progress', 'coverage'],
-
- // configure the coverage reporter
- coverageReporter: {
- // Specify a reporter type.
- type: 'lcov',
- dir: 'coverage/',
- subdir: function(browser) {
- // normalization process to keep a consistent browser name accross different OS
- return browser.toLowerCase().split(/[ /-]/)[0]; // output the results into: './coverage/firefox/'
- }
- },
-
-
- // web server port
- port: 9876,
-
-
- // enable / disable colors in the output (reporters and logs)
- colors: true,
-
-
- // level of logging
- // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
- logLevel: config.LOG_INFO,
-
-
- // enable / disable watching file and executing tests whenever any file changes
- autoWatch: false,
-
-
- // start these browsers
- // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
- browsers: [process.platform === 'linux' ? 'ChromiumHeadless' : 'ChromeHeadless', 'FirefoxHeadless'],
-
- // Continuous Integration mode
- // if true, Karma captures browsers, runs the tests and exits
- singleRun: true,
+ // test results reporter to use
+ // possible values: 'dots', 'progress'
+ // available reporters: https://npmjs.org/browse/keyword/karma-reporter
+ reporters: ['progress', 'coverage'],
+
+ // configure the coverage reporter
+ coverageReporter: {
+ // Specify a reporter type.
+ type: 'lcov',
+ dir: 'coverage/',
+ subdir: function(browser) {
+ // normalization process to keep a consistent browser name accross different OS
+ return browser.toLowerCase().split(/[ /-]/)[0]; // output the results into: './coverage/firefox/'
+ }
+ },
- // Concurrency level
- // how many browser should be started simultaneous
- concurrency: Infinity
- })
+ // start these browsers
+ // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
+ browsers: [chromeBin, 'FirefoxHeadless'],
+ })
+ )
}
diff --git a/.config/karma.conf.saucelabs.js b/.config/karma.conf.saucelabs.js
new file mode 100644
index 0000000..cfe869d
--- /dev/null
+++ b/.config/karma.conf.saucelabs.js
@@ -0,0 +1,130 @@
+// Karma configuration
+// https://wiki.saucelabs.com/display/DOCS/Platform+Configurator
+
+const karmaCommon = require('./karma.conf.common.js')
+
+const SauceLabsLaunchers = {
+ /** Real mobile devices are not available
+ * Your account does not have access to Android devices.
+ * Please contact sales@saucelabs.com to add this feature to your account.*/
+ /*sl_android_chrome: {
+ base: 'SauceLabs',
+ appiumVersion: '1.5.3',
+ deviceName: 'Samsung Galaxy S7 Device',
+ deviceOrientation: 'portrait',
+ browserName: 'Chrome',
+ platformVersion: '6.0',
+ platformName: 'Android'
+ },*/
+ sl_android: {
+ base: 'SauceLabs',
+ browserName: 'Android',
+ deviceName: 'Android Emulator',
+ deviceOrientation: 'portrait'
+ },
+ sl_firefox: {
+ base: 'SauceLabs',
+ browserName: 'firefox',
+ version: 'latest'
+ },
+ sl_chrome: {
+ base: 'SauceLabs',
+ browserName: 'chrome',
+ version: 'latest'
+ },
+ sl_windows_edge: {
+ base: 'SauceLabs',
+ browserName: 'MicrosoftEdge',
+ version: 'latest',
+ platform: 'Windows 10'
+ },
+ sl_macos_safari: {
+ base: 'SauceLabs',
+ browserName: 'safari',
+ platform: 'macOS 10.13',
+ version: '12.0',
+ recordVideo: true,
+ recordScreenshots: true,
+ screenResolution: '1024x768'
+ }/*,
+ sl_macos_iphone: {
+ base: 'SauceLabs',
+ browserName: 'Safari',
+ deviceName: 'iPhone SE Simulator',
+ deviceOrientation: 'portrait',
+ platformVersion: '10.2',
+ platformName: 'iOS'
+ }*/
+}
+
+
+module.exports = function(config) {
+
+ if (!process.env.SAUCE_USERNAME || !process.env.SAUCE_ACCESS_KEY) {
+ console.error("SAUCE_USERNAME and SAUCE_ACCESS_KEY must be provided as environment variables.")
+ console.warn("Aborting Sauce Labs test")
+ process.exit(1)
+ }
+
+ config.set(
+
+ Object.assign(karmaCommon, {
+ // Concurrency level
+ // how many browser should be started simultaneous
+ // Saucelabs allow up to 5 concurrent sessions on the free open source tier.
+ concurrency: 5,
+
+ // this specifies which plugins karma should load
+ // by default all karma plugins, starting with `karma-` will load
+ // so if you are really puzzled why something isn't working, then comment
+ // out plugins: [] - it's here to make karma load faster
+ // get possible karma plugins by `ls node_modules | grep 'karma-*'`
+ plugins: [
+ 'karma-coverage',
+ 'karma-jasmine',
+ 'karma-sauce-launcher',
+ 'karma-spec-reporter'
+ ],
+
+ // test results reporter to use
+ // possible values: 'dots', 'progress'
+ // available reporters: https://npmjs.org/browse/keyword/karma-reporter
+ reporters: ['spec', 'saucelabs'],
+
+ specReporter: {
+ maxLogLines: 5, // limit number of lines logged per test
+ suppressErrorSummary: false,// do print error summary
+ suppressFailed: false, // do print information about failed tests
+ suppressPassed: true, // do not print information about passed tests
+ suppressSkipped: true, // do not print information about skipped tests
+ showSpecTiming: true, // print the time elapsed for each spec
+ failFast: false // test would finish with error when a first fail occurs.
+ },
+
+ customLaunchers: SauceLabsLaunchers,
+
+ // start these browsers
+ browsers: Object.keys(SauceLabsLaunchers),
+ sauceLabs: {
+ testName: 'SVG.js Unit Tests',
+ connectOptions: {
+ noSslBumpDomains: "all"
+ }
+ },
+
+ // The number of disconnections tolerated.
+ browserDisconnectTolerance: 0, // well, sometimes it helps to just restart
+ // How long does Karma wait for a browser to reconnect (in ms).
+ browserDisconnectTimeout: 10 * 60 * 1000,
+ // How long will Karma wait for a message from a browser before disconnecting from it (in ms). ~ macOS 10.12 needs more than 7 minutes
+ browserNoActivityTimeout: 20 * 60 * 1000,
+ // Timeout for capturing a browser (in ms). On newer versions of iOS simulator (10.0+), the start up time could be between 3 - 6 minutes.
+ captureTimeout: 12 * 60 * 1000, // this is useful if saucelabs takes a long time to boot a vm
+
+ // Required to make Safari on Sauce Labs play nice.
+ hostname: 'karmalocal.dev'
+ })
+
+ )
+
+}