13. Selenoid - qa-guru/knowledge-base GitHub Wiki

Введение в Docker

Если описать максимально просто, Docker — это программа, которая позволяет запускать контейнеры. Контейнер — это что-то вроде виртуальной машины, но более лёгкой и быстрой.

Docker устанавливается на хост-машину и уже тогда может запускать контейнеры, которых может быть несколько и они могут работать одновременно. Внутри контейнеров могут запускаться разные программы и на разных языках. Работать они могут одновременно. У каждого контейнера есть жизненный цикл.

Почему это удобно:

  • У каждого запущенного контейнера своя файловая система и доступ к файлам имеет только один контейнер;
  • Все необходимые зависимости уже собрано в контейнер и их не надо устанавливать отдельно;
  • После удаления контейнера удаляется всё содержимое этих контейнеров и хост-машина остаётся чистой.

Откуда берутся Docker-контейнеры Контейнеры, берутся из Docker-образов, которые содержат в себе всё необходимое. Docker-образ это что-то вроде шаблона, на основе которого создаются контейнеры. С помощью команды docker run можно развернуть контейнер. Образы можно найти на официальной странице. С помощью команды docker pull <name> можно локально скачать образ.

Как создаются образы Образы, создаются из Dockerfile. Dockerfile это инструкции для создания образа. В нём можно указать, какие программы установить, какие файлы скопировать и т.д. Пример Dockerfile для установки Nginx:

FROM ubuntu

RUN apt-get update && apt-get -y install nginx

CMD ["nginx", "-g", "daemon off;"]

Для создания из Dockerfile Docker-образ используют команду docker build, а уже после этого образ можно развернуть в контейнер с помощью docker run.

Изоляции Ещё раз важно отметить, что у каждого контейнера своя файловая система, которая не пересекается с общей. Также у каждого контейнера свой сетевой интерфейс. При этом есть возможность связать локальные файловую систему и сетевой интерфейс с общими.

Краткий список команд

Важно! Все команды выполняются в терминале. Если вы используете Windows, то вам нужно использовать терминал Git Bash.

Создать образ:

docker build -t <имя_образа> <путь_до_папки_с_Dockerfile>

Запустить контейнер из образа:

docker run -d --name <имя_контейнера> -p <порт_на_хосте>:<порт_в_контейнере> -v <папка_на_хосте>:<папка_в_контейнере> <имя_образа>

Список всех контейнеров:

docker ps -a

Зайти внутрь контейнера:

docker exec -it <имя_контейнера> /bin/sh

Остановить и удалить контейнер:

docker rm -f <имя_контейнера>

Docker для разных операционных систем можно найти и скачать по ссылке.

Selenoid

Selenoid — это браузеры в контейнерах Docker. Он позволяет запускать тесты в разных браузерах и на разных версиях. Selenoid умеет запускать тесты в параллельном режиме, что позволяет ускорить процесс тестирования.

Установка Selenoid

Важно: на процессорах Apple M1/M2 Selenoid не будет работать, так как все браузеры собраны под архитектуру x86

Подробную текстовую инструкцию по запуску можно найти по ссылке.

  1. Необходимо скачать бинарный файл cm с GitHub: Для этого нужно перейти на страницу релизов GitHub и скачать последнюю версию утилиты под свою операционную систему.

  1. После скачивания переименовываем файл на cm для удобства запуска.

  1. Открываем терминал и переходим в папку с файлом cm.

  2. Вводим команду в терминале: Если вы используете Linux and Mac OS то команда ./cm selenoid start --vnc Если вы используете Windows то команда ./cm.exe selenoid start --vnc

Установка может занять некоторое время. Так как при установке Selenoid скачиваются Docker-образы последних браузеров. Если у вас не отображается установка браузеров, то нужно ввести команду .\cm selenoid cleanup и потом повторить команду установки selenoid. Если всё установлено успешно будут отображены сообщения: Selenoid is already configured Starting Selenoid... Successfully started Selenoid

  1. После этого можно открыть в браузере страницу http://localhost:4444/ или http://127.0.0.1:4444/ и увидеть интерфейс Selenoid. Если вы запускаете Selenoid на удаленной машине, то вместо localhost или http://127.0.0.1 нужно указать IP-адрес машины.

  1. Также можно проверить какой докер образ сейчас запущен с помощью команды docker ps.

  1. Для того чтобы в браузере отображался VNC-клиент(ui часть), нужно запустить команду ./cm selenoid-ui start.

Если всё установлено успешно, то в терминале будет отображен текст:

Starting Selenoid UI... Successfully started Selenoid UI

Далее можно открыть в браузере страницу http://localhost:8080/ или http://127.0.0.1:8080/ и увидеть интерфейс Selenoid UI. И уже можно полноценно работать с Selenoid, запускать тесты, открывать браузеры вручную и т.д.

Запускаем тесты на Selenoid

После запуска Selenoid можно запускать тесты на нем. Для этого нужно изменить код в фикстуре и в аттачах. Пример для фикстуры:

driver = webdriver.Remote(
        command_executor="http://127.0.0.1:8080/wd/hub",
        options=options)

Пример для аттача:

video_url = f'http://127.0.0.1:8080/video/{browser.driver.session_id}.mp4'

После запуска теста запустится новая сессия в Selenoid, в которой выполнится тест. Все действия будут записаны в видеофайле, который можно будет посмотреть в интерфейсе Selenoid UI или в аллюр отчете.

Добавляем браузеры в Selenoid

Для добавления браузеров в Selenoid необходимо внести изменения в файл browsers.json. Этот файл находится в папке ~/.aerokube/selenoid/ или в корневой папке вашего пользователя.

В файле browsers.json можно добавить новые браузеры и версии браузеров. Для этого нужно открыть файл в текстовом редакторе и через терминал открыть редактор nano browsers.json. или vim browsers.json.

К примеру нам нужно добавить браузер Safari. Для этого нужно добавить следующий код в файл browsers.json:

{   
   "safari": {
        "default": "15.0",
        "versions": {
            "15.0": {
                "image": "browsers/safari:15.0",
                "port": "4444",
                "path": "/"
            }
        }
    },
"тут ниже идет другой код по умолчанию"

Сохранить файл после добавления нового браузера.

После этого нужно скачать образ браузера. Для этого переходим на страницу docker hub и ищем нужный образ. В строке поиска указываем название браузера и версию. Например, browsers/safari и в строке с версией нажимаем на кнопку Copy.

Далее в терминале вводим скопированную команду docker pull browsers/safari:15.0 и ждем пока образ скачается.

После этого можно перезапустить Selenoid командой docker restart selenoid.

После добавления нового браузера в Selenoid нужно проверить отображается ли он в интерфейсе Selenoid UI.

А также необходимо проверить правильно ли добавлен браузер в Selenoid, для этого нужно запустить в ручном режиме добавленный браузер. Если всё работает, и запустился браузер, то значит всё сделано правильно. Если нет, то нужно проверить правильность добавления браузера в файл browsers.json.

После запуска браузера создается докер-контейнер с браузером, после закрытия сессии контейнер удаляется.

Работа в ручном режиме с открытым браузером в Selenoid

Для того чтобы открыть браузер в ручном режиме нужно в интерфейсе Selenoid UI необходимо перейти на вкладку CAPABILITIES. Далее выбрать из выпадающего списка любой браузер и версию и нажать на кнопку Create session.

После того как нажали на кнопку, откроется новая вкладка с браузером, который запущен в Selenoid.

Увеличения размера браузера

Чтобы увеличить размер браузера, нужно нажать на зеленую кнопку в левом верхнем углу браузера.

Управление окном браузера

Чтобы можно было управлять браузером, нужно нажать на синюю кнопку по средине в левом верхнем углу браузера

Закрытие окна браузера(визуального отображения)

Чтобы закрыть окно браузера, нужно нажать на красную кнопку в левом верхнем углу браузера.(данная кнопка закрывает отображение браузера в Selenoid UI, но сам браузер остается запущенным)

Вставка текста в браузер

Чтобы что-то вставить в браузер, нужно нажать на иконку со стрелкой в левом правом углу браузера.

Копирование текста из браузера

Чтобы скопировать текст из браузера, нужно нажать на иконку с копированием в левом правом углу браузера.

Закрытие браузера(полное закрытие сессии)

Чтобы закрыть браузер, необходимо нажать на красную кнопку в левом верхнем углу браузера(описано в пункте Закрытие окна браузера(визуального отображения)). И далее в строке с сессий браузеров нажать на иконку корзины.

GGR (Grid Router)

GGR (Grid Router) — это прокси-сервер(балансировщик). Он позволяет управлять сессиями, перенаправлять запросы на Selenoid и многое другое. Больше информации о GGR можно найти на официальном сайте.

Docker Desktop

Установка Docker Desktop

Для начала нужно установить Docker Desktop.

  1. Для этого нужно перейти на сайт Docker и скачать установщик для вашей операционной системы.

  1. Далее открыть установщик и следовать инструкциям.

  1. Нажать кнопку Skip Survey.

  1. После установки Docker Desktop запустить его и дождаться пока он запустится. Запущенный Docker Desktop будет отображен в следующем виде:

Больше информации о Docker Desktop можно найти на официальном сайте.

Работа с Selenoid через Docker Desktop

В Docker Desktop можно запускать и останавливать контейнеры, а также управлять ими. На вкладке Containers можно увидеть все запущенные контейнеры и их статус, порты и другую информацию.

На вкладке Images можно увидеть все образы, которые установлены на вашем компьютере. Которые можно запустить в контейнере. Или при необходимости удалить.

⚠️ **GitHub.com Fallback** ⚠️