package com.codeborne.selenide.webdriver; import com.codeborne.selenide.Configuration; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.openqa.selenium.Dimension; import org.openqa.selenium.Point; import org.openqa.selenium.Proxy; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.firefox.FirefoxProfile; import java.io.IOException; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.is; import static org.junit.Assert.assertThat; import static org.mockito.Mockito.*; public class WebDriverFactoryTest { WebDriverFactory factory = spy(new WebDriverFactory()); WebDriver webdriver = mock(WebDriver.class, RETURNS_DEEP_STUBS); Proxy proxy = mock(Proxy.class); @Before public void setUp() { Configuration.browser = null; Configuration.browserSize = null; Configuration.startMaximized = false; } @Test public void doesNotChangeWindowSizeByDefault() { factory.adjustBrowserSize(webdriver); verifyNoMoreInteractions(webdriver); } @Test public void canConfigureBrowserWindowSize() { Configuration.browserSize = "1600x800"; factory.adjustBrowserSize(webdriver); verify(webdriver.manage().window()).setSize(new Dimension(1600, 800)); } @Test public void canMaximizeBrowserWindow() { Configuration.startMaximized = true; factory.adjustBrowserSize(webdriver); verify(webdriver.manage().window()).maximize(); } @Test public void canMaximizeBrowserWindow_chrome() { Configuration.startMaximized = true; Configuration.browser = "chrome"; doReturn(new Dimension(1600, 1200)).when(factory).getScreenSize(); factory.adjustBrowserSize(webdriver); verify(webdriver.manage().window()).setSize(new Dimension(1600, 1200)); verify(webdriver.manage().window()).setPosition(new Point(0, 0)); } @Test public void transfersStringCapabilitiesFromSystemPropsToDriver() { System.setProperty("capabilities.some.cap", "abcd"); assertThat(factory.createCommonCapabilities(proxy).getCapability("some.cap"), is("abcd")); } @Test public void transfersBooleanCapabilitiesFromSystemPropsToDriver() { System.setProperty("capabilities.some.cap", "true"); assertThat(factory.createCommonCapabilities(proxy).getCapability("some.cap"), is(true)); } @Test public void transfersIntegerCapabilitiesFromSystemPropsToDriver() { System.setProperty("capabilities.some.cap", "25"); assertThat(factory.createCommonCapabilities(proxy).getCapability("some.cap"), is(25)); } @Test public void transferIntegerFirefoxProfilePreferencesFromSystemPropsToDriver() { System.setProperty("firefoxprofile.some.cap", "25"); FirefoxProfile profile = (FirefoxProfile) factory.createFirefoxCapabilities(proxy).getCapability(FirefoxDriver.PROFILE); assertThat(profile.getIntegerPreference("some.cap", 0), is(25)); } @Test public void transferBooleanFirefoxProfilePreferencesFromSystemPropsToDriver() { System.setProperty("firefoxprofile.some.cap", "false"); FirefoxProfile profile = (FirefoxProfile) factory.createFirefoxCapabilities(proxy).getCapability(FirefoxDriver.PROFILE); assertThat(profile.getBooleanPreference("some.cap", true), is(false)); } @Test public void transferStringFirefoxProfilePreferencesFromSystemPropsToDriver() { System.setProperty("firefoxprofile.some.cap", "abdd"); FirefoxProfile profile = (FirefoxProfile) factory.createFirefoxCapabilities(proxy).getCapability(FirefoxDriver.PROFILE); assertThat(profile.getStringPreference("some.cap", "sjlj"), is("abdd")); } @Test public void transferChromeOptionArgumentsFromSystemPropsToDriver() throws IOException { System.setProperty("chromeoptions.args", "abdd,--abcd,xcvcd=123"); String arrayOfArguments = factory.createChromeOptions().toJson().getAsJsonObject().getAsJsonArray("args").toString(); assertThat(arrayOfArguments, containsString("abdd")); assertThat(arrayOfArguments, containsString("--abcd")); assertThat(arrayOfArguments, containsString("xcvcd=123")); } @After public void tearDown() { System.clearProperty("capabilities.some.cap"); } }