Class PlaywrightUtil

java.lang.Object
giis.demo.descuento.it.PlaywrightUtil

public class PlaywrightUtil extends Object
Utilidades varias para uso en los tests con Playwright, equivalente a SeleniumUtil pero usando la API de Playwright (https://playwright.dev/java/). Mantiene la misma estructura que SeleniumUtil para que se puedan comparar ambas tecnologias; los comentarios resaltan unicamente las diferencias respecto de la version Selenium.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private static final org.slf4j.Logger
     
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    private
     
  • Method Summary

    Modifier and Type
    Method
    Description
    static com.microsoft.playwright.Browser
    getNewBrowser(com.microsoft.playwright.Playwright playwright)
    Lanza el navegador (Chromium) usado en estos tests teniendo en cuenta el fichero de propiedades, de forma analoga a SeleniumUtil.getNewDriver.
    static String[][]
    getTableContent(com.microsoft.playwright.Locator table)
    Equivalente con Playwright a SeleniumUtil.getTableContent: obtiene el contenido de una tabla como matriz de strings.
    private static String[][]
    listToStringMatrix(List<List<String>> irows, int maxcol)
     
    static void
    takeScreenshot(com.microsoft.playwright.Page page, String name)
    Toma una imagen de la vista actual del navegador y la guarda en target/site/screenshot.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • log

      private static final org.slf4j.Logger log
  • Constructor Details

    • PlaywrightUtil

      private PlaywrightUtil()
  • Method Details

    • getNewBrowser

      public static com.microsoft.playwright.Browser getNewBrowser(com.microsoft.playwright.Playwright playwright)
      Lanza el navegador (Chromium) usado en estos tests teniendo en cuenta el fichero de propiedades, de forma analoga a SeleniumUtil.getNewDriver.
      Playwright siempre descarga y gestiona sus propios navegadores como cuando se usa SeleniumManager. El objeto Playwright recibido lanza directamente el navegador (la primera ejecucion descarga los binarios. Se puede forzar con "mvn exec:java -Dexec.mainClass=com.microsoft.playwright.CLI -Dexec.args=install").
      El comportamiento se controla con la propiedad remote.web.driver.url (se reutiliza la misma configuracion que en Selenium, selenium.properties, para no duplicar ficheros de propiedades):
       - En ejecucion local no se definen propiedades y se lanza un navegador local en modo headed (visible).
       - El valor "headless" lanza un navegador local en modo headless (compatible con CI).
       - Cualquier otro valor se interpreta como una url a la que conectarse via CDP (connectOverCDP).
       
      Parameters:
      playwright - punto de entrada de Playwright ya inicializado (Playwright.create()).
      Returns:
      el Browser lanzado (local) o al que se ha conectado (remoto).
    • getTableContent

      public static String[][] getTableContent(com.microsoft.playwright.Locator table)
      Equivalente con Playwright a SeleniumUtil.getTableContent: obtiene el contenido de una tabla como matriz de strings. La logica es la misma (recorrer tr y, dentro, td o th), pero usando Locators de Playwright en vez de WebElement. Como la tabla puede no tener un numero igual de celdas en cada fila, el numero de columnas devuelto sera el de la fila mas larga, rellenando con blancos.
      Parameters:
      table - Locator que apunta a un elemento table.
      Returns:
      Matriz de strings con el contenido de cada celda (incluyendo headers).
    • listToStringMatrix

      private static String[][] listToStringMatrix(List<List<String>> irows, int maxcol)
    • takeScreenshot

      public static void takeScreenshot(com.microsoft.playwright.Page page, String name)
      Toma una imagen de la vista actual del navegador y la guarda en target/site/screenshot. A diferencia de Selenium (SeleniumUtil.takeScreenshot, que necesita castear a TakesScreenshot y crear los directorios), Playwright captura directamente con page.screenshot y crea las carpetas necesarias.
      Parameters:
      page - pagina de Playwright sobre la que se toma la imagen.
      name - nombre que se dara a la imagen (le anyade un timestamp para diferenciar imagenes guardadas en la misma sesion).