Перейти до вмісту
Усі статті

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: ті самі можливості, той самий живий екран, ті самі записи й той самий набір тестів, пройдений так само.

Opera знову працює

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

Safari як повноцінна ціль

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

Записи зі звуком у кожному браузері

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

Створено для експлуатації

Точка доступу 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. Оновіть це монтування, і все готово.

Наші зобов’язання

  • Сумісність назавжди. Назви можливостей, заголовки, шляхи й команди 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.

Поділитися статтею