Skip to content

Instantly share code, notes, and snippets.

@sauceaaron
Last active October 18, 2017 15:22
Show Gist options
  • Save sauceaaron/95c1a804dede7fb4195cd1d467617c9f to your computer and use it in GitHub Desktop.
Save sauceaaron/95c1a804dede7fb4195cd1d467617c9f to your computer and use it in GitHub Desktop.
Cross device test example using interface and factory
public AndroidCalculator implements Calculator { //... }
public interface Calculator {
WebElement getNumberKey();
WebElement getPlusKey();
WebElement getEqualsKey();
void pressNumber(int number);
void pressPlusKey();
void pressEqualsKey();
//...
}
public CalculatorFactory {
public static Calculator getInstance(WebDriver driver) { ... }
}
public CalculatorTests {
Calculator calculator;
public CalculatorTests(Calculator calculator) {
this.calculator = calculator;
}
@Test
public void add_two_numbers() {
calculator.pressNumber(1);
calculator.pressPlus();
calculator.pressNumber(2);
calculator.pressEquals();
int total = Integer.valueOf(calculator.readDisplay());
assertEquals(1+2, total)
}
@DataProvider(parallel = true)
public static Object[][] calculatorProvider() {
URL sauceUrl = new URL("https://SAUCE_USERNAME:[email protected]:443/wd/hub");
DesiredCapabilities androidCapabilities = new DesiredCapabilities();
androidCapabilitlies.put("platformName", "Android");
//...
DesiredCapabilities iphoneCapabilities = new DesiredCapabilities();
iphoneCapabilitlies.put("platformName", "iOS");
//...
return new Object[][] {
new Object[] { new AndroidCalculator(new AndroidDriver(sauceURL, androidCapabilities))},
new Object[] { new IOSCalculator(new IOSDriver(sauceURL, iphoneCapabilities))}
}
};
}
public IOSCalcuator implements Calculator { //... }
public WebCalcuator implements Calculator { //... }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment