ข้ามไปยังเนื้อหา
บทความทั้งหมด

WebSummoner 1.0: ปลุก Selenoid ให้กลับมามีชีวิตอีกครั้ง

โดย Ghazi Triki · อ่าน 4 นาที

การเปิดตัว WebSummoner
ในบทความนี้

ประกาศเปิดตัวรุ่นใหม่

เบราว์เซอร์รุ่นปัจจุบันเจ็ดตัวใน Docker หนึ่งคอนเทนเนอร์ต่อหนึ่งเซสชัน และวิดีโอบันทึกพร้อมเสียง มาดูกันว่า WebSummoner สานต่อ Selenoid ซึ่งถูกเก็บถาวรตั้งแต่เดือนธันวาคม 2024 อย่างไร และเหตุใดจึงทำงานอยู่ที่แกนกลางของโครงสร้างพื้นฐานโฮสติ้งของเราเอง

หากทีมของคุณรันการทดสอบด้วย Selenium มีโอกาสสูงที่คุณจะเคยรู้จัก Selenoid โปรแกรม Go ขนาดเล็กที่เปิดเบราว์เซอร์ใหม่ในคอนเทนเนอร์ Docker สำหรับทุกเซสชันการทดสอบ แล้วทิ้งไปเมื่อเสร็จ รวดเร็ว เบา และเป็นวิธีที่ง่ายที่สุดในการรันกริดเบราว์เซอร์บนฮาร์ดแวร์ของคุณเองมาหลายปี เมื่อวันที่ 17 ธันวาคม 2024 ผู้พัฒนาได้เก็บถาวร repository ไว้ ไม่มีประกาศ ไม่มีโพสต์อำลา มีเพียงแถบสีเทาที่ GitHub แสดงบนโครงการแบบอ่านอย่างเดียว และทุกอย่างก็จบลงเพียงเท่านั้น

สิงหาคม 2016 คอมมิตแรกของ Selenoid ที่ Aerokube

17 ธันวาคม 2024 repository ถูกเก็บถาวร เป็นแบบอ่านอย่างเดียว

กันยายน 2026 WebSummoner 1.0.0: เบราว์เซอร์รุ่นปัจจุบันเจ็ดตัว ย้ายระบบได้ด้วยการแก้ไขเพียงบรรทัดเดียว

ไม่มีอะไรพังในเช้าวันนั้น และนั่นคือปัญหา เครื่องมือทดสอบที่ถูกเก็บถาวรจะเสื่อมลงตามกำหนดเวลาที่คุณควบคุมไม่ได้ เบราว์เซอร์รุ่นใหม่ไม่มาถึง ไดรเวอร์เริ่มไม่ตรงกัน และวันหนึ่งชุดทดสอบที่ผ่านมาหลายปีก็เริ่มล้มเหลวด้วยเหตุผลที่ไม่เกี่ยวกับแอปพลิเคชันของคุณเลย

โอเพนซอร์สไม่ได้จบลงพร้อมกับ repository

การเก็บถาวร repository ยุติการบำรุงรักษา ไม่ได้ยุติชีวิตของโครงการ Selenoid เผยแพร่ภายใต้สัญญาอนุญาต Apache 2.0 ซึ่งให้สิทธิ์ถาวรแก่ผู้ใช้ทุกคนในการแก้ไขและเผยแพร่ต่อ เมื่อผู้พัฒนาโครงการเดินหน้าไปทำสิ่งอื่น โค้ดยังคงอยู่ และผู้ดูแลรายใหม่สามารถสานต่อได้ Aerokube สร้าง Selenoid และดูแลมาแปดปี การเก็บถาวรเป็นการตัดสินใจของพวกเขา และเครดิตสำหรับสิ่งที่ Selenoid ทำได้ดียังคงเป็นของพวกเขา WebSummoner คือการสานต่อดังกล่าว เริ่มต้นจากคอมมิตสุดท้ายของ Selenoid คงการออกแบบที่ทำให้ Selenoid ดี และมีชื่อ องค์กร อิมเมจ และโดเมนเป็นของตนเอง ที่ RIADVICE เราใช้ Selenoid ในระบบใช้งานจริงอยู่แล้ว การสานต่อจึงเป็นการตัดสินใจที่สมเหตุสมผล ทั้งสำหรับเราและสำหรับทุกคนที่พึ่งพามัน

WebSummoner 1.0.0 เปิดตัวแล้ว: Selenium hub ที่รวดเร็ว ซึ่งเรียกกองเบราว์เซอร์เข้าสู่คอนเทนเนอร์ Docker ในรูปแบบสภาพแวดล้อมชั่วคราวที่ผูกกับแต่ละเซสชัน

เหตุใดเราจึง fork Selenoid แทนที่จะหาสิ่งอื่นมาแทน

เรา fork ด้วยเหตุผลสองประการ

  1. โครงสร้างพื้นฐานของเราเอง WebSummoner เป็นส่วนหนึ่งของแกนหลักในโครงสร้างพื้นฐานโฮสติ้งของ RIADVICE ส่วนประกอบที่ระบบใช้งานจริงพึ่งพา แต่ไม่ได้รับการอัปเดตเบราว์เซอร์ การแก้ไขไดรเวอร์ หรือแพตช์ความปลอดภัยอีกต่อไป ไม่ใช่สิ่งที่เราปล่อยให้ถูกเก็บถาวรได้ และการย้ายไปใช้สิ่งที่หนักกว่าจะมีต้นทุนสูงกว่าการดูแลรักษาให้ดี

  2. ชุมชน ทีมงานทั่วโลกสร้างชุดทดสอบบน Selenoid มาหลายปี และสมควรได้รับการสานต่อที่มีผู้ดูแล แทนที่จะปล่อยให้เสื่อมลงอย่างช้า ๆ Selenoid ทำสิ่งสำคัญได้ถูกต้อง ทั้งไบนารี Go ไฟล์เดียวขนาดราว 10 MB ไม่ต้องใช้ Java runtime ไม่ต้องใช้ฐานข้อมูล เบราว์เซอร์เริ่มทำงานในราวหนึ่งวินาที และหนึ่งคอนเทนเนอร์ต่อหนึ่งเซสชัน จึงไม่มีสิ่งใดรั่วไหลระหว่างการทดสอบ

เราคงสิ่งเหล่านั้นไว้ทั้งหมด และปรับส่วนที่เหลือให้ทันสมัย ได้แก่ เบราว์เซอร์ ไดรเวอร์ อิมเมจพื้นฐาน และชุดเครื่องมือ ซึ่งหยุดนิ่งมาตั้งแต่ปี 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 ล่าสุดของ Opera มีอายุตั้งแต่เดือนเมษายน 2024 และใช้งานกับ Selenium 4 ไม่ได้ตั้งแต่โครงการยกเลิกการรองรับ Opera

Brave เข้าร่วมรายการ

Brave เผยแพร่เป็นครั้งแรก Selenoid ไม่เคยเผยแพร่ Brave และตอนนี้ Brave ยืนเคียงข้างอีกหกตัวในฐานะอิมเมจหลักที่รองรับเต็มรูปแบบ Brave กำหนดหมายเลขรุ่นด้วยระบบของตนเอง เครื่องมือบิลด์จึงอ่านเวอร์ชัน Chromium ที่ฝังอยู่ในแต่ละรุ่น แล้วจับคู่กับไดรเวอร์ที่ตรงกันโดยอัตโนมัติ หากผู้ใช้ของคุณท่องเว็บด้วย Brave คุณสามารถทดสอบบน Brave ได้เหมือนกับที่ทดสอบบน Chrome ทุกประการ ทั้ง capabilities เดียวกัน หน้าจอสดเดียวกัน วิดีโอบันทึกเดียวกัน และชุดทดสอบเดียวกันที่ผ่านในแบบเดียวกัน

Opera กลับมาใช้งานได้อีกครั้ง

Selenium ยกเลิกการรองรับ Opera ในเวอร์ชัน 4.3.0 และวิธีแก้ขัดที่ทุกคนพูดถึงซ้ำ ๆ คือการขับ Opera ด้วย chromedriver ของ Chrome for Testing ซึ่งเริ่มเซสชันได้ปกติ แต่ทำให้ตัวเรนเดอร์แครชทุกครั้งที่หน้าเว็บเปิดหน้าต่างใหม่ วิธีแก้คือการอ่านข้อความแสดงข้อผิดพลาดให้ถี่ถ้วน การตรวจสอบเวอร์ชันของ OperaDriver เป็นเพียงคำเตือน ไม่ใช่การปฏิเสธ ไดรเวอร์ของ Opera เองขับ Opera ได้อย่างถูกต้อง และ hub จะร้องขอโปรโตคอลสมัยใหม่แทนคุณ

Safari เป็นเป้าหมายหลักที่รองรับเต็มรูปแบบ

Safari เผยแพร่เป็นครั้งแรกเช่นกัน อิมเมจนี้คือ WebKitGTK ซึ่งเป็นเอนจินเดียวกับที่ Safari ใช้ สร้างจากซอร์สโค้ด Selenoid มีไฟล์บิลด์อยู่แต่ไม่เคยเผยแพร่อิมเมจ นี่จึงเป็นอิมเมจแรกที่คุณดึงมาใช้ได้ สองสิ่งที่ไม่เคยทำงานกับ Safari ได้แก่ การอัปโหลดไฟล์และ proxy capability ตอนนี้ hub จัดการให้เอง การแก้ไขจึงมีผลกับทุกอิมเมจ ไม่ว่าเก่าหรือใหม่ ข้อจำกัดที่เหลืออีกสองข้อแต่ละข้อต้องการเพียงหนึ่งบรรทัดในการทดสอบของคุณ และเอกสารระบุไว้ว่าคือบรรทัดใด

วิดีโอบันทึกพร้อมเสียงในทุกเบราว์เซอร์

ตอนนี้การบันทึกเซสชันเก็บเสียงได้อย่างเชื่อถือได้บนเบราว์เซอร์ทั้งเจ็ดตัว การทดสอบสื่อหรือ WebRTC ที่ล้มเหลวจึงไม่ใช่วิดีโอเงียบอีกต่อไป หากไม่ต้องการเสียง ปิดได้ด้วย capability เพียงตัวเดียว

สร้างมาเพื่องานปฏิบัติการ

endpoint /metrics สำหรับ Prometheus, health probe ที่ตอบคำขอ HEAD, การตอบกลับ 429 ที่ถูกต้องเมื่อคิวเต็ม, การอัปโหลดไฟล์ที่ทำงานได้กับทุกอิมเมจ, อิมเมจรุ่นเผยแพร่ที่ลงนามพร้อมรายการส่วนประกอบซอฟต์แวร์ (SBOM) และนโยบายความปลอดภัยที่ระบุอย่างตรงไปตรงมาว่า Docker socket มีความหมายอย่างไร

UI ที่สร้างขึ้นใหม่

WebSummoner UI ซึ่งแสดงภาพสดของกริด พร้อมหน้าจอเบราว์เซอร์ ล็อก และคิว ได้รับการสร้างขึ้นใหม่ทั้งหมด ด้วยธีมสีเข้มที่ออกแบบอย่างพิถีพิถัน โลโก้เบราว์เซอร์อย่างเป็นทางการ สถิติเซสชันและคิวแบบสด และการรายงานสถานะการเชื่อมต่อที่ตรงไปตรงมา คำสั่งและไฟล์ Compose ที่มีอยู่ไม่ต้องแก้ไขใด ๆ

ชุดเครื่องมือที่ทันสมัย

Go 1.27, Java 25 สำหรับชุดทดสอบ, React 19 สำหรับ UI, Ubuntu 26.04 สำหรับอิมเมจเบราว์เซอร์, การอัปเดต dependency และการตรวจหาช่องโหว่ใน CI และเว็บไซต์เอกสารที่ค้นหาได้ การบิลด์ทุกส่วนของโครงการต้องการเพียง Docker เท่านั้น โหลดบาลานเซอร์สำหรับคลัสเตอร์หลาย hub และตัวติดตั้งแบบคำสั่งเดียวก็ได้รับการพัฒนาไปพร้อมกับ 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 อัปเดตการเมานต์นั้น เพียงเท่านี้ก็เสร็จเรียบร้อย

สิ่งที่เราให้คำมั่น

  • ความเข้ากันได้อย่างถาวร ชื่อ capability ส่วนหัว พาธ และคำสั่งของ Selenoid จะได้รับการยอมรับตลอดไป ไม่ได้ถูกกำหนดเวลาเลิกใช้ การย้ายระบบที่ต้องใช้เวลาทั้งสปรินต์ไม่ใช่สิ่งที่ใครจะทำ
  • เบราว์เซอร์รุ่นปัจจุบัน อิมเมจติดตามรุ่นเสถียรของผู้ผลิตแต่ละราย แต่ละอิมเมจมาพร้อมไดรเวอร์ที่ตรงกัน และไม่มีอิมเมจใดถูกติดแท็กก่อนผ่านชุดทดสอบ
  • ความปลอดภัยที่ทันสมัยเสมอ dependency ได้รับการอัปเดตทุกสัปดาห์ ทุกการบิลด์มีการตรวจหาช่องโหว่ และอิมเมจของ hub ลงนามและมาพร้อมรายการส่วนประกอบซอฟต์แวร์
  • ระบบใช้งานจริงมาก่อน เราใช้ 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 hub ที่รวดเร็ว พร้อมสภาพแวดล้อมชั่วคราวที่ผูกกับแต่ละเซสชัน

ต้องการความช่วยเหลือในการใช้งาน WebSummoner ในองค์กรของคุณหรือไม่

ติดต่อเรา

WebSummoner พัฒนาและดูแลโดย RIADVICE ภายใต้สัญญาอนุญาต Apache-2.0 โดยต่อยอดจาก Selenoid ของ Aerokube และ Ivan Krutov และ UI ต้นฉบับของ Kirill Merkushev

แชร์บทความนี้