Solía tener archivos json en mi carpeta de config que contenían variables para diferentes entornos. Por ejemplo: local.env.json contendría:
{ "baseUrl": "localhost:8080" } luego otro llamado uat.env.json contendría:
{ "baseUrl": "https://uat.test.com" } y está configurado en mis plugins/index.ts como:
const version = config.env.version || 'uat'; // if version is not defined, default to this stable environment config.env = require(`../../config/${version}.env.json`); // load env from json Luego lo llamaré en mis pruebas con cy.visit(Cypress.env().baseUrl)) y luego lo pasaré al CI con CYPRESS_VERSION=uat npx cypress run
Sin embargo, con la nueva versión de Cypress 10x, el archivo del complemento ha quedado obsoleto y solo se basa en cypress.config.js . No puedo encontrar ningún ejemplo en su documentación sobre cómo se puede hacer esto (recuerdo que solían tener una página con estos escenarios pero no puedo encontrarla ahora).
Es posible usar los viejos plugins/index.ts en el nuevo cypress.config.ts al importarlo.
Este es el ejemplo más simple (sin nueva configuración en cypress.config.ts )
import { defineConfig } from 'cypress' import legacyConfig from './cypress/plugins/index.js' export default defineConfig({ e2e: { baseUrl: 'http://localhost:1234', setupNodeEvents(on, config) { return legacyConfig(on, config) // call legacy config fn and return result } } })El mecanografiado y los módulos pueden causarle problemas con la escritura, etc. No lo he probado en un proyecto de mecanografiado, pero funciona en un proyecto de javascript.
Alternativamente, copie/pegue todo desde plugins/index.ts en lugar de llamar a la función heredada. Esto podría ser mejor a medida que agregue más complementos en el futuro.