Joaquin Federico Demarchi
Les dejo el siguiente link por si quieren más información acerca de que es y como función el LOCAL STORAGE. https://es.javascript.info/localstorage
¿Cómo trabajar con Local Storage?
Local Storage es una tecnología fundamental que nos permite almacenar datos de manera persistente en el navegador del usuario. Imagina que tienes una aplicación web, como una lista de tareas pendientes ("to-do list"), donde deseas que los datos del usuario sean guardados incluso después de recargar la página. Aquí tienes una guía completa para entender cómo puedes manipular Local Storage de manera eficiente y además, cómo integrarlo en tus pruebas para agilizar tu flujo de trabajo.
¿Cómo implementar Local Storage en una aplicación web?
En una aplicación sencilla de lista de tareas, Local Storage nos permite guardar el estado de cada tarea. Cuando el usuario añade o completa una tarea, o bien decide eliminarla, esta información se guarda automáticamente en Local Storage. Es esencial porque al recargar la página, las tareas mantendrán su estado anterior.
¿Qué pasos seguir para automatizar el flujo de trabajo con Local Storage?
Preparar el entorno: Asegúrate de que cada campo de tu aplicación tenga identificadores únicos como IDs. Esto facilita la automatización del testeo del sistema.
Crear tareas en Local Storage:
localStorage.setItem(key, value): La clave (key) podría referirse a la identificación de la tarea y el valor (value) puede ser un objeto que contiene datos como el título, descripción y estado de completitud.localStorage.setItem("título de prueba", JSON.stringify({ title: "título de prueba", id: "título de prueba", complete: false, description: "descripción de prueba" }));
JSON.stringify() adecuadamente, ya que Local Storage solo almacena cadenas de texto.Validar que las tareas persistan:
localStorage.getItem(key) que las tareas guardadas existan.¿Cómo limpiar Local Storage y manejar sesiones en las pruebas?
Eliminación de elementos en Local Storage:
localStorage.removeItem(key) para borrar elementos específicos.localStorage.clear() para limpiar todo el Local Storage.localStorage.removeItem("título de prueba");
Manejo de sesiones con Cypress:
Cypress.session() para mantener la persistencia a través de diferentes pruebas. Esto significa que puedes definir un estado inicial y reutilizarlo a lo largo de las pruebas sin tener que configurarlo repetitivamente.Cypress.session("session_name", () => { // Configuración inicial de la sesión cy.visit("tu-url"); // Configurar o setear Local Storage });
¿Cómo mejorar la eficiencia al setear datos masivamente?
Implementar Local Storage correctamente no solo mejora la experiencia del usuario, al mantener el estado de la aplicación incluso después de recargar, sino que también potencia tus test de automatización permitiéndote optimizar el flujo de trabajo y reducir tiempos. Continúa explorando más técnicas avanzadas para manejar datos y lleva tus habilidades de programación al siguiente nivel con determinación y entusiasmo. ¡El aprendizaje es un viaje, y estás en el camino correcto!
Joaquin Federico Demarchi
Les dejo el siguiente link por si quieren más información acerca de que es y como función el LOCAL STORAGE. https://es.javascript.info/localstorage
Francisco Antonio Hernandez Sabatino
Cristian Mauricio Cavanzo Arias
pregunta en este caso entiendo que estemos utilziando la session para saber como guardar en local storage, pero tengo una pregunta, en teoria no deberiamos replicar el comportamiento del usuario?
Mario Alexander Vargas Celis
Asi lo hice yo en version 15
Es importante el elemento win
// 🧪 Describe el conjunto de pruebas para nuestra lista de tareas describe('✅ To-Do List con Estado Pre-cargado', () => { // Manipulando la pag it("crear una tarea ", () => { cy.visit('https://todo-cypress-iota.vercel.app/'); cy.get("#title").type("Titulo de prueba"); cy.get("#description").type("Descripcion de prueba"); cy.contains('Create').click(); cy.contains("Titulo de prueba"); cy.reload(); // Se asegura que el título es visible antes de revisar localStorage cy.contains("Titulo de prueba").then(() => { // Accede al objeto window para interactuar con localStorage cy.window().then((win) => { // Realiza la aserción con expect sobre el valor en localStorage expect(win.localStorage.getItem("Titulo de prueba")).to.exist; }); // Limpia el item específico del localStorage cy.clearLocalStorage("Titulo de prueba"); // Verifica que el item fue removido cy.window().then((win) => { expect(win.localStorage.getItem("Titulo de prueba")).to.not.exist; }); }); }); }); describe('✅ To-Do List directo al Storage', () => { // Manipulando el storage it("crea la tarea directamente en el storage", () => { cy.visit('https://todo-cypress-iota.vercel.app/'); // Accede a window para manipular localStorage de forma segura cy.window().then((win) => { win.localStorage.setItem("Name", "John Doe"); // Realiza la aserción correctamente usando expect expect(win.localStorage.getItem("Name")).to.exist; expect(win.localStorage.getItem("Name")).to.equal("John Doe"); // Una aserción más precisa }); }); });
describe('LocalStorage', ()=>{ beforeEach(()=>{ //cy.visit('https://todo-cypress-iota.vercel.app/'); //cy.get("#title").type("Titulo de prueba"); //cy.get("#description").type("Descripción de prueba"); //cy.contains('Create').click(); cy.session("session todo", ()=>{ cy.visit('https://todo-cypress-iota.vercel.app/').then(()=>{ localStorage.setItem("react_todo_ids", JSON.stringify(["Titulo de prueba"])); localStorage.setItem("Titulo de prueba", JSON.stringify({ title: "Titulo de prueba", id: "Titulo de prueba", complete: false, description:"Descripción de una prueba" }) ); }); }); cy.visit('https://todo-cypress-iota.vercel.app/'); }); it('crear una tarea',()=>{ /*cy.visit('https://todo-cypress-iota.vercel.app/'); cy.get("#title").type("Titulo de prueba"); cy.get("#description").type("Descripción de prueba"); cy.contains('Create').click();*/ cy.contains("Titulo de prueba"); cy.reload(); cy.contains("Titulo de prueba").then(()=>{ expect(localStorage.getItem("Titulo de prueba")).to.exist; }); cy.contains("Remove").click().then(()=>{ expect(localStorage.getItem("Titulo de prueba")).to.not.exist; }); /*cy.clearLocalStorage("Titulo de prueba").should((ls) => { expect(ls.getItem("prop1")).to.be.null; });*/ }); it('valido que la tarea se crea correectamente', ()=>{ //cy.visit('https://todo-cypress-iota.vercel.app/'); expect(localStorage.getItem("Titulo de prueba")).to.exist; }) }); ```describe('LocalStorage', ()=>{ beforeEach(()=>{ //cy.visit('https://todo-cypress-iota.vercel.app/'); //cy.get("#title").type("Titulo de prueba"); //cy.get("#description").type("Descripción de prueba"); //cy.contains('Create').click(); cy.session("session todo", ()=>{ cy.visit('https://todo-cypress-iota.vercel.app/').then(()=>{ localStorage.setItem("react\_todo\_ids", JSON.stringify(\["Titulo de prueba"])); localStorage.setItem("Titulo de prueba", JSON.stringify({ title: "Titulo de prueba", id: "Titulo de prueba", complete: false, description:"Descripción de una prueba" }) ); }); }); cy.visit('https://todo-cypress-iota.vercel.app/'); }); it('crear una tarea',()=>{ /\*cy.visit('https://todo-cypress-iota.vercel.app/'); cy.get("#title").type("Titulo de prueba"); cy.get("#description").type("Descripción de prueba"); cy.contains('Create').click();\*/ cy.contains("Titulo de prueba"); cy.reload(); cy.contains("Titulo de prueba").then(()=>{ expect(localStorage.getItem("Titulo de prueba")).to.exist; }); cy.contains("Remove").click().then(()=>{ expect(localStorage.getItem("Titulo de prueba")).to.not.exist; }); /\*cy.clearLocalStorage("Titulo de prueba").should((ls) => { expect(ls.getItem("prop1")).to.be.null; });\*/ }); it('valido que la tarea se crea correectamente', ()=>{ //cy.visit('https://todo-cypress-iota.vercel.app/'); expect(localStorage.getItem("Titulo de prueba")).to.exist; })});