diff --git a/java/src/org/openqa/selenium/remote/service/DriverFinder.java b/java/src/org/openqa/selenium/remote/service/DriverFinder.java index 4263a12e8c195..2719759ca9159 100644 --- a/java/src/org/openqa/selenium/remote/service/DriverFinder.java +++ b/java/src/org/openqa/selenium/remote/service/DriverFinder.java @@ -153,7 +153,8 @@ private List toArguments() { Proxy proxy = Proxy.extractFrom(options); if (proxy != null && proxy.getProxyType() != Proxy.ProxyType.DIRECT - && proxy.getProxyType() != Proxy.ProxyType.AUTODETECT) { + && proxy.getProxyType() != Proxy.ProxyType.AUTODETECT + && proxy.getProxyType() != Proxy.ProxyType.SYSTEM) { arguments.add("--proxy"); if (proxy.getSslProxy() != null) { arguments.add(proxy.getSslProxy()); diff --git a/java/test/org/openqa/selenium/remote/service/DriverFinderTest.java b/java/test/org/openqa/selenium/remote/service/DriverFinderTest.java index d1a6c8b572be1..e85c3efa7f76e 100644 --- a/java/test/org/openqa/selenium/remote/service/DriverFinderTest.java +++ b/java/test/org/openqa/selenium/remote/service/DriverFinderTest.java @@ -39,6 +39,7 @@ import org.openqa.selenium.Capabilities; import org.openqa.selenium.ImmutableCapabilities; import org.openqa.selenium.Proxy; +import org.openqa.selenium.Proxy.ProxyType; import org.openqa.selenium.manager.SeleniumManager; import org.openqa.selenium.manager.SeleniumManagerOutput.Result; import uk.org.webcompere.systemstubs.environment.EnvironmentVariables; @@ -193,6 +194,61 @@ void createsArgumentsForSeleniumManager() throws IOException { verifyNoMoreInteractions(seleniumManager); } + @Test + void createsArgumentsForSeleniumManagerWithSystemProxySettings() throws IOException { + createsArgumentsForSeleniumManagerWithProxySettings(ProxyType.SYSTEM); + } + + @Test + void createsArgumentsForSeleniumManagerWithAutodetectProxySettings() throws IOException { + createsArgumentsForSeleniumManagerWithProxySettings(ProxyType.AUTODETECT); + } + + @Test + void createsArgumentsForSeleniumManagerWithDirectProxySettings() throws IOException { + createsArgumentsForSeleniumManagerWithProxySettings(ProxyType.DIRECT); + } + + void createsArgumentsForSeleniumManagerWithProxySettings(ProxyType proxyType) throws IOException { + when(service.getExecutable()).thenReturn(null); + when(service.getDriverProperty()).thenReturn("property.selenium.manager.empty"); + when(service.getDriverEnvironmentVariable()) + .thenReturn("ENVIRONMENT_VARIABLE_IGNORES_SELENIUM_MANAGER"); + + Proxy proxy = new Proxy().setProxyType(proxyType); + Capabilities capabilities = + new ImmutableCapabilities( + "browserName", + "chrome", + "browserVersion", + "beta", + "proxy", + proxy, + "goog:chromeOptions", + Map.of("binary", browserFile.toString())); + DriverFinder finder = new DriverFinder(service, capabilities, seleniumManager); + + List arguments = new ArrayList<>(); + arguments.add("--browser"); + arguments.add("chrome"); + arguments.add("--browser-version"); + arguments.add("beta"); + arguments.add("--browser-path"); + arguments.add(browserFile.toString()); + Result result = new Result(0, "", driverFile.toString(), browserFile.toString()); + doReturn(result).when(seleniumManager).getBinaryPaths(arguments); + + assertThat(finder.getDriverPath()).isEqualTo(driverFile.toString()); + assertThat(finder.getBrowserPath()).isEqualTo(browserFile.toString()); + verify(service, times(1)).getExecutable(); + verify(service, times(1)).getDriverName(); + verify(service, times(1)).getDriverProperty(); + verify(service, times(1)).getDriverEnvironmentVariable(); + verifyNoMoreInteractions(service); + verify(seleniumManager, times(1)).getBinaryPaths(arguments); + verifyNoMoreInteractions(seleniumManager); + } + private Path createExecutableFile(String prefix) { Path driverFile = null; try {