Açık Kaynak / Crate

browser-tester

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.

Rust Deterministik Çalışma Zamanı DOM Testi

Bu crate ne için güçlüdür

browser-tester, tam tarayıcı render uyumluluğundan ziyade öngörülebilir form/UI davranışı testlerine odaklanır.

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.

Deterministik Çalıştırma

Tasarım gereği tekrarlanabilir testler için oluşturulmuştur: sahte saat, deterministik rastgele tohum ve açık zamanlayıcı kontrol API'leri.

DOM + Olay Testi

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.

Hızlı Yerel Geri Bildirim

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.

Hızlı Başlangıç

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

Ana API Yüzeyi

Harness Eylemleri + Doğrulamalar

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.

Deterministik Zamanlayıcı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.

Yerleşik Mock'lar

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.

İzleme ve Tanılama

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.

Çalışma Zamanı Politikası

  • Güvenliği ve determinizmi korumak için eval bilerek desteklenmez.
  • Bu çalışma zamanı, %100 gerçek tarayıcı uyumluluğunu değil pratik test senaryolarını hedefler.
  • Harici ağ G/Ç kapsam dışıdır; test kapsamı için fetch mock'larını kullanın.

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.