I want to run same test on different browsers (Firefox, Chrome and Safari). To do this I am using parametrization in tests. Where in if browser is chrome run chrome and so on.
And in testng.xml
I have specified to run tests in parallel and repeated same test in under several <test>
tags.
What if I have so many tests to run. I will be copy pasting same test in <test>
tags. Which doesn't see optimal solution.
How can I fix this?
Here is what I tried:
public class SameTestDifferentBrowsers {
WebDriver driver;
@BeforeMethod
@Parameters("browser")
public void openBroswer(String browser) {
if (browser.equalsIgnoreCase("Chrome")) {
System.out.println(System.getProperty("user.dir"));
System.setProperty("webdriver.chrome.driver", System.getProperty("user.dir")+"//lib//browsers//chromedriverMac");
driver = new ChromeDriver();
} else if (browser.equalsIgnoreCase("Firefox")) {
driver = new FirefoxDriver();
} else if (browser.equalsIgnoreCase("safari")) {
System.setProperty("webdriver.safari.driver", System.getProperty("user.dir")+"//lib//browsers//SafariDriver.safariextz");
driver = new SafariDriver();
}
}
@AfterMethod
public void closeBrowser() {
driver.quit();
}
@Test
public void login_TestCase() {
driver.get("https://www.google.com");
}
}
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Parallel test suite" parallel="tests">
<test name="Firefox Test">
<parameter name="browser" value="browser"/>
<classes>
<class name="ParallelBrowser.SameTestDifferentBrowsers"/>
</classes>
</test>
<test name="Chrome Test">
<parameter name="browser" value="browser"/>
<classes>
<class name="ParallelBrowser.SameTestDifferentBrowsers"/>
</classes>
</test>
<test name="Safari Test">
<parameter name="browser" value="browser"/>
<classes>
<class name="ParallelBrowser.SameTestDifferentBrowsers"/>
</classes>
</test>
</suite>