Quiero usar mis variables .env dentro del archivo cypress.json . Como ejemplo de uso:
{ "env": { "HOST": `${process.env.HOST}` } } Entonces, lo que quiero es, cuando Cypress.env('HOST') en cualquier lugar de Cypress , quiero obtener la variable process.env.HOST
En primer lugar, ¿por qué no usar process.env.HOST dentro de sus archivos de especificaciones? En segundo lugar, si desea probar en un host diferente, lo que he estado haciendo es.
Cree una carpeta (por ejemplo: configFiles)
Dentro de esto, cree archivos json como (por ejemplo: host1.json, host2.json)
Dentro de su archivo json (en host1.json)
{ "env": { "HOST" : "host1" } }
Dentro de su carpeta de complementos, edite index.js
const fs = require('fs-extra'); const ruta = require('ruta');
función getConfigurationByFile(archivo) { const pathToConfigFile = path.resolve( 'cypress/configFiles', ${file}.json );
volver fs.readJson(pathToConfigFile); }
module.exports = (on, config) => { const file = config.env.host || 'host1';
volver getConfigurationByFile(archivo); };
Luego, mientras se ejecuta, puede usar npm cypress run --env host=host1
Esta es una respuesta tardía, pero puede lograrlo creando la variable en Complementos ( https://docs.cypress.io/guides/guides/environment-variables#Option-5-Plugins )
La documentación dice:
// .env file USER_NAME=aTester/
// plugins/index.js require('dotenv').config() module.exports = (on, config) => { // copy any needed variables from process.env to config.env config.env.username = process.env.USER_NAME // do not forget to return the changed config object! return config } // integration/spec.js it('has username to use', () => { expect(Cypress.env('username')).to.be.a('string') })Evite envolver su archivo env en la variable env. Por cierto, esto debería hacer el trabajo con su archivo:
Cypress.env("env")["HOST"]