Estoy trabajando para agregar pruebas a un monorepo preexistente que usa TypeScript en la principal. Todas las demás pruebas están en TypeScript y para la mía, deseo usar Cypress.
Necesito ejecutarlos en dos entornos separados y necesito entender por qué mis variables de entorno no se recogen.
Probablemente sea algo muy obvio, pero soy un recién llegado a TS y JS, así que espero una guía amable.
Directamente debajo de /config tengo dev.json y prod.json para los dos envs:
{ "env": { "ENV": "dev", "BASE_URL": "http://example.com", } } Mis plugins/index.ts de la siguiente manera:
const fs = require('fs-extra'); const path = require('path'); export default (on: Cypress.PluginEvents, _config: Cypress.PluginConfigOptions): void => { on('task', { log(message) { console.log(message) return null } }); on('task', { table(message) { console.table(message); return null; }, }); /** * @type {Cypress.PluginConfig} */ function getConfigurationByFile(file) { const pathToConfigFile = path.resolve('config', `${file}.json` ); return fs.readJson(pathToConfigFile); } /** * @type {Cypress.PluginConfig} */ module.exports = (on, config) => { const file = config.env.configFile || 'dev'; return getConfigurationByFile(file); }; }Ejemplo de uso dentro de una especificación de prueba:
beforeEach(()=> { cy.login(Cypress.env('BASE_URL'), }) Script de ejemplo en package.json
"test:headless": "npm cypress run --env 'configFile=%ENV%", Ejecutándose desde CLI como: ENV=dev npm run test:headless
Esto no puede recoger la URL de dev.json
Nuevamente, estoy seguro de que es algo tonto, pero se agradecerían algunos consejos.
Pruebe el prefijo CYPRESS_ Opción #3: CYPRESS_*
Cualquier variable de entorno a nivel de sistema operativo en su máquina que comience con CYPRESS_ o cypress_ se agregará automáticamente a las variables de entorno de Cypress y estará disponible para usted.
CYPRESS_configFile=dev npm run test:headless ... const file = config.env.configFile || 'dev';