Para las pruebas de Cypress, estoy configurando una dirección de correo electrónico en un archivo js. Entonces me gustaría usar esta variable en otro archivo. Con importar/exportar ejecuta todo el script del archivo anterior, solo necesito la variable
Puede mover el valor de su correo electrónico a /cypress/support/index.js e importarlo en ambas pruebas.
O defina un comando personalizado en /cypress/support/commands.js y evite tener que importarlo.
// cypress/support/commands.js Cypress.Commands.add('getEmail', () => 'random@gmail.com') // all tests cy.getEmail().then(email => { ... }) Desafortunadamente, eso hace que una variable simple sea asíncrona y debe acceder a ella con .then() .
Variables de entorno para datos estáticos
Si los datos son estáticos, puede definirlos como una variable de entorno,
En ciprés V9
// cypress.json { ... "env": { "email": "random@gmail.com", } }En ciprés V10
// cypress.config.js const { defineConfig } = require('cypress') module.exports = defineConfig({ projectId: '128076ed-9868-4e98-9cef-98dd8b705d75', env: { email: 'random@gmail.com', } }) // all tests const email = Cypress.env('email') En realidad, en Cypress v10 , la configuración ahora es un archivo javascript, por lo que debería poder configurar el email a través de una función
// cypress.config.js const { defineConfig } = require('cypress') module.exports = defineConfig({ projectId: '128076ed-9868-4e98-9cef-98dd8b705d75', env: { getEmail: () => { return 'random@gmail.com'; }, } }) // all tests const email = Cypress.env('getEmail')() // invoke the functionDebería poder usar una exportación con nombre para evitar ejecutar las pruebas en el archivo de exportación.
export const email = ... import {email} from ...Posible solución usando Fixtures:
soporte/comandos.js:
Cypress.Commands.add('generateFixtureEmail', () => { cy.writeFile('cypress/fixtures/email.json', { 'hits':Cypress._.times(1, () => { let randomNumber= Math.floor(Math.random() * 1001); const email ='random+'+randomNumber+'@mail.com'; return { 'Email': email } }) })se crea un archivo json: fixtures/email.json
"hits": [ { "Email": "random+475@mail.com" }]
soporte/index.d.ts:
declare namespace Cypress { interface Chainable<Subject = string> { generateFixtureEmail(): Chainable<Element>; }integración/test-scripts/test.js:
describe('Test', function() { before(() => { cy.generateFixtureEmail() cy.fixture('email').then(function (data) { this.data = data; }) }) it('testcase 1', function () { cy.loginWithEmail(this.data.hits[0].Email)nota: no confirme el archivo json generado