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 extends Annotation> annotationType() {
return null;