Sumber Terbuka / Wadah.

penguji peramban (atau alat penguji peramban)

"browser-tester" adalah lingkungan pengujian yang berfungsi seperti peramban (browser), tetapi dibuat dengan kode Rust murni dan menghasilkan hasil yang konsisten. Alat ini memvalidasi perilaku DOM (Document Object Model) dan peristiwa tanpa perlu menjalankan peramban sungguhan.

Karatan. Waktu eksekusi yang deterministik. Pengujian DOM.

Apa Keunggulan Kotak Ini?

"Browser-tester" berfokus pada pengujian perilaku formulir/antarmuka pengguna yang dapat diprediksi, daripada kompatibilitas rendering browser secara keseluruhan.

Lingkungan runtime khusus untuk bahasa Rust.

Berjalan di dalam satu proses Rust. Tidak memerlukan browser eksternal, WebDriver, atau dependensi Node.js.

Eksekusi Deterministik.

Dirancang untuk pengujian yang dapat diulang: menggunakan simulasi jam, generator angka acak yang deterministik, dan antarmuka pemrograman aplikasi (API) untuk kontrol waktu yang eksplisit.

Pengujian DOM dan Peristiwa.

Mendukung alur kerja yang mirip dengan peramban (browser), seperti pemilihan elemen, eksekusi skrip inline, propagasi peristiwa, dan pembaruan DOM.

Umpan balik cepat dari lingkungan sekitar.

Siklus umpan balik yang cepat untuk pengujian antarmuka pengguna yang berfokus pada formulir, sambil memastikan bahwa output kesalahan berfokus pada elemen yang dipilih dan nilai yang diharapkan/aktual.

Memulai dengan Cepat.

Buatlah kerangka kerja (harness) menggunakan HTML, jalankan interaksi, dan verifikasi hasil DOM. Mulailah dengan kerangka kerja sederhana dan kembangkan dengan menambahkan fitur seperti timer atau simulasi API.

Instal.

cargo menambahkan browser_tester.

Contoh Dasar.

Antarmuka API utama.

Manfaatkan tindakan dan pernyataan.

Operasi pengujian DOM inti: `Harness::from_html`, `type_text`, `set_checked`, `click`, `submit`, dan fungsi bantu untuk verifikasi teks, nilai, status tercentang, dan keberadaan elemen.

Timer Deterministik.

Kontrol perilaku asinkron dengan menggunakan simulasi jam. Majukan waktu secara deterministik menggunakan fungsi `advance_time`, `advance_time_to`, `flush`, dan API untuk memeriksa timer.

Simulasi bawaan.

Gunakan fungsi `set_fetch_mock`, `enqueue_confirm_response`, dan `enqueue_prompt_response` untuk menyimulasikan respons dari pengambilan data (fetch) dan hasil dialog, sehingga pengujian tetap terisolasi.

Pelacakan dan Diagnostik.

Aktifkan log pelacakan dan ekstrak alur kejadian/timer ketika pengujian gagal. Ini berguna untuk men-debug urutan kejadian dan perilaku tindakan default.

Kebijakan Eksekusi.

  • Fungsi `eval` sengaja tidak didukung untuk menjaga keamanan dan kepastian sistem.
  • Lingkungan eksekusi ini dirancang untuk menguji skenario praktis, bukan untuk memastikan kompatibilitas 100% dengan semua browser.
  • Akses input/output (I/O) ke jaringan eksternal berada di luar cakupan; gunakan simulasi (mock) untuk memastikan cakupan pengujian.

Jika Anda memerlukan API browser tambahan untuk rangkaian pengujian Anda, silakan ajukan permintaan (issue) dengan contoh kode minimal untuk membahas cakupan dan prioritasnya.