base_grid
Базовая Сетка
Selenium Grid, работающая с помощью docker-compose и других инструментов.
Цель - помочь веб-разработчикам создать сайты, работающие для широкой аудитории.
dockpack.base_grid
- это роль Ansible, которая разворачивает Selenium Grid и добавляет
некоторые дополнительные функции, чтобы вы могли использовать его в локальном режиме для имитации оптимального набора
веб-браузеров.
В корпоративной жизни часто используются Виртуальные Рабочие Станции (Citrix или VMWare Horizon) для Windows, а также локальные серверы на Red Hat Enterprise 7, где можно запускать только версию Docker, которая поддерживается RedHat, docker-latest 1.13.
Запуск контейнеров должен работать с внутренним реестром Docker, таким как Sonatype Nexus, а весь интернет-трафик должен быть проксирован.
Когда вы хотите автоматизировать кросс-браузерное тестирование, вам нужна Selenium Grid, к которой можно подключиться из Виртуальных Рабочих Станций и из локального сборочного сервера (Jenkins). Сетка docker-compose запускает старые и новые версии Firefox и Chrome. Эти старые версии отсутствуют на современных корпоративных IT-системах, но некоторые люди все еще их используют. Microsoft публикует образы ВМ с различными старыми версиями Internet Explorer, используя Vagrant, мы можем добавить их в локальную сетку.
Centos 7.5
Эта роль Ansible протестирована с помощью моего Vagrant-бокса redesign/centos7. Исходный код Packer доступен по адресу https://github.com/bbaassssiiee/redesign
vagrant init redesign/centos7
Переменные Роли
Файл defaults/main.yml
содержит переменные, которые можно изменить для разных
версий в основном. Обратитесь к этой странице для получения информации о поддерживаемых версиях браузеров:
https://github.com/SeleniumHQ/docker-selenium/releases
Эта роль предполагает наличие Docker и (локального) реестра, такого как Sonatype
Nexus, который содержит образы, упомянутые в переменных и значениях по умолчанию. Этот реестр можно
указать как selenium_registry
в ваших group_vars, если это необходимо.
Тестирование
Вы можете представить, что поддержка такой тестовой инфраструктуры - это сложная работа, поэтому в этом репозитории есть инструменты для имитации различных задач, с которыми нам нужно справляться в ближайшем будущем (2019 год). Мы можем решить следующие проблемы:
- Python 2.7 на Python 3
- Ansible 2.6 на 2.7 и другие
Требования
Python pip должен быть доступен для тестирования нескольких версий Ansible с Tox и Molecule.
pip install requirements.txt
Локальный Docker реестр
Вы можете скачать эти образы, проставить метки и загрузить их в свой локальный реестр.
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 ...
Тестирование с Vagrant
Вы можете использовать 7 версий Internet Explorer, скачав виртуальные машины Microsoft.
Этот скрипт скачивает, распаковывает и добавляет в Vagrant, чтобы вы могли использовать
Vagrantfile
.
cd vagrant
./windows_boxes.py
vagrant up IE8Win7
vagrant up IE9Win7
vagrant up IE10Win7
vagrant up IE11Win7
vagrant up IE11Win81
vagrant up MSEdgeWin10
Инструменты для Mac
Я тестирую это на Mac с Vagrant и Virtualbox. Я устанавливаю все инструменты для Mac,
включенные в Brewfile
, с помощью:
brew bundle
Роли, которые хорошо сочетаются с этой ролью
dockpack.base_goss dockpack.base.docker
Тестирование с Tox
Используется Tox, чтобы протестировать всю систему с:
tox
Пример Playbook
Включение примера того, как использовать вашу роль (например, с переданными как параметры переменными), всегда полезно для пользователей:
- name: provision selenium
hosts: testsystem
become: yes
roles:
- { role: dockpack.base_grid, tags: 'selenium'}
Лицензия
MIT
Информация об авторе
Бас Мейер @bbaassssiiee
Selenium Grid running with docker-compose
ansible-galaxy install dockpack/base_grid