Σε αυτό το άρθρο
Ανακοίνωση κυκλοφορίας
Επτά σύγχρονοι περιηγητές στο Docker, ένα container ανά συνεδρία, εγγραφές με ήχο. Δείτε πώς το WebSummoner συνεχίζει το Selenoid, που αρχειοθετήθηκε τον Δεκέμβριο του 2024, και γιατί λειτουργεί στον πυρήνα της δικής μας υποδομής φιλοξενίας.
Αν η ομάδα σας εκτελεί δοκιμές Selenium, είναι πολύ πιθανό να έχετε συναντήσει το Selenoid: το μικρό πρόγραμμα σε Go που ξεκινά έναν καινούργιο περιηγητή σε ένα container Docker για κάθε συνεδρία δοκιμών και τον πετά στη συνέχεια. Γρήγορο, ελαφρύ και για χρόνια ο ευκολότερος τρόπος να λειτουργήσετε ένα grid περιηγητών στο δικό σας υλικό. Στις 17 Δεκεμβρίου 2024 οι δημιουργοί του αρχειοθέτησαν το αποθετήριο. Καμία ανακοίνωση, καμία αποχαιρετιστήρια ανάρτηση: μόνο η γκρι μπάρα που βάζει το GitHub σε ένα έργο μόνο για ανάγνωση, και αυτό ήταν όλο.
Αύγουστος 2016 Πρώτο commit του Selenoid στην Aerokube
17 Δεκεμβρίου 2024 Το αποθετήριο αρχειοθετείται, μόνο για ανάγνωση
Σεπτέμβριος 2026 WebSummoner 1.0.0: επτά σύγχρονοι περιηγητές, μετάβαση με μία γραμμή
Εκείνο το πρωί δεν χάλασε τίποτα, και ακριβώς αυτό είναι το πρόβλημα. Ένα αρχειοθετημένο εργαλείο δοκιμών φθείρεται με ρυθμό που δεν ελέγχετε: οι νέες εκδόσεις περιηγητών δεν έρχονται ποτέ, οι drivers αποκλίνουν, και μια μέρα μια σουίτα που περνούσε επί χρόνια αρχίζει να αποτυγχάνει για λόγους που δεν έχουν καμία σχέση με την εφαρμογή σας.
Ο ανοιχτός κώδικας δεν τελειώνει με ένα αποθετήριο
Η αρχειοθέτηση ενός αποθετηρίου τερματίζει τη συντήρησή του, όχι τη ζωή του. Το Selenoid διατίθεται με την άδεια Apache 2.0, η οποία δίνει σε όλους όσοι το χρησιμοποιούν το μόνιμο δικαίωμα να το τροποποιούν και να το αναδιανέμουν: όταν οι δημιουργοί ενός έργου προχωρούν αλλού, ο κώδικας παραμένει διαθέσιμος και ένας νέος συντηρητής μπορεί να τον συνεχίσει. Η Aerokube δημιούργησε το Selenoid και το συντήρησε για οκτώ χρόνια· η αρχειοθέτησή του ήταν δική της απόφαση, και η αναγνώριση για όσα πέτυχε το Selenoid παραμένει δική της. Το WebSummoner είναι αυτή η συνέχεια. Ξεκινά από το τελευταίο commit του Selenoid, διατηρεί τον σχεδιασμό που το έκανε καλό, και έχει το δικό του όνομα, οργανισμό, εικόνες και domain. Χρησιμοποιούσαμε ήδη το Selenoid σε παραγωγή στη RIADVICE, και η συνέχισή του ήταν η σωστή απόφαση, για εμάς και για όλους όσοι βασίζονται σε αυτό.
Κυκλοφόρησε το WebSummoner 1.0.0: ένας γρήγορος κόμβος Selenium (hub) που καλεί έναν στόλο περιηγητών σε containers Docker ως εφήμερα περιβάλλοντα, ένα για κάθε συνεδρία.
Γιατί κάναμε fork το Selenoid αντί να το αντικαταστήσουμε
Το κάναμε fork για δύο λόγους.
-
Η δική μας υποδομή: το WebSummoner αποτελεί μέρος της ραχοκοκαλιάς της υποδομής φιλοξενίας της RIADVICE. Μια εξάρτηση παραγωγής που δεν λαμβάνει πλέον ενημερώσεις περιηγητών, διορθώσεις drivers ή ενημερώσεις ασφαλείας δεν ήταν κάτι που μπορούσαμε να αφήσουμε αρχειοθετημένο, και η μετάβαση σε κάτι βαρύτερο θα κόστιζε περισσότερο από μια σωστή συντήρηση.
-
Η κοινότητα: ομάδες σε όλο τον κόσμο έχτισαν επί χρόνια σουίτες δοκιμών πάνω στο Selenoid και άξιζαν μια συντηρούμενη συνέχεια, όχι μια αργή παρακμή. Το Selenoid έκανε σωστά τα σημαντικά: ένα μόνο εκτελέσιμο Go περίπου 10 MB, χωρίς Java runtime, χωρίς βάση δεδομένων, έναν περιηγητή που ξεκινά σε περίπου ένα δευτερόλεπτο, και ένα container ανά συνεδρία ώστε τίποτα να μη διαρρέει μεταξύ δοκιμών.
Τα κρατήσαμε όλα αυτά και εκσυγχρονίσαμε τα υπόλοιπα: περιηγητές, drivers, βασικές εικόνες και αλυσίδα εργαλείων, όλα παγωμένα από το 2024. Το Selenoid είναι αυτό που θα λέγαμε ολοκληρωμένο λογισμικό: δεν χρειάζεται την πιο πρόσφατη λειτουργία, χρειάζεται σύγχρονους περιηγητές, drivers που τους αντιστοιχούν και σταθερές διορθώσεις, και αυτή είναι η δουλειά που αναλάβαμε. Η συμβατότητα ήταν η πρώτη απόφαση, όχι κάτι δευτερεύον. Ό,τι στέλνει ένας πελάτης Selenoid εξακολουθεί να γίνεται δεκτό, μόνιμα.
Τι νέο φέρνει η 1.0.0
Επτά περιηγητές, όλοι σύγχρονοι
| Περιηγητής | Έκδοση |
|---|---|
| Chrome | 152 |
| Firefox | 155 |
| Edge | 152 |
| Opera ξανά διαθέσιμο | 135 |
| Brave νέο | 1.94 |
| Yandex | 26.6 |
| Safari (WebKitGTK) νέο | 2.52.6 |
Κάθε εικόνα περνά την ίδια σουίτα δοκιμών container, που εκτελείται απομονωμένα πάνω στις δημοσιευμένες εικόνες. Οι δύο περιπτώσεις που δεν μπορούν να χειριστούν οι ίδιοι οι drivers τεκμηριώνονται ως παραλείψεις, δεν κρύβονται. Τρεις από αυτές είναι είδηση από μόνες τους. Το Brave και το Safari δημοσιεύονται για πρώτη φορά: το Selenoid δεν κυκλοφόρησε ποτέ εικόνα Brave, και ο πηγαίος κώδικας του Safari δεν κυκλοφόρησε ποτέ ως εικόνα. Το Opera επιστρέφει από τους νεκρούς: η τελευταία του εικόνα Selenoid χρονολογείται από τον Απρίλιο του 2024, και ήταν άχρηστο με το Selenium 4 από τότε που το έργο σταμάτησε να υποστηρίζει το Opera.
Το Brave μπαίνει στη σειρά
Το Brave δημοσιεύεται για πρώτη φορά: το Selenoid δεν το κυκλοφόρησε ποτέ, και τώρα στέκεται δίπλα στους άλλους έξι ως πλήρως υποστηριζόμενη εικόνα. Το Brave αριθμεί τις εκδόσεις του με τη δική του κλίμακα, οπότε το εργαλείο κατασκευής διαβάζει την έκδοση Chromium που περιέχει κάθε έκδοση και τη συνδυάζει αυτόματα με τον αντίστοιχο driver. Αν οι χρήστες σας περιηγούνται με Brave, μπορείτε να κάνετε δοκιμές σε αυτό ακριβώς όπως στο Chrome: οι ίδιες δυνατότητες (capabilities), η ίδια ζωντανή οθόνη, οι ίδιες εγγραφές και η ίδια σουίτα, που περνά με τον ίδιο τρόπο.
Το Opera λειτουργεί ξανά
Το Selenium σταμάτησε να υποστηρίζει το Opera στην έκδοση 4.3.0, και η λύση που επαναλαμβάνουν όλοι, ο έλεγχος του Opera με τον chromedriver του Chrome for Testing, ξεκινά κανονικά τις συνεδρίες και στη συνέχεια ρίχνει τον renderer κάθε φορά που μια σελίδα ανοίγει παράθυρο. Η λύση ήταν να διαβαστεί σωστά το μήνυμα σφάλματος: ο έλεγχος έκδοσης του OperaDriver είναι προειδοποίηση, όχι άρνηση. Ο driver του ίδιου του Opera το ελέγχει σωστά, και ο hub ζητά για λογαριασμό σας το σύγχρονο πρωτόκολλο.
Το Safari είναι πλήρως υποστηριζόμενος στόχος
Και το Safari δημοσιεύεται για πρώτη φορά. Η εικόνα είναι το WebKitGTK, η ίδια μηχανή με αυτήν του Safari, μεταγλωττισμένη από τον πηγαίο κώδικα: το Selenoid είχε τα αρχεία κατασκευής αλλά δεν κυκλοφόρησε ποτέ εικόνα, οπότε αυτή είναι η πρώτη που μπορείτε να κατεβάσετε. Δύο πράγματα που δεν λειτουργούσαν ποτέ μαζί του, το ανέβασμα αρχείων και η δυνατότητα proxy, τα χειρίζεται πλέον ο ίδιος ο hub, οπότε η διόρθωση ισχύει για κάθε εικόνα, παλιά ή νέα. Οι δύο ιδιαιτερότητες που απομένουν χρειάζονται η καθεμία μία γραμμή στις δοκιμές σας, και η τεκμηρίωση αναφέρει ποια.
Εγγραφές με ήχο, σε κάθε περιηγητή
Οι εγγραφές των συνεδριών καταγράφουν πλέον αξιόπιστα τον ήχο και στους επτά περιηγητές, οπότε μια αποτυχημένη δοκιμή πολυμέσων ή WebRTC δεν είναι πια ένα βουβό βίντεο. Αν δεν θέλετε ήχο, μία δυνατότητα (capability) τον απενεργοποιεί.
Φτιαγμένο για τη λειτουργία σε παραγωγή
Ένα σημείο /metrics για το Prometheus, έλεγχοι υγείας που απαντούν σε αιτήματα HEAD, ένα σωστό 429 όταν η ουρά είναι γεμάτη, ανέβασμα αρχείων που λειτουργεί σε κάθε εικόνα, υπογεγραμμένες εικόνες έκδοσης με κατάλογο υλικών λογισμικού (SBOM), και μια πολιτική ασφαλείας που δηλώνει ξεκάθαρα τι σημαίνει το socket του Docker.
Ένα ξαναχτισμένο UI
Το WebSummoner UI, η ζωντανή προβολή του grid σας με την οθόνη του περιηγητή, τα logs και την ουρά, ξαναχτίστηκε από την αρχή: ένα προσεγμένο σκούρο θέμα, τα επίσημα λογότυπα των περιηγητών, ζωντανά στατιστικά συνεδριών και ουράς, και ειλικρινής αναφορά της κατάστασης σύνδεσης. Οι υπάρχουσες γραμμές εντολών και τα αρχεία Compose δεν χρειάζονται καμία αλλαγή.
Μια σύγχρονη αλυσίδα εργαλείων
Go 1.27, Java 25 για τη σουίτα δοκιμών, React 19 για το UI, Ubuntu 26.04 για τις εικόνες των περιηγητών, ενημερώσεις εξαρτήσεων και έλεγχοι ευπαθειών στο CI, και ένας ιστότοπος τεκμηρίωσης με αναζήτηση. Για να χτίσετε οποιοδήποτε μέρος του έργου χρειάζεστε μόνο το Docker. Ο εξισορροπητής φορτίου για συστοιχίες πολλών hubs και ο εγκαταστάτης με μία εντολή εξελίχθηκαν μαζί με τον hub.
Αν επιλέγετε σήμερα
Δεν υπάρχει τέλειο υποκατάστατο για αυτό που έκανε το Selenoid, υπάρχουν όμως ειλικρινείς επιλογές ανάλογα με την περίπτωση.
Selenium Grid: Η υλοποίηση αναφοράς. Η σωστή επιλογή αν θέλετε την κατανεμημένη λειτουργία του και δεν σας ενοχλεί το αποτύπωμα της Java.
Moon: Η επιλογή αν λειτουργείτε σε Kubernetes και αποδέχεστε μια εμπορική άδεια πέρα από τις τέσσερις παράλληλες συνεδρίες.
WebSummoner: Για υπολογιστές με Docker και εικονικές μηχανές, όπου θέλετε έναν μικρό, γρήγορο hub με όλα τα απαραίτητα ενσωματωμένα.
Η τεκμηρίωση διατηρεί μια σύγκριση ελεγμένη στον πηγαίο κώδικα με τα Selenoid, Moon, Selenium Grid, Selenide, Playwright και Puppeteer, που αναφέρει και πότε είναι προτιμότερο να επιλέξετε κάποιο από αυτά.
Μετάβαση από το Selenoid
Στρέψτε τους πελάτες σας στον νέο hub. Τα selenoid:options, οι κεφαλίδες X-Selenoid-*, η διαδρομή /aerokube/..., το cm selenoid start και η σημαία --selenoid-uri του UI εξακολουθούν να λειτουργούν και θα συνεχίσουν να λειτουργούν.
Η μόνη αλλαγή: μέσα στην εικόνα Docker οι ρυθμίσεις μεταφέρθηκαν από το /etc/selenoid στο /etc/websummoner. Ενημερώστε αυτή την προσάρτηση και τελειώσατε.
Οι δεσμεύσεις μας
- Συμβατότητα, μόνιμα. Τα ονόματα δυνατοτήτων, οι κεφαλίδες, οι διαδρομές και οι εντολές του Selenoid γίνονται δεκτά οριστικά, όχι ως παρωχημένα με χρονόμετρο. Μια μετάβαση που κοστίζει ένα ολόκληρο sprint δεν είναι μετάβαση που θα κάνει κανείς.
- Σύγχρονοι περιηγητές. Οι εικόνες ακολουθούν τις σταθερές εκδόσεις κάθε κατασκευαστή, η καθεμία με τον driver που της αντιστοιχεί, και καμία εικόνα δεν λαμβάνει ετικέτα πριν περάσει τη σουίτα.
- Διαρκής ασφάλεια. Οι εξαρτήσεις ενημερώνονται κάθε εβδομάδα, κάθε κατασκευή περνά έλεγχο ευπαθειών, και η εικόνα του hub είναι υπογεγραμμένη και συνοδεύεται από κατάλογο υλικών λογισμικού.
- Πρώτα η παραγωγή. Χρησιμοποιούμε το WebSummoner οι ίδιοι. Ό,τι κυκλοφορεί είναι αυτό στο οποίο βασιζόμαστε.
- Τεκμηρίωση που λέει τι δεν λειτουργεί. Οι πλήρεις σημειώσεις, μαζί με τους περιορισμούς, βρίσκονται στην ανακοίνωση.
Το WebSummoner επιδιώκει να ανταγωνιστεί τα μεγαλύτερα grids στο πεδίο όπου υπερέχει: ταχύτητα, απλότητα και κόστος λειτουργίας. Κάθε αλλαγή μετριέται με αυτό το κριτήριο.
Διαθέσιμο τώρα
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, ενημερώστε μας και θα φροντίσουμε να συνεχίσει να λειτουργεί.
Καλέστε έναν στόλο περιηγητών σε containers Docker.
Ένας γρήγορος hub Selenium με εφήμερα περιβάλλοντα, ένα για κάθε συνεδρία.
Χρειάζεστε βοήθεια για να λειτουργήσετε το WebSummoner στον οργανισμό σας;
Το WebSummoner αναπτύσσεται και συντηρείται από τη RIADVICE με την άδεια Apache-2.0. Βασίζεται στο Selenoid της Aerokube και του Ivan Krutov, καθώς και στο αρχικό UI του Kirill Merkushev.





