Runtime Khusus Rust
Berjalan di dalam satu proses Rust tunggal. Tanpa peramban eksternal, WebDriver, atau dependensi Node.js.
Sumber Terbuka / Crate
browser-tester adalah runtime pengujian mirip peramban yang deterministik dan diimplementasikan sepenuhnya dalam Rust. Alat ini memvalidasi perilaku DOM dan event tanpa perlu menjalankan peramban sungguhan.
browser-tester berfokus pada pengujian perilaku UI/formulir yang dapat diprediksi, alih-alih kompatibilitas rendering peramban secara menyeluruh.
Berjalan di dalam satu proses Rust tunggal. Tanpa peramban eksternal, WebDriver, atau dependensi Node.js.
Dirancang sejak awal untuk pengujian yang dapat diulang: simulasi jam, seed acak deterministik, dan API kontrol timer yang eksplisit.
Mendukung alur kerja mirip peramban yang praktis: pemilih (selector), eksekusi inline script, propagasi event, dan pembaruan DOM.
Umpan balik yang cepat untuk pengujian UI berbasis formulir, dengan output kegagalan yang berfokus pada selector dan nilai aktual/yang diharapkan.
Buat harness dari HTML, jalankan interaksi, dan lakukan asersi pada hasil DOM. Mulailah dengan fixture kecil lalu kembangkan menggunakan API timer/mock.
Instalasi
cargo add browser_tester
Contoh Dasar
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", "Halo, Alice")?;
Ok(())
}
Operasi pengujian DOM inti: Harness::from_html, type_text, set_checked, click, submit, dan fungsi bantu asersi untuk teks/nilai/checked/keberadaan elemen.
Kontrol perilaku asinkron dengan simulasi jam. Majukan waktu secara deterministik menggunakan API advance_time, advance_time_to, flush, dan inspeksi timer.
Sisipkan respons fetch dan hasil dialog dengan set_fetch_mock, enqueue_confirm_response, dan enqueue_prompt_response untuk menjaga pengujian tetap terisolasi.
Aktifkan trace log dan ekstrak alur event/timer ketika pengujian gagal. Berguna untuk men-debug urutan event dan perilaku default action.
Jika Anda memerlukan API peramban tambahan untuk rangkaian pengujian Anda, silakan buat issue baru dengan contoh kode minimal untuk mendiskusikan cakupan dan prioritasnya.