</>

Technology

Selenium

Difficulty

Intermediate

Interview Question

How to run tests in multiple browsers in parallel using Selenium?

Use Selenium Grid — a hub registers nodes for different browsers. TestNG parallel=tests with browser parameters runs the same tests across all registered browser nodes simultaneously.

Answer

Running Tests in Multiple Browsers in Parallel

Using Selenium Grid is the standard approach for parallel cross-browser testing.

Architecture:

CODE
TestNG (parallel="tests")
    ↓
RemoteWebDriver → Hub (port 4444)
                     ↓          ↓          ↓
                 Chrome Node  Firefox Node  IE Node

Step 1 — Start Selenium Grid Hub:

Bash
java -jar selenium-server-standalone.jar -role hub

Step 2 — Register browser nodes:

Bash
# Chrome node
java -jar selenium-server-standalone.jar -role node \
  -hub http://localhost:4444/grid/register \
  -browser browserName=chrome,maxInstances=3

# Firefox node
java -jar selenium-server-standalone.jar -role node \
  -hub http://localhost:4444/grid/register \
  -browser browserName=firefox,maxInstances=3

Step 3 — RemoteWebDriver test class:

Java
public class CrossBrowserGridTest {

    WebDriver driver;

    @Parameters("browser")
    @BeforeClass
    public void setup(String browser) throws Exception {
        DesiredCapabilities caps = new DesiredCapabilities();

        if (browser.equalsIgnoreCase("chrome")) {
            caps.setBrowserName("chrome");
        } else if (browser.equalsIgnoreCase("firefox")) {
            caps.setBrowserName("firefox");
        }

        driver = new RemoteWebDriver(
            new URL("http://localhost:4444/wd/hub"),
            caps
        );
    }

    @Test
    public void verifyTitle() {
        driver.get("https://example.com");
        Assert.assertEquals(driver.getTitle(), "Example Domain");
    }

    @AfterClass
    public void teardown() {
        driver.quit();
    }
}

Step 4 — testng.xml for parallel execution:

XML
<suite name="GridSuite" parallel="tests" thread-count="3">
  <test name="ChromeTest">
    <parameter name="browser" value="chrome" />
    <classes>
      <class name="tests.CrossBrowserGridTest" />
    </classes>
  </test>
  <test name="FirefoxTest">
    <parameter name="browser" value="firefox" />
    <classes>
      <class name="tests.CrossBrowserGridTest" />
    </classes>
  </test>
</suite>

Key point: Selenium Grid is the solution for running tests across multiple browsers in parallel. The hub distributes test commands to registered nodes, each running a specific browser.

Follow AutomateQA

Related Topics