Sumber Terbuka / Crate

browser-tester

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.

Rust Runtime Deterministik Pengujian DOM

Kelebihan Crate Ini

browser-tester berfokus pada pengujian perilaku UI/formulir yang dapat diprediksi, alih-alih kompatibilitas rendering peramban secara menyeluruh.

Runtime Khusus Rust

Berjalan di dalam satu proses Rust tunggal. Tanpa peramban eksternal, WebDriver, atau dependensi Node.js.

Eksekusi Deterministik

Dirancang sejak awal untuk pengujian yang dapat diulang: simulasi jam, seed acak deterministik, dan API kontrol timer yang eksplisit.

Pengujian DOM & Event

Mendukung alur kerja mirip peramban yang praktis: pemilih (selector), eksekusi inline script, propagasi event, dan pembaruan DOM.

Umpan Balik Lokal yang Cepat

Umpan balik yang cepat untuk pengujian UI berbasis formulir, dengan output kegagalan yang berfokus pada selector dan nilai aktual/yang diharapkan.

Mulai Cepat

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(())
}

Antarmuka API Utama

Tindakan & Aseri Harness

Operasi pengujian DOM inti: Harness::from_html, type_text, set_checked, click, submit, dan fungsi bantu asersi untuk teks/nilai/checked/keberadaan elemen.

Timer Deterministik

Kontrol perilaku asinkron dengan simulasi jam. Majukan waktu secara deterministik menggunakan API advance_time, advance_time_to, flush, dan inspeksi timer.

Mock Bawaan

Sisipkan respons fetch dan hasil dialog dengan set_fetch_mock, enqueue_confirm_response, dan enqueue_prompt_response untuk menjaga pengujian tetap terisolasi.

Trace & Diagnostik

Aktifkan trace log dan ekstrak alur event/timer ketika pengujian gagal. Berguna untuk men-debug urutan event dan perilaku default action.

Kebijakan Runtime

  • Penggunaan eval sengaja tidak didukung demi menjaga keamanan dan sifat deterministik.
  • Runtime ini ditujukan untuk skenario pengujian praktis, bukan kompatibilitas 100% dengan peramban sungguhan.
  • I/O jaringan eksternal berada di luar cakupan; gunakan fetch mock untuk cakupan pengujian.

Jika Anda memerlukan API peramban tambahan untuk rangkaian pengujian Anda, silakan buat issue baru dengan contoh kode minimal untuk mendiskusikan cakupan dan prioritasnya.