All Downloads are FREE. Search and download functionalities are using the official Maven repository.

info.novatec.testit.webtester.browser.factories.BaseBrowserFactory Maven / Gradle / Ivy

package info.novatec.testit.webtester.browser.factories;

import java.util.function.Function;

import org.openqa.selenium.Proxy;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;

import info.novatec.testit.webtester.browser.Browser;
import info.novatec.testit.webtester.browser.BrowserFactory;
import info.novatec.testit.webtester.browser.WebDriverBrowser;
import info.novatec.testit.webtester.browser.proxy.NoProxyConfiguration;
import info.novatec.testit.webtester.browser.proxy.ProxyConfiguration;
import info.novatec.testit.webtester.config.Configuration;
import info.novatec.testit.webtester.config.builders.DefaultConfigurationBuilder;


/**
 * Base class for all the default {@link BrowserFactory} implementations shipped with WebTester.
 * 

* This class provides default behaviour for any {@link Browser} initialized with it. *

* The following capabilities are set by default: *

    *
  • Native Events are disabled
  • *
  • Unsigned certificates are accepted
  • *
* * @param the type of the extending factory implementation - used for fluent API for certain methods * @since 2.1 */ public class BaseBrowserFactory implements BrowserFactory { private final Function webDriverProducer; private ProxyConfiguration proxyConfiguration; protected BaseBrowserFactory(Function webDriverProducer) { this.webDriverProducer = webDriverProducer; } @Override public Browser createBrowser() { DesiredCapabilities capabilities = getDefaultCapabilities(); return createBrowser(capabilities); } protected DesiredCapabilities getDefaultCapabilities() { DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability(CapabilityType.HAS_NATIVE_EVENTS, false); capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true); setOptionalProxyConfiguration(capabilities); return capabilities; } @Override public Browser createBrowser(DesiredCapabilities capabilities) { Configuration configuration = new DefaultConfigurationBuilder().build(); postProcessConfiguration(configuration); return WebDriverBrowser.forWebDriver(webDriverProducer.apply(capabilities)).withConfiguration(configuration).build(); } protected void setOptionalProxyConfiguration(DesiredCapabilities capabilities) { if (proxyConfiguration != null && !(proxyConfiguration instanceof NoProxyConfiguration)) { Proxy proxy = new Proxy(); proxyConfiguration.configureProxy(proxy); capabilities.setCapability(CapabilityType.PROXY, proxy); } } protected void postProcessConfiguration(Configuration configuration) { // optional hook } @Override @SuppressWarnings("unchecked") public T withProxyConfiguration(ProxyConfiguration configuration) { proxyConfiguration = configuration; return ( T ) this; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy