Yalnızca Rust Çalışma Zamanı
Tek bir Rust süreci içinde çalışır. Harici tarayıcı, WebDriver veya Node.js bağımlılığı yoktur.
Açık Kaynak / Crate
browser-tester, saf Rust ile uygulanmış deterministik bir tarayıcı benzeri test çalışma zamanıdır. Gerçek bir tarayıcı başlatmadan DOM ve olay davranışını doğrular.
browser-tester, tam tarayıcı render uyumluluğundan ziyade öngörülebilir form/UI davranışı testlerine odaklanır.
Tek bir Rust süreci içinde çalışır. Harici tarayıcı, WebDriver veya Node.js bağımlılığı yoktur.
Tasarım gereği tekrarlanabilir testler için oluşturulmuştur: sahte saat, deterministik rastgele tohum ve açık zamanlayıcı kontrol API'leri.
Seçiciler, satır içi betik yürütme, olay yayılımı ve DOM güncellemeleri gibi pratik tarayıcı benzeri akışları destekler.
Seçiciler ve beklenen/gerçek değerler üzerinde odaklı hata çıktısı sunarken, form odaklı UI testleri için hızlı bir yerel geri bildirim döngüsü sağlar.
HTML'den bir harness oluşturun, etkileşimleri çalıştırın ve DOM sonuçlarını doğrulayın. Küçük bir fixture ile başlayın, ardından zamanlayıcı/mock API'leriyle genişletin.
Kurulum
cargo add browser_tester
Temel Örnek
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(())
}
Temel DOM test işlemleri: Harness::from_html, type_text, set_checked, click, submit ve metin/değer/işaretli/varlık doğrulaması için yardımcılar.
Sahte saat ile eşzamansız davranışı kontrol edin. advance_time, advance_time_to, flush ve zamanlayıcı inceleme API'leri ile zamanı deterministik olarak ilerletin.
Testleri izole tutmak için set_fetch_mock, enqueue_confirm_response ve enqueue_prompt_response ile fetch yanıtlarını ve diyalog sonuçlarını enjekte edin.
Bir test başarısız olduğunda iz kayıtlarını etkinleştirin ve olay/zamanlayıcı akışını çıkarın. Olay sırası ve varsayılan eylem davranışını hata ayıklamak için kullanışlıdır.
Test paketiniz için ek tarayıcı API'lerine ihtiyacınız varsa kapsam ve önceliği görüşmek için küçük bir fixture ile issue açın.