Lección 6 de 6 · 2 min
Selenium Grid, Docker y escala
Al terminar sabrás
11 min- Correr la suite en un Chrome dockerizado, idéntico en todas partes
- Usar Selenium Grid para multi-navegador y paralelismo real
- Decidir entre Grid propio y un servicio cloud (BrowserStack, Sauce)
Construyes: Tu framework dockerizado, corriendo local, en Docker y en CI sin tocar código.
El problema de "en mi máquina pasa"
Tu suite corre en tu Chrome, con tu resolución y tus extensiones. El CI corre otro Chrome, sin cabeza, en Linux. Los contenedores eliminan esa diferencia: el mismo entorno, siempre, en todas partes.
Selenium en Docker, versión mínima
# docker-compose.yml
services:
chrome:
image: selenium/standalone-chrome:latest
ports: ["4444:4444"]
shm_size: 2gb # sin esto, Chrome crashea con páginas pesadas
# El test se conecta como Remote en vez de local
driver = webdriver.Remote(
command_executor="http://localhost:4444/wd/hub",
options=webdriver.ChromeOptions(),
)
docker compose up y tienes un Chrome idéntico al de cualquier compañero o pipeline. El shm_size no es opcional: es la causa #1 de crashes misteriosos de Chrome en Docker.
Grid: multi-navegador y paralelo real
Cuando necesitas Chrome + Firefox + Edge, o más paralelismo del que aguanta una máquina:
services:
selenium-hub:
image: selenium/hub:latest
ports: ["4444:4444"]
chrome:
image: selenium/node-chrome:latest
environment: [SE_EVENT_BUS_HOST=selenium-hub]
deploy: { replicas: 4 }
firefox:
image: selenium/node-firefox:latest
environment: [SE_EVENT_BUS_HOST=selenium-hub]
El hub reparte las sesiones entre nodos; pytest -n 8 contra el hub y cada worker recibe su navegador. La consola del Grid (localhost:4444) muestra las sesiones vivas — útil para diagnosticar cuellos de botella.
El pipeline completo
# .github/workflows/e2e-grid.yml (extracto)
services:
chrome:
image: selenium/standalone-chrome:latest
ports: ["4444:4444"]
steps:
- run: pytest -n 4 --html=report.html
env:
SELENIUM_REMOTE_URL: http://localhost:4444/wd/hub
Con el webdriver.Remote leyendo SELENIUM_REMOTE_URL del entorno, la misma suite corre local (Chrome directo), en Docker y en CI sin tocar código — solo cambia la variable.
Cierre del curso
Recorriste el arco completo: primer script → selectores y esperas profesionales → POM → paralelo y CI → datos deterministas → infraestructura escalable. Eso es exactamente el stack que piden los roles de QA Automation con Selenium.
Siguientes pasos naturales: Playwright pro para sumar el framework moderno, o QA con IA para escribir y mantener todo esto al doble de velocidad.
Cierra el curso con el quiz y dockeriza tu framework en el reto final.
Compruébalo
0/3Responde sin mirar atrás. Verás la explicación al instante.
1. En el docker-compose de Chrome, ¿por qué shm_size: 2gb no es opcional?
2. ¿Cuándo necesitas Selenium Grid en vez de un standalone?
3. ¿Qué permite leer SELENIUM_REMOTE_URL del entorno con webdriver.Remote?
Reto final: dockeriza tu framework
Dockeriza tu framework del curso: docker-compose.yml con standalone-chrome, la suite conectando por SELENIUM_REMOTE_URL, y el workflow de CI actualizado.
Criterio de éxito: un compañero clona el repo y corre la suite completa con dos comandos.