Consejo de ingeniero de pruebas n. ° 1: Dockerice su cuadrícula de selenio

Hola de nuevo. Hemos traducido una nota útil para usted antes del inicio del curso Java QA Engineer .










Cada año , ingenieros de automatización de pruebas de todo el mundo investigan las últimas herramientas y técnicas para hacer que su entorno de automatización de pruebas sea más estable, más rápido y más fácil de usar y mantener. Esto es vital para garantizar que sus marcos se estén implementando a gran escala en todo momento en su empresa. De cualquier manera, los frameworks obsoletos e inflados pasan rápidamente de moda.



Se sabe que Selenium Grid es difícil de configurar, inestable y difícil de implementar y / o controlar la versión en una tubería de CI. Una forma más fácil, estable y conveniente es utilizar las imágenes de Selenium Docker compiladas previamente.



Nota : El único inconveniente de este método es que IE (Internet Explorer) no lo admite, ya que actualmente el sistema operativo Windows no se puede colocar en un contenedor.


Preparación para el trabajo



Para comenzar, primero debe instalar Docker y Docker Compose en su máquina. Si está usando Windows 10 o Mac, ambos se instalarán usando Docker Desktop .



Ejecutando su Grid



El repositorio oficial de Selenium Docker Hub contiene imágenes de Docker predefinidas para sus nodos de Selenium Hub, Firefox y Chrome.



La forma más fácil de usarlos en su Selenium Grid local es crear un archivo Docker Compose en el directorio raíz de su proyecto. Nombra el archivo simplemente docker-compose.yml.



He incluido un ejemplo a continuación que crea la siguiente cuadrícula:



  • Un concentrador de selenio
  • Un nodo de Chrome
  • Un nodo de Firefox


#docker-compose.yml
version: "3"
services:
  selenium-hub:
	image: selenium/hub:3.141.59-neon
	container_name: selenium-hub
	ports:
  	- "4444:4444"
  chrome:
	image: selenium/node-chrome:3.141.59-neon
	volumes:
  	- /dev/shm:/dev/shm
	depends_on:
  	- selenium-hub
	environment:
  	- HUB_HOST=selenium-hub
  	- HUB_PORT=4444
  firefox:
	image: selenium/node-firefox:3.141.59-neon
	volumes:
  	- /dev/shm:/dev/shm
	depends_on:
  	- selenium-hub
	environment:
  	- HUB_HOST=selenium-hub
  	- HUB_PORT=4444


El archivo Docker Compose describe cómo configurar su Grid. Para obtener más información sobre la creación de archivos de Docker Compose, consulte la documentación oficial .



Para iniciar su Grid, simplemente use cualquier terminal ( PowerShello cmden Windows), en el cual ejecute el siguiente comando desde el directorio raíz de su proyecto:



docker-compose up


Conexión a la red



Puede conectarse a su Selenium Grid de la misma manera que de costumbre, ya que el Hub está escuchando en el puerto 4444 de su máquina local. Aquí hay un ejemplo en el que configuramos nuestro controlador para usar nuestro nodo Chrome.



// Driver.java
protected static RemoteWebDriver browser;
DesiredCapabilities cap = new DesiredCapabilities();
ChromeOptions chromeOptions = new ChromeOptions();
           	 
cap.setCapability(ChromeOptions.CAPABILITY, chromeOptions);           	 
cap.setBrowserName("chrome");
           	 
driver = new RemoteWebDriver(cap);


Luego, puede usar la biblioteca TestNG para ejecutar pruebas en múltiples nodos en paralelo como de costumbre.



Vale la pena señalar que se pueden iniciar varios navegadores en cada nodo. Sin embargo, esto no se recomienda y el uso de un navegador por nodo se considera la mejor práctica para un rendimiento óptimo.



Consejos y trucos adicionales



Si desea ver qué está pasando en el navegador para depurar sus pruebas, entonces vale la pena tener una debugversión de su docker-compose.ymlarchivo que cargue los debug nodos del navegador . Contienen un servidor VNC, por lo que puede ver el navegador mientras se ejecuta la prueba.



También es posible ejecutar navegadores sin cabeza para aumentar la velocidad (la forma habitual), y Selenium también proporciona baseversiones de imágenes para que pueda crear sus propias imágenes si necesita instalar software adicional.



También puede implementar su Grid en Kubernetes o Swarm para crear una versión estable de Grid para su canalización de CI . Esto asegura una rápida recuperación o reemplazo de los acopladores en caso de falla.







Lee mas:








All Articles