Healenium: La herramienta que automatiza la curación de tus tests 🦾
Una herramienta de código abierto que puede "curar" automáticamente tus tests cuando los selectores cambian
La semana pasada estuvimos investigando SelectorsHub, una extensión para navegadores que te permite generar, probar y corregir selectores de manera rápida, visual e interactiva. Esta semana continuamos hablando sobre selectores.
En el mundo del testing automation, mantener nuestros scripts de prueba funcionando puede ser una pesadilla, especialmente cuando las aplicaciones cambian constantemente. Seguro te ha pasado: hay una actualización en la interfaz de usuario y, de repente, tus tests empiezan a fallar porque los selectores ya no coinciden. Frustrante, ¿verdad? 😩
Aquí es donde entra en acción Healenium 🦾, una herramienta de código abierto que puede "curar" automáticamente tus tests cuando los selectores cambian.
🚀 ¿Qué es Healenium y cómo funciona?
Healenium es una librería que se integra con Selenium (una de las herramientas de automatización de pruebas más populares).
Lo que hace Healenium es:
✅ Detectar automáticamente cuando un elemento cambia en la interfaz.
✅ Buscar el nuevo selector usando un algoritmo de machine learning.
✅ Corregir el selector en tiempo de ejecución para que el test no falle.
✅ Actualizar automáticamente el código del test con el nuevo selector.
👉 Esto significa que si un botón cambia de nombre o posición, Healenium lo detectará y ajustará el test sin que tengas que hacerlo manualmente. 🙌
🛠️ Cómo instalar y configurar Healenium en 3 pasos
Antes de implementar Healenium, asegúrate de que tienes un entorno de pruebas basado en Java con Selenium configurado.
🔎 1. Añadir Healenium como dependencia
Si estás usando Maven, agrega la siguiente dependencia en tu archivo pom.xml
:
<dependency>
<groupId>com.epam.healenium</groupId>
<artifactId>healenium-selenium</artifactId>
<version>3.3.4</version>
</dependency>
Si usas Gradle, agrega esto a build.gradle
:
dependencies {
implementation 'com.epam.healenium:healenium-selenium:3.3.4'
}
🔧 2. Instalar el backend de Healenium
Healenium requiere un backend para almacenar datos sobre los selectores curados y sus patrones de cambio.
Descarga el archivo
docker-compose.yml
desde el repositorio de Healenium:
curl -o docker-compose.yml https://raw.githubusercontent.com/healenium/healenium/master/docker-compose.yml
Levanta los servicios usando Docker:
docker-compose up -d
Esto iniciará tres contenedores:
Healenium backend → Para almacenar y procesar los patrones de selectores.
PostgreSQL → Base de datos para almacenar los datos de curación.
Healenium UI → Para visualizar los datos curados.
💻 3. Configurar el driver de Healenium
Healenium funciona envolviendo el WebDriver de Selenium con una capa de "curación".
SelfHealingDriver driver = SelfHealingDriver.create(new ChromeDriver());
driver.get("https://tuapp.com");
WebElement button = driver.findElement(By.id("login"));
button.click();
Si Healenium detecta que el elemento ha cambiado o desaparecido, intentará curarlo automáticamente usando machine learning para buscar un elemento con propiedades similares.
🏁 Paso a paso para ejecutar Healenium por primera vez
Configura el entorno
Asegúrate de tener instalado:
✅ Java (versión 8 o superior)
✅ Maven o Gradle
✅ Docker (para levantar el backend de Healenium)
Clona el repositorio de Healenium
Si quieres probar un proyecto de ejemplo, puedes clonar el repositorio oficial:
git clone https://github.com/healenium/healenium-selenium.git
Levanta el backend de Healenium
Ubícate en el directorio del repositorio y ejecuta Docker:
cd healenium-selenium
docker-compose up -d
Esto iniciará tres servicios esenciales:
Backend de Healenium
Base de datos PostgreSQL
Interfaz de administración de Healenium
Verifica que los servicios estén corriendo:
docker ps
Crea el primer test usando Healenium
Abre el proyecto en tu IDE (como IntelliJ o Eclipse).
Si estás usando Maven, ejecuta:
mvn clean install
Si usas Gradle:
./gradlew build
Crea un test básico con el driver de Healenium:
import com.epam.healenium.SelfHealingDriver;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
public class HealeniumTest {
public static void main(String[] args) {
WebDriver delegate = new ChromeDriver();
SelfHealingDriver driver = SelfHealingDriver.create(delegate);
driver.get("https://tuapp.com");
// Prueba de curación de selector
WebElement button = driver.findElement(By.id("login"));
button.click();
driver.quit();
}
}
Ejecuta el test
Desde el terminal o el IDE, ejecuta el test:
mvn test
o si usas Gradle:
./gradlew test
Verifica la curación
Si el selector cambia y Healenium lo corrige, verás un mensaje en la consola indicando que el selector ha sido curado automáticamente.
Puedes revisar el proceso de curación en la interfaz de administración de Healenium:
➡️ http://localhost:7878
🔄 Cómo implementar Healenium en proyectos Selenium ya existentes
Si ya tienes un proyecto de Selenium en funcionamiento, como es mi caso, la integración con Healenium es bastante sencilla. Solo necesitas seguir estos pasos:
Añade la dependencia de Healenium
Si usas Maven, añade esto en tu archivopom.xml
:
<dependency>
<groupId>com.epam.healenium</groupId>
<artifactId>healenium-web</artifactId>
<version>3.4.0</version>
</dependency>
Si usas Gradle, añade en build.gradle
:
dependencies {
implementation 'com.epam.healenium:healenium-web:3.4.0'
}
Reemplaza el
WebDriver
conSelfHealingDriver
Cambia la instancia deWebDriver
que ya estás usando aSelfHealingDriver
:
import com.epam.healenium.SelfHealingDriver;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class ExistingTest {
WebDriver delegate = new ChromeDriver();
SelfHealingDriver driver = SelfHealingDriver.create(delegate);
public void openSite() {
driver.get("https://example.com");
driver.quit();
}
}
Levanta el backend de Healenium
Si aún no lo has hecho, inicia el backend de Healenium usando Docker:
docker-compose up -d
Ejecuta tus tests de Selenium como siempre
No necesitas modificar las pruebas que ya tienes — Healenium empezará automáticamente a monitorear los selectores y curarlos si cambian.
Ejecuta el proyecto con Maven o Gradle como lo harías normalmente:
mvn test
o
./gradlew test
Verifica la curación
Si Healenium detecta un cambio en el DOM y logra curarlo, verás mensajes en la consola como:
Selector changed. Healing successful!
También puedes revisar el historial de curación desde la interfaz de administración como ya vimos.
Con solo estas modificaciones, tus tests de Selenium ahora estarán protegidos contra cambios menores en el DOM gracias a la curación automática de Healenium. 😎
⚠️ Posibles dificultades y cómo solucionarlas
Aunque Healenium es muy potente, puede presentar algunos desafíos durante la implementación:
🚨 1. Problemas con Docker
Si Docker no está configurado correctamente o tienes conflictos con los puertos, puedes verificar el estado de los contenedores con:
docker ps
Si hay errores, intenta reiniciar Docker o verificar que los puertos no estén en uso.
🚨 2. Tiempo de curación excesivo
Si Healenium tarda mucho en "curar" un selector, verifica:
➡️ Si la estructura del DOM ha cambiado drásticamente.
➡️ Si hay demasiados elementos similares, lo que podría confundir el algoritmo de machine learning.
🚨 3. Selectores dinámicos difíciles de curar
Healenium funciona mejor con selectores bien estructurados. Si tus selectores son dinámicos (por ejemplo, generados aleatoriamente o con IDs cambiantes), puedes mejorar el rendimiento usando XPath relativos en lugar de IDs o clases.
Ejemplo:
❌ Mal selector
driver.findElement(By.id("random_123"));
✅ Mejor selector
driver.findElement(By.xpath("//button[contains(text(), 'Login')]"));
🎯 Mejores prácticas para implementar Healenium
✅ Usa selectores estables → Si es posible, usa xpath
o css
estables.
✅ Evita selectores dinámicos → Los IDs generados automáticamente pueden causar problemas.
✅ Monitorea el backend → La interfaz de Healenium puede ayudarte a ver patrones de fallas.
✅ Combina Healenium con buenas prácticas de testing → Healenium te ayuda a mantener los tests, pero no reemplaza la importancia de un buen diseño de test.
🔥 ¿Por qué probar Healenium?
✅ Ahorra tiempo y esfuerzo en el mantenimiento de los tests.
✅ Mejora la resiliencia de tus tests ante cambios menores en la UI.
✅ Te permite concentrarte en escribir nuevos tests en lugar de corregir constantemente los antiguos.
🚀 ¡Ahora te toca a ti!
👉 ¿Te gustaría que haga un video mostrando cómo configurar Healenium paso a paso?
👉 ¿Tienes alguna duda o problema al implementarlo?
¡Déjame un comentario y con gusto lo resolvemos junt@s! 😎
📩 Suscríbete a la newsletter para no perderte más herramientas útiles como esta. ¡La próxima semana será sobre Testim, otra herramienta que lleva la automatización de pruebas al siguiente nivel! 🔥