He visto varias publicaciones sobre cómo ejecutar una sola prueba con diferentes parámetros. También está documentado aquí .
Sin embargo, no pude encontrar ningún ejemplo de cómo ejecutar todo el conjunto de pruebas, es decir, pruebas en varios archivos en la carpeta cypress/integration varias veces con datos diferentes.
Mi escenario es que quiero agregar diferentes respuestas de una API a la que estoy llamando y ejecutar todos los casos de prueba contra las diferentes respuestas. Entonces, para la primera ejecución, pondría support/index.js :
beforeEach(() => { cy.intercept("GET", "example/API", { fixture: "fixture1.json" }); });y para la 2da corrida pondría:
beforeEach(() => { cy.intercept("GET", "example/API", { fixture: "fixture2.json" }); });y así. Todos mis casos de prueba son idénticos para diferentes respuestas y espero que tengan el mismo resultado independientemente de los datos devueltos por la API.
Ejecutar una suite con diferentes parámetros
cypress run --env fixture=fixture1 // or cypress run --env fixture=fixture2Variables de entorno de referencia
En soporte/index.js
beforeEach(() => { const fixtureName = `${Cypress.env('fixture')}.json` cy.intercept("GET", "example/API", { fixture: fixtureName }); })Espero que tengan el mismo resultado independientemente de los datos devueltos por la API ; no estoy seguro de qué significa eso exactamente, pero para mí sugiere que no tiene que preocuparse por cambiar el accesorio.
Si desea que una sola llamada desde la línea de comandos ejecute todo el conjunto, digamos 3 veces con un dispositivo diferente cada vez, considere usar la API del módulo Cypress
En un archivo de script, por ejemplo, /scripts/run-fixtures.js
const fixtures = ['fixture1.json','fixture2.json','fixture3.json'] const cypress = require('cypress') fixtures.forEach((fixtureName) => { cypress.run({ reporter: 'junit', browser: 'chrome', config: { baseUrl: 'http://localhost:8080', video: true, }, env: { fixture: fixtureName, }, }) }) Ejecútelo con node /scripts/run-fixtures .
support/index.js es el mismo que el anterior.