package net.thucydides.core.webdriver.capabilities;
import net.thucydides.core.ThucydidesSystemProperty;
import net.thucydides.core.util.EnvironmentVariables;
import org.openqa.selenium.remote.DesiredCapabilities;
import static org.apache.commons.lang3.StringUtils.isNotEmpty;
/**
* Provides BrowserStack specific capabilities
*
* @author Imran Khan
*/
public class BrowserStackRemoteDriverCapabilities implements RemoteDriverCapabilities {
private final EnvironmentVariables environmentVariables;
public BrowserStackRemoteDriverCapabilities(EnvironmentVariables environmentVariables){
this.environmentVariables = environmentVariables;
}
@Override
public String getUrl() {
return ThucydidesSystemProperty.BROWSERSTACK_URL.from(environmentVariables);
}
@Override
public DesiredCapabilities getCapabilities(DesiredCapabilities capabilities) {
configureBrowserStackOs(capabilities);
configureBrowserStackOsVersion(capabilities);
configureBrowserStackBrowser(capabilities);
configureBrowserStackBrowserVersion(capabilities);
configureBrowserStackDevice(capabilities);
configureBrowserStackDeviceOrientation(capabilities);
configureBrowserStackProject(capabilities);
configureBrowserStackBuild(capabilities);
configureBrowserStackName(capabilities);
configureBrowserStackLocal(capabilities);
configureBrowserStackDebug(capabilities);
configureBrowserStackResolution(capabilities);
configureBrowserStackSeleniumVersion(capabilities);
configureBrowserStackIeNoFlash(capabilities);
configureBrowserStackIeDriver(capabilities);
configureBrowserStackIeEnablePopups(capabilities);
return capabilities;
}
private void configureBrowserStackOs(DesiredCapabilities capabilities) {
String os = ThucydidesSystemProperty.BROWSERSTACK_OS.from(environmentVariables);
if (isNotEmpty(os)) {
capabilities.setCapability("os", os);
}
}
private void configureBrowserStackOsVersion(DesiredCapabilities capabilities) {
String os_version = ThucydidesSystemProperty.BROWSERSTACK_OS_VERSION.from(environmentVariables);
if (isNotEmpty(os_version)) {
capabilities.setCapability("os_version", os_version);
}
}
private void configureBrowserStackBrowser(DesiredCapabilities capabilities){
String browser = ThucydidesSystemProperty.BROWSERSTACK_BROWSER.from(environmentVariables);
if (isNotEmpty(browser)) {
capabilities.setCapability("browser", browser);
}
}
private void configureBrowserStackBrowserVersion(DesiredCapabilities capabilities){
String browserVersion = ThucydidesSystemProperty.BROWSERSTACK_BROWSER_VERSION.from(environmentVariables);
if (isNotEmpty(browserVersion)) {
capabilities.setCapability("browser_version", browserVersion);
}
}
private void configureBrowserStackDevice(DesiredCapabilities capabilities){
String device = ThucydidesSystemProperty.BROWSERSTACK_DEVICE.from(environmentVariables);
if (isNotEmpty(device)) {
capabilities.setCapability("device", device);
}
}
private void configureBrowserStackDeviceOrientation(DesiredCapabilities capabilities){
String deviceOrientation = ThucydidesSystemProperty.BROWSERSTACK_DEVICE_ORIENTATION.from(environmentVariables);
if (isNotEmpty(deviceOrientation)) {
capabilities.setCapability("deviceOrientation", deviceOrientation);
}
}
private void configureBrowserStackProject(DesiredCapabilities capabilities){
String project = ThucydidesSystemProperty.BROWSERSTACK_PROJECT.from(environmentVariables);
if (isNotEmpty(project)) {
capabilities.setCapability("project", project);
}
}
private void configureBrowserStackBuild(DesiredCapabilities capabilities){
String build = ThucydidesSystemProperty.BROWSERSTACK_BUILD.from(environmentVariables);
if (isNotEmpty(build)) {
capabilities.setCapability("build", build);
}
}
private void configureBrowserStackName(DesiredCapabilities capabilities){
String name = ThucydidesSystemProperty.BROWSERSTACK_SESSION_NAME.from(environmentVariables);
if (isNotEmpty(name)) {
capabilities.setCapability("name", name);
}
}
private void configureBrowserStackLocal(DesiredCapabilities capabilities){
String local = ThucydidesSystemProperty.BROWSERSTACK_LOCAL.from(environmentVariables);
if (isNotEmpty(local)) {
capabilities.setCapability("browserstack.local", local);
}
}
private void configureBrowserStackDebug(DesiredCapabilities capabilities){
String debug = ThucydidesSystemProperty.BROWSERSTACK_DEBUG.from(environmentVariables);
if (isNotEmpty(debug)) {
capabilities.setCapability("browserstack.debug", debug);
}
}
private void configureBrowserStackResolution(DesiredCapabilities capabilities){
String resolution = ThucydidesSystemProperty.BROWSERSTACK_RESOLUTION.from(environmentVariables);
if (isNotEmpty(resolution)) {
capabilities.setCapability("browserstack.resolution", resolution);
}
}
private void configureBrowserStackSeleniumVersion(DesiredCapabilities capabilities){
String seleniumVersion = ThucydidesSystemProperty.BROWSERSTACK_SELENIUM_VERSION.from(environmentVariables);
if (isNotEmpty(seleniumVersion)) {
capabilities.setCapability("browserstack.selenium_version", seleniumVersion);
}
}
private void configureBrowserStackIeNoFlash(DesiredCapabilities capabilities){
String ieNoFlash = ThucydidesSystemProperty.BROWSERSTACK_IE_NO_FLASH.from(environmentVariables);
if (isNotEmpty(ieNoFlash)) {
capabilities.setCapability("browserstack.ie.noFlash", ieNoFlash);
}
}
private void configureBrowserStackIeDriver(DesiredCapabilities capabilities){
String ieDriver = ThucydidesSystemProperty.BROWSERSTACK_IE_DRIVER.from(environmentVariables);
if (isNotEmpty(ieDriver)) {
capabilities.setCapability("browserstack.ie.driver", ieDriver);
}
}
private void configureBrowserStackIeEnablePopups(DesiredCapabilities capabilities){
String ieEnablePopups = ThucydidesSystemProperty.BROWSERSTACK_IE_ENABLE_POPUPS.from(environmentVariables);
if (isNotEmpty(ieEnablePopups)) {
capabilities.setCapability("browserstack.ie.enablePopups", ieEnablePopups);
}
}
}