2525// THE POSSIBILITY OF SUCH DAMAGE.
2626
2727import serve from "./server.mjs" ;
28- import { Builder , Capabilities , logging } from "selenium-webdriver" ;
28+ import { Builder , Capabilities , logging , firefox , chrome } from "selenium-webdriver" ;
2929import commandLineArgs from "command-line-args" ;
3030import { promises as fs } from "fs" ;
3131import path from "path" ;
@@ -93,6 +93,7 @@ if (options.suite && !VALID_TAGS.includes(options.suite))
9393 printHelp ( `Invalid suite: ${ options . suite } . Choices are: ${ VALID_TAGS . join ( ", " ) } ` ) ;
9494
9595const BROWSER = options ?. browser ;
96+ const IS_HEADLESS = os . platform ( ) === "linux" && ! process . env . DISPLAY ;
9697if ( ! BROWSER )
9798 printHelp ( "No browser specified, use $BROWSER or --browser" , optionDefinitions ) ;
9899
@@ -104,11 +105,17 @@ switch (BROWSER) {
104105 break ;
105106
106107 case "firefox" : {
107- capabilities = Capabilities . firefox ( ) ;
108+ const options = new firefox . Options ( ) ;
109+ if ( IS_HEADLESS )
110+ options . addArguments ( "-headless" ) ;
111+ capabilities = Capabilities . firefox ( ) . set ( "moz:firefoxOptions" , options ) ;
108112 break ;
109113 }
110114 case "chrome" : {
111- capabilities = Capabilities . chrome ( ) ;
115+ const options = new chrome . Options ( ) ;
116+ if ( IS_HEADLESS )
117+ options . addArguments ( "--headless" ) ;
118+ capabilities = Capabilities . chrome ( ) . set ( "goog:chromeOptions" , options ) ;
112119 break ;
113120 }
114121 case "edge" : {
0 commit comments