รันไทม์ที่เป็น Rust ล้วน
ทำงานภายในโปรเซส Rust เดียว ไม่ต้องพึ่งเบราว์เซอร์ภายนอก WebDriver หรือ Node.js
โอเพนซอร์ส / Crate
browser-tester คือรันไทม์ทดสอบแบบเบราว์เซอร์ที่ให้ผลลัพธ์กำหนดได้แน่นอนและเขียนด้วย Rust ล้วน ใช้ตรวจสอบพฤติกรรมของ DOM และเหตุการณ์ได้โดยไม่ต้องเปิดเบราว์เซอร์จริง
browser-tester เน้นการทดสอบพฤติกรรมของฟอร์มและ UI ที่คาดเดาได้ มากกว่าความเข้ากันได้ของการเรนเดอร์เบราว์เซอร์แบบเต็มรูปแบบ
ทำงานภายในโปรเซส Rust เดียว ไม่ต้องพึ่งเบราว์เซอร์ภายนอก WebDriver หรือ Node.js
ออกแบบมาสำหรับการทดสอบที่ทำซ้ำได้จริง: มีนาฬิกาจำลอง, seed แบบกำหนดได้แน่นอน และ API ควบคุมตัวจับเวลาอย่างชัดเจน
รองรับโฟลว์แบบเบราว์เซอร์ที่ใช้งานจริงได้ เช่น selector, การรัน inline script, การแพร่กระจายเหตุการณ์ และการอัปเดต DOM
ให้วงรอบฟีดแบ็กในเครื่องที่รวดเร็วสำหรับการทดสอบ UI ที่เน้นฟอร์ม พร้อมคงผลลัพธ์เมื่อทดสอบล้มเหลวให้โฟกัสที่ selector และค่าที่คาดหวัง/ค่าจริง
สร้าง harness จาก HTML รันการโต้ตอบ และตรวจสอบผลลัพธ์ใน DOM เริ่มจาก fixture ขนาดเล็ก แล้วค่อยขยายด้วย API ด้าน timer/mock
ติดตั้ง
cargo add browser_tester
ตัวอย่างพื้นฐาน
use browser_tester::Harness;
fn main() -> browser_tester::Result<()> {
let html = r#"..."#;
let mut h = Harness::from_html(html)?;
h.type_text("#name", "Alice")?;
h.click("#submit")?;
h.assert_text("#result", "Hello, Alice")?;
Ok(())
}
การทำงานหลักสำหรับทดสอบ DOM: Harness::from_html, type_text, set_checked, click, submit และตัวช่วย assert สำหรับข้อความ/ค่า/สถานะถูกเลือก/การมีอยู่ขององค์ประกอบ
ควบคุมพฤติกรรมแบบ asynchronous ด้วยนาฬิกาจำลอง เลื่อนเวลาอย่างกำหนดได้แน่นอนด้วย advance_time, advance_time_to, flush และ API สำหรับตรวจสอบตัวจับเวลา
ฉีดผลลัพธ์ของ fetch และ dialog ด้วย set_fetch_mock, enqueue_confirm_response และ enqueue_prompt_response เพื่อให้การทดสอบแยกขาดจากภายนอก
เปิดบันทึก trace และดึงลำดับ event/timer ออกมาเมื่อการทดสอบล้มเหลว เหมาะสำหรับดีบักลำดับของเหตุการณ์และพฤติกรรมของการกระทำเริ่มต้น
หากชุดทดสอบของคุณต้องใช้ API ของเบราว์เซอร์เพิ่มเติม ให้เปิด issue พร้อม fixture ขนาดเล็กเพื่อคุยเรื่องขอบเขตและลำดับความสำคัญ