diff --git a/grunt/sauce.js b/grunt/sauce.js new file mode 100644 index 00000000000..20cbe0ed3d0 --- /dev/null +++ b/grunt/sauce.js @@ -0,0 +1,80 @@ +var sauceConfig = { + testName: 'Vue.js unit tests', + recordScreenshots: false, + build: process.env.TRAVIS_JOB_ID || Date.now(), +} + +/** + * Having too many tests running concurrently on saucelabs + * causes timeouts and errors, so we have to run them in + * smaller batches. + */ + +var batches = [ + // the cool kids + { + sl_chrome: { + base: 'SauceLabs', + browserName: 'chrome', + platform: 'Windows 7', + version: '37' + }, + sl_firefox: { + base: 'SauceLabs', + browserName: 'firefox', + version: '32' + }, + sl_mac_safari: { + base: 'SauceLabs', + browserName: "safari", + platform: "OS X 10.9", + version: "7" + } + }, + // ie family + { + sl_ie_9: { + base: 'SauceLabs', + browserName: "internet explorer", + platform: "Windows 7", + version: "9" + }, + sl_ie_10: { + base: 'SauceLabs', + browserName: "internet explorer", + platform: "Windows 8", + version: "10" + }, + sl_ie_11: { + base: 'SauceLabs', + browserName: 'internet explorer', + platform: 'Windows 8.1', + version: '11' + } + }, + // mobile + { + sl_ios_safari: { + base: 'SauceLabs', + browserName: 'iphone', + platform: 'OS X 10.9', + version: '7.1' + }, + sl_android: { + base: 'SauceLabs', + browserName: 'android', + platform: 'Linux', + version: '4.4' + } + } +] + +for (var i = 0; i < 3; i++) { + exports['batch' + (i+1)] = { + sauceLabs: sauceConfig, + captureTimeout: 600000, + customLaunchers: batches[i], + browsers: Object.keys(batches[i]), + reporters: ['progress', 'saucelabs'] + } +} \ No newline at end of file diff --git a/grunt/shared-build.js b/grunt/shared-build.js index d5a750c268b..ae9cdd34968 100644 --- a/grunt/shared-build.js +++ b/grunt/shared-build.js @@ -2,7 +2,6 @@ * Shared build function */ -var fs = require('fs') var resolve = require('component-resolver') var build = require('component-builder') diff --git a/gruntfile.js b/gruntfile.js index ea8543fcf87..e725be40899 100644 --- a/gruntfile.js +++ b/gruntfile.js @@ -1,3 +1,5 @@ +var sauceConfig = require('./grunt/sauce') + module.exports = function (grunt) { var version = grunt.file.readJSON('package.json').version @@ -61,7 +63,7 @@ module.exports = function (grunt) { reporters: ['progress'] } }, - phantom: { + coverage: { options: { browsers: ['PhantomJS'], reporters: ['progress', 'coverage'], @@ -76,6 +78,15 @@ module.exports = function (grunt) { ] } } + }, + sauce1: { + options: sauceConfig.batch1 + }, + sauce2: { + options: sauceConfig.batch2 + }, + sauce3: { + options: sauceConfig.batch3 } } @@ -92,8 +103,10 @@ module.exports = function (grunt) { }) grunt.registerTask('unit', ['karma:browsers']) - grunt.registerTask('cover', ['karma:phantom']) + grunt.registerTask('cover', ['karma:coverage']) grunt.registerTask('test', ['unit', 'cover', 'casper']) + grunt.registerTask('sauce', ['karma:sauce1', 'karma:sauce2', 'karma:sauce3']) + grunt.registerTask('ci', ['jshint', 'test', 'sauce']) grunt.registerTask('default', ['jshint', 'test', 'build']) } \ No newline at end of file diff --git a/package.json b/package.json index 3491e54d81a..c4fd918a038 100644 --- a/package.json +++ b/package.json @@ -35,6 +35,7 @@ "karma-firefox-launcher": "^0.1.3", "karma-jasmine": "^0.2.2", "karma-phantomjs-launcher": "^0.1.4", + "karma-sauce-launcher": "^0.2.10", "uglify-js": "^2.4.15" } }