Running parallel test on BrowserStack

In previous post we have see only once test to run on cloud services like Testing bot or BrowserStack.

Now in this post we will see how to run parallel test with Browser Stack.

The script should launch three different browser like IE, Firefox and Chrome in three different OS.

We need two files 
1. Testng Script
package com.test;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import org.apache.commons.io.FileUtils;
import org.openqa.selenium.By;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.Augmenter;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class BrowserStackParallelTest {
private WebDriver driver;
@BeforeClass
@org.testng.annotations.Parameters(value={"browser","version","platform"})
public void setUp(String browser, String version, String platform) throws Exception {
DesiredCapabilities capability = new DesiredCapabilities();
capability.setCapability("platform",platform);
capability.setCapability("browserName", browser);
capability.setCapability("browserVersion", version);
capability.setCapability("project", "P1");
capability.setCapability("build", "1.0");
driver = new RemoteWebDriver(
new URL("http://gururajhm:yourkey@hub.browserstack.com/wd/hub"),
capability);
}
@Test
public void testSimple() throws Exception {
driver.get("http://www.google.com");
System.out.println("Page title is: " + driver.getTitle());
Assert.assertEquals("Google", driver.getTitle());
WebElement element = driver.findElement(By.name("q"));
element.sendKeys("Browser Stack");
element.submit();
driver = new Augmenter().augment(driver);
File srcFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
try {
FileUtils.copyFile(srcFile, new File("Screenshot.png"));
} catch (IOException e) {
e.printStackTrace();
}
}
@AfterClass
public void tearDown() throws Exception {
driver.quit();
}
}
2. Testng XML file : tesng.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite thread-count="3" name="Suite" parallel="tests">
<test name="FirstTest">
<parameter name="browser" value="firefox"/>
<parameter name="version" value="30.0"/>
<parameter name="platform" value="MAC"/>
<classes>
<class name="com.test.BrowserStackParallelTest"/>
</classes>
</test> <!-- Test -->
<test name="SecondTest">
<parameter name="browser" value="chrome"/>
<parameter name="version" value="35.0"/>
<parameter name="platform" value="WINDOWS"/>
<classes>
<class name="com.test.BrowserStackParallelTest"/>
</classes>
</test> <!-- Test -->
<test name="ThirdTest">
<parameter name="browser" value="IE"/>
<parameter name="version" value="7.0"/>
<parameter name="platform" value="XP"/>
<classes>
<class name="com.test.BrowserStackParallelTest"/>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->
view raw 2.testng.xml hosted with ❤ by GitHub
2. Testng.xml file (this file will have three different test with parameter like browser, version and platform )


1. TesNG Script :




Right click testng.xml file and run as TestngSuite

Now login to BrowserStack under Automate tab should be able see three threads or parallel test running