package com.mavlushechka.a1qa.driverUtils; import com.mavlushechka.a1qa.models.Browser; import com.mavlushechka.a1qa.utils.JSONParser; import com.mavlushechka.a1qa.utils.LoggerUtils; import com.mavlushechka.a1qa.utils.StringUtils; import io.github.bonigarcia.wdm.WebDriverManager; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeOptions; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.firefox.FirefoxOptions; public class WebDriverFactory { private WebDriverFactory() { } protected static WebDriver createWebDriver() { switch (Browser.valueOf(StringUtils.convertToConstantCase(JSONParser.parse("config", "browser.name")))) { case CHROME -> { LoggerUtils.info("Creating ChromeDriver."); return createChromeDriver(); } case FIREFOX -> { LoggerUtils.info("Creating FirefoxDriver."); return createFirefoxDriver(); } default -> { LoggerUtils.error("Incorrect browser name."); throw new IllegalStateException("Incorrect browser name."); } } } private static ChromeDriver createChromeDriver() { ChromeOptions chromeOptions = new ChromeOptions(); WebDriverManager.chromedriver().setup(); if (Boolean.parseBoolean(JSONParser.parse("config", "browser.isIncognito"))) { LoggerUtils.info("Turning on Chrome incognito mode."); chromeOptions.addArguments("--incognito"); } if (Boolean.parseBoolean(JSONParser.parse("config", "browser.isKiosk"))) { LoggerUtils.info("Turning on Chrome kiosk mode."); chromeOptions.addArguments("--kiosk"); } return new ChromeDriver(chromeOptions); } private static FirefoxDriver createFirefoxDriver() { FirefoxOptions firefoxOptions = new FirefoxOptions(); WebDriverManager.firefoxdriver().setup(); if (Boolean.parseBoolean(JSONParser.parse("config", "browser.isIncognito"))) { LoggerUtils.info("Turning on Firefox incognito mode."); firefoxOptions.addArguments("--private"); } if (Boolean.parseBoolean(JSONParser.parse("config", "browser.isKiosk"))) { LoggerUtils.info("Turning on Firefox kiosk mode."); firefoxOptions.addArguments("--kiosk"); } return new FirefoxDriver(firefoxOptions); } }