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