Quiero ingresar texto dinámico en Cypress, por lo que en cada ejecución, el campo de nombre no tendrá una entrada repetida, por ejemplo, nombre1, nombre 2...
Así que en el archivo js tendría algo como
And("I enter a name", () => { portalPage.roleName().type("Cypress admin" + 1, { force: true }) })Cualquier ayuda es apreciada.
Entre ejecuciones, debe escribir el último número utilizado en un dispositivo,
And("I enter a name", () => { cy.fixture('name-num.json').then(num => const next = num +1; portalPage.roleName().type(`Cypress admin ${next}`, { force: true }) cy.writeFile('cypress/fixtures/name-num.json', next.toString()) }) Si hace esto varias veces en la misma ejecución, cy.fixture no funcionará porque almacena en caché el valor que lee.
En su lugar, use readFile()
And("I enter a name", () => { cy.readFile('cypress/fixtures/name-num.json').then(num => const next = num +1; portalPage.roleName().type(`Cypress admin ${next}`, { force: true }) cy.writeFile('cypress/fixtures/name-num.json', next.toString()) })Si está buscando entradas aleatorias, entonces lodash .random() generará un número aleatorio desde 0 hasta la entrada.
// will generate random number between 0 and 9999 portalPage.roleName().type(`Cypress admin${Cypress._.random(9999)}`, { force: true })Si solo necesita que los valores sean diferentes dentro de la misma especificación, puede almacenar el valor en una variable de entorno de Cypress. La variable de entorno no se borrará hasta que la especificación haya terminado de ejecutarse.
And("I enter a name", () => { // set the environment variable to current value + 1, or if it hasn't been set, 1. Cypress.env("myNumber", Cypress.env("myNumber")++ ?? 1); // use the environment variable portalPage.roleName().type("Cypress admin" + Cypress.env("myNumber"), { force: true }); })