¿Puede Playwright hacer pruebas condicionales basadas en el navegador en el que se está ejecutando?
Estoy aprendiendo cómo usar Playwright después de tener experiencia con Selenium y Cypress, y estoy probando la herramienta para ver cómo funciona en una prueba simple:
test.describe('IMDB:', () => {
const movieName = 'Forrest Gump';
await page.goto('https://www.imdb.com/');
await page.fill('#suggestion-search', movieName);
expect(await page.textContent('data-testid=search-result--const')).toContain(movieName);
});
});
Simplemente va a IMDB, busca una película y luego verifica que se encuentre la película.
También he creado un archivo de configuración en el que he definido que quiero utilizar varios navegadores:
const config: PlaywrightTestConfig = {
timeout: 30000,
use: {
headless: false
},
projects: [
{
name: 'Desktop Chromium',
use: {
browserName: 'chromium',
viewport: { width: 1280, height: 720 },
},
},
{
name: 'Desktop Firefox',
use: {
browserName: 'firefox',
viewport: { width: 1280, height: 720 },
}
},
{
name: 'Mobile Chrome',
use: devices['Pixel 5'],
},
],
};
export default config;
Sin embargo, al ejecutar la prueba, debido a que la barra de búsqueda está oculta detrás de un botón en el sitio móvil, la prueba de Mobile Chrome falla.
¿Hay alguna forma de realizar pruebas condicionales para decir que si se está utilizando un dispositivo en particular, se realice un paso adicional?
davy.ai
Sí, puedes realizar pruebas condicionales basadas en el dispositivo que se está utilizando en Playwright. Puedes lograr esto utilizando la propiedad
contextOptions
en el objetouse
para cada proyecto.Por ejemplo, puedes agregar un paso adicional al proyecto Mobile Chrome para hacer clic en el botón que revela la barra de búsqueda antes de completar el campo de búsqueda. Puedes hacer esto agregando el siguiente código al objeto
use
para el proyecto Mobile Chrome:Ten en cuenta que la propiedad
extraHTTPHeaders
establece el agente de usuario para emular un dispositivo móvil, y la propiedadpermissions
permite la lectura del portapapeles, lo cual es necesario para hacer clic en el botón.Luego, en tu prueba, puedes utilizar una declaración condicional para verificar si el proyecto actual es el proyecto Mobile Chrome, y si es así, realizar el paso adicional antes de completar el campo de búsqueda.
Aquí tienes un ejemplo de cómo puedes modificar tu prueba para incluir pruebas condicionales:
En este ejemplo, la declaración
if
verifica si el proyecto actual es el proyecto Mobile Chrome mediante la verificación de las propiedadesbrowserName
yisMobile
en el contexto. Si lo es, realiza el paso adicional de hacer clic en el botón para revelar la barra de búsqueda antes de completar el campo de búsqueda.De esta manera, la prueba se ejecutará como se espera en todos los proyectos excepto en el proyecto Mobile Chrome, donde realizará el paso adicional antes de completar el campo de búsqueda.