2

I am using page object model, I want to run cross-browser testing on browser stack. I am stuck at BeforeTest method, bcoz of dataProvider does not use with BeforeTest.

    public static void setup() throws MalformedURLException {
        browserStack(); 
    }


    @Test (dataProvider = "browserStackData")
    public static void browserStack(Platform platform,String browserName,String browserVersion) throws MalformedURLException {

        DesiredCapabilities caps = new DesiredCapabilities();

        caps.setPlatform(platform);
        caps.setBrowserName(browserName);
        caps.setBrowserName(browserVersion);
        caps.setCapability("project", "WebAPP");
        caps.setCapability("build", "1.0");
        caps.setCapability("name", "Login");
        caps.setCapability("browserstack.local", "false");
        caps.setCapability("browserstack.networkLogs", "true");

        driver = new RemoteWebDriver(new URL(URL), caps);
    }

    @DataProvider(name = "browserStackData" , parallel = true)
    public Object[][]getData() {
        Object[][] testData = new Object[][]{
                {Platform.MAC, "chrome", "84"},
                {Platform.WIN10, "firefox", "78"},
                {Platform.MAC, "safari", "13.1"}
        };
        return testData;
    }
kunal soni
  • 585
  • 1
  • 7
  • 19

2 Answers2

2

In order to run tests on BrowserStack, you only need to change the Hub URL, if you are able to test locally then your test will run on BrowserStack too.

Steps to follow-

1) Specify the BrowserStack Hub URL as: “https://” + USERNAME + “:” + AUTOMATE_KEY + “@hub-cloud.browserstack.com/wd/hub”;

2) Pass the Desired Capabilities in the test scripts as mentioned in the link: https://www.browserstack.com/automate/capabilities

You can refer to the documentation here: https://www.browserstack.com/docs?product=automate

Also, their GitHub repos should help you: https://github.com/browserstack

2

Answer

Reference to this link : https://www.browserstack.com/guide/how-to-setup-browserstack-automate

testng.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite thread-count="2" name="Suite" verbose="2" parallel="tests">

    <test name="Test on Chrome">
        <parameter name="browser" value="Chrome"/>
        <parameter name="browserVersion" value="83.0"/>
        <parameter name="os" value="Windows"/>
        <parameter name="osVersion" value="10"/>
        <classes>
            <class name="com.TC01Login"/>
            <class name="com.TC02Dashboard"/>
        </classes>
    </test>

    <test name="Test on Firefox">
        <parameter name="browser" value="Chrome"/>
        <parameter name="browserVersion" value="83.0"/>
        <parameter name="os" value="Windows"/>
        <parameter name="osVersion" value="10"/>
        <classes>
            <class name="com.TC01Login"/>
            <class name="com.TC02Dashboard"/>
        </classes>
    </test>

    <test name="Test on Safari">
        <parameter name="browser" value="Safari"/>
        <parameter name="browserVersion" value="13.0"/>
        <parameter name="os" value="OS X"/>
        <parameter name="osVersion" value="Catalina"/>
        <classes>
            <class name="com.TC01Login"/>
            <class name="com.TC02Dashboard"/>
        </classes>
    </test>

</suite>




@Parameters({"browser","browserVersion","os","osVersion"})
@BeforeTest
public static void browserStack(String browser, String browserVersion, String os,String osVersion) throws MalformedURLException {

    DesiredCapabilities caps = new DesiredCapabilities();

    caps.setCapability("browser",browser);
    caps.setCapability("browserVersion",browserVersion);
    caps.setCapability("os",os);
    caps.setCapability("osVersion",osVersion);

    caps.setCapability("project", "xyz");
    caps.setCapability("build", "1.0");
    caps.setCapability("name", "Login");
    caps.setCapability("browserstack.local", "false");
    caps.setCapability("browserstack.networkLogs", "true");
    caps.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);

    driver = new RemoteWebDriver(new URL(URL), caps);

}
kunal soni
  • 585
  • 1
  • 7
  • 19