Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save henrrich/76130799b253b0e98bb85561616220e7 to your computer and use it in GitHub Desktop.
Save henrrich/76130799b253b0e98bb85561616220e7 to your computer and use it in GitHub Desktop.
Webdriver capability builder classes for different browsers
// Running towards BrowserStack using remote webdriver
// decorator class on top of basic capability builder classes from different browsers
public class BrowserStackRemoteWebDriverCapabilityBuilder extends CapabilityConfigurator.CapabilityBuilderDecorator {
public BrowserStackRemoteWebDriverCapabilityBuilder(CapabilityConfigurator.CapabilityBuilder builder) {
super(builder);
}
@Override
public void buildDesiredCapabilities() {
this.builder.buildDesiredCapabilities();
this.desiredCapabilities = builder.getDesiredCapabilities();
this.desiredCapabilities.setCapability("browser", TestContext.getBrowser());
this.desiredCapabilities.setCapability("browser_version", TestContext.getBrowserVersion());
this.desiredCapabilities.setCapability("os", TestContext.getPlatformName());
this.desiredCapabilities.setCapability("os_version", TestContext.getPlatformVersion());
//this.desiredCapabilities.setCapability("platform", TestContext.getPlatform());
this.desiredCapabilities.setCapability("browserstack.debug", "true");
//following is needed for tunneling
this.desiredCapabilities.setCapability("browserstack.local", "true");
this.desiredCapabilities.setCapability("acceptSslCerts", "true");
}
}
public class ChromeWebDriverCapabilityBuilder extends CapabilityBuilder {
@Override
public void buildDesiredCapabilities() {
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments("--disable-extensions");
chromeOptions.addArguments("test-type");
chromeOptions.addArguments("--dns-prefetch-disable");
// chromeOptions.addArguments("--window-size=300,300");
this.desiredCapabilities = DesiredCapabilities.chrome();
this.desiredCapabilities.setCapability(ChromeOptions.CAPABILITY, chromeOptions);
}
}
public class EdgeWebDriverCapabilityBuilder extends CapabilityBuilder {
@Override
public void buildDesiredCapabilities() {
this.desiredCapabilities = DesiredCapabilities.edge();
}
}
public class FirefoxWebDriverCapabilityBuilder extends CapabilityBuilder {
@Override
public void buildDesiredCapabilities() {
this.desiredCapabilities = DesiredCapabilities.firefox();
FirefoxProfile firefoxProfile = new FirefoxProfile();
//Disable Firefox reader view
firefoxProfile.setPreference("reader.parse-on-load.enabled", false);
firefoxProfile.setEnableNativeEvents(false);
this.desiredCapabilities.setCapability(FirefoxDriver.PROFILE, firefoxProfile);
}
}
public class IECapabilityBuilder extends CapabilityBuilder {
@Override
public void buildDesiredCapabilities() {
desiredCapabilities = DesiredCapabilities.internetExplorer();
desiredCapabilities.setCapability(InternetExplorerDriver.IE_ENSURE_CLEAN_SESSION, true);
// desiredCapabilities.setCapability(InternetExplorerDriver.ENABLE_ELEMENT_CACHE_CLEANUP, true);
desiredCapabilities.setCapability(InternetExplorerDriver.INITIAL_BROWSER_URL, "");
}
}
// Running towards SauceLabs from Jenkins saucelabs plugin
// decorator class on top of basic capability builder classes from different browsers
public class JenkinsSauceLabsRemoteWebDriverCapabilityBuilder extends CapabilityBuilderDecorator {
private static final String ENV_SELENIUM_PLATFORM = "SELENIUM_PLATFORM";
private static final String ENV_SELENIUM_VERSION = "SELENIUM_VERSION";
private static final String ENV_JOB_NAME = "JOB_NAME";
private static final String ENV_BUILD_NUMBER = "BUILD_NUMBER";
public JenkinsSauceLabsRemoteWebDriverCapabilityBuilder(CapabilityConfigurator.CapabilityBuilder builder) {
super(builder);
}
@Override
public void buildDesiredCapabilities() {
builder.buildDesiredCapabilities();
this.desiredCapabilities = builder.getDesiredCapabilities();
//Jenkins SauceLabs plugin env variables
String platform = System.getenv(ENV_SELENIUM_PLATFORM);
String version = System.getenv(ENV_SELENIUM_VERSION);
String jobName = System.getenv(ENV_JOB_NAME);
String buildNumber = System.getenv(ENV_BUILD_NUMBER);
this.desiredCapabilities.setCapability("version", version);
this.desiredCapabilities.setCapability("platform", platform);
this.desiredCapabilities.setCapability("build", jobName + "__" + buildNumber);
//this.desiredCapabilities.setCapability("name", (TestContext.isMobileChannel() ? "Mobile" : "Desktop") + "[" +
// TestContext.getJurisdiction() + "-" + TestContext.getMarket() + "]");
this.desiredCapabilities.setCapability("recordVideo", true);
this.desiredCapabilities.setCapability("recordScreenshots", true);
}
}
public class SafariWebDriverCapabilityBuilder extends CapabilityBuilder {
@Override
public void buildDesiredCapabilities() {
this.desiredCapabilities = DesiredCapabilities.safari();
}
}
// Running towards SauceLabs using remote webdriver
// decorator class on top of basic capability builder classes from different browsers
public class SauceLabsRemoteWebDriverCapabilityBuilder extends CapabilityConfigurator.CapabilityBuilderDecorator {
public SauceLabsRemoteWebDriverCapabilityBuilder(CapabilityConfigurator.CapabilityBuilder builder) {
super(builder);
}
@Override
public void buildDesiredCapabilities() {
this.builder.buildDesiredCapabilities();
this.desiredCapabilities = builder.getDesiredCapabilities();
this.desiredCapabilities.setCapability("platform", TestContext.getPlatform());
this.desiredCapabilities.setCapability("build", TestContext.getCloudJobName() + "__" + TestContext.getCloudBuildNumber());
this.desiredCapabilities.setCapability("version", TestContext.getBrowserVersion());
this.desiredCapabilities.setCapability("recordVideo", "true"/*TestContext.isRecordVideo()*/);
//this.desiredCapabilities.setCapability("recordScreenshots", System.getProperty("recordScreenshots"));
this.desiredCapabilities.setCapability("screenResolution", "1024x768");
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment