diff options
author | dotnetCarpenter <jon.ronnenberg@gmail.com> | 2018-11-12 16:13:58 +0100 |
---|---|---|
committer | dotnetCarpenter <jon.ronnenberg@gmail.com> | 2018-11-12 16:13:58 +0100 |
commit | 85cc7cc130d4894c1acb232c57adaa130c66ce43 (patch) | |
tree | d3a73d7dffe829e77c59a9080bd8fb62c3fa0897 /.config | |
parent | 0f1320e3e63a18f296b6f900c4894120c26ea779 (diff) | |
download | svg.js-85cc7cc130d4894c1acb232c57adaa130c66ce43.tar.gz svg.js-85cc7cc130d4894c1acb232c57adaa130c66ce43.zip |
testing saucelabs
Diffstat (limited to '.config')
-rw-r--r-- | .config/karma.conf.common.js | 66 | ||||
-rw-r--r-- | .config/karma.conf.js | 138 | ||||
-rw-r--r-- | .config/karma.conf.saucelabs.js | 130 |
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' + }) + + ) + +} |