Gruntfile.js 3.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. 'use strict';
  2. module.exports = function (grunt) {
  3. var browsers = [
  4. { browserName: 'firefox', version: '19', platform: 'XP' },
  5. { browserName: 'firefox', platform: 'linux' },
  6. { browserName: 'firefox', platform: 'OS X 10.10' },
  7. { browserName: 'chrome', platform: 'linux' },
  8. { browserName: 'chrome', platform: 'OS X 10.9' },
  9. { browserName: 'chrome', platform: 'XP' },
  10. { browserName: 'internet explorer', platform: 'Windows 8.1', version: '11' },
  11. { browserName: 'internet explorer', platform: 'WIN8', version: '10' },
  12. { browserName: 'internet explorer', platform: 'VISTA', version: '9' },
  13. { browserName: 'safari', platform: 'OS X 10.6' },
  14. { browserName: 'safari', platform: 'OS X 10.8' },
  15. { browserName: 'safari', platform: 'OS X 10.9' },
  16. { browserName: 'safari', platform: 'OS X 10.10' },
  17. { browserName: 'iphone', platform: 'OS X 10.9', version: '7.1' },
  18. { browserName: 'android', platform: 'Linux', version: '4.4' },
  19. ];
  20. var extraBrowsers = [
  21. { browserName: 'firefox', platform: 'linux', version: '30' },
  22. { browserName: 'firefox', platform: 'linux', version: '25' },
  23. { browserName: 'iphone', platform: 'OS X 10.8', version: '6.1' },
  24. { browserName: 'iphone', platform: 'OS X 10.8', version: '5.1' },
  25. { browserName: 'android', platform: 'Linux', version: '4.2' },
  26. // XXX haven't investigated these:
  27. // { browserName: 'opera', platform: 'Windows 7', version: '12' },
  28. // { browserName: 'opera', platform: 'Windows 2008', version: '12' }
  29. // { browserName: 'iphone', platform: 'OS X 10.6', version: '4.3' },
  30. // { browserName: 'android', platform: 'Linux', version: '4.0' },
  31. ];
  32. if (grunt.option('extra')) {
  33. browsers = browsers.concat(extraBrowsers);
  34. }
  35. grunt.initConfig({
  36. connect: {
  37. server: {
  38. options: {
  39. base: '',
  40. port: 9999,
  41. useAvailablePort: true
  42. }
  43. }
  44. },
  45. 'saucelabs-mocha': {
  46. all: {
  47. options: {
  48. urls: (function () {
  49. var urls = ['http://localhost:9999/test/'];
  50. if (grunt.option('extra')) {
  51. urls.push('http://localhost:9999/test-sham/');
  52. }
  53. return urls;
  54. }()),
  55. // tunnelTimeout: 5,
  56. build: process.env.TRAVIS_BUILD_NUMBER,
  57. tunneled: !process.env.SAUCE_HAS_TUNNEL,
  58. identifier: process.env.TRAVIS_JOB_NUMBER,
  59. sauceConfig: {
  60. 'tunnel-identifier': process.env.TRAVIS_JOB_NUMBER
  61. },
  62. // concurrency: 3,
  63. browsers: browsers,
  64. testname: (function () {
  65. var testname = 'mocha';
  66. if (process.env.TRAVIS_PULL_REQUEST && process.env.TRAVIS_PULL_REQUEST !== 'false') {
  67. testname += ' (PR ' + process.env.TRAVIS_PULL_REQUEST + ')';
  68. }
  69. if (process.env.TRAVIS_BRANCH && process.env.TRAVIS_BRANCH !== 'false') {
  70. testname += ' (branch ' + process.env.TRAVIS_BRANCH + ')';
  71. }
  72. return testname;
  73. }()),
  74. tags: (function () {
  75. var tags = [];
  76. if (process.env.TRAVIS_PULL_REQUEST && process.env.TRAVIS_PULL_REQUEST !== 'false') {
  77. tags.push('PR-' + process.env.TRAVIS_PULL_REQUEST);
  78. }
  79. if (process.env.TRAVIS_BRANCH && process.env.TRAVIS_BRANCH !== 'false') {
  80. tags.push(process.env.TRAVIS_BRANCH);
  81. }
  82. return tags;
  83. }())
  84. }
  85. }
  86. },
  87. watch: {}
  88. });
  89. // Loading dependencies
  90. for (var key in grunt.file.readJSON('package.json').devDependencies) {
  91. if (key !== 'grunt' && key.indexOf('grunt') === 0) {
  92. grunt.loadNpmTasks(key);
  93. }
  94. }
  95. grunt.registerTask('dev', ['connect', 'watch']);
  96. grunt.registerTask('sauce', ['connect', 'saucelabs-mocha']);
  97. };