// Path: src/main/java/me/alb_i986/selenium/tinafw/domain/SupportedBrowser.java
// public enum SupportedBrowser {
// 
// 	CHROME(ChromeDriver.class, DesiredCapabilities.chrome()),
// 	FIREFOX(FirefoxDriver.class, DesiredCapabilities.firefox()),
// 	SAFARI(SafariDriver.class, DesiredCapabilities.safari()),
// 	IE(InternetExplorerDriver.class, DesiredCapabilities.internetExplorer()),
// 	HTML_UNIT(HtmlUnitDriver.class, DesiredCapabilities.htmlUnit()),
// 	;
// 
// 	private DesiredCapabilities capabilities;
// 	private Class<? extends WebDriver> concreteWebDriverClass;
// 
// 	private SupportedBrowser(Class<? extends WebDriver> clazz, DesiredCapabilities capabilities) {
// 		this.concreteWebDriverClass = clazz;
// 		this.capabilities = capabilities;
// 	}
// 	
// 	/**
// 	 * @return the concrete WebDriver class corresponding to this SupportedBrowser
// 	 */
// 	public Class<? extends WebDriver> toClass() {
// 		return this.concreteWebDriverClass;
// 	}
// 
// 	public DesiredCapabilities toCapabilities() {
// 		return this.capabilities;
// 	}
// 
// 	/**
// 	 * @return the lower cased name of this enum constant
// 	 */
// 	@Override
// 	public String toString() {
// 		return super.toString().toLowerCase();
// 	}
// }


import me.alb_i986.selenium.tinafw.domain.SupportedBrowser;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.firefox.FirefoxProfile;
package me.alb_i986.selenium.tinafw.ui;



/**
 * Factory that creates {@link WebDriver}s which drive browsers on the local machine.
 * <p>
 * To keep the implementation as simple and generic as possible, it is not able to
 * handle browser profiles/options (e.g. {@link FirefoxProfile} or {@link ChromeOptions}).
 */
public class WebDriverFactoryLocal implements WebDriverFactory {
	
	/**
	 * @throws WebDriverFactoryException if the instantiation of the WebDriver fails
	 */
	@Override
// Path: src/main/java/me/alb_i986/selenium/tinafw/domain/SupportedBrowser.java
// public enum SupportedBrowser {
// 
// 	CHROME(ChromeDriver.class, DesiredCapabilities.chrome()),
// 	FIREFOX(FirefoxDriver.class, DesiredCapabilities.firefox()),
// 	SAFARI(SafariDriver.class, DesiredCapabilities.safari()),
// 	IE(InternetExplorerDriver.class, DesiredCapabilities.internetExplorer()),
// 	HTML_UNIT(HtmlUnitDriver.class, DesiredCapabilities.htmlUnit()),
// 	;
// 
// 	private DesiredCapabilities capabilities;
// 	private Class<? extends WebDriver> concreteWebDriverClass;
// 
// 	private SupportedBrowser(Class<? extends WebDriver> clazz, DesiredCapabilities capabilities) {
// 		this.concreteWebDriverClass = clazz;
// 		this.capabilities = capabilities;
// 	}
// 	
// 	/**
// 	 * @return the concrete WebDriver class corresponding to this SupportedBrowser
// 	 */
// 	public Class<? extends WebDriver> toClass() {
// 		return this.concreteWebDriverClass;
// 	}
// 
// 	public DesiredCapabilities toCapabilities() {
// 		return this.capabilities;
// 	}
// 
// 	/**
// 	 * @return the lower cased name of this enum constant
// 	 */
// 	@Override
// 	public String toString() {
// 		return super.toString().toLowerCase();
// 	}
// }


// Path: src/main/java/me/alb_i986/selenium/tinafw/ui/WebDriverFactoryLocal.java
import me.alb_i986.selenium.tinafw.domain.SupportedBrowser;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.firefox.FirefoxProfile;

package me.alb_i986.selenium.tinafw.ui;



/**
 * Factory that creates {@link WebDriver}s which drive browsers on the local machine.
 * <p>
 * To keep the implementation as simple and generic as possible, it is not able to
 * handle browser profiles/options (e.g. {@link FirefoxProfile} or {@link ChromeOptions}).
 */
public class WebDriverFactoryLocal implements WebDriverFactory {
	
	/**
	 * @throws WebDriverFactoryException if the instantiation of the WebDriver fails
	 */
	@Override
	public WebDriver getWebDriver(SupportedBrowser browserType) {