Ir al contenido principal

APEX 03 - 11 - Pruebas de Extremo a Extremo de nuestras aplicaciones APEX con Cypress

Realiza pruebas de interfaz de usuario de tus aplicaciones APEX con Cypress

Los equipos internos de Oracle que crean aplicaciones en Oracle APEX consideran que la herramienta de prueba gratuita y de código abierto, Cypress UI, es una forma productiva de crear pruebas repetibles de extremo a extremo de las interfaces de usuario de sus aplicaciones. 

Es compatible con populares navegadores modernos como Chrome, Edge, Firefox y Electron, y ofrece herramientas de inspección intuitivas para ayudar a los desarrolladores a escribir y depurar pruebas rápidamente. Las pruebas en Cypress complementan las pruebas unitarias como parte de una verificación de control de calidad.

Crea pruebas de interfaz de usuario utilizando comandos similares al inglés

Cypress proporciona un amplio conjunto de funciones integradas que hacen que los scripts de prueba sean fáciles de escribir y leer. Usando como funciones escritas en inglés, las pruebas abren páginas web, interactúan con los componentes de la interfaz de usuario en esas páginas y hacen afirmaciones del estilo: ¿Qué debería haber pasado después de hacer esto? 

Cypress contiene funciones automáticas de “wait and retry" lo que simplifica drásticamente la escritura de pruebas de aplicaciones web, donde a menudo el momento de las interacciones con el servidor puede ser impredecible.

Como desarrolladores, podemos utilizan nuestro editor de código favorito, como Visual Studio Code, para crear scripts de prueba. VS Code proporciona un excelente soporte para completar código para ingresar rápidamente los comandos de Cypress, y Cypress proporciona múltiples formas de crear comandos reutilizables para evitar repetir los pasos más utilizados. 

La prueba que se muestra en la Figura 1 abre una aplicación APEX simple llamada HR proporcionando su URL, lee el nombre de usuario y la contraseña de variables de entorno, las escribe en los campos de la página de inicio de sesión de APEX y luego hace clic en el botón Login. Después, luego de asegurarse de que el navegador cambie a la página /home como se esperaba, la prueba escribe una búsqueda de varias palabras: blake Manager KING en el cuadro de búsqueda de un Informe interactivo y presiona [Enter] para realizar la búsqueda. 

Valida que la búsqueda funcionó como se esperaba al verificar la región antes y después de la búsqueda con el texto como BLAKE y ADAMS. Antes de la búsqueda, ambos deberían estar presentes en la página pero después de la búsqueda sólo debería quedar BLAKE.

Figura 1: Un código de pruebas simple con Cypress UI en Visual Studio Code

Observa que los comandos de Cypress comienzan con cy y siguen un patrón: llama a cy.get() para acceder a un componente de la interfaz de usuario por id o localizador, luego usa las funciones como type() o click() o select() para interactuar con el componente como un usuario final haría. Las afirmaciones sobre lo que debería haber sucedido utilizan la función should() y aquellas sobre los valores esperados utilizan la función expect(). Esto permite que la prueba se lea casi como un párrafo en inglés.

it('Ejercicio de búsqueda en la página home', () => {
  const username = Cypress.env('username') 
  const password = Cypress.env('password')   
  cy.get('#P9999_USERNAME').type(username) 
  cy.get('#P9999_PASSWORD').type(password, { log: false }) 
  expect(username,'username was set').to.be.a('string').and.not.be.empty 
  cy.get('[data-cy="login_button"]').click() 
  cy.url().should('include', '/hr/home') 
  // Antes de la búsqueda, blake y adams deben ser visibles
 cy.get('#R47030934458136523065_worksheet_region').should("contain","ADAMS") 
 cy.get('#R47030934458136523065_worksheet_region').should("contain","BLAKE") 
  // Ingrese búsqueda multi registro combinando los casos 
  cy.get('#R47030934458136523065_search_field').type("blake Manager KING{enter}") 
  // Solo se debe visualizar a blake en la búsqueda     
 cy.get('#R47030934458136523065_worksheet_region').should("not.contain","ADAMS") 
 cy.get('#R47030934458136523065_worksheet_region').should("contain","BLAKE") 
})


Ejecutar y depurar pruebas de UI de forma interactiva

Ejecutar y depurar las pruebas de Cypress de forma interactiva también resulta agradable.  Como se muestra en la Figura 2, la aplicación se ejecuta en el navegador de nuestra elección. Los resultados de cada paso de la prueba se muestran en el panel izquierdo mientras que la aplicación se ejecuta en el panel derecho.  Cypress proporciona herramientas para seleccionar interactivamente elementos de la interfaz de usuario en la página web para copiar rápidamente el valor correcto de cy.get() al portapapeles para que podamos pegarlo en la prueba que estamos escribiendo en otra ventana. Además, monitorea el sistema de archivos en busca de cambios, de modo que tan pronto como guardamos un archivo de prueba actualizado, la ventana del navegador Cypress se actualiza para volver a ejecutar la prueba. 

Mientras se ejecuta, Cypress registra el estado del navegador en cada paso para que podamos hacer un "viaje en el tiempo" a cualquier paso de la prueba simplemente haciendo clic en él. Cuando hacemos esto, puedemos ver cómo se veía el navegador en ese paso.  Esto simplifica radicalmente las pruebas de depuración que no funcionaron como se esperaba.  

Finalmente, mientras ejecutamos la prueba de forma interactiva, es mejor para quienes han creado las pruebas, que puedan ejecutar fácilmente conjuntos de pruebas de Cypress como parte de un proceso automatizado incorporando tanto pruebas unitarias de utPLSQL como pruebas de UI de extremo a extremo con Cypress en las verificaciones de control de calidad.

Figura 2: Ejecutando un test interactivo con Cypress UI en un navegador Edge en Mac

En la proxima entrega de la saga veremos cómo crear archivos instalables para desplegar nuestras aplicaciones en otros ambientes.

No te pierdas la proxima entrega:  Creando un archivo de aplicaciones para desplegar en otros ambientes

Juntos, creamos las aplicaciones del futuro!

Mi nombre es José Preda.

* José es Analista de Sistemas e Ingeniero de Software con especializaciones en tecnologías de Oracle, Microsoft, redes, infraestructura tecnológica y gestión de recursos humanos. Posee más de 30 años de experiencia en el área de tecnología, es de Paraguay, vive y trabaja en San Luis, Argentina. Fue consultor, capacitador y soporte técnico para Base de Datos y herramientas de Oracle, desde el año 2013 es miembro activo del Grupo de Usuarios Oracle de Argentina del cual es miembro del directorio desde el año 2023. Es CEO de su propia Consultora: Soft San Luis, una startup especializada en brindar formación profesional, consultoría, mentoría y soluciones con tecnología Oracle y Oracle APEX a empresas, equipos de desarrollo de consultoras y a particulares. En 2024 ha sido reconocido como  Oracle ACE Associate por la Corporación Oracle por sus contribuciones a la Comunidad de Usuarios de Tecnologías de Oracle


Comentarios

Entradas populares de este blog

Oracle APEX 24.1 ya se encuentra disponible!

Oracle APEX 24.1 ya se encuentra disponible! Descargalo:  https://www.oracle.com/tools/downloads/apex-downloads/ Ashish Mohindroo, Vicepresidente de gestión de productos Plataforma de aplicaciones APEX Low Code ha anunciado hoy Lunes 17 de Junio de 2024 que Oracle APEX 24.1 ya está disponible para su descarga y se está implementando en las regiones de desarrollo de aplicaciones OCI APEX y servicio de nube de base de datos autónoma en todo el mundo. Con esta última versión, aprende a crear tu primera aplicación de bajo código con GenAI. Esta versión se basa en tres pilares principales de innovación que permiten crear aplicaciones atractivas de nivel empresarial con facilidad:  Desarrollo de aplicaciones asistido por IA Aprovechamiento del poder de la plataforma de datos de próxima generación de Oracle y  Potentes componentes de nivel empresarial para crear aplicaciones web y aplicaciones para web móviles sofisticadas. Desarrollo de aplicaciones asistido por IA Con este lanzamiento, se i

APEX 23.1 - Notificaciones Push

Las notificaciones push PWA (Progresive Web App) en Oracle APEX son mensajes instantáneos que pueden ser enviados a los usuarios de una aplicación web progresiva sin que estos tengan que estar activamente utilizando la aplicación en ese momento.  Estas notificaciones se envían directamente a los dispositivos móviles o computadoras de los usuarios, permitiendo que estos se mantengan informados sobre actualizaciones relevantes, novedades o cualquier otra información importante relacionada con la aplicación que deseemos enviarles. Las notificaciones push PWA en Oracle APEX son una herramienta poderosa para aumentar la interacción de los usuarios con la aplicación y mejorar la experiencia del usuario en general.  Algunos usos que se le dan son:  enviar recordatorios, alertas, actualizaciones de contenido, promociones, estos entre otros mensajes que ayudan a mantener a los usuarios comprometidos y conectados con la aplicación. Mediante la configuración adecuada en Oracle APEX, los desarroll

APEX 02-06 - Cosa Número 5 de 10: Los estándares de SQL y PL/SQL

Aunque APEX es una plataforma de desarrollo de bajo código, rara vez nos salimos con la nuestra con proyectos que no involucren al menos algo de código. Muchos, de hecho, involucran MUCHO código y lo más probable es que el tuyo también lo haga. El código SQL y PL/SQL es fundamentalmente uno de los códigos más importantes que escribo para mis clientes y socios. La diferencia entre un SQL y PL/SQL que funciona bien y otro que no funciona puede ser la diferencia entre un sistema exitoso y una gran decepción. Ya sea que te guste tu código en minúsculas o mayúsculas o prefieras los nombres de tus tablas en singular o plural, o tengas preferencias particulares sobre el formato del código, es importante tener estándares que estén documentados e implementados en tu base de código. Mis estándares de codificación SQL y PL/SQL están adaptados de trivadis ( https://trivadis.github.io/plsql-and-sql-coding-guidelines/v4.3/ ) y, sean cuales sean tus estándares, asegúrate de comunicarlos bien a todo t