module.exports = function (grunt) { var browsers = [ { browserName: "firefox", version: "19", platform: "XP" }, { browserName: "firefox", platform: "linux" }, { browserName: "chrome", platform: "linux" }, { browserName: "internet explorer", platform: "Windows 8.1", version: "11" }, { browserName: "internet explorer", platform: "WIN8", version: "10" }, { browserName: "internet explorer", platform: "VISTA", version: "9" }, { browserName: 'safari', platform: 'OS X 10.6' }, { browserName: 'safari', platform: 'OS X 10.8' }, { browserName: 'safari', platform: 'OS X 10.9' }, { browserName: 'iphone', platform: 'OS X 10.9', version: '7.1' }, { browserName: 'android', platform: 'Linux', version: '4.4' }, ]; var extraBrowsers = [ { browserName: "firefox", platform: "linux", version: "30" }, { browserName: "firefox", platform: "linux", version: "25" }, { browserName: "firefox", platform: "OS X 10.9" }, { browserName: "chrome", platform: "XP" }, { browserName: "chrome", platform: "OS X 10.9" }, { browserName: 'iphone', platform: 'OS X 10.8', version: '6.1' }, { browserName: 'iphone', platform: 'OS X 10.8', version: '5.1' }, { browserName: 'android', platform: 'Linux', version: '4.2' }, // XXX haven't investigated these: //{ browserName: "opera", platform: "Windows 2008", version: "12" } //{ browserName: 'iphone', platform: 'OS X 10.6', version: '4.3' }, //{ browserName: 'android', platform: 'Linux', version: '4.0' }, ]; if (grunt.option('extra')) { browsers = browsers.concat(extraBrowsers); } grunt.initConfig({ connect: { server: { options: { base: "", port: 9999, useAvailablePort: true } } }, 'saucelabs-mocha': { all: { options: { urls: (function () { var urls = ["http://localhost:9999/test/"]; if (grunt.option('extra')) { urls.push("http://localhost:9999/test-sham/"); } return urls; }()), //tunnelTimeout: 5, build: process.env.TRAVIS_BUILD_NUMBER, tunneled: !process.env.SAUCE_HAS_TUNNEL, identifier: process.env.TRAVIS_JOB_NUMBER, sauceConfig: { 'tunnel-identifier': process.env.TRAVIS_JOB_NUMBER }, //concurrency: 3, browsers: browsers, testname: (function () { var testname = "mocha"; if (process.env.TRAVIS_PULL_REQUEST && process.env.TRAVIS_PULL_REQUEST !== 'false') { testname += ' (PR '+process.env.TRAVIS_PULL_REQUEST+')'; } if (process.env.TRAVIS_BRANCH && process.env.TRAVIS_BRANCH !== 'false') { testname += ' (branch '+process.env.TRAVIS_BRANCH+')'; } return testname; })(), tags: (function () { var tags = []; if (process.env.TRAVIS_PULL_REQUEST && process.env.TRAVIS_PULL_REQUEST !== 'false') { tags.push('PR-'+process.env.TRAVIS_PULL_REQUEST); } if (process.env.TRAVIS_BRANCH && process.env.TRAVIS_BRANCH !== 'false') { tags.push(process.env.TRAVIS_BRANCH); } return tags; })() } } }, watch: {} }); // Loading dependencies for (var key in grunt.file.readJSON("package.json").devDependencies) { if (key !== "grunt" && key.indexOf("grunt") === 0) { grunt.loadNpmTasks(key); } } grunt.registerTask("dev", ["connect", "watch"]); grunt.registerTask("sauce", ["connect", "saucelabs-mocha"]); };