Опис
selenoid – це інструмент який дозволяє керувати браузерами за допомогою спеціальних драйверів. Вміє запускати кожен з них ізольовано в Docker Contained, написаний на Go. Даний інструмент використовують QA для UI,WEB тестування.
Особливості:
- швидке встановлення;
- зручна робота з браузерами;
- легке масштабування;
- зручний і зрозумілий UI;
- Черги, ліміти.
Якщо говорити про браузери, то selenoid має набір контейнеризованих рішень:
В контейнері з браузером міститься WebDriver, браузер який підходить для даного WebDriver і додаткові компоненти (шрифти, підтримка різних мов,та інше).
Для встановлення потрібно щоб на сервері були встановлені docker і docker-compose.
Послідовність виконання:
- підготуємо робочі директорії;
- створимо й опишемо selenoid-compose.yaml який складатиметься з двох сервісів;
- опишемо браузери в файлі browsers.json;
- створимо файл selenoid.service який дозволить запускати утиліту як сервіс;
- перевіримо доступність та статус селеноіда.
Selenoid
Переглянути й завантажити файли з даної статті можете тут.
Директорії
Створимо наступні директорії:
- /opt/selenoid – для розташовання selenoid-compose.yaml;
- /opt/selenoid/video – зберігатимуться записані відео;
- /opt/selenoid/logs – для логів;
- /etc/selenoid – директорія для конфігураційних файлів selenoid.
mkdir -p /etc/selenoid && mkdir -p /opt/selenoid mkdir -p /opt/selenoid/video && mkdir -p /opt/selenoid/logs
Файл browser.json
Створимо файл browsers.json в директорії /etc/selenoid. В даному файлі описуються параметри браузерів, приклад цього файлу взято з репозиторію тут:
{ "firefox": { "default": "latest", "versions": { "latest": { "image": "selenoid/firefox", "port": "4444", "path": "/wd/hub", "tmpfs": {"/tmp":"size=512m"} } } }, "chrome": { "default": "latest", "versions": { "latest": { "image": "selenoid/chrome", "port": "4444", "tmpfs": {"/tmp":"size=512m"} } } } }
Файл selenoid-compose.yaml
В директорії /opt/selenoid створюємо файл selenoid-compose.yaml, в ньому опишемо два сервіси:
- selenoid-ui – web інтерфейс;
- selenoid-core – core(back) частина;
version: '3.9' services: selenoid-ui: image: aerokube/selenoid-ui:1.10.4 network_mode: bridge container_name: selenoid-ui links: - selenoid ports: - "8080:8080" volumes: - "/etc/selenoid:/etc/selenoid/" # assumed current dir contains browsers.json - "/var/run/docker.sock:/var/run/docker.sock" command: ["--selenoid-uri", "http://YOUR_SERVER_IP_OR_HOSTNAME:4444"] # private or public server IP or Hostname selenoid: image: aerokube/selenoid:1.10.7 network_mode: bridge container_name: selenoid ports: - "4444:4444" volumes: - "/etc/selenoid:/etc/selenoid" - "/opt/selenoid/video:/opt/selenoid/video" - "/opt/selenoid/logs:/opt/selenoid/logs" - "/var/run/docker.sock:/var/run/docker.sock" environment: - OVERRIDE_VIDEO_OUTPUT_DIR=/opt/selenoid/video command: ["-conf", "/etc/selenoid/browsers.json", "-video-output-dir", "/opt/selenoid/video", "-log-output-dir", "/opt/selenoid/logs"]
Бажано не використовувати latest версії образів).
Файл selenoid.service
Тепер створимо в директорії /ets/systemd/system файл selenoid.service файл для запуску й зупинки selenoid:
[Unit] Description=Selenoid Service Requires=docker.service After=docker.service [Service] Restart=always WorkingDirectory=/opt/selenoid # Compose up ExecStart=/sbin/docker-compose -f selenoid-compose.yaml up # Compose down, remove containers and volumes ExecStop=/sbin/docker-compose -f selenoid-compose.yaml down -v [Install] WantedBy=multi-user.target
перевірте розташування docker-compose використавши which і вказавши вірний шлях у файлі.
Запуск
Спочатку запустимо наш selenoid:
# systemctl start selenoid
Перевіряємо його статус:
# systemctl status selenoid
● selenoid.service - Selenoid Service
Loaded: loaded (/etc/systemd/system/selenoid.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2022-05-10 14:39:34 UTC; 2h 45min ago
Process: 30463 ExecStop=/sbin/docker-compose -f selenoid-compose.yaml down -v (code=exited, status=0/SUCCESS)
Main PID: 30547 (docker-compose)
Tasks: 12
Memory: 14.4M
CGroup: /system.slice/selenoid.service
└─30547 /sbin/docker-compose -f selenoid-compose.yaml up
Відкриваємо браузер і вводимо адресу http://YOUR_SERVER_IP_OR_HOSTNAME:8080:
Потрапили в веб переглядач, в якому відображається статистика, запущені сесії та інше. Звідки можна процес виконання тестів. Також з нього можемо мануально запустити сесію з обраним браузером в CAPABILITIES.
Для перевірки версії й доступності selenoid-core переходимо за посиланням http://YOUR_SERVER_IP_OR_HOSTNAME:4444:
додатково для перегляду статусу переходимо http://YOUR_SERVER_IP_OR_HOSTNAME:4444/status який покаже інформацію в форматі json:
Залишається мануально запустити емуляцію браузера для перевірки. Переходимо в CAPABILITIES, обрати необхідний браузер, далі натиснути CREATE SESSION:
після чого створюється сесія, нас перевідправляє до запущеного браузера:
Для того, щоб проводити маніпуляції в браузері потрібно розблокувати можливість керування натиснувши Lock/Unlock Screen:
Посилання
- https://aerokube.com/selenoid/
- https://github.com/aerokube/selenoid
- https://github.com/aerokube/selenoid-ui
- https://hub.docker.com/r/aerokube/selenoid-ui/tags
- https://hub.docker.com/r/aerokube/selenoid/tags