package org.jboss.arquillian.drone.webdriver.factory; import org.jboss.arquillian.drone.webdriver.configuration.WebDriverConfiguration; import org.junit.After; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mockito; import org.mockito.junit.MockitoJUnitRunner; import org.openqa.selenium.WebDriver; import org.openqa.selenium.phantomjs.PhantomJSDriver; import org.openqa.selenium.phantomjs.PhantomJSDriverService; import org.openqa.selenium.remote.DesiredCapabilities; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.PrintStream; import java.net.URL; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.when; @RunWith(MockitoJUnitRunner.class) public class PhantomJSDriverTestCase { @Test public void testOpenSimplePage() throws IOException { PhantomJSDriverFactory phantomJSDriverFactory = new PhantomJSDriverFactory(); DesiredCapabilities phantomJSCaps = new DesiredCapabilities(new BrowserCapabilitiesList.PhantomJS().getRawCapabilities()); WebDriverConfiguration configuration = getMockedConfiguration(phantomJSCaps); WebDriver driver = phantomJSDriverFactory.createInstance(configuration); URL page = this.getClass().getClassLoader().getResource("simple.html"); driver.get(page.toString()); Assert.assertEquals("The page title doesn't match.", "Simple Page", driver.getTitle()); driver.quit(); } @Test public void testReformatCLIArgumentsInCapToArray() throws IOException { ByteArrayOutputStream outContent = new ByteArrayOutputStream(); System.setOut(new PrintStream(outContent)); System.setErr(new PrintStream(outContent)); DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability(PhantomJSDriverService.PHANTOMJS_CLI_ARGS, "--debug true"); PhantomJSDriverFactory phantomJSDriverFactory = new PhantomJSDriverFactory(); WebDriverConfiguration configuration = getMockedConfiguration(capabilities); PhantomJSDriver instance = phantomJSDriverFactory.createInstance(configuration); phantomJSDriverFactory.destroyInstance(instance); assertThat(outContent.toString()).as("The log output should contain [DEBUG] string").contains("[DEBUG]"); } @After public void resetOutputStreams() { System.setOut(System.out); System.setErr(System.out); } private WebDriverConfiguration getMockedConfiguration(DesiredCapabilities capabilities) { WebDriverConfiguration configuration = Mockito.mock(WebDriverConfiguration.class); when(configuration.getCapabilities()).thenReturn(capabilities); when(configuration.getImplementationClass()) .thenReturn(new BrowserCapabilitiesList.PhantomJS().getImplementationClassName()); return configuration; } }