Hemos estado construyendo nuestra suite de automatización utilizando nuestro entorno de ensayo, pero pronto lo pondremos en marcha y queremos estar listos para decirle al proyecto dónde ejecutarlo (escenario, producción).
La única diferencia entre los sitios en los entornos es la URL. Mi pregunta es, de principio a fin, ¿cómo puedo configurar la URL de .page a través de una opción CLI?
En este momento, he creado un archivo de configuración de entorno que contiene nuestras URL de preparación y producción y luego invoco los datos en mis archivos de prueba. Esto está bien por ahora, pero tendré que crear un script con una opción para configurar el entorno en tiempo de ejecución sin tener que buscar y reemplazar manualmente antes de iniciarlo.
Busqué en línea y encontré, lo que creo, fragmentos de código e instrucciones generales, pero no soy un desarrollador de corazón y soy bizco. Si pudiera obtener un ELI5 para esto, sería increíble.
Ejemplo de lo que estoy haciendo ahora:
const env = require('../environment_variables.json') fixture `blog` .page `${env.production}`Y luego cambio la producción a la puesta en escena o viceversa manualmente antes de iniciar la suite.
Dado que el proyecto se ejecutará desde CICD, me gustaría poder hacer algo como esto en mi CLI y script:
testcafe env=productionEl valor env se establecerá donde está la llamada .page para cada archivo de prueba.
¡Gracias!
Hay diferentes maneras de hacer esto. He usado variables de entorno con éxito en esta situación, así que compartiré esta solución ya que resolverá su problema.
Creo config.json en la raíz del proyecto:
{ "baseUrl": { "dev": "https://dev.com/", "staging": "https://staging.com/", "prod": "https://prod.com/" } } Luego creo dos funciones auxiliares en algún lugar como Helpers/env.js :
import config from '../config'; function getEnv () { return process.env.TESTCAFE_ENV; } function getBaseUrl () { return config.baseUrl[getEnv()]; } export { getEnv, getBaseUrl }; Luego, en mis archivos de prueba en Tests/ :
import { getBaseUrl } from '../Helpers/env'; const baseUrl = getBaseUrl(); fixture `Test Suite` .page(baseUrl);Y eso es. Luego, cuando necesito ejecutar pruebas en el desarrollador, ejecuto:
$ TESTCAFE_ENV=dev testcafepara puesta en escena:
$ TESTCAFE_ENV=staging testcafey para la producción:
$ TESTCAFE_ENV=prod testcafe