public WebDriver requestedDriverFor(String fieldName, String driverName, String driverOptions) {
if (DriverStrategySelector.inEnvironment(environmentVariables).shouldUseARemoteDriver()) {
return webdriverManager.withOptions(driverOptions)
.withProperty(ThucydidesSystemProperty.WEBDRIVER_REMOTE_DRIVER.getPropertyName(), driverName)
.getWebdriverByName(fieldName, "remote");
} else if (DriverStrategySelector.inEnvironment(environmentVariables).browserStackUrlIsDefined()) {
return webdriverManager.withOptions(driverOptions)
.withProperty(ThucydidesSystemProperty.BROWSERSTACK_BROWSER.getPropertyName(),
BROWSERSTACK_BROWSER_NAMES.getOrDefault(driverName, driverName))
.getWebdriverByName(fieldName, "remote");
} else if (DriverStrategySelector.inEnvironment(environmentVariables).saucelabsUrlIsDefined()) {
return webdriverManager.withOptions(driverOptions)
.withProperty(ThucydidesSystemProperty.SAUCELABS_BROWSERNAME.getPropertyName(),
SAUCELABS_BROWSER_NAMES.getOrDefault(driverName, driverName))
.getWebdriverByName(fieldName, "remote");
} else {
return webdriverManager.withOptions(driverOptions).getWebdriver(driverName);
}
}