diff --git a/pom.xml b/pom.xml index a4823b8..05d9a7c 100644 --- a/pom.xml +++ b/pom.xml @@ -175,6 +175,13 @@ 3.1 + + + org.apache.commons + commons-io + 1.3.2 + + org.apache.logging.log4j @@ -187,4 +194,6 @@ 2.0.2 + + diff --git a/src/main/java/io/ddavison/conductor/Config.java b/src/main/java/io/ddavison/conductor/Config.java index 6cb8227..4d3bb84 100755 --- a/src/main/java/io/ddavison/conductor/Config.java +++ b/src/main/java/io/ddavison/conductor/Config.java @@ -21,4 +21,5 @@ String hub() default ""; String baseUrl() default ""; String path() default ""; + String options() default ""; } diff --git a/src/main/java/io/ddavison/conductor/Constants.java b/src/main/java/io/ddavison/conductor/Constants.java index 507a6b7..ae38208 100644 --- a/src/main/java/io/ddavison/conductor/Constants.java +++ b/src/main/java/io/ddavison/conductor/Constants.java @@ -9,9 +9,11 @@ public class Constants { public static final String JVM_CONDUCTOR_BROWSER = "CONDUCTOR_BROWSER"; public static final String JVM_CONDUCTOR_HUB = "CONDUCTOR_HUB"; public static final String JVM_CONDUCTOR_BASE_URL = "CONDUCTOR_BASE_URL"; + public static final String JVM_CONDUCTOR_OPTIONS = "CONDUCTOR_OPTIONS"; public static final String DEFAULT_PROPERTY_URL = "url"; public static final String DEFAULT_PROPERTY_BROWSER = "browser"; public static final String DEFAULT_PROPERTY_HUB = "hub"; public static final String DEFAULT_PROPERTY_BASE_URL = "base_url"; + public static final String DEFAULT_OPTIONS = "options"; } diff --git a/src/main/java/io/ddavison/conductor/Locomotive.java b/src/main/java/io/ddavison/conductor/Locomotive.java index 715a714..48c495f 100755 --- a/src/main/java/io/ddavison/conductor/Locomotive.java +++ b/src/main/java/io/ddavison/conductor/Locomotive.java @@ -18,9 +18,9 @@ import org.junit.After; import org.openqa.selenium.*; import org.openqa.selenium.chrome.ChromeDriver; +import org.openqa.selenium.chrome.ChromeOptions; import org.openqa.selenium.edge.EdgeDriver; import org.openqa.selenium.firefox.FirefoxDriver; -import org.openqa.selenium.htmlunit.HtmlUnitDriver; import org.openqa.selenium.ie.InternetExplorerDriver; import org.openqa.selenium.interactions.Actions; import org.openqa.selenium.phantomjs.PhantomJSDriver; @@ -138,8 +138,10 @@ public Locomotive() { switch (configuration.browser()) { case CHROME: capabilities = DesiredCapabilities.chrome(); + + ChromeOptions options = getChromeOptions(configuration); if (isLocal) try { - driver = new ChromeDriver(capabilities); + driver = new ChromeDriver(options); } catch (Exception x) { logFatal("Also see https://github.com/conductor-framework/conductor/wiki/WebDriver-Executables"); System.exit(1); @@ -215,6 +217,21 @@ public Locomotive() { if (StringUtils.isNotEmpty(baseUrl)) driver.navigate().to(baseUrl); } + private ChromeOptions getChromeOptions(Config locoConfig) { + ChromeOptions options = new ChromeOptions(); + if (StringUtils.isNotEmpty(locoConfig.options())) { + String[] splitOptions = locoConfig.options().split("\\s+"); + List lstOptions = new ArrayList<>(); + for (String opt : splitOptions) { + lstOptions.add(opt); + } + lstOptions.add(locoConfig.options()); + options.addArguments(lstOptions); + } + + return options; + } + private String extractChromeDriver(Platform platform) throws IOException, RuntimeException { return extractDriver(platform, "chrome"); } diff --git a/src/main/java/io/ddavison/conductor/LocomotiveConfig.java b/src/main/java/io/ddavison/conductor/LocomotiveConfig.java index fd97e7a..2878997 100644 --- a/src/main/java/io/ddavison/conductor/LocomotiveConfig.java +++ b/src/main/java/io/ddavison/conductor/LocomotiveConfig.java @@ -104,6 +104,21 @@ public String path() { return path; } + @Override + public String options() { + String opts = ""; + if (!StringUtils.isEmpty(properties.getProperty(Constants.DEFAULT_OPTIONS))) { + opts = properties.getProperty(Constants.DEFAULT_OPTIONS); + } + if (testConfig != null && (!StringUtils.isEmpty(testConfig.options()))) { + opts = testConfig.options(); + } + if (!StringUtils.isEmpty(JvmUtil.getJvmProperty(Constants.JVM_CONDUCTOR_OPTIONS))) { + opts = JvmUtil.getJvmProperty(Constants.JVM_CONDUCTOR_OPTIONS); + } + return opts; + } + @Override public Class annotationType() { return null;