Pruebas en varios navegadores con TestNG

Pruebas en varios navegadores con TestNG
MIN
20 Mar 2024

En este tutorial, cubriremos la prueba de múltiples navegadores en Selenium junto con su implementación. Para ello, integraremos Selenium con TestNG y utilizaremos la anotación @Parameter de TestNG para parametrizar el script de prueba con diferentes valores del navegador.

Ten en cuenta también que las pruebas multinavegador también se pueden hacer utilizando Selenium Grid. Sin embargo, aquí utilizaremos TestNG y Selenium WebDriver sólo para implementar pruebas entre navegadores.

Índice

¿Qué es la prueba multi navegador?

Las pruebas cruzadas o cross-browser son un tipo de pruebas en las que la aplicación sometida a prueba se prueba con varios navegadores compatibles. La necesidad de realizar pruebas con varios navegadores se debe a que los distintos navegadores tienen diferentes implementaciones de la interfaz de usuario. Así que no hay forma de garantizar que las aplicaciones que se ejecutan en Chrome también se ejecuten sin problemas en IE.

Pruebas entre navegadores en Selenium y TestNG

Las pruebas entre navegadores en Selenium pueden realizarse utilizando parámetros variables del navegador. Podemos utilizar la anotación @Parameter en TestNG para parametrizar la variable del navegador. Utilizando la anotación @Parameter, podemos pasar varios valores del navegador a los scripts de prueba desde el archivo testng.xml.

El valor del parámetro navegador puede utilizarse entonces para instanciar la clase Selenium WebDriver adecuada. Como el valor del navegador se utiliza en todos los métodos de prueba, es mejor utilizar la variable del navegador en el método @BeforeTest.

El método beforeTest con el parámetro @Parámetro TestNG tendrá el siguiente aspecto:

@Parameters("browser")

@BeforeTest

public void setBrowser(String browser)

{

   if (browser.equalsIgnoreCase("Firefox")) {

      driver = new FirefoxDriver();

   }

   else if (browser.equalsIgnoreCase("Chrome")) {

      System.setProperty("webdriver.chrome.driver", 

         + pathToChromeDriverBinary + "chromedriver.exe");

      driver = new ChromeDriver();

   }

   else {

      throw new IllegalArgumentException("Invalid browser value!!");

   }

   driver.get(URL);

   driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

   driver.manage().window().maximize();

}

Como ya se ha dicho, el valor de la variable del navegador se pasa a los scripts de prueba a través del archivo testng.xml. Este archivo testng.xml contendrá una etiqueta de parámetro con la variable del navegador y su valor.

Aquí creamos dos pruebas, una para Firefox y otra para Chrome con diferentes valores de navegador. Consulta el siguiente fragmento del archivo testng.xml para comprender el concepto de parametrización de pruebas.

Ten en cuenta también que especificar parallel=»tests» en la etiqueta Suite hará que las dos pruebas se ejecuten en paralelo.

<suite name="MultiBrowserSuite" parallel="tests" thread-count="2">

   <test name="TestFirefox">

      <parameter name="browser" value="Firefox"/>

      <classes>

         <class name="sampleTestPackage.MultiBrowserTest"/>

      </classes>

   </test>

   <test name="TestChrome">

      <parameter name="browser" value="Chrome"/>

      <classes>

         <class name="sampleTestPackage.MultiBrowserTest"/>

      </classes>

   </test>

</suite>

Cuando ejecutes la prueba utilizando el archivo testng.xml, la prueba se ejecutará en paralelo para todos los navegadores especificados (en nuestro caso Firefox y Chrome).