Introducción al curso

1

Cypress Avanzado: Pruebas Automatizadas con Docker y Jenkins

2

Configuración Inicial de Cypress Avanzado en Node.js

Cookies y Localstorage

3

Gestión de Cookies en Cypress: Métodos Tradicionales y Experimentales

4

Automatización de Pruebas con Local Storage y Cypress

Emulando dispositivos

5

Emulación de Dispositivos Móviles con Cypress

Instalando plugins

6

Uso de Plugins y XPath en Cypress para Automatización Web

Flaky tests

7

Evitar pruebas inestables con Cypress: uso de retries y buenas prácticas

8

Interceptación de solicitudes de red con Cypress

9

Simulación de Errores de Red con Cypress Intercept

Buenas prácticas

10

Implementación de Page Object Model en Cypress

11

Comandos Personalizados en Cypress: Alternativa al Page Object Model

12

Variables de Entorno: Uso y Configuración en Cypress

13

Configuración de Variables de Entorno en Cypress

Visual testing

14

Implementación de Visual Testing con Cypress y Plugins

Seguridad

15

Seguridad en Cypress: Navegación y Pruebas entre Dominios

16

Manipulación de pestañas en Cypress: eliminar atributo target

17

Visitar múltiples dominios y compartir datos en Cypress 10

18

Creación de plugins en Cypress para compartir datos entre tests

Data Driven Test

19

Uso de Fixtures en Pruebas Automatizadas con Cypress

BDD

20

Configuración de Cucumber y Cypress para pruebas BDD

21

Reutilización de Step Definitions en Gherkin y Cucumber

22

Pruebas Automatizadas con Gherkin: Escenarios Outline y Tags

Reportes

23

Configuración y uso de múltiples reportes con Cypress

24

Configuración de Allure con Cypress y uso de plugins

Docker

25

Uso de Docker y Cypress para Pruebas Automatizadas

Dashboard

26

Conexión y uso del Dashboard de Cypress para pruebas automatizadas

27

Alternativa gratuita al dashboard de Cypress: instalación y uso

CI/CD

28

Integración de Jenkins y Cypress para Pruebas en Paralelo

Final

29

Instalación y uso del plugin Cypress Escenario Recorder

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso de Cypress Avanzado

Curso de Cypress Avanzado

Javier Fuentes Mora

Javier Fuentes Mora

Variables de Entorno: Uso y Configuración en Cypress

12/29
Recursos

¿Qué son las variables de entorno y para qué se utilizan?

Las variables de entorno son herramientas fundamentales en el desarrollo de software que permiten almacenar y gestionar información confidencial de manera segura. Son especialmente útiles para guardar credenciales, como nombres de usuario y contraseñas, que varían según el entorno en el que se trabaje, como producción o prueba. Usarlas evita el riesgo de exponer datos sensibles en el código fuente y facilita la gestión de parámetros que cambian según el ambiente.

¿Cómo acceder a las variables de entorno en el código?

Existen diversas formas de manejar las variables de entorno, cada una con sus ventajas y desventajas. Veamos algunos métodos y prácticas recomendadas para utilizarlas eficientemente en Cypress:

Acceso desde un archivo de configuración

Para comenzar, se puede definir un objeto en el archivo de configuración de Cypress que aloje las variables de entorno. Por ejemplo:

// Archivo de configuración
{
  "env": {
    "credentials": {
      "user": "tu_usuario",
      "password": "tu_contraseña"
    }
  }
}

Para acceder a estas variables, se utiliza Cypress.env, permitiendo obtener uno o varios valores específicos con facilidad:

// Código para acceder a las variables
const user = Cypress.env('credentials').user;
const password = Cypress.env('credentials').password;

Ventajas:

  • Simplicidad al tener todas las variables en un solo lugar.
  • Facilidad para acceder a los valores desde el código.

Desventajas:

  • Sensible a estar en el control de versiones, por lo que es crucial no exponerlas en repositorios públicos.

Uso de un archivo cypress.env.json

Otra opción es utilizar un archivo cypress.env.json en la raíz del proyecto. Este archivo también almacena credenciales o cualquier otra variable necesaria:

// cypress.env.json
{
  "credentials": {
    "user": "usuario_erroneo",
    "password": "contraseña_erronea"
  }
}

Las variables en este archivo sobreescriben las del archivo de configuración cuando se encuentran, lo cual es importante tener en cuenta al diseñar pruebas.

Ventajas:

  • Se puede excluir fácilmente en el control de versiones para mayor seguridad.
  • Flexibilidad para diferentes equipos o ambientes al tener múltiples archivos json.

Desventajas:

  • Las variables pueden sobreescribirse, siendo crucial su manejo cuidadoso.

Configuración de variables desde la terminal

También es posible establecer variables de entorno directamente desde la línea de comandos, lo que ofrece versatilidad en ciertos escenarios CI/CD:

export CYPRESS_variable_entorno=valor
npx cypress open

Este método es ideal para pipelines de integración continua donde los comandos de ejecución cambian con frecuencia.

Ventajas:

  • No requiere manipulación de archivos de configuración.
  • Integración eficiente con herramientas CI/CD como Jenkins.

Desventajas:

  • Limitado a valores planos, sin posibilidad de manejar objetos JSON complejos.

Reflexiones finales

Las variables de entorno son una herramienta poderosa para proteger y manejar datos críticos en nuestros proyectos de manera flexible. Cada método tiene su lugar dependiendo de las necesidades del proyecto, el flujo de trabajo y las características del equipo. Al valorar las diferentes opciones, se puede optar por la estrategia que mejor se adapte a los objetivos de seguridad y eficiencia. ¡Continúa explorando y experimentando para encontrar la solución óptima para tu desarrollo en Cypress!

Aportes 1

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

my test: Agregamos una mueva propiedad en **cypress.config.js** ````js ```javascript env:{ Credentials: { user: "username", password: "password", }, }, ``` ```` ```js import { loginPage } from "./pageObjects/loginPage"; describe('login con POM', ()=>{ beforeEach(()=>{ loginPage.visit(); }); it("Login erroneo", ()=>{ loginPage.validateLoginPage() loginPage.login('lalalal', 'kshhdytsd'); loginPage.validateErrorLogin(); }); it("Login exitoso", ()=>{ loginPage.validateLoginPage() loginPage.login('username', 'password'); loginPage.validateSuccessLogin(); }); it("Login exitoso con cy.env", ()=>{ loginPage.validateLoginPage(); cy.log(Cypress.env()); loginPage.login(Cypress.env("credentials").user, Cypress.env("credentials").password); loginPage.validateSuccessLogin(); }); it("Login exitoso con cy.env.json", ()=>{ loginPage.validateLoginPage(); cy.log(Cypress.env()); loginPage.login( Cypress.env("credentials").user, Cypress.env("credentials").password ); loginPage.validateErrorLogin(); }); it.only("Login erroneo desde la termina", ()=>{ loginPage.validateLoginPage(); cy.log(Cypress.env()); loginPage.login( Cypress.env("credentials").user, Cypress.env("credentials").password ); }); }); ```