11package io .github .mfaisalkhatri .drivers ;
22
3+ import static java .text .MessageFormat .format ;
4+
5+ import java .net .MalformedURLException ;
6+ import java .net .URL ;
7+ import java .nio .file .Paths ;
8+ import java .time .Duration ;
9+ import java .util .HashMap ;
10+ import java .util .Objects ;
11+
312import io .github .bonigarcia .wdm .WebDriverManager ;
413import io .github .mfaisalkhatri .enums .Browsers ;
514import org .apache .logging .log4j .LogManager ;
1019import org .openqa .selenium .firefox .FirefoxOptions ;
1120import org .openqa .selenium .remote .RemoteWebDriver ;
1221
13- import java .net .MalformedURLException ;
14- import java .net .URL ;
15- import java .nio .file .Paths ;
16- import java .time .Duration ;
17- import java .util .HashMap ;
18- import java .util .Objects ;
19-
20- import static java .text .MessageFormat .format ;
21-
2222/**
2323 * @author Faisal Khatri
2424 * @since 24/07/2022
2525 */
2626public final class DriverManager {
27- private static final ThreadLocal < WebDriver > DRIVER = new ThreadLocal <> () ;
28- private static final String GRID_URL = "@hub.lambdatest.com/wd/hub " ;
29- private static final String HUB_URL = "http://localhost:4444/wd/hub" ;
30- private static final Logger LOG = LogManager . getLogger ( "DriverManager.class" ) ;
31- private static final String LT_ACCESS_KEY = System . getProperty ( "LT_ACCESS_KEY" ) ;
32- private static final String LT_USERNAME = System . getProperty ( "LT_USERNAME" ) ;
33- private static final String NO_SANDBOX = "--no-sandbox" ;
34- private static final String DISABLE_DEV_SHM = "--disable-dev-shm-usage" ;
35- private static final String CUSTOM_WINDOW_SIZE = "--window-size=1050,600" ;
36- private static final String HEADLESS = "--headless " ;
27+ private static final String CUSTOM_WINDOW_SIZE = "--window-size=1050,600" ;
28+ private static final String DISABLE_DEV_SHM = "--disable-dev-shm-usage " ;
29+ private static final ThreadLocal < WebDriver > DRIVER = new ThreadLocal <> () ;
30+ private static final String GRID_URL = "@hub.lambdatest.com/wd/hub" ;
31+ private static final String HEADLESS = "--headless" ;
32+ private static final String HUB_URL = "http://localhost:4444/wd/hub" ;
33+ private static final Logger LOG = LogManager . getLogger ( "DriverManager.class" ) ;
34+ private static final String LT_ACCESS_KEY = System . getProperty ( "LT_ACCESS_KEY" ) ;
35+ private static final String LT_USERNAME = System . getProperty ( "LT_USERNAME" ) ;
36+ private static final String NO_SANDBOX = "--no-sandbox " ;
3737
3838 public static void createDriver (final Browsers browser ) {
3939 switch (browser ) {
@@ -68,7 +68,7 @@ private static HashMap<String, Object> ltOptions () {
6868 ltOptions .put ("selenium_version" , "4.0.0" );
6969 ltOptions .put ("build" , "LambdaTest Playground Build" );
7070 ltOptions .put ("name" , "LambdaTest Playground Tests" );
71- ltOptions .put ("acceptInsecureCerts" , true );
71+ ltOptions .put ("acceptInsecureCerts" , true );
7272 ltOptions .put ("w3c" , true );
7373 ltOptions .put ("plugin" , "java-testNG" );
7474 return ltOptions ;
@@ -94,7 +94,7 @@ private static void setupChromeDriver () {
9494 chromePrefs .put ("download.prompt_for_download" , "false" );
9595 chromePrefs .put ("download.default_directory" ,
9696 String .valueOf (Paths .get (System .getProperty ("user.home" ), "Downloads" )));
97- chromePrefs .put ("profile.password_manager_leak_detection" , false );
97+ chromePrefs .put ("profile.password_manager_leak_detection" , false );
9898
9999 final var options = new ChromeOptions ();
100100 options .addArguments (NO_SANDBOX );
@@ -115,7 +115,7 @@ private static void setupChromeDriver () {
115115 private static void setupChromeInLambdaTest () {
116116 final var browserOptions = new ChromeOptions ();
117117 browserOptions .setPlatformName ("Windows 10" );
118- browserOptions .setBrowserVersion ("latest" );
118+ browserOptions .setBrowserVersion ("latest" );
119119 browserOptions .setCapability ("LT:Options" , ltOptions ());
120120 try {
121121 setDriver (
@@ -136,11 +136,16 @@ private static void setupEdgeDriver () {
136136
137137 private static void setupFirefoxDriver () {
138138 LOG .info ("Setting up Firefox Driver...." );
139+ final var isHeadless = Boolean .parseBoolean (
140+ Objects .requireNonNullElse (System .getProperty ("headless" ), "true" ));
141+
139142 final var options = new FirefoxOptions ();
140143 options .addArguments (NO_SANDBOX );
141144 options .addArguments (DISABLE_DEV_SHM );
142145 options .addArguments (CUSTOM_WINDOW_SIZE );
143- options .addArguments (HEADLESS );
146+ if (isHeadless ) {
147+ options .addArguments (HEADLESS );
148+ }
144149 setDriver (WebDriverManager .firefoxdriver ()
145150 .capabilities (options )
146151 .create ());
@@ -150,7 +155,7 @@ private static void setupFirefoxDriver () {
150155 private static void setupFirefoxInLambdaTest () {
151156 final var browserOptions = new FirefoxOptions ();
152157 browserOptions .setPlatformName ("Windows 10" );
153- browserOptions .setBrowserVersion ("latest" );
158+ browserOptions .setBrowserVersion ("latest" );
154159 browserOptions .setCapability ("LT:Options" , ltOptions ());
155160 try {
156161 setDriver (
@@ -198,7 +203,6 @@ private static void setupRemoteEdge () {
198203
199204 private static void setupRemoteFirefox () {
200205 try {
201-
202206 LOG .info ("Setting up Remote Firefox Driver...." );
203207 final var firefoxOptions = new FirefoxOptions ();
204208 firefoxOptions .addArguments (NO_SANDBOX );
0 commit comments