package org.fluentlenium.configuration;
import org.assertj.core.api.Assertions;
import org.fluentlenium.configuration.PropertiesBackendConfigurationTest.DummyConfigurationDefaults;
import org.fluentlenium.configuration.PropertiesBackendConfigurationTest.DummyConfigurationFactory;
import org.junit.BeforeClass;
import org.junit.Test;
import org.openqa.selenium.remote.DesiredCapabilities;
public class AnnotationConfigurationTest {
private static AnnotationConfiguration configuration;
private static AnnotationConfiguration defaultConfiguration;
private static AnnotationConfiguration noConfiguration;
private static AnnotationConfiguration desiredCapabilitiesConfiguration;
private static AnnotationConfiguration capabilitiesClassNameConfiguration;
private static AnnotationConfiguration capabilitiesFactoryConfiguration;
@FluentConfiguration(baseUrl = "http://localhost:3000", configurationFactory = DummyConfigurationFactory.class,
configurationDefaults = DummyConfigurationDefaults.class, eventsEnabled = FluentConfiguration.BooleanValue.FALSE,
capabilities = "{javascriptEnabled: true}", remoteUrl = "http://localhost:4444", htmlDumpMode =
ConfigurationProperties.TriggerMode.AUTOMATIC_ON_FAIL, htmlDumpPath = "/html-path", implicitlyWait = 1000,
pageLoadTimeout = 2000, awaitPollingEvery = 10, awaitAtMost = 100, screenshotMode = ConfigurationProperties
.TriggerMode.MANUAL, screenshotPath = "/screenshot-path", scriptTimeout = 3000, webDriver = "firefox", custom =
@CustomProperty(name = "key", value = "value"))
public static class ConfiguredClass {
}
@FluentConfiguration(capabilities = "firefox")
public static class DesiredCapabilitiesClass {
}
@FluentConfiguration(capabilities = "org.fluentlenium.configuration.TestCapabilities")
public static class CapabilitiesClassNameClass {
}
@FluentConfiguration(capabilities = "test-capabilities-factory")
public static class CapabilitiesFactoryClass {
}
@FluentConfiguration
public static class DefaultClass {
}
@BeforeClass
public static void beforeClass() {
configuration = new AnnotationConfiguration(ConfiguredClass.class);
defaultConfiguration = new AnnotationConfiguration(DefaultClass.class);
noConfiguration = new AnnotationConfiguration(Object.class);
desiredCapabilitiesConfiguration = new AnnotationConfiguration(DesiredCapabilitiesClass.class);
capabilitiesClassNameConfiguration = new AnnotationConfiguration(CapabilitiesClassNameClass.class);
capabilitiesFactoryConfiguration = new AnnotationConfiguration(CapabilitiesFactoryClass.class);
}
@Test
public void configurationFactory() {
Assertions.assertThat(configuration.getConfigurationFactory()).isEqualTo(DummyConfigurationFactory.class);
}
@Test
public void configurationDefaults() {
Assertions.assertThat(configuration.getConfigurationDefaults()).isEqualTo(DummyConfigurationDefaults.class);
}
@Test
public void webDriver() {
Assertions.assertThat(noConfiguration.getWebDriver()).isNull();
Assertions.assertThat(defaultConfiguration.getWebDriver()).isNull();
Assertions.assertThat(configuration.getWebDriver()).isEqualTo("firefox");
}
@Test
public void remoteUrl() {
Assertions.assertThat(noConfiguration.getRemoteUrl()).isNull();
Assertions.assertThat(defaultConfiguration.getRemoteUrl()).isNull();
Assertions.assertThat(configuration.getRemoteUrl()).isEqualTo("http://localhost:4444");
}
@Test
public void capabilities() {
Assertions.assertThat(noConfiguration.getCapabilities()).isNull();
Assertions.assertThat(defaultConfiguration.getCapabilities()).isNull();
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setJavascriptEnabled(true);
Assertions.assertThat(configuration.getCapabilities()).isEqualTo(capabilities);
}
@Test
public void desiredCapabilities() {
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
Assertions.assertThat(desiredCapabilitiesConfiguration.getCapabilities()).isEqualTo(capabilities);
DesiredCapabilities differentCapabilities = DesiredCapabilities.chrome();
Assertions.assertThat(desiredCapabilitiesConfiguration.getCapabilities()).isNotEqualTo(differentCapabilities);
}
@Test
public void capabilitiesClassName() {
Assertions.assertThat(capabilitiesClassNameConfiguration.getCapabilities()).isExactlyInstanceOf(TestCapabilities.class);
}
@Test
public void capabilitiesFactory() {
Assertions.assertThat(capabilitiesFactoryConfiguration.getCapabilities()).isExactlyInstanceOf(TestCapabilities.class);
}
@Test
public void baseUrl() {
Assertions.assertThat(noConfiguration.getBaseUrl()).isNull();
Assertions.assertThat(defaultConfiguration.getBaseUrl()).isNull();
Assertions.assertThat(configuration.getBaseUrl()).isEqualTo("http://localhost:3000");
}
@Test
public void pageLoadTimeout() {
Assertions.assertThat(noConfiguration.getPageLoadTimeout()).isNull();
Assertions.assertThat(defaultConfiguration.getPageLoadTimeout()).isNull();
Assertions.assertThat(configuration.getPageLoadTimeout()).isEqualTo(2000L);
}
@Test
public void implicitlyWait() {
Assertions.assertThat(noConfiguration.getImplicitlyWait()).isNull();
Assertions.assertThat(defaultConfiguration.getImplicitlyWait()).isNull();
Assertions.assertThat(configuration.getImplicitlyWait()).isEqualTo(1000L);
}
@Test
public void awaitAtMost() {
Assertions.assertThat(noConfiguration.getAwaitAtMost()).isNull();
Assertions.assertThat(defaultConfiguration.getAwaitAtMost()).isNull();
Assertions.assertThat(configuration.getAwaitAtMost()).isEqualTo(100L);
}
@Test
public void awaitPollingEvery() {
Assertions.assertThat(noConfiguration.getAwaitPollingEvery()).isNull();
Assertions.assertThat(defaultConfiguration.getAwaitPollingEvery()).isNull();
Assertions.assertThat(configuration.getAwaitPollingEvery()).isEqualTo(10L);
}
@Test
public void scriptTimeout() {
Assertions.assertThat(noConfiguration.getScriptTimeout()).isNull();
Assertions.assertThat(defaultConfiguration.getScriptTimeout()).isNull();
Assertions.assertThat(configuration.getScriptTimeout()).isEqualTo(3000L);
}
@Test
public void eventsEnabled() {
Assertions.assertThat(noConfiguration.getEventsEnabled()).isNull();
Assertions.assertThat(defaultConfiguration.getEventsEnabled()).isNull();
Assertions.assertThat(configuration.getEventsEnabled()).isEqualTo(false);
}
@Test
public void screenshotPath() {
Assertions.assertThat(noConfiguration.getScreenshotPath()).isNull();
Assertions.assertThat(defaultConfiguration.getScreenshotPath()).isNull();
Assertions.assertThat(configuration.getScreenshotPath()).isEqualTo("/screenshot-path");
}
@Test
public void htmlDumpPath() {
Assertions.assertThat(noConfiguration.getHtmlDumpPath()).isNull();
Assertions.assertThat(defaultConfiguration.getHtmlDumpPath()).isNull();
Assertions.assertThat(configuration.getHtmlDumpPath()).isEqualTo("/html-path");
}
@Test
public void screenshotMode() {
Assertions.assertThat(noConfiguration.getScreenshotMode()).isNull();
Assertions.assertThat(defaultConfiguration.getScreenshotMode()).isNull();
Assertions.assertThat(configuration.getScreenshotMode()).isEqualTo(ConfigurationProperties.TriggerMode.MANUAL);
}
@Test
public void htmlDumpMode() {
Assertions.assertThat(noConfiguration.getHtmlDumpMode()).isNull();
Assertions.assertThat(defaultConfiguration.getHtmlDumpMode()).isNull();
Assertions.assertThat(configuration.getHtmlDumpMode()).isEqualTo(ConfigurationProperties.TriggerMode.AUTOMATIC_ON_FAIL);
}
@Test
public void custom() {
Assertions.assertThat(noConfiguration.getCustomProperty("key")).isNull();
Assertions.assertThat(defaultConfiguration.getCustomProperty("key")).isNull();
Assertions.assertThat(configuration.getCustomProperty("key")).isEqualTo("value");
}
}