Entradas

Mostrando entradas de enero, 2023

Cerrar automaticamente los procesos de chrome

Buenas lectores En ocasiones se nos olvida cerrar el driver de chrome cuando estamos automatizando afectando el rendimimiento de nuestra máquina. Puede ocurrir porque no lo cerramos o inclusive un test terminó mal y la sesión quedo en background. Actualmente estoy usando SerenityBdd y al ejecutar varios test quedan abiertos varios procesos de chrome en background, esto hace que el equipo se ponga lento y la navegación en el chrome se vuelva super lenta. Inclusive afecta los demás escenarios que siguen en la suite de pruebas. No he revisado si se trata de un error con el mannager driver sin embargo, la solución directa sin buscar demasiado es cerrar la sesión cada vez que termina un escenario. Para lograr esto, lo agregamos a los pasos con la anotación After de cucumber (en caso que esten trabajandolo, sino, Junit):  @After     public void cleanSessions() {     CloseSessions.closeChrome();     } Y creamos nuestro método que se va a ejecutar por cada p...

Cerrar automaticamente los recursos en java con Try-With-Resource

Buenas Lectores. Normal cuando estamos automatizando encontramos la necesidad de conectarnos a base de datos, al realizar esto, siempre debemos cerrar los recursos abiertos (conexiones). El código java de la conexión se debe ver algo muy similar al siguiente: Connection con; PreparedStatement ps = null; ResultSet rs = null; try {   // your code with database connections } catch ( Exception e ) {   //Catch and handle any exceptions } finally {   con.close();   ps.close();   rs.close(); } Se puede observar que tenemos la sentencia finally, donde cerramos las conexiones, si bien se pueden cerrar dentro del try que pasa si el try falla?. Bueno SonarQ nos obliga a que debemos como buena práctica tener el cierre en el finally. En términos generales, siempre se busca que no olvidemos cerrar las conexiones, es por eso que ahora existe una mejor forma de hacerlo:  try (   Connection con = getConnection(); PreparedStatement ps = null; ResultSet resultSet = ...

SerenityBDD - Almacenar valores en memoria (pasar información entre steps)

Buenas lectores. En algunas ocasiones nos encontramos con la necesidad de almacenar algún valor para luego ser usado en otro sitio, algunos ejemplos son: Pasar información entre clases Persistir valores  Pasar información entre los steps  Cabe aclarar que existen muchas formas de solucionar esta necesidad, sin embargo, hoy la idea es ligarnos directamente al framework de SerenityBDD. Para esto tenemos dos formas más comunes de hacelo. 1. Usando variables globales Primero almacenamos el valor que necesitamos en la memoria de Serenity, esto aplica para cualquier valor, es decir, variables (String, int, boolean), clases, listas etc... Almacenar el valor: Serenity.setSessionVariable("User Name").to("Jane"); Explicación de la sintaxis: Serenity.setSessionVariable : Invoca la sesión para almacenar ("User Name") : Define el nombre de la asignación  Extraer el valor: Lo unico que resta es traer el valor por medio del identificador  String currentUserName = Sereni...

Como generar código Selenium de forma automática y sin conocimientos de desarrollo

Imagen
Buenas lectores. La forma tradicional de autogenerar código de automatización de pruebas sin conocimientos de desarrollo o de automatización era usando Selenium IDE, hoy veremos otra forma de hacerlo mucho más actualiazada y que promete enormemente revolucionar la industria. Pero primero miremos como era la forma tradicional: 1. Selenium IDE Selenium IDE es un plugin que se encuentra integrado en el navegador que nos permite ir generando el código de automatización a medida que realizamos la prueba funcional. Cuando terminamos de realizar la prueba funcional el resultado es que validamos nuestra prueba y adicional tenemos la prueba automatizada para realizar nuestros retest o regresiones. El código generado luce de la siguiente manera: Cada comando se va generando a partir de las acciones que vayamos realizando en el navegador. Finalmente si necesitamos generar automatizaciones con mayor robustes simplemente lo exportamos a nuestro lenguaje favorito y listo. 2. ChatGPT (Inteligencia ar...