summaryrefslogtreecommitdiff
path: root/src/main/java/com/mavlushechka/a1qa/driverUtils/WebDriverFactory.java
blob: e52a9cff94a3ee1ca0e97fe72de3140ab334ac5f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
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);
    }

}