In your TestNG.xml file , add a parameter for specifying browser type.
<test>
<parameter name="browser" value="firefox">
<parameter name="username" value="testuser"/>
<parameter name="password" value="testpassword"/>
<classes>
<class name="com.parameterization.TestParameters" />
</classes>
</test>
<test>
<parameter name="browser" value="chrome">
<parameter name="username" value="testuser"/>
<parameter name="password" value="testpassword"/>
<classes>
<class name="com.parameterization.TestParameters" />
</classes>
</test>
<test>
<parameter name="browser" value="ie">
<parameter name="username" value="testuser"/>
<parameter name="password" value="testpassword"/>
<classes>
<class name="com.parameterization.TestParameters" />
</classes>
</test>
</suite>
In your test class receive these parameters and create a webdriver according to the desired capabilities.
package com.parameterization;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
public class TestParameters {
@Parameters({ "browser", "username", "password" })
@Test
public void testCaseOne(String browser,String username, String password) {
System.out.println("browser passed as :- " + browser);
createWebDriver(browser);
loginToApplicationOne(username,password);
}
@Parameters({ "browser", "username", "password" })
@Test
public void testCaseTwo(String browser, String username, String password) {
createWebDriver(browser);
loginToApplicationTwo(username,password);
}
}
As you have set thread-count to 3 and your requirement is to launch 2 browser instances in each test block. You have to refactor your test classes in the above style so that each method block create its isolated driver instance. Thus a total of 6 browsers would be launched.