Entradas

Ejecutar un proyecto de Jmeter que usa Kafka desde azure devops

Buenas lectores. Existen varias maneras de ejecutar Jmeter desde azure, sea integrado, sea como tarea para descargarlo, sea como maven, en fin, todo depende de tu necesidad. El problema es cuando usamos librerias que no están incluidas normalmente en Jmeter, aquí se nos dificulta un poco nuestra tarea de ejecutar nuestros scritps. De momento no existe una manera optima de realizar el proceso, es decir, puedes simplemente agregando en tu pipeline la opción que descargue Jmeter y luego copias tus librerias a la carpeta de lib/ext , sin  embargo el proceso de descarga es lento , yo opté por tener todo versionado usando una versión fija y estandarizada para los procesos internos, así evito en el mismo pipeline problemas de descarga y configuraciones que siempre van a ser las mismas. La contra es que el proyecto se vuelve más pesado y demasiado estático, sin embargo, en mi caso es la más optima. Los pasos son sencillos: 1- Subo el proyecto a azure repos, si no lo sabes hacer ya tengo un pos

Subir mi proyecto local a Azure repos

Imagen
Buenas lectores. Constantemente estamos  creando proyectos y siempre se nos olvidan los comandos para hacerlo, esto es normal puesto que nuestro día a día está enfocado en otras cosas y este proceso se hace una vez cada proyecto. Así que decidí dejar escrito los comandos para que siempre tengas accesos a el. 1- Creas un nuevo repositorio donde vas a subir tu repositorio local 2- Copias la ruta que te crea o simplemenete lo clonas 3- En tu folder local inicias git y subes tus cambios, recuerda cambiar el origin por el que copiamos desde azure git init git add . git commit -m "first commit" git remote add origin https://github.com/NOMBRE_USUARIO/NOMBRE_PROYECTO.git git push -u origin master 4- Disfrutar tu proyecto en azure totalmente versionado. Saludos cordiales. Fuentes: https://gist.github.com/cgonzalezdai/cc33db72a6fe5178637aabb562eae35c https://learn.microsoft.com/es-es/azure/devops/repos/git/create-new-repo?view=azure-devops

Que hacer cuando la librería Ensure de serenitybdd te comienza a molestar

Buenas lectores. Me he encontrado con casos particulares usando la librería Ensure en el IDE de IntelliJ, es posible que se presente en cualquier otro IDE por consiguiente antes de investigar la razón mejor hice una migración al assert para no tener problemas a futuro. Podemos tener algo así: jadcode . attemptsTo ( Ensure . that ( ElementLocated . by ( "#firstName" ) ) . isDisplayed ( ) ) ; Lo podemos cambiar por lo siguiente: theActorInTheSpotlight () . should ( seeThat ( Visibility . of ( LocationForm . FIRST_NAME ) , is ( true ))) ; Si quedamos que no este visible y usando softasserts, sería de la siguiente forma: theActorInTheSpotlight () . should ( seeThat ( Visibility . of ( LocationInfoWindowView . LBL_STATUS_LASTREPORT ) , is ( false )) , seeThat ( Visibility . of ( LocationInfoWindowView . LBL_LASTREPORT ) , is ( false ))) ; Se puede observar que migramos el código a una forma común que todo IDE pu

Como hacer click a un elemento escondido en Playwright

Buenas lectores. En la mayoria de frameworks que se usan para automatizar pruebas funcionales encontramos funciones que nos permiten realizar click forzados, esto es necesario cuando un elemento se encuentra oculto y necesitamos ejecutarlo. Normalmente esto no debería funcionar así puesto que un usuario no puede ver elementos ocultos pero... a veces es nuestra magía para poder simular a nuestro usuario final (enredado lo sé). En todo caso, cuando necesitamos hacerlo usando js es cuando se complica un poco, sin embargo existe una funcion que simula el click y nos puede sacar de los apuros: page.getByTestId('#id').dispatchEvent("click"); Cuando necesitamos pulsar un botón y este se resista pero es visible, podemos usar el force: click("//button[contains(@id, 'secondaryDownload')]", { force: true }) Fuentes: https://stackoverflow.com/questions/70124342/playwright-force-click-on-hidden-element-does-not-work  

Como interactuar con elementos SVG y/o mapas con selenium en python

Buenas lectores Un reto muy interesante que se nos puede presentar es cuando tratamos de interactuar con elementos en un mapa o en un gráfico, normalmente los encontramos como SVG. El resto consiste en que normalmente no encuentra los elementos a pesar de que hagamos correctamente el cambio al iframe donde se supone están los controles. Es algo complicado y puede llegar a frustrarnos. Soluciones hay varias, pero hoy vamos a usar las mas comunes y mas estables. Usando xpath: //div[@id="map"]//*[name()="svg"]/*[name()="g"] //div[@id="map"]//*[name()="svg"]/*[name()="g"]/*[name()="image"] En muchas ocasiones no funciona el xpath, esto porque pareciera que los elementos no están en el DOM o por lo menos , no en el orden que los vemos ya construidos. Para esos casos podemos recurrir a CSS En este ejemplo vamos a capturar todos los puntos del mapa y luego los recorremos pulsando click sobre cada uno de ellos: from selenium

Tiempo de espera "muerto" explicito en Playwright

Buenas lectores. En ocasiones necesitamos esperar un tiempo específico debido a que no contamos con alguna referencia o elemento que nos facilite seguir con el proceso. En estos casos usamos tiempos muertos los cuales no son buenos, nadie los quiere pero algunas veces son necesarios. await page.waitForTimeout(1000); Cabe anotar que el tiempo es en milisegundos como casi en todas las herramientas, en este caso es equivalente a esperar 1 segundo. Es decir, si quieres que espere 2 segundos sería 2000, 3 segundos = 3000. Fuentes: https://stackoverflow.com/questions/74920905/how-to-give-fixed-wait-in-playwright-with-out-any-condition-like-we-had-in-cypre  

Como tener un condicional en Playwright en caso que siga aun presente un elemento

Buenas lectores. En este post vamos a observar dos cosas, la primera como hacer un condicional o ciclo para que la automatización espere hasta que un elemento ya no sea visible y adicional observaremos como realizar un control a una acción sin que se detenga nuestra automatización:   let visible = await page.locator('#btn').isVisible();     while (visible) {         try {     await page.locator('#btn').click({ timeout: 1000 });         } catch (error) {       console.error('El elemento no se encontró o no se pudo hacer clic en él.');     }     visible = await page.locator('#btn').isVisible();     console.log(visible);   }   Observamos lo siguiente: Almacenamos en la variable visible el valor booleando que nos retorna si es visible o no. Mientras es visible tratamos de dar un clic a un elemento, en caso que ya no sea visible por los milisegundos, al estar dentro del try nos retorna que ya no lo puede ver y sigue el proceso. De esta manera tan simple podem