Búsqueda de sitios web

typescript - Playwright: ¿Cómo continuar la ejecución de la prueba después de que falle una afirmación?


Necesito ejecutar múltiples enlaces en una sola prueba. Los escenarios de prueba son casi los mismos para los 4 enlaces, pero tendrán diferente color o datos.

He intentado esto, pero una vez que el enlace A falla, fallará el enlace B, C y D (fallará toda la prueba). ¿Hay alguna manera de ejecutar esos 4 enlaces independientemente unos de otros?

test("Validate pages", async () => {
    const browser = await chromium.launch({headless: false});
    const context = await browser.newContext();
    const page = await context.newPage()

const urls = ["linkA", "linkB", "linkC", "linkD"]
  for (let i = 0; i < urls.length; i++) {
     const url = urls[i];
     await page.goto(`${url}`); 

// insert test code here that needs to run on the 4 links.
}
}

Respuesta #1

Usa aserciones suaves

Continuará la prueba incluso después de que falle una aserción

las aserciones suaves no terminan la ejecución de la prueba de inmediato, pero marcan la prueba como fallida para reportarla más tarde en los resultados junto con todos los resultados de los pasos de la prueba.

Puedes hacer eso en una sola prueba. Dentro del bucle, solo verifica la URL esperada:

for (const url of urls) {
  await page.goto(`${url}`)
  await expect.soft(page).toHaveURL(/.*PageA/)
}

Lectura adicional:

https://timdeschryver.dev/blog/mejora-tu-experiencia-de-pruebas-con-las-afirmaciones-suaves-de-playwright

https://www.linkedin.com/pulse/soft-asserts-better-way-test-your-code-serhat-u%C3%A7ar

Respuesta #2

Un enfoque: puedes usar dotenv/Crossenv para esto, configurar los enlaces en archivos de entorno según el entorno. luego, usando interpolación, construye la ruta dinámica a la configuración de dotenv. así, en cada ejecución llamas a un enlace diferente según el entorno y ejecutas tu caso de prueba.

Artículos relacionados