Селен за 60 секунди
Представям ви превода на моята статия в Medium.com.
Selenium е де факто стандартът за автоматизиране на изпълнението на тестове в браузърите днес. Всички популярни браузъри се поддържат веднага и архитектурата е добре позната. Има дори компании, които предоставят селен срещу пари. Но удобен ли е обикновен Selenium сървър за локално отстраняване на грешки на тестове?

Като уеб разработчик или инженер по автоматизация на тестове може да срещнете следните неудобства, когато работите със стандартен Selenium сървър:
Горният списък с недостатъци далеч не е пълен. Но нека спрем до тук и опитаме много по-удобен начин за локално отстраняване на грешки в Selenium тестове.
В предишната ми статия (част I, част II) описах накратко новите инструменти с отворен код за работа със Selenium: Ggr и Selenoid.Ggr е необходим главно за големи Selenium клъстери и не е необходим за тестове за отстраняване на грешки на вашата машина. Днес ще говоря по-подробно заSelenoid - алтернативна реализация на Selenium hub, която изпълнява браузъри в Docker контейнери.
Но защо работата на браузъри в контейнери е толкова удобна? И каква е разликата между стартирането на браузъри от контейнери, предоставени от разработчиците Selenium и Selenoid? - Основната идея на Selenoid е да стартира нов контейнер за всяка сесия на Selenium (т.е. нова заявка за браузър) и да ги спре веднага след затваряне на сесията. Този подход незабавно решава всички проблеми, свързани със залепващото състояние в кешовете и използването на едни и същи настройки на браузъра в различни сесии. Всеки контейнер съдържа конкретна версия на браузъра, правилната версия на уеб драйвера или Selenium сървъра, който поддържа този браузър, и всички зависимости като шрифтове, графични библиотеки ии т.н. Освен това контейнерите осигуряват разумно ниво на изолация за процесите на браузъра. Това ви позволява да стартирате паралелно неограничен брой различни версии на браузъри и да забравите за проблемите с фокуса. Разбира се, същите проблеми се решават от обикновените контейнери със селен. Но за да получите подобно на Selenoid поведение, в допълнение към Docker, обикновено трябва да използвате сложни административни инструменти като Ansible или Salt.
Инсталирайте Docker. Това обикновено се прави с помощта на стандартния мениджър на пакети на вашата операционна система, като APT, Yum или Homebrew. Подробности можете да намерите в документацията на Docker.
Създайте директория за съхраняване на конфигурацията на Selenoid и генерирайте конфигурационен файл:
Последната команда също ще изтегли изображенията на контейнера на Docker на последните две версии на Firefox, Chrome и Opera и ще генерира правилния конфигурационен файл за Selenoid.
Това е всичко - изминали са 60 секунди и Selenoid е готов за работа. Няма нужда да инсталирате Java и да изтегляте Selenium на ръка. Просто стартирайте тестовете си, като използвате същия URL адрес като обикновения Selenium сървър:
Муцуна и събиране на статистика
Selenoid може да се използва заедно с Ggr за създаване на голям Selenium клъстер, така че няма GUI като Grid Console в нормалния Selenium. Има два начина за преглед на потреблението на браузъра:
I. Стартирайте допълнителен лек контейнер със Selenoid UI. Това става с командата:

II. Изпратете статистика на Selenoid към външна система: Graphite, InfluxDB, ElasticSearch и т.н. Selenoid статистика може да бъде получена от следния URL адрес:
Данните се изпращат като JSON в следния формат:
Готови контейнери с браузъри
Съгласете се, готино е да имате инструмент, който автоматично стартира контейнери с различни браузъри. Но още по-готино е да имате набор от готови контейнери с различни версии на популярни браузъри. Свършихме много работа и подготвихме изображения на контейнери с различни версии на Firefox, Chrome и Opera. Пълният списък може да се види на selenoid@DockerHub.
За да имате винаги набор от свежи версии на браузъри, трябва само да изпълнявате командата от време на време:
Тази команда автоматично ще изтегли най-новите контейнери и ще генерира нова JSON конфигурация за Selenoid. За да започнете да използвате нови браузъри, изпратете на Selenoid команда за препрочитане на конфигурацията (може да се направи при натоварване):
Нашите контейнери също поддържат възможността за задаване на произволни разделителни способности на екрана (по подразбиране 1920x1080x24). За да зададете разделителната способност, просто предайте възможността screenResolution :
Заключение
В тази статия обясних как ефективно да управлявате различни браузъри с помощта на Selenoid. Повярвайте ми - работата със Selenium може да бъде удобна. Ако се интересувате от изграждането на ефективна инфраструктура за тестване, можете да разгледате други отворени инструменти в нашата организация в Github или да следвате нашия Twitter @aerokube.
Hardcore conf в C++. Каним само професионалисти.