Use matrix for browser/build testing
[mootools.git] / Gruntfile.js
blobaa97a64df15ad0753878f72db8841044e05ffb83
1 "use strict";
3 module.exports = function(grunt) {
5         require('load-grunt-tasks')(grunt);
6         var browser = process.env.BROWSER;
8         grunt.initConfig({
9                 'connect': {
10                         testserver: {
11                                 options: {
12                                         // We use end2end task (which does not start the webserver)
13                                         // and start the webserver as a separate process
14                                         // to avoid https://github.com/joyent/libuv/issues/826
15                                         port: 8000,
16                                         hostname: '0.0.0.0',
17                                         middleware: function(connect, options) {
18                                                 return [
19                                                         function(req, resp, next) {
20                                                                 // cache get requests to speed up tests on travis
21                                                                 if (req.method === 'GET') {
22                                                                         resp.setHeader('Cache-control', 'public, max-age=3600');
23                                                                 }
25                                                                 next();
26                                                         },
27                                                         connect.static(options.base)
28                                                 ];
29                                         }
30                                 }
31                         }
32                 },
34                 'packager': {
36                         options: {
37                                 name: 'Core'
38                         },
40                         all: {
41                                 src: 'Source/**/*.js',
42                                 dest: 'mootools-all.js'
43                         },
45                         nocompat: {
46                                 options: {
47                                         strip: ['.*compat'],
48                                         only: '<%= grunt.option("file") && "Core/" + grunt.option("file") %>'
49                                 },
50                                 src: 'Source/**/*.js',
51                                 dest: 'mootools-nocompat.js'
52                         },
54                         specs: {
55                                 options: {
56                                         name: 'Specs'
57                                 },
58                                 src: 'Specs/<%= grunt.option("module") || "**" %>/<%= grunt.option("file") || "*" %>.js',
59                                 dest: 'mootools-specs.js'
60                         },
62                         'specs-nocompat': {
63                                 options: {
64                                         name: 'Specs',
65                                         strip: ['.*compat'],
66                                         only: '<%= grunt.option("file") && "Specs/" + grunt.option("file") %>'
67                                 },
68                                 src: 'Specs/**/*.js',
69                                 dest: 'mootools-specs.js'
70                         }
72                 },
74                 'karma': {
76                         options: {
77                                 captureTimeout: 60000 * 2,
78                                 singleRun: true,
79                                 frameworks: ['jasmine', 'sinon'],
80                                 files: ['Tests/Utilities/*.js', 'mootools-*.js'],
81                                 sauceLabs: {
82                                         username: process.env.SAUCE_USERNAME,
83                                         accessKey: process.env.SAUCE_ACCESS_KEY,
84                                         testName: 'MooTools-Core'
85                                 },
86                                 customLaunchers: {
87                                         chrome_linux: {
88                                                 base: 'SauceLabs',
89                                                 browserName: 'chrome',
90                                                 platform: 'linux'
91                                         },
92                                         firefox_linux: {
93                                                 base: 'SauceLabs',
94                                                 browserName: 'firefox',
95                                                 platform: 'linux'
96                                         },
97                                         opera_win2000: {
98                                                 base: 'SauceLabs',
99                                                 browserName: 'opera',
100                                                 platform: 'Windows 2008',
101                                                 version: '12'
102                                         },
103                                         safari7: {
104                                                 base: 'SauceLabs',
105                                                 browserName: 'safari',
106                                                 platform: 'OS X 10.9',
107                                                 version: '7'
108                                         },
109                                         safari6: {
110                                                 base: 'SauceLabs',
111                                                 browserName: 'safari',
112                                                 platform: 'OS X 10.8',
113                                                 version: '6'
114                                         },
115                                         safari5_osx10_6: {
116                                                 base: 'SauceLabs',
117                                                 browserName: 'safari',
118                                                 version: '5',
119                                                 platform: 'OS X 10.6'
120                                         },
121                                         safari5_win7: {
122                                                 base: 'SauceLabs',
123                                                 browserName: 'safari',
124                                                 version: '5',
125                                                 platform: 'Windows 7'
126                                         },
127                                         ie11: {
128                                                 base: 'SauceLabs',
129                                                 browserName: 'internet explorer',
130                                                 platform: 'Windows 8.1',
131                                                 version: '11'
132                                         },
133                                         ie10: {
134                                                 base: 'SauceLabs',
135                                                 browserName: 'internet explorer',
136                                                 platform: 'Windows 8',
137                                                 version: '10'
138                                         },
139                                         ie9: {
140                                                 base: 'SauceLabs',
141                                                 browserName: 'internet explorer',
142                                                 platform: 'Windows 7',
143                                                 version: '9'
144                                         },
145                                         ie8: {
146                                                 base: 'SauceLabs',
147                                                 browserName: 'internet explorer',
148                                                 platform: 'Windows 7',
149                                                 version: '8'
150                                         },
151                                         ie7: {
152                                                 base: 'SauceLabs',
153                                                 browserName: 'internet explorer',
154                                                 platform: 'Windows XP',
155                                                 version: '7'
156                                         },
157                                         ie6: {
158                                                 base: 'SauceLabs',
159                                                 browserName: 'internet explorer',
160                                                 platform: 'Windows XP',
161                                                 version: '6'
162                                         },
163                                         iphone_7: {
164                                                 base: 'SauceLabs',
165                                                 browserName: 'iphone',
166                                                 platform: 'OS X 10.9',
167                                                 version: '7',
168                                                 deviceOrientation: 'portrait'
169                                         },
170                                         iphone_6_1: {
171                                                 base: 'SauceLabs',
172                                                 browserName: 'iphone',
173                                                 platform: 'OS X 10.8',
174                                                 version: '6.1',
175                                                 deviceOrientation: 'portrait'
176                                         },
177                                         iphone_6: {
178                                                 base: 'SauceLabs',
179                                                 browserName: 'iphone',
180                                                 platform: 'OS X 10.8',
181                                                 version: '6',
182                                                 deviceOrientation: 'portrait'
183                                         }
184                                 },
185                         },
187                         continuous: {
188                                 browsers: ['PhantomJS']
189                         },
191                         sauceTask: {
192                                 browsers: [browser]
193                         },
195                         dev: {
196                                 singleRun: false,
197                                 browsers: ['PhantomJS'],
198                                 reporters: 'dots'
199                         }
201                 },
203                 'clean': {
204                         all: {
205                                 src: 'mootools-*.js'
206                         }
207                 }
209         });
210         var travisBuild = process.env.BUILD;
211         var pullRequest = process.env.TRAVIS_PULL_REQUEST;
213         var compatBuild = ['clean', 'packager:all', 'packager:specs'];
214         var nocompatBuild = ['clean', 'packager:nocompat', 'packager:specs-nocompat'];
216         var tasks = travisBuild == 'compat' ? compatBuild : nocompatBuild;
217         tasks =  pullRequest != 'false' ? tasks.concat('karma:continuous') : tasks.concat('karma:sauceTask');
219         grunt.registerTask('default', compatBuild);
220         grunt.registerTask('nocompat', nocompatBuild);
221         grunt.registerTask('default:travis', tasks);