selenoid – встановлення з використанням docker-compose

Опис

selenoid – це інструмент який дозволяє керувати браузерами за допомогою спеціальних драйверів. Вміє запускати кожен з них ізольовано в Docker Contained, написаний на Go. Даний інструмент використовують QA для UI,WEB тестування.

Selenoid Animation

Особливості:

  • швидке встановлення;
  • зручна робота з браузерами;
  • легке масштабування;
  • зручний і зрозумілий 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:


Посилання

Click to rate this post!
[Total: 3 Average: 5]