dockpack.base_grid
Base Grid
Una Selenium Grid que se ejecuta con docker-compose y otros.
El objetivo es ayudar a los desarrolladores web a hacer que los sitios funcionen para el público en general.
dockpack.base_grid
es un rol de Ansible que despliega una Selenium Grid y agrega
algunas características adicionales para que puedas usarla en modo local y simular la variedad óptima de
navegadores web.
Es bastante común en la vida corporativa, que las personas tengan Escritorios Virtuales (Citrix o VMWare Horizon) para Windows y servidores locales ejecutando Red Hat Enterprise 7, donde solo podrían ejecutar una versión de Docker que es compatible con RedHat, docker-latest 1.13.
Los contenedores en ejecución necesitarían funcionar con un registro de Docker interno como Sonatype Nexus, y todo el tráfico de internet debería ser proxy.
Cuando quieres automatizar pruebas en varios navegadores, necesitarías una Selenium Grid a la que puedas conectarte desde los Escritorios Virtuales y desde un servidor de compilación interno (Jenkins). La grid de docker-compose ejecuta versiones antiguas y nuevas de Firefox y Chrome. Estas versiones más antiguas no están presentes en los sistemas de TI corporativos modernos, pero algunas personas todavía las utilizan. Microsoft publica imágenes de VM con varias versiones más antiguas de Internet Explorer, usando Vagrant podemos agregar estas a la grid local.
Centos 7.5
Este rol de Ansible se prueba con mi caja de Vagrant redesign/centos7. El código fuente de Packer está disponible en https://github.com/bbaassssiiee/redesign
vagrant init redesign/centos7
Variables del Rol
El archivo defaults/main.yml
contiene variables que pueden cambiarse para diferentes
versiones en su mayoría. Consulta esta página para las versiones de navegador que se admiten:
https://github.com/SeleniumHQ/docker-selenium/releases
Este rol asume la presencia de Docker y un registro (local) como Sonatype
Nexus que contenga las imágenes mencionadas en las variables y valores predeterminados. Este registro se puede
definir como selenium_registry
en tus group_vars si es necesario.
Pruebas
Puedes imaginar que mantener una infraestructura de pruebas así es un trabajo complicado, por lo tanto, este repositorio tiene herramientas para simular varias cosas con las que necesitamos lidiar en un futuro cercano (2019) Podemos abordar estos problemas:
- Python 2.7 a Python 3
- Ansible 2.6 a 2.7, y otros
Requisitos
Necesitas tener Python pip disponible para probar múltiples versiones de Ansible con Tox y Molecule.
pip install requirements.txt
Registro de Docker Local
Puedes descargar estos originales, etiquetarlos y subirlos a tu registro local.
docker pull selenium/node-firefox:3.141.59-iron
docker pull selenium/node-firefox:3.12.0-cobalt
docker pull selenium/node-chrome:3.141.59-iron
docker pull selenium/node-chrome:3.8.1-erbium
docker pull selenium/hub:3.141.59-iron
docker images
docker tag ...
docker push ...
Pruebas con Vagrant
Puedes usar 7 versiones de Internet Explorer descargando las VMs de Microsoft.
Este script hace la descarga, descompresión y vagrant box add
para que puedas usar el
Vagrantfile
.
cd vagrant
./windows_boxes.py
vagrant up IE8Win7
vagrant up IE9Win7
vagrant up IE10Win7
vagrant up IE11Win7
vagrant up IE11Win81
vagrant up MSEdgeWin10
Herramientas para Mac
Pruebo esto en una Mac con Vagrant y Virtualbox. Instalo todas las herramientas de Mac
incluidas en el Brewfile
con:
brew bundle
Roles que combinan bien con este rol
dockpack.base_goss dockpack.base.docker
Pruebas con Tox
Se utiliza Tox, así que todo se prueba con:
tox
Ejemplo de Playbook
Incluir un ejemplo de cómo usar tu rol (por ejemplo, con variables pasadas como parámetros) siempre es útil para los usuarios:
- name: provisionar selenium
hosts: testsystem
become: yes
roles:
- { role: dockpack.base_grid, tags: 'selenium'}
Licencia
MIT
Información del Autor
Bas Meijer @bbaassssiiee
Selenium Grid running with docker-compose
ansible-galaxy install dockpack.base_grid