Análisis de caso
Cómo es de verdad el calendario de una migración de Selenium
Migrar a Playwright los 100 tests de Selenium de Zenjob llevó ocho meses: la cifra con la que los proveedores nunca empiezan, y la que de verdad ajusta las expectativas.
- Quién lo publicó
- Zenjob Tech Blog, Niranjan Veluru
- Cuándo
- Septiembre de 2024
- Escala
- 100 casos de prueba, 8 jobs de Jenkins en paralelo
- Resultado
- Reducción del 80 % en el tiempo de ejecución de los tests (de 35 min a unos 7 min)
La situación en la que estaban
En septiembre de 2024, el equipo de ingeniería de Zenjob publicó en el Zenjob Tech Blog un relato de su migración de Selenium a Playwright. Las cifras con las que abrían eran las atractivas: unos tests que tardaban 35 minutos en ejecutarse ahora tardan unos 7.
El conjunto no era grande. Cien casos de prueba, repartidos en ocho jobs de Jenkins en paralelo. Para la mayoría de las organizaciones, es un conjunto de tamaño pequeño o medio. Muchos proveedores presupuestarían quince días para migrarlo.
Lo que motivó la migración no fue la velocidad, o no principalmente. El artículo del equipo es claro: la inestabilidad de los tests de Selenium «persistía» pese a añadir sincronización y datos de prueba dedicados, y exigía «retrabajo constante». Su configuración tampoco tenía informes integrados. Los ingenieros no solo ejecutaban tests; gestionaban todo un proceso de soporte alrededor de ellos para que siguieran sirviendo de algo.
Lo que hicieron de verdad
Antes de escribir un solo test de Playwright, Zenjob escribió un RFC. Compararon Selenium, Cypress y Playwright, expusieron su razonamiento y pasaron el documento a todo el equipo de ingeniería para que lo comentara. Solo cuando terminó ese proceso empezaron la migración.
Merece la pena detenerse en esto. Un RFC no es burocracia. Es el mecanismo con el que una migración se gana su presupuesto y construye su mandato. Cada ingeniero que más tarde revisará tests de Playwright, los mantendrá o los pondrá en duda durante un incidente ya ha sido invitado a entrar en el razonamiento. Eso tiene peso. El coste social de una migración (el tiempo y la energía necesarios para alinear a toda una organización en torno a un enfoque nuevo) es real, y casi nunca aparece en la estimación de nadie.
Una vez cerrado el RFC, el equipo ejecutó los dos conjuntos en paralelo: los tests de Selenium siguieron funcionando mientras se escribían los de Playwright, y el equilibrio fue cambiando poco a poco hasta poder retirar el conjunto antiguo. El artículo los describe «aumentando poco a poco los tests de Playwright y reduciendo los de Selenium». Es el enfoque cuidadoso. Evita un corte único y hace que el pipeline nunca dependa por completo de unos tests que el equipo aún no ha validado del todo.
También es caro, porque durante meses mantienes dos suites de tests a la vez.
Lo que les costó
Ocho meses. Para cien tests.
Esa cifra merece ser el titular de este texto, no una nota al pie. Zenjob no tardó ocho meses por desorganización o lentitud. Tardó ocho meses porque eso es lo que cuesta de verdad una migración hecha con cuidado: escribir y hacer circular el RFC, ejecutar ambos conjuntos en paralelo, mantener el pipeline en verde mientras el producto seguía saliendo, gestionar las sorpresas que aparecen a mitad de migración y, por último, retirar el conjunto de Selenium sin sobresaltos.
Los proveedores que venden herramientas de conversión automática suelen dar plazos medidos en días. Algunas comparativas de frameworks publicadas en internet usan plazos aún más cortos para conjuntos de tamaño similar. Conviene preguntar, con calma, qué incluyen esos plazos. Suelen cubrir la traducción mecánica de la sintaxis de los tests. Rara vez cubren el periodo en paralelo, el retrabajo de los datos de prueba o las semanas siguientes, cuando los ingenieros se enfrentan por primera vez a un framework nuevo en un pipeline real y los casos límite van saliendo de uno en uno.
El gráfico de abajo muestra el tiempo de ejecución antes y después, según los datos del equipo.
Tras la migración, el pipeline usaba ocho workers en paralelo; las ejecuciones locales, dos. El equipo informa de una reducción del 80 % en el tiempo de ejecución de los tests, de 35 minutos a unos 7. medido
Hubo un problema destacable durante la migración. La opción de configuración fullyParallel de Playwright, que activa el paralelismo completo entre todos los archivos de tests, hizo fallar algunos tests. El equipo la desactivó. Una vez desactivada, según el artículo, los tests lograron un «rendimiento estable».
Es una lección concreta y útil. fullyParallel es una de las funciones estrella de Playwright, y se cita a menudo para defender la migración. También es una función construida y probada con conjuntos nuevos, diseñados desde el principio para ejecutarse en paralelo. Un conjunto migrado arrastra supuestos de su vida anterior: sobre el orden de ejecución, sobre el estado compartido, sobre datos de prueba preparados pensando en ejecuciones secuenciales. Activar fullyParallel en un conjunto migrado es, en la práctica, un experimento. Zenjob hizo el experimento y vio que no funcionaba. Su solución fue desactivar la función, lo cual es un resultado razonable. Conviene señalar, eso sí, que las cifras de velocidad del artículo corresponden a unos tests que se ejecutan sin el paralelismo completo activado.
La cifra que no publicaron
El motivo declarado de la migración era la inestabilidad. La introducción describe una inestabilidad que persistía pese a las mejoras de sincronización y los datos de prueba dedicados, y la caracteriza como algo que exigía retrabajo constante. Está claro que es una parte importante de la razón por la que el equipo invirtió en migrar.
El artículo no publica una tasa de inestabilidad posterior a la migración.
No es una crítica al equipo ni al texto. La inestabilidad es realmente difícil de medir de forma que dé una cifra comparable. La velocidad es sencilla: comparas marcas de tiempo antes y después. La inestabilidad exige definir qué cuenta como fallo intermitente, elegir una ventana de medición lo bastante larga para ser representativa y controlar los cambios en los propios tests durante ese periodo. La velocidad te da un antes y un después limpios; la inestabilidad casi nunca.
Pero merece la pena nombrar el hueco como patrón. Los equipos migran en parte por la inestabilidad, e informan de la velocidad porque la velocidad se puede medir y la cifra es buena. Si estás evaluando una migración, la pregunta «¿cuánto más rápidos son los tests?» tiene una respuesta clara. La pregunta «¿cuánto más llevadero es el mantenimiento?» casi nunca la tiene, aunque suele ser la más importante.
Lo que sacamos de esto
El detalle que se nos queda es el RFC. Zenjob no evaluó frameworks y se puso a escribir tests. Documentó su razonamiento, nombró las alternativas que consideró y pidió a todo el equipo de ingeniería que entrara en el documento antes de que nadie escribiera una línea de Playwright. Ese paso cuesta tiempo y no produce nada visible de inmediato. Lo que produce, de forma menos visible, es una organización a la que se ha consultado. Cuando la migración se alargó a ocho meses, cuando hubo que desactivar fullyParallel, cuando hubo que mantener el conjunto paralelo durante varios sprints de trabajo normal de producto: nada de eso obligó a reabrir la decisión, porque la decisión se había tomado de forma deliberada y por escrito. Es la inversión que no aparece en el calendario de ningún proveedor y casi en ningún relato retrospectivo.
La cifra de ocho meses debería reajustar las expectativas en ambas direcciones. Si tu equipo lleva tres meses de migración y aún no ha terminado, puede que simplemente lo esté haciendo bien. Si un proveedor te presupuesta quince días para una suite de tests de cualquier tamaño real, la pregunta no es si son competentes, sino qué incluye su plazo. Pregunta si el periodo en paralelo está incluido. Pregunta qué pasa cuando fullyParallel no se comporta como se espera con tus datos de prueba actuales. No son preguntas trampa; son las preguntas que separan una conversión de una migración.
Ejecutar ambos conjuntos en paralelo es el enfoque correcto, y Zenjob lo siguió. También es el enfoque caro, porque mantienes dos conjuntos a la vez. Ese coste tiene que estar en la propuesta, dicho con claridad, no en la factura que llega tres meses después. Si una propuesta no lo menciona, eso ya es información útil.
Fuentes
- Zenjob Tech Blog: Embarking on the great migration: From Selenium to Playwright. Relato en primera persona de Niranjan Veluru, publicado el 3 de septiembre de 2024. Única fuente primaria de todos los datos de este análisis; todas las cifras son las que dio el equipo.