Как вы уже могли заметить мы в команде Aerokube продолжаем упрощать жизнь в инфраструктуре тестирования. Сейчас мы усиленно работаем над удобными инструментами для, браузерного тестирования на основе Selenium. Одним из инструментов, о котором я уже рассказывал раньше, является Selenoid. Selenoid — это легковесный сервер, запускающий изолированные браузеры в Docker контейнерах. В предыдущих статьях (раз, два) я описал два возможных сценария использования Selenoid — работа с Docker и использование исполняемых файлов веб-драйверов в операционных системах, где отсутствует поддержка Docker. Сегодня я расскажу о новых возможностях, которые могут помочь в отладке браузерных тестов.
Живой экран браузера
Одной из полезных возможностей, предлагаемых коммерческими Selenium сервисами является возможность отображения экрана браузера во время исполнения тестов. Это сильно помогает в отладке, и всем, включая вашего начальника или менеджера, нравится смотреть мультики с исполняющимися в браузерах тестами. А теперь хорошая новость — недавно мы добавили такую возможность в Selenoid. Чтобы попробовать нужно:
- Передать дополнительную capability в тесты:
enableVNC = true
- Запустить мордочку Selenoid UI и перейти на вкладку VNC.
- Запустить тесты и вы увидите каждую сессию в виде прямоугольника с именем браузера и установленным разрешением экрана.
- Нажмите мышкой на этот прямоугольник и вы увидите что происходит в браузере. Можно даже вмешиваться мышкой в тесты.
Как это работает? Все очень просто. В каждом контейнере при запуске также стартует VNC сервер, который подключается к экрану браузера. Selenoid UI подключается к порту VNC и показывает что происходит с браузером. Наши образы по-умолчанию (например, selenoid/firefox:53.0
) не содержат VNC сервера, поскольку предназначены для использования в больших кластерах Selenium, где просмотр сессии нужен достаточно редко. Для каждого обычного образа, мы подготовили отдельные образ, содержащий VNC сервер — полный список можно найти в таблицах.
Логи сессии в реальном времени
Опытные пользователи Selenium иногда хотят видеть логи сессии во время выполнения тестов. Эта возможность тоже добавлена в Selenoid. Использовать эту функциональность еще проще — нужно запустить Selenoid UI и пойти на вкладку Logs. На ней вы будете видеть логи для всех запущенных сессий. Если вам нужно сохранять логи после завершения сессии — посмотрите как можно сконфигурировать логирование в разделе документации.
Автоматическая установка
Хотя Selenium — достаточно простой инструмент, его первоначальная настройка может быть сложной. Некоторые библиотеки, например, Angular webdriver-manager уже умеют автоматизировать основную часть работы, но они требуют ручной установки Node.js и Java. Но что если бы вы могли подготовить Selenium окружение одной командой? Мы написали небольшой инструмент, который делает всю работу за вас и не имеет внешних зависимостей. Он называется просто cm, что по-английски значит "менеджер конфигурации". Чтобы все заработало:
1) Скачайте исполняемый файл cm со страницы релизов.
На Маке:
$ curl -Lo cm https://github.com/aerokube/cm/releases/download/1.2.0/cm_darwin_amd64
$ chmod +x ./cm
На Линуксе:
$ curl -Lo cm https://github.com/aerokube/cm/releases/download/1.2.0/cm_linux_amd64
$ chmod +x ./cm
На Windows — универсальной команды нет, нажмите на одну из ссылок в зависимости от версии Windows: 32 бита или 64 бита и сохраните файл как cm
. Если у вас установлен Powershell, то для скачивания введите команду:
> curl -o cm.exe https://github.com/aerokube/cm/releases/download/1.2.0/cm_windows_amd64
2) Запустите одну команду:
$ ./cm selenoid start --vnc
На Windows это пишется как:
> .cm.exe selenoid start
Запуск этой команды скачает свежую версию Selenoid, контейнеры с браузерами, исполняемые файлы веб-драйверов, создаст файлы конфигурации и запустит Selenoid. После успешного завершения команды просто запустите тесты через обычный URL:
http://localhost:4444/wd/hub
Аналогично для того, чтобы запустить Selenoid UI без лишних усилий введите команду:
$ ./cm selenoid-ui start
Автор: aandryashin