Перейти к содержимому
Все статьи

WebSummoner 1.0: Selenoid возвращается к жизни

автор: Ghazi Triki · 8 мин чтения

Выпуск WebSummoner
В этой статье

Объявление о выпуске

Семь актуальных браузеров в Docker, один контейнер на сессию, записи со звуком. Узнайте, как WebSummoner продолжает Selenoid, архивированный в декабре 2024 года, и почему он работает в самом сердце нашей собственной хостинговой инфраструктуры.

Если ваша команда запускает тесты Selenium, вы, скорее всего, знакомы с Selenoid: небольшой программой на Go, которая для каждой тестовой сессии запускает новый браузер в контейнере Docker, а затем удаляет его. Быстрый, лёгкий, он много лет оставался самым простым способом развернуть браузерный грид на собственном оборудовании. 17 декабря 2024 года его авторы архивировали репозиторий. Ни объявления, ни прощального поста: только серая плашка, которую GitHub показывает на проектах в режиме только для чтения, и всё.

Август 2016 Первый коммит Selenoid в Aerokube

17 декабря 2024 Репозиторий архивирован, только для чтения

Сентябрь 2026 WebSummoner 1.0.0: семь актуальных браузеров, миграция в одну строку

В то утро ничего не сломалось, и именно в этом проблема. Архивированный инструмент тестирования устаревает по графику, которым вы не управляете: новые версии браузеров не выходят, драйверы расходятся с ними, и однажды набор тестов, годами остававшийся зелёным, начинает падать по причинам, не имеющим никакого отношения к вашему приложению.

Открытый исходный код не заканчивается вместе с репозиторием

Архивирование репозитория прекращает его сопровождение, но не его жизнь. Selenoid выпущен под лицензией Apache 2.0, которая даёт каждому пользователю бессрочное право изменять и распространять его: когда авторы проекта переходят к другим делам, код остаётся доступным, и новый сопровождающий может продолжить работу. Aerokube создала Selenoid и развивала его восемь лет; архивировать его было их решением, и заслуга за всё, что в Selenoid сделано правильно, остаётся за ними. WebSummoner и есть это продолжение. Он начинается с последнего коммита Selenoid, сохраняет архитектуру, которая сделала его хорошим, и выходит под собственным названием, в собственной организации, с собственными образами и доменом. Мы уже использовали Selenoid в продуктивной среде в RIADVICE, и продолжить его было разумным решением как для нас, так и для всех, кто от него зависит.

Вышел WebSummoner 1.0.0: быстрый хаб Selenium, который вызывает целый парк браузеров в контейнеры Docker в виде эфемерных сред, существующих в пределах одной сессии.

Почему мы сделали форк Selenoid, а не заменили его

У форка было две причины.

  1. Наша собственная инфраструктура WebSummoner входит в число опор хостинговой инфраструктуры RIADVICE. Зависимость в продуктивной среде, которая больше не получает обновлений браузеров, исправлений драйверов и патчей безопасности, нельзя было оставлять в архиве, а переход на что-то более тяжёлое обошёлся бы дороже, чем качественное сопровождение.

  2. Сообщество Команды по всему миру годами строили наборы тестов на Selenoid, и они заслуживали сопровождаемого продолжения, а не медленного угасания. Selenoid правильно решил главное: единственный бинарный файл Go размером около 10 МБ, никакой среды выполнения Java, никакой базы данных, браузер, который запускается примерно за секунду, и один контейнер на сессию, чтобы ничто не просачивалось между тестами.

Мы сохранили всё это и обновили остальное: браузеры, драйверы, базовые образы и инструментарий, замороженные с 2024 года. Selenoid можно назвать завершённым программным обеспечением: ему не нужны новейшие функции, ему нужны актуальные браузеры, соответствующие драйверы и регулярные исправления, и именно за эту работу мы взялись. Совместимость была первым решением, а не запоздалой мыслью. Всё, что отправляет клиент Selenoid, по-прежнему принимается, и так будет всегда.

Что нового в 1.0.0

Семь браузеров, все актуальные

БраузерВерсия
Chrome152
Firefox155
Edge152
Opera (снова с нами)135
Brave (новинка)1.94
Yandex26.6
Safari (WebKitGTK) (новинка)2.52.6

Каждый образ проходит один и тот же набор контейнерных тестов, запускаемый изолированно на опубликованных образах. Два случая, с которыми не справляются сами драйверы, задокументированы как пропуски, а не скрыты. Три из этих образов сами по себе новость. Brave и Safari публикуются впервые: Selenoid никогда не выпускал образ Brave, а его исходники Safari так и не были выпущены в виде образа. Opera вернулась к жизни: её последний образ Selenoid датирован апрелем 2024 года, и с Selenium 4 она была непригодна с тех пор, как проект отказался от поддержки Opera.

Brave пополняет линейку

Brave публикуется впервые: Selenoid его никогда не выпускал, а теперь он стоит в одном ряду с остальными шестью как полноценный образ. Brave нумерует свои выпуски по собственной шкале, поэтому инструмент сборки считывает версию Chromium, встроенную в каждый выпуск, и автоматически подбирает к ней соответствующий драйвер. Если ваши пользователи работают в Brave, вы можете тестировать в нём точно так же, как в Chrome: те же capabilities, тот же живой экран, те же записи и тот же набор тестов, пройденный тем же способом.

Opera снова работает

Selenium отказался от поддержки Opera в версии 4.3.0, а обходной путь, который все повторяют, управление Opera через chromedriver из Chrome for Testing, нормально запускает сессии, но затем роняет процесс отрисовки всякий раз, когда страница открывает новое окно. Решение нашлось при внимательном чтении сообщения об ошибке: проверка версии в OperaDriver выдаёт предупреждение, а не отказ. Собственный драйвер Opera управляет ею корректно, а хаб от вашего имени запрашивает у него современный протокол.

Safari как полноценная цель

Safari тоже публикуется впервые. Образ основан на WebKitGTK, том же движке, что используется в Safari, и собран из исходного кода: в Selenoid были файлы сборки, но образ так и не был выпущен, так что это первый образ, который можно загрузить. Две функции, которые с ним никогда не работали, загрузка файлов и capability прокси, теперь обрабатываются самим хабом, поэтому исправление действует для любого образа, старого или нового. Каждая из двух оставшихся особенностей требует одной строки в ваших тестах, и в документации указано, какой именно.

Записи со звуком во всех браузерах

Записи сессий теперь надёжно захватывают звук во всех семи браузерах, так что упавший тест медиа или WebRTC больше не превращается в немое видео. Если звук не нужен, его отключает одна capability.

Создан для эксплуатации

Конечная точка Prometheus /metrics, проверки работоспособности, отвечающие на запросы HEAD, корректный код 429 при заполненной очереди, загрузка файлов, работающая в каждом образе, подписанные образы выпусков с перечнем компонентов программного обеспечения (SBOM) и политика безопасности, которая прямо говорит, что означает доступ к сокету Docker.

Переработанный интерфейс

WebSummoner UI, живое представление вашего грида с экраном браузера, журналами и очередью, полностью переработан: продуманная тёмная тема, официальные логотипы браузеров, живая статистика сессий и очереди и честное отображение состояния соединения. Существующие командные строки и файлы Compose менять не нужно.

Современный инструментарий

Go 1.27, Java 25 для набора тестов, React 19 для интерфейса, Ubuntu 26.04 для образов браузеров, обновления зависимостей и проверки уязвимостей в CI, а также сайт документации с поиском. Для сборки любой части проекта нужен только Docker. Балансировщик нагрузки для кластеров из нескольких хабов и установщик одной командой развивались вместе с хабом.

Если вы выбираете сегодня

Идеальной замены тому, что делал Selenoid, нет, но есть честные варианты.

Selenium Grid Эталонная реализация. Правильный выбор, если вам нужен его распределённый режим и вас не смущает объём Java.

Moon Выбор для тех, кто работает на Kubernetes и согласен на коммерческую лицензию свыше четырёх параллельных сессий.

WebSummoner Для хостов Docker и виртуальных машин, где нужен небольшой быстрый хаб, в котором всё уже есть.

В документации ведётся сравнение, проверенное по исходному коду, с Selenoid, Moon, Selenium Grid, Selenide, Playwright и Puppeteer, включая случаи, когда стоит выбрать их.

Миграция с Selenoid

Направьте своих клиентов на новый хаб. selenoid:options, заголовки X-Selenoid-*, путь /aerokube/..., cm selenoid start и флаг интерфейса --selenoid-uri по-прежнему работают и будут работать и дальше.

Единственное изменение: внутри образа Docker конфигурация переехала из /etc/selenoid в /etc/websummoner. Обновите это подключение, и всё готово.

Наши обязательства

  • Совместимость навсегда. Названия capabilities, заголовки, пути и команды Selenoid принимаются окончательно, а не объявляются устаревшими с отсчётом времени. Миграцию, которая стоит целого спринта, никто не проводит.
  • Актуальные браузеры. Образы следуют за стабильными выпусками каждого производителя, каждый с соответствующим драйвером, и ни один образ не получает тег, пока не пройдёт набор тестов.
  • Поддержание безопасности. Зависимости обновляются еженедельно, каждая сборка проходит проверку уязвимостей, а образ хаба подписан и поставляется с перечнем компонентов программного обеспечения.
  • Продуктивная среда прежде всего. Мы сами используем WebSummoner. Мы выпускаем то, от чего зависим сами.
  • Документация, которая говорит, что не работает. Полные примечания, включая ограничения, приведены в объявлении.

WebSummoner намерен конкурировать с крупнейшими гридами там, где он сильнее: в скорости, простоте и стоимости эксплуатации. Каждое изменение оценивается по этой мерке.

Уже доступно

Shell
websummoner \
    -p 4444:4444 \
    -v $PWD/browsers.json:/etc/websummoner/browsers.json:ro \
    -v /var/run/docker.sock:/var/run/docker.sock \
    websummoner/websummoner:latest

Направьте свои тесты на http://localhost:4444/wd/hub. Полные примечания к выпуску, руководство по миграции и обсуждение доступны в один клик:

📣 Объявление о 1.0.0 Полные примечания к выпуску и место для вопросов 📖 Документация Руководства, справочник и руководство по миграции 💻 Исходный код Apache-2.0, на GitHub

Если вы использовали Selenoid и что-то при миграции ведёт себя не так, для нас это ошибка, а не вопрос для поддержки. Если вы сопровождали что-то поверх Selenoid, сообщите нам, и мы позаботимся о том, чтобы это продолжало работать.

Вызовите парк браузеров в контейнеры Docker.

Быстрый хаб Selenium с эфемерными средами в пределах сессии.

Нужна помощь с запуском WebSummoner в вашей организации?

Связаться с нами

WebSummoner разрабатывается и сопровождается RIADVICE под лицензией Apache-2.0. Он основан на Selenoid от Aerokube и Ivan Krutov, а также на оригинальном интерфейсе Kirill Merkushev.

Поделиться статьёй