Esencialmente, lo que quiero hacer es generar un nombre usando ChanceJS para un caso de prueba dentro de Cypress, pero en un archivo/caso de prueba separado quiero poder recordar ese nombre que generé anteriormente para poder seleccionarlo/verificar que existe.
He reducido un poco estos fragmentos de código para que no tengan mucho sentido.
He intentado tener mi propio archivo con una constante llamada constants.js
require('chance') export const constants = { ITEM: chance.word() }y luego tener algo como esto en un archivo de prueba donde agrego un elemento usando el nombre aleatorio como su nombre
import { constants } from '../constants'; //Add Item it('Add a Item', function(){ cy.pass_credentials() cy.get('.dx-datagrid-toolbar-button > .dx-button-content > .dx-icon').click({force: true}) cy.get('[id$=_Name]').type(constants.ITEM) // using my random name for the item name }y luego trato de usarlo nuevamente para seleccionar el elemento en un archivo separado, ya que los datos que agregué en el archivo anterior ahora se usan como parte de este otro dato
import { constants } from '../constants'; it('Add Data', function(){ cy.pass_credentials() cy.get('[id$=_TaskId]').type(constants.ITEM) //typing my random name in so I can select it as its now part of a drop making up this new piece of data cy.contains(constants.ITEM).type('{enter}') //trying to press enter so I select my item }Pero el problema que tengo es que está generando un nuevo nombre aleatorio, lo que significa que estoy tratando de seleccionar algo que no está allí. No estoy seguro de si cada vez que lo importo en un archivo nuevo para usar, ¿eso es lo que hace que se regenere?
Supongo que me vendrían bien algunos consejos o una mejor solución a mi problema.
Una forma sería generar el elemento la primera vez y guardarlo en la variable Cypress.env() y luego usarlo durante la prueba. Se puede acceder a Cypress.env() mediante cualquier prueba y también se pasaría un valor a todas las pruebas para ese ciclo de ejecución.
import {constants} from '../constants' //Add Item it('Add a Item', function () { Cypress.env('uniqueItem', constants.ITEM) //Random item is set for this test run cy.pass_credentials() cy.get('.dx-datagrid-toolbar-button > .dx-button-content > .dx-icon').click({ force: true, }) cy.get('[id$=_Name]').type(Cypress.env('uniqueItem')) // types in the item }) Usted prueba en el siguiente conjunto de pruebas. No necesita llamar a las declaraciones de importación aquí y usar directamente el valor usando Cypress.env('uniqueItem') .
it('Add Data', function () { cy.pass_credentials() cy.get('[id$=_TaskId]').type(Cypress.env('uniqueItem')) cy.contains(Cypress.env('uniqueItem')).type('{enter}') })