Tengo alrededor de 7 archivos de prueba y un total de 60 casos de prueba que deben ejecutarse para 2 URL.
La forma 1 es: bucle en cada prueba, por lo que cada prueba se ejecutará para 2 URL y la URL que estoy pasando como argumento. Pero eso requiere forEach en cada prueba.
Forma 2: intenté abrir la URL en beforeEach() como se muestra a continuación:
describe('Your Finance Page tests', () => { beforeEach(() => { brands.forEach(function (brand) { openUrl(brand) }); });Está abriendo la marca para cada prueba, pero está ejecutando la prueba solo para 1 marca. Al igual que antes de cada prueba, abre la marca A, luego la marca B y ejecuta la prueba solo en la marca B.
¿Hay alguna forma mejor de hacer esto que no sea escribir forEach en cada prueba?
El bucle for probablemente funcionará si es externo a los beforeEach() e it() .
Este artículo Pruebas dinámicas de Cypress Fixture describe el patrón en detalle.
const brandUrls = [...] describe('Test each brand', () => { brandUrls.forEach(brandUrl => { beforeEach(() => { cy.visit(brandUrl) }) it(`tests url ${brandUrl}`, () => { ... }) }) }) Tenga en cuenta que sus marcas deben estar codificadas de forma rígida o leerse desde un accesorio usando require() o import en la parte superior de la especificación.
En cuanto a aplicarlo a múltiples especificaciones, sí, agréguelo a cada especificación (para simplificar).
ciprés-cada paquete
El paquete Cypress-each hace algo similar, pero tiene capacidades ampliadas.
import 'cypress-each' // create a separate test for each brand const brands = [...] it.each(brands)('test %s brand, (brand) => { cy.visit(brand) ... // assertions })