package com.algocrafts.chapter2.factory; import com.algocrafts.browsers.ChromeDriverSupplier; import com.algocrafts.browsers.FirefoxDriverSupplier; import com.algocrafts.browsers.HeadlessFirefoxDriverSupplierOnLinux; import com.algocrafts.browsers.HeadlessFirefoxDriverSupplierOnMacOs; import com.algocrafts.browsers.InternetExplorerDriverSupplier; import com.algocrafts.browsers.SafariDriverSupplier; import com.algocrafts.selenium.CachedWebDriverSupplier; import org.openqa.selenium.WebDriver; import java.util.function.Supplier; public enum BetterWebDriverFactory implements Supplier { FIREFOX(new FirefoxDriverSupplier()) , CHROME(new ChromeDriverSupplier()), HEADLESS_MAC(new HeadlessFirefoxDriverSupplierOnMacOs()), HEADLESS_LINUX(new HeadlessFirefoxDriverSupplierOnLinux()), SAFARI(new SafariDriverSupplier()), INTERNET_EXPLORER(new InternetExplorerDriverSupplier()); private BetterWebDriverFactory(CachedWebDriverSupplier<? extends WebDriver> driverDecorator) { this.webDriverSupplier = driverDecorator; } private final CachedWebDriverSupplier<? extends WebDriver> webDriverSupplier; public WebDriver get() { return webDriverSupplier.get(); } }