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); } }