İçeriğe geç
Tüm yazılar

WebSummoner 1.0: Selenoid yeniden hayata çağrıldı

Ghazi Triki tarafından · 7 dk okuma

WebSummoner 1.0 sürüm duyurusu görseli
Bu yazıda

Sürüm Duyurusu

Docker’da yedi güncel tarayıcı, oturum başına bir kapsayıcı, sesli kayıtlar. WebSummoner’ın Aralık 2024’ten beri arşivde olan Selenoid’i nasıl sürdürdüğünü ve neden kendi barındırma altyapımızın merkezinde çalıştığını keşfedin.

Ekibiniz Selenium testleri çalıştırıyorsa Selenoid’le karşılaşmış olmanız kuvvetle muhtemel: her test oturumu için bir Docker kapsayıcısında yepyeni bir tarayıcı başlatan ve ardından onu atan küçük Go programı. Hızlı, hafif ve yıllarca kendi donanımınızda bir tarayıcı ağı (grid) çalıştırmanın en kolay yolu. 17 Aralık 2024’te yazarları depoyu arşivledi. Ne bir duyuru ne de bir veda yazısı: GitHub’ın salt okunur projelere koyduğu gri şerit, o kadar.

Ağustos 2016 Aerokube’de ilk Selenoid commit’i

17 Aralık 2024 Depo arşivlendi, salt okunur

Eylül 2026 WebSummoner 1.0.0: yedi güncel tarayıcı, tek satırlık geçiş

O sabah hiçbir şey bozulmadı ve sorun tam da bu. Arşivlenmiş bir test aracı, sizin kontrol etmediğiniz bir takvimle çürür: yeni tarayıcı sürümleri hiç gelmez, sürücüler uyumsuzlaşır ve bir gün yıllardır yeşil yanan bir test paketi, uygulamanızla hiçbir ilgisi olmayan nedenlerle başarısız olmaya başlar.

Açık kaynak bir depoyla sona ermez

Bir depoyu arşivlemek onun bakımını sona erdirir, hayatını değil. Selenoid, kullanan herkese onu değiştirme ve yeniden dağıtma konusunda kalıcı bir hak tanıyan Apache 2.0 lisansıyla yayımlanmıştır: Bir projenin yazarları başka işlere yöneldiğinde kod erişilebilir kalır ve yeni bir bakımcı onu ileri taşıyabilir. Selenoid’i Aerokube geliştirdi ve sekiz yıl boyunca taşıdı; arşivleme kararı onlarındı ve Selenoid’in doğru yaptığı her şeyin hakkı onlarda kalır. WebSummoner işte bu devamlılıktır. Son Selenoid commit’inden başlar, onu iyi yapan tasarımı korur ve kendi adını, organizasyonunu, imajlarını ve alan adını taşır. RIADVICE’ta Selenoid’i zaten üretimde kullanıyorduk; onu sürdürmek hem bizim için hem de ona bağlı olan herkes için doğru karardı.

WebSummoner 1.0.0 yayında: bir tarayıcı filosunu, oturuma özgü geçici ortamlar olarak Docker kapsayıcılarına çağıran hızlı bir Selenium hub’ı.

Selenoid’in yerine başka bir şey koymak yerine neden fork’ladık

İki nedenle fork’ladık.

  1. Kendi altyapımız: WebSummoner, RIADVICE’ın barındırma altyapısının bel kemiğinin bir parçasıdır. Artık tarayıcı güncellemeleri, sürücü düzeltmeleri ya da güvenlik yamaları almayan bir üretim bağımlılığını arşivde bırakamazdık; onu daha ağır bir çözüme taşımak da iyi bir bakım yapmaktan daha pahalıya mal olurdu.

  2. Topluluk: Dünyanın dört bir yanındaki ekipler Selenoid üzerine yıllar süren test paketleri kurdu ve yavaş bir çürüme yerine bakımı yapılan bir devamı hak ediyorlardı. Selenoid önemli şeyleri doğru yaptı: yaklaşık 10 MB’lık tek bir Go ikili dosyası, Java çalışma ortamı yok, veritabanı yok, yaklaşık bir saniyede açılan bir tarayıcı ve testler arasında hiçbir şeyin sızmaması için oturum başına bir kapsayıcı.

Bunların hepsini koruduk ve geri kalanını güncelledik: 2024’ten beri donmuş olan tarayıcılar, sürücüler, temel imajlar ve araç zinciri. Selenoid, “tamamlanmış yazılım” denebilecek türden bir yazılımdır: En yeni özelliğe ihtiyacı yoktur; güncel tarayıcılara, uyumlu sürücülere ve düzenli düzeltmelere ihtiyacı vardır. Üstlendiğimiz iş de tam olarak budur. Uyumluluk sonradan akla gelen bir şey değil, ilk karardı. Bir Selenoid istemcisinin gönderdiği her şey hâlâ kabul ediliyor ve kalıcı olarak kabul edilecek.

1.0.0’daki yenilikler

Yedi tarayıcı, hepsi güncel

TarayıcıSürüm
Chrome152
Firefox155
Edge152
Opera geri döndü135
Brave yeni1.94
Yandex26.6
Safari (WebKitGTK) yeni2.52.6

Her imaj, yayımlanan imajlar üzerinde yalıtılmış olarak çalıştırılan aynı kapsayıcı test paketinden geçer. Sürücülerin kendisinin üstesinden gelemediği iki durum gizlenmez, atlanan testler olarak belgelenir. Bunlardan üçü başlı başına haber. Brave ve Safari ilk kez yayımlanıyor: Selenoid hiçbir zaman bir Brave imajı sunmadı ve Safari kaynakları hiçbir zaman bir imaj olarak yayımlanmadı. Opera ise ölümden döndü: Son Selenoid imajı Nisan 2024 tarihli ve proje Opera desteğini bıraktığından beri Selenium 4 ile kullanılamıyordu.

Brave kadroya katılıyor

Brave ilk kez yayımlanıyor: Selenoid onu hiç sunmadı ve artık diğer altısının yanında birinci sınıf bir imaj olarak yer alıyor. Brave sürümlerini kendi ölçeğine göre numaralandırır; bu nedenle derleme aracı her sürüme gömülü Chromium sürümünü okur ve onu otomatik olarak uygun sürücüyle eşleştirir. Kullanıcılarınız Brave ile geziniyorsa, onu tam olarak Chrome’u test ettiğiniz gibi test edebilirsiniz: aynı yetenekler (capabilities), aynı canlı ekran, aynı kayıtlar ve aynı şekilde geçen aynı test paketi.

Opera yeniden çalışıyor

Selenium, Opera desteğini 4.3.0 sürümünde bıraktı. Herkesin tekrarladığı geçici çözüm, yani Opera’yı Chrome for Testing chromedriver ile sürmek, oturumları sorunsuz başlatır ama bir sayfa yeni bir pencere açtığında işleyiciyi (renderer) çökertir. Çözüm, hata mesajını doğru okumaktı: OperaDriver’ın sürüm kontrolü bir ret değil, bir uyarıdır. Opera’nın kendi sürücüsü onu doğru şekilde sürer ve hub, sizin adınıza ondan modern protokolü ister.

Safari birinci sınıf bir hedef

Safari de ilk kez yayımlanıyor. İmaj, Safari’nin kullandığı motorun ta kendisi olan WebKitGTK’dır ve kaynaktan derlenmiştir: Selenoid derleme dosyalarını barındırıyordu ama hiçbir zaman bir imaj yayımlamadı; dolayısıyla bu, çekebileceğiniz ilk imaj. Onunla hiç çalışmamış iki şey, dosya yükleme ve proxy yeteneği, artık doğrudan hub tarafından ele alınıyor; böylece düzeltme eski ya da yeni her imaj için geçerli. Kalan iki tuhaflığın her biri testlerinizde tek bir satır gerektiriyor ve belgeler hangisi olduğunu söylüyor.

Her tarayıcıda sesli kayıtlar

Oturum kayıtları artık yedi tarayıcının tamamında sesi güvenilir biçimde yakalıyor; böylece başarısız bir medya ya da WebRTC testi artık sessiz bir video değil. Ses istemiyorsanız tek bir yetenek onu kapatır.

Operasyon için tasarlandı

Bir Prometheus /metrics uç noktası, HEAD isteklerini yanıtlayan sağlık yoklamaları, kuyruk dolduğunda düzgün bir 429 yanıtı, her imajda çalışan dosya yükleme, yazılım malzeme listesiyle (SBOM) birlikte gelen imzalı sürüm imajları ve Docker soketinin ne anlama geldiğini açıkça belirten bir güvenlik politikası.

Yeniden inşa edilen arayüz

Tarayıcı ekranı, günlükler ve kuyrukla birlikte ağınızın canlı görünümünü sunan WebSummoner UI sıfırdan yeniden inşa edildi: özenle tasarlanmış koyu bir tema, resmi tarayıcı logoları, canlı oturum ve kuyruk istatistikleri ve dürüst bağlantı raporlaması. Mevcut komut satırları ve Compose dosyaları hiçbir değişiklik gerektirmiyor.

Modern bir araç zinciri

Go 1.27, test paketi için Java 25, arayüz için React 19, tarayıcı imajları için Ubuntu 26.04, CI’da bağımlılık güncellemeleri ve güvenlik açığı kontrolleri ve aranabilir bir dokümantasyon sitesi. Projenin herhangi bir bölümünü derlemek için Docker’dan başka hiçbir şeye gerek yok. Çok hub’lı kümeler için yük dengeleyici ve tek komutluk kurulum aracı da hub ile birlikte güncellendi.

Bugün bir seçim yapıyorsanız

Selenoid’in yaptığı işin kusursuz bir ikamesi yok, ama dürüstçe söylenebilecek uygun seçenekler var.

Selenium Grid Referans uygulama. Dağıtık modunu istiyor ve Java’nın ayak izini dert etmiyorsanız doğru seçim.

Moon Kubernetes üzerinde çalışıyorsanız ve dört paralel oturumun ötesinde ticari bir lisansı kabul ediyorsanız tercih edilecek seçenek.

WebSummoner Küçük, hızlı ve her şeyi içinde barındıran bir hub istediğiniz Docker ana makineleri ve sanal makineler için.

Dokümantasyon; Selenoid, Moon, Selenium Grid, Selenide, Playwright ve Puppeteer ile, bunları ne zaman tercih etmeniz gerektiği de dahil olmak üzere kaynak koduna bakılarak doğrulanmış bir karşılaştırma sunar.

Selenoid’den geçiş

İstemcilerinizi yeni hub’a yönlendirin. selenoid:options, X-Selenoid-* başlıkları, /aerokube/... yolu, cm selenoid start ve arayüzün --selenoid-uri bayrağı hâlâ çalışıyor ve çalışmaya devam edecek.

Tek değişiklik: Docker imajı içinde yapılandırma /etc/selenoid dizininden /etc/websummoner dizinine taşındı. Bu bağlamayı güncellediğinizde işiniz biter.

Taahhütlerimiz

  • Kalıcı uyumluluk. Selenoid yetenek adları, başlıkları, yolları ve komutları bir geri sayımla kullanımdan kaldırılmaz, kalıcı olarak kabul edilir. Bir sprint’e mal olan bir geçişi kimse yapmaz.
  • Güncel tarayıcılar. İmajlar her üreticinin kararlı sürümlerini, her biri kendisiyle uyumlu sürücüyle birlikte izler ve hiçbir imaj test paketinden geçmeden etiketlenmez.
  • Güncel tutulan güvenlik. Bağımlılıklar haftalık olarak güncellenir, her derlemede güvenlik açığı kontrolü çalışır; hub imajı imzalanır ve bir yazılım malzeme listesiyle birlikte gelir.
  • Önce üretim. WebSummoner’ı kendimiz kullanıyoruz. Yayımlanan şey, bizim bağımlı olduğumuz şeydir.
  • Neyin çalışmadığını söyleyen dokümantasyon. Sınırlamalar da dahil olmak üzere eksiksiz notlar duyuruda yer alıyor.

WebSummoner, en büyük grid’lerle kazandığı alanda rekabet etmeyi hedefliyor: hız, sadelik ve işletme maliyeti. Her değişiklik bu ölçüte göre değerlendirilir.

Şimdi kullanıma sunuldu

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

Testlerinizi http://localhost:4444/wd/hub adresine yönlendirin. Eksiksiz sürüm notları, geçiş kılavuzu ve tartışma bir tık uzağınızda:

📣 1.0.0 duyurusu Eksiksiz sürüm notları ve soru sorabileceğiniz yer 📖 Dokümantasyon Kılavuzlar, başvuru belgeleri ve geçiş kılavuzu 💻 Kaynak kodu Apache-2.0, GitHub’da

Selenoid kullandıysanız ve geçişte bir şey beklendiği gibi davranmıyorsa, bu bizim için bir destek sorusu değil, bir hatadır. Selenoid üzerine bir şey geliştirip bakımını yaptıysanız bize haber verin, çalışmaya devam etmesini sağlayalım.

Bir tarayıcı filosunu Docker kapsayıcılarına çağırın.

Oturuma özgü, geçici ortamlar sunan hızlı bir Selenium hub’ı.

WebSummoner’ı kurumunuzda çalıştırmak için yardıma mı ihtiyacınız var?

Bize ulaşın

WebSummoner, RIADVICE tarafından Apache-2.0 lisansıyla geliştirilmekte ve sürdürülmektedir. Aerokube ve Ivan Krutov’un geliştirdiği Selenoid ile Kirill Merkushev’in özgün arayüzü üzerine kuruludur.

Bu yazıyı paylaşın