@@ -160,6 +160,34 @@ ChromeBrowser.prototype = {
160
160
161
161
ChromeBrowser . $inject = [ 'baseBrowserDecorator' , 'args' ]
162
162
163
+ function headlessGetOptions ( url , args , parent ) {
164
+ return parent . call ( this , url , args ) . concat ( [ '--headless' , '--disable-gpu' , '--remote-debugging-port=9222' ] )
165
+ }
166
+
167
+ var ChromeHeadlessBrowser = function ( baseBrowserDecorator , args ) {
168
+ ChromeBrowser . apply ( this , arguments )
169
+
170
+ var parentOptions = this . _getOptions
171
+ this . _getOptions = function ( url ) {
172
+ return headlessGetOptions . call ( this , url , args , parentOptions )
173
+ }
174
+ }
175
+
176
+ ChromeHeadlessBrowser . prototype = {
177
+ name : 'ChromeHeadless' ,
178
+
179
+ DEFAULT_CMD : {
180
+ // Try chromium-browser before chromium to avoid conflict with the legacy
181
+ // chromium-bsu package previously known as 'chromium' in Debian and Ubuntu.
182
+ linux : getBin ( [ 'google-chrome' , 'google-chrome-stable' ] ) ,
183
+ darwin : getChromeDarwin ( '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome' ) ,
184
+ win32 : getChromeExe ( 'Chrome' )
185
+ } ,
186
+ ENV_CMD : 'CHROME_BIN'
187
+ }
188
+
189
+ ChromeHeadlessBrowser . $inject = [ 'baseBrowserDecorator' , 'args' ]
190
+
163
191
function canaryGetOptions ( url , args , parent ) {
164
192
// disable crankshaft optimizations, as it causes lot of memory leaks (as of Chrome 23.0)
165
193
var flags = args . flags || [ ]
@@ -197,6 +225,28 @@ ChromeCanaryBrowser.prototype = {
197
225
198
226
ChromeCanaryBrowser . $inject = [ 'baseBrowserDecorator' , 'args' ]
199
227
228
+ var ChromeCanaryHeadlessBrowser = function ( baseBrowserDecorator , args ) {
229
+ ChromeCanaryBrowser . apply ( this , arguments )
230
+
231
+ var parentOptions = this . _getOptions
232
+ this . _getOptions = function ( url ) {
233
+ return headlessGetOptions . call ( this , url , args , parentOptions )
234
+ }
235
+ }
236
+
237
+ ChromeCanaryHeadlessBrowser . prototype = {
238
+ name : 'ChromeCanaryHeadless' ,
239
+
240
+ DEFAULT_CMD : {
241
+ linux : getBin ( [ 'google-chrome-canary' , 'google-chrome-unstable' ] ) ,
242
+ darwin : getChromeDarwin ( '/Applications/Google Chrome Canary.app/Contents/MacOS/Google Chrome Canary' ) ,
243
+ win32 : getChromeExe ( 'Chrome SxS' )
244
+ } ,
245
+ ENV_CMD : 'CHROME_CANARY_BIN'
246
+ }
247
+
248
+ ChromeCanaryHeadlessBrowser . $inject = [ 'baseBrowserDecorator' , 'args' ]
249
+
200
250
ChromiumBrowser . prototype = {
201
251
name : 'Chromium' ,
202
252
@@ -235,13 +285,16 @@ DartiumBrowser.$inject = ['baseBrowserDecorator', 'args']
235
285
// PUBLISH DI MODULE
236
286
module . exports = {
237
287
'launcher:Chrome' : [ 'type' , ChromeBrowser ] ,
288
+ 'launcher:ChromeHeadless' : [ 'type' , ChromeHeadlessBrowser ] ,
238
289
'launcher:ChromeCanary' : [ 'type' , ChromeCanaryBrowser ] ,
290
+ 'launcher:ChromeCanaryHeadless' : [ 'type' , ChromeCanaryHeadlessBrowser ] ,
239
291
'launcher:Chromium' : [ 'type' , ChromiumBrowser ] ,
240
292
'launcher:Dartium' : [ 'type' , DartiumBrowser ]
241
293
}
242
294
243
295
module . exports . test = {
244
296
isJSFlags : isJSFlags ,
245
297
sanitizeJSFlags : sanitizeJSFlags ,
298
+ headlessGetOptions : headlessGetOptions ,
246
299
canaryGetOptions : canaryGetOptions
247
300
}
0 commit comments