@@ -160,6 +160,34 @@ ChromeBrowser.prototype = {
160160
161161ChromeBrowser . $inject = [ 'baseBrowserDecorator' , 'args' ]
162162
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+
163191function canaryGetOptions ( url , args , parent ) {
164192 // disable crankshaft optimizations, as it causes lot of memory leaks (as of Chrome 23.0)
165193 var flags = args . flags || [ ]
@@ -197,6 +225,28 @@ ChromeCanaryBrowser.prototype = {
197225
198226ChromeCanaryBrowser . $inject = [ 'baseBrowserDecorator' , 'args' ]
199227
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+
200250ChromiumBrowser . prototype = {
201251 name : 'Chromium' ,
202252
@@ -235,13 +285,16 @@ DartiumBrowser.$inject = ['baseBrowserDecorator', 'args']
235285// PUBLISH DI MODULE
236286module . exports = {
237287 'launcher:Chrome' : [ 'type' , ChromeBrowser ] ,
288+ 'launcher:ChromeHeadless' : [ 'type' , ChromeHeadlessBrowser ] ,
238289 'launcher:ChromeCanary' : [ 'type' , ChromeCanaryBrowser ] ,
290+ 'launcher:ChromeCanaryHeadless' : [ 'type' , ChromeCanaryHeadlessBrowser ] ,
239291 'launcher:Chromium' : [ 'type' , ChromiumBrowser ] ,
240292 'launcher:Dartium' : [ 'type' , DartiumBrowser ]
241293}
242294
243295module . exports . test = {
244296 isJSFlags : isJSFlags ,
245297 sanitizeJSFlags : sanitizeJSFlags ,
298+ headlessGetOptions : headlessGetOptions ,
246299 canaryGetOptions : canaryGetOptions
247300}
0 commit comments