Запускаем браузерные тесты с Cucumber и Selenoid в Gitlab CI c Allure отчетом

от автора

Cucumber – это инфраструктура тестирования, позволяющая преодолеть разрыв между разработчиками ПО и бизнес-менеджерами. Тесты пишутся на простом языке управляемой поведением разработки (BDD) в стиле Given, When, Then (условия, операция, результат), которой понятен любому пользователю. Затем контрольные тесты записываются в файлы функций, охватывающие один или несколько сценариев тестирования. Cucumber интерпретирует тесты на указанном языке программирования и использует Selenium для управления тестами в браузере.

Selenoid представляет собой альтернативное решение Selenium Server, хотя суть та же — организация работы драйверов.

В этом посте будет запуск простого браузерного теста с помощью Cucumber и Selenoid в Gitlab CI c Allure отчетом в конце.

Подготовка

На вашей операционной системе обязательно должен быть установлен и запущен Docker.

Установка Selenoid

Если у вас Redhat-based операционная система, вы можете использовать мой репозиторий для установки Configuration manager.

yum -y install yum-plugin-copr yum copr enable antonpatsev/aerokube-cm-rpm yum -y install aerokube-cm

Если у вас не Redhat-based операционная система, то вы можете скачать и использовать бинарник Configuration manager.

Запуск Selenoid используя Configuration manager и формирование browsers.json

Если у вас нет прямого доступа в инет и docker образы вы скачиваете через registry.

aerokube-cm selenoid start --force --browsers "firefox:70.0;firefox:71.0;chrome:78.0;chrome:79.0" --registry ваш-docker-registry

Если у вас есть прямой доступ в инет.

aerokube-cm selenoid start --force --browsers "firefox:70.0;firefox:71.0;chrome:78.0;chrome:79.0"

Ключ --force перезаписывает файл browsers.json.

Итоговый файл browsers.json для тестирования Chrome и Firefox. Заметьте что path у Chrome и Firefox разные.

{     "chrome": {         "default": "79.0",         "versions": {             "78.0": {                 "image": "docker-registry/selenoid/chrome:78.0",                 "port": "4444",                 "path": "/"             },             "79.0": {                 "image": "docker-registry/selenoid/chrome:79.0",                 "port": "4444",                 "path": "/"             }         }     },     "firefox": {         "default": "71.0",         "versions": {             "70.0": {                 "image": "docker-registry/selenoid/firefox:70.0",                 "port": "4444",                 "path": "/wd/hub"             },             "71.0": {                 "image": "docker-registry/selenoid/firefox:71.0",                 "port": "4444",                 "path": "/wd/hub"             }         }     } }

Изменение browsers.json

При изменении версий браузеров можно изменить файл browsers.json и перезагрузить selenoid.

Но если вы используете ключ --force, то browsers.json перезапишится с новыми версиями браузеров.

Проверяем что docker контейнер запустился и образы скачались.

docker ps docker images

Запуск Selenoid UI используя Configuration manager

aerokube-cm selenoid-ui start --registry https://docker-registry

Или

aerokube-cm selenoid-ui start

Проверяем что docker контейнер запустился и образы скачались.

docker ps docker images

Заходим в selenoid-ui по адресу ip-где-вы-запускали-selenoid-и-selenoid-ui:8080

У вас должно быть гореть зеленым 2 слова CONNECTED и написано firefox и chrome.

В capabilities видим доступные браузеры.

DEMO TEST

Скачиваем https://github.com/andewBr/cucumber_selenium_test

или на другой адрес, там где вы запустили selenoid.

В файле WebdriverBeanConfig.java добавляем Capability для запуска chrome. Если вы используете прокси сервер, то добавьте строки про прокси как на стриншоте.

В каждом файле java вы можете включить или выключить запись видео, удаленный просмотр или управление через VNC и запись логов в файл. Чтобы выключить опцию нужно добавить 2 слеша в начало строки.

Запуск тестов

В директории demo-tests запускаем тесты:

Если вам нужно указать настройки и у вас используется maven-прокси (Nexus, Artifactory)

mvn -s settings.xml clean test

Если запускаем с прямым доступом в инет и без каких-либо настроек

mvn clean test

Скорость

Общее время запуск 1 теста занимает меньше 1 минуты.

Запуск тестов в Gitlab CI

Чтобы каждый раз не запускать Selenoid и Selenoid-UI при запуске тестов, можно запустить Selenoid и Selenoid-UI один раз при запуске Gitlab Runner с помощью Ansible, Puppet, Chef или других инструментов.

Итоговый .gitlab-ci.yml

--- variables:   MAVEN_OPTS: "-Dhttps.protocols=TLSv1.2 -Dmaven.repo.local=/home/gitlab-runner/.m2/repository -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=WARN -Dorg.slf4j.simpleLogger.showDateTime=true -Djava.awt.headless=true"   MAVEN_CLI_OPTS: "--batch-mode --errors --fail-at-end --show-version -DinstallAtEnd=true -DdeployAtEnd=true"  before_script:   - export PATH="/opt/rh/rh-maven33/root/usr/bin:$PATH"  build:   stage: build   script:     - aerokube-cm selenoid start --force --browsers "firefox:70;firefox:71;chrome:78;chrome:79" --registry docker-registry     - aerokube-cm selenoid-ui start --registry docker-registry     - cat ~/.aerokube/selenoid/browsers.json     - set +e     - mvn -s maven_settings.xml clean install -Dmaven.test.skip=true     - mvn -s maven_settings.xml clean test || EXIT_CODE=$?     - mvn -s maven_settings.xml allure:aggregate;     - export PATH_WITHOUT_HOME=$(pwd | sed -e "s/\/home\/gitlab-runner\/builds//g")     - echo '***********************************************************************'     - echo "http://$HOSTNAME:9090$PATH_WITHOUT_HOME/target/site/allure-maven-plugin/"     - echo '***********************************************************************'     - set -e     - exit ${EXIT_CODE} 

После строки echo "http://$HOSTNAME:9090$PATH_WITHOUT_HOME/target/site/allure-maven-plugin/"

Появится URL, по которому можно просмотреть Allure отчет.

Для отображения Allure отчета нужно чтобы на gitlab runner был установлен nginx с такой конфигурацией:

server {     listen       9090;     listen       [::]:9090;     server_name  _;     root         /home/gitlab-runner/builds;      location / {         autoindex on;     }      error_page 404 /404.html;         location = /40x.html {     }      error_page 500 502 503 504 /50x.html;         location = /50x.html {     }

Скриншот Allure отчета


ссылка на оригинал статьи https://habr.com/ru/post/480940/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *