Langkau ke kandungan
Semua artikel

WebSummoner 1.0: Selenoid dihidupkan semula

oleh Ghazi Triki · 8 minit bacaan

Keluaran WebSummoner 1.0
Dalam artikel ini

Pengumuman Keluaran

Tujuh pelayar terkini dalam Docker, satu kontena bagi setiap sesi, rakaman bersama bunyi. Ketahui bagaimana WebSummoner meneruskan Selenoid, yang diarkibkan sejak Disember 2024, dan mengapa ia berjalan di teras infrastruktur pengehosan kami sendiri.

Jika pasukan anda menjalankan ujian Selenium, besar kemungkinan anda pernah menggunakan Selenoid: program Go kecil yang memulakan pelayar baharu dalam kontena Docker bagi setiap sesi ujian dan membuangnya selepas itu. Pantas, ringan, dan selama bertahun-tahun merupakan cara paling mudah untuk menjalankan grid pelayar pada perkakasan anda sendiri. Pada 17 Disember 2024, pengarangnya mengarkibkan repositori tersebut. Tiada pengumuman, tiada catatan perpisahan: hanya sepanduk kelabu yang diletakkan oleh GitHub pada projek baca sahaja, dan itulah penamatnya.

Ogos 2016 Commit Selenoid pertama di Aerokube

17 Disember 2024 Repositori diarkibkan, baca sahaja

September 2026 WebSummoner 1.0.0: tujuh pelayar terkini, migrasi satu baris

Tiada apa-apa yang rosak pada pagi itu, dan itulah sebenarnya masalahnya. Alat ujian yang diarkibkan mereput mengikut jadual yang tidak anda kawal: versi pelayar baharu tidak pernah tiba, pemacu semakin ketinggalan, dan suatu hari suite ujian yang telah lulus selama bertahun-tahun mula gagal atas sebab yang tiada kaitan dengan aplikasi anda.

Sumber terbuka tidak berakhir bersama repositori

Mengarkibkan repositori menamatkan penyelenggaraannya, bukan hayatnya. Selenoid dikeluarkan di bawah lesen Apache 2.0, yang memberikan setiap penggunanya hak kekal untuk mengubah suai dan mengedarkannya semula: apabila pengarang sesebuah projek beralih arah, kodnya kekal tersedia dan penyelenggara baharu boleh meneruskannya. Aerokube membina Selenoid dan menyelenggaranya selama lapan tahun; keputusan untuk mengarkibkannya ialah hak mereka, dan penghargaan atas segala yang dilakukan dengan betul oleh Selenoid kekal milik mereka. WebSummoner ialah kesinambungan itu. Ia bermula daripada commit terakhir Selenoid, mengekalkan reka bentuk yang menjadikannya baik, dan membawa nama, organisasi, imej serta domainnya sendiri. Kami sudah pun menjalankan Selenoid dalam produksi di RIADVICE, dan meneruskannya ialah keputusan yang wajar, untuk kami dan untuk semua orang lain yang bergantung padanya.

WebSummoner 1.0.0 kini dikeluarkan: hab Selenium pantas yang memanggil sekumpulan pelayar ke dalam kontena Docker sebagai persekitaran sementara yang terhad kepada sesi.

Mengapa kami melakukan fork Selenoid dan bukannya menggantikannya

Kami melakukan fork atas dua sebab.

  1. Infrastruktur kami sendiri WebSummoner ialah sebahagian daripada tulang belakang infrastruktur pengehosan RIADVICE. Kebergantungan produksi yang tidak lagi menerima kemas kini pelayar, pembaikan pemacu atau tampalan keselamatan bukanlah sesuatu yang boleh kami biarkan diarkibkan, dan memindahkannya kepada sesuatu yang lebih berat akan menelan kos yang lebih tinggi daripada menyelenggaranya dengan baik.

  2. Komuniti Pasukan di seluruh dunia telah membina suite ujian bertahun-tahun di atas Selenoid, dan mereka layak mendapat kesinambungan yang diselenggara, bukan kemerosotan yang perlahan. Selenoid melakukan perkara penting dengan betul: satu binari Go kira-kira 10 MB, tiada masa jalan Java, tiada pangkalan data, pelayar yang bermula dalam kira-kira satu saat, dan satu kontena bagi setiap sesi supaya tiada apa-apa yang bocor antara ujian.

Kami mengekalkan semua itu dan mengemas kini yang selebihnya: pelayar, pemacu, imej asas dan rantaian alat, yang kesemuanya terbeku sejak 2024. Selenoid ialah apa yang boleh dipanggil perisian yang sudah lengkap: ia tidak memerlukan ciri terbaharu, ia memerlukan pelayar terkini, pemacu yang sepadan dan pembaikan yang berterusan, dan itulah kerja yang kami komited untuk lakukan. Keserasian ialah keputusan pertama, bukan perkara yang difikirkan kemudian. Segala yang dihantar oleh klien Selenoid masih diterima, secara kekal.

Apa yang baharu dalam 1.0.0

Tujuh pelayar, kesemuanya terkini

PelayarVersi
Chrome152
Firefox155
Edge152
Opera kembali135
Brave baharu1.94
Yandex26.6
Safari (WebKitGTK) baharu2.52.6

Setiap imej melepasi suite ujian kontena yang sama, dijalankan secara terasing terhadap imej yang diterbitkan. Dua kes yang tidak dapat dikendalikan oleh pemacu itu sendiri didokumentasikan sebagai langkauan, bukan disembunyikan. Tiga daripadanya merupakan berita tersendiri. Brave dan Safari diterbitkan buat kali pertama: Selenoid tidak pernah menghantar imej Brave, dan sumber Safarinya tidak pernah dikeluarkan sebagai imej. Opera kembali hidup: imej Selenoid terakhirnya bertarikh April 2024, dan ia tidak boleh digunakan dengan Selenium 4 sejak projek itu menggugurkan sokongan Opera.

Brave menyertai barisan

Brave diterbitkan buat kali pertama: Selenoid tidak pernah menghantarnya, dan kini ia berdiri bersama enam yang lain sebagai imej kelas pertama. Brave menomborkan keluarannya mengikut skalanya sendiri, jadi alat binaan membaca versi Chromium yang terbenam dalam setiap keluaran dan memadankannya dengan pemacu yang sepadan secara automatik. Jika pengguna anda melayari web dengan Brave, anda boleh mengujinya sama seperti anda menguji Chrome: keupayaan yang sama, skrin langsung yang sama, rakaman yang sama, dan suite yang sama dilepasi dengan cara yang sama.

Opera berfungsi semula

Selenium menggugurkan sokongan Opera dalam versi 4.3.0, dan penyelesaian sementara yang diulang oleh semua orang, iaitu memandu Opera dengan chromedriver Chrome-for-Testing, memulakan sesi dengan baik tetapi kemudian merosakkan pemapar setiap kali halaman membuka tetingkap. Penyelesaiannya ialah membaca mesej ralat dengan betul: semakan versi OperaDriver ialah amaran, bukan penolakan. Pemacu Opera sendiri memandunya dengan betul, dan hab meminta protokol moden daripadanya bagi pihak anda.

Safari ialah sasaran kelas pertama

Safari juga diterbitkan buat kali pertama. Imejnya ialah WebKitGTK, enjin yang sama yang digunakan oleh Safari, dibina daripada kod sumber: Selenoid menyimpan fail binaannya tetapi tidak pernah mengeluarkan imej, jadi inilah imej pertama yang boleh anda tarik. Dua perkara yang tidak pernah berfungsi dengannya, iaitu muat naik fail dan keupayaan proksi, kini dikendalikan oleh hab itu sendiri, jadi pembaikan itu terpakai kepada mana-mana imej, lama atau baharu. Dua keanehan yang tinggal masing-masing memerlukan satu baris dalam ujian anda, dan dokumentasi menyatakan baris yang mana.

Rakaman bersama bunyi, pada setiap pelayar

Rakaman sesi kini merakam audio dengan boleh diharap pada kesemua tujuh pelayar, jadi ujian media atau WebRTC yang gagal tidak lagi menjadi video senyap. Jika anda tidak mahukan bunyi, satu keupayaan boleh mematikannya.

Dibina untuk operasi

Titik akhir Prometheus /metrics, siasatan kesihatan yang menjawab permintaan HEAD, respons 429 yang betul apabila baris gilir penuh, muat naik fail yang berfungsi pada setiap imej, imej keluaran bertandatangan dengan senarai bahan perisian (SBOM), dan dasar keselamatan yang menyatakan dengan jelas maksud soket Docker.

Antara muka pengguna yang dibina semula

WebSummoner UI, paparan langsung grid anda bersama skrin pelayar, log dan baris gilir, telah dibina semula sepenuhnya: tema gelap yang direka dengan teliti, logo pelayar rasmi, statistik sesi dan baris gilir secara langsung, serta pelaporan sambungan yang jujur. Baris arahan dan fail Compose sedia ada tidak memerlukan sebarang perubahan.

Rantaian alat moden

Go 1.27, Java 25 untuk suite ujian, React 19 untuk antara muka pengguna, Ubuntu 26.04 untuk imej pelayar, kemas kini kebergantungan dan semakan kerentanan dalam CI, serta laman dokumentasi yang boleh dicari. Membina mana-mana bahagian projek ini hanya memerlukan Docker. Pengimbang beban untuk kluster berbilang hab dan pemasang satu arahan turut dikemas kini bersama hab.

Jika anda membuat pilihan hari ini

Tiada pengganti sempurna bagi apa yang dilakukan oleh Selenoid, tetapi ada pilihan yang sesuai secara jujur.

Selenium Grid Pelaksanaan rujukan. Pilihan yang tepat jika anda mahukan mod teragihnya dan tidak kisah dengan jejak Java.

Moon Pilihan jika anda berjalan pada Kubernetes dan menerima lesen komersial melebihi empat sesi selari.

WebSummoner Untuk hos Docker dan mesin maya, apabila hab yang kecil, pantas dan lengkap ialah apa yang anda mahukan.

Dokumentasi menyimpan perbandingan yang disemak berdasarkan kod sumber dengan Selenoid, Moon, Selenium Grid, Selenide, Playwright dan Puppeteer, termasuk bila patut memilih alat tersebut.

Migrasi daripada Selenoid

Arahkan klien anda ke hab baharu. selenoid:options, pengepala X-Selenoid-*, laluan /aerokube/..., cm selenoid start dan bendera --selenoid-uri dalam antara muka pengguna masih berfungsi, dan akan terus berfungsi.

Satu-satunya perubahan: di dalam imej Docker, konfigurasi telah berpindah dari /etc/selenoid ke /etc/websummoner. Kemas kini lekapan itu, dan selesai.

Komitmen kami

  • Keserasian, secara kekal. Nama keupayaan, pengepala, laluan dan arahan Selenoid diterima untuk selama-lamanya, bukan ditamatkan dengan pemasa. Migrasi yang memakan satu sprint bukanlah migrasi yang akan dilakukan oleh sesiapa.
  • Pelayar terkini. Imej mengikut keluaran stabil setiap vendor, masing-masing dengan pemacu yang sepadan, dan tiada imej diberi tag sebelum ia melepasi suite ujian.
  • Keselamatan sentiasa dikemas kini. Kebergantungan dikemas kini setiap minggu, setiap binaan menjalankan semakan kerentanan, dan imej hab ditandatangani serta disertakan dengan senarai bahan perisian.
  • Produksi didahulukan. Kami sendiri menjalankan WebSummoner. Apa yang dihantar ialah apa yang kami bergantung padanya.
  • Dokumentasi yang menyatakan apa yang tidak berfungsi. Nota lengkap, termasuk batasannya, terdapat dalam pengumuman.

WebSummoner bertujuan bersaing dengan grid terbesar di medan yang dimenanginya: kelajuan, kesederhanaan dan kos menjalankannya. Setiap perubahan diukur berdasarkan piawaian itu.

Kini tersedia

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

Arahkan ujian anda ke http://localhost:4444/wd/hub. Nota keluaran lengkap, panduan migrasi dan ruang perbincangan semuanya hanya satu klik sahaja:

📣 Pengumuman 1.0.0 Nota keluaran lengkap, dan tempat untuk bertanya soalan 📖 Dokumentasi Panduan, rujukan dan panduan migrasi 💻 Kod sumber Apache-2.0, di GitHub

Jika anda pernah menjalankan Selenoid dan sesuatu dalam proses migrasi tidak berfungsi seperti yang dijangka, itu ialah pepijat bagi kami, bukan soalan sokongan. Jika anda menyelenggara sesuatu di atas Selenoid, beritahu kami, dan kami akan memastikan ia terus berfungsi.

Panggil sekumpulan pelayar ke dalam kontena Docker.

Hab Selenium pantas dengan persekitaran sementara yang terhad kepada sesi.

Perlukan bantuan untuk menjalankan WebSummoner dalam organisasi anda?

Hubungi kami

WebSummoner dibangunkan dan diselenggara oleh RIADVICE di bawah Apache-2.0. Ia dibina di atas Selenoid oleh Aerokube dan Ivan Krutov, serta antara muka pengguna asal oleh Kirill Merkushev.

Kongsi artikel ini