اوپن سورس / Crate

browser-tester

browser-tester خالص Rust میں بنایا گیا ایک فیصلہ کن browser-like test runtime ہے۔ یہ حقیقی browser چلائے بغیر DOM اور event behavior کو validate کرتا ہے۔

Rust فیصلہ کن رن ٹائم DOM جانچ

یہ crate کس کام کے لیے بہتر ہے

browser-tester مکمل browser rendering compatibility کے بجائے قابلِ پیش گوئی form/UI behavior tests پر توجہ دیتا ہے۔

صرف Rust رن ٹائم

ایک ہی Rust process کے اندر چلتا ہے۔ کسی بیرونی browser، WebDriver، یا Node.js dependency کی ضرورت نہیں۔

فیصلہ کن عمل

شروع سے repeatable tests کے لیے بنایا گیا: fake clock، فیصلہ کن random seed، اور explicit timer control APIs۔

DOM + واقعات کی جانچ

عملی browser-like flows کی support: selectors، inline script execution، event propagation، اور DOM updates۔

تیز مقامی فیڈبیک

Form-centric UI tests کے لیے تیز مقامی feedback cycle، جبکہ failure output selectors اور expected/actual values پر مرکوز رہتی ہے۔

فوری آغاز

HTML سے harness بنائیں، interactions چلائیں، اور DOM results پر assertions کریں۔ چھوٹے fixture سے شروع کریں اور timer/mock APIs کے ساتھ آہستہ آہستہ بڑھائیں۔

انسٹال کریں

cargo add browser_tester

بنیادی مثال

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

اہم API سطح

ہارنَس اعمال + تصدیقات

بنیادی DOM test operations: Harness::from_html، type_text، set_checked، click، submit، اور text/value/checked/existence کے assertion helpers۔

فیصلہ کن ٹائمرز

Fake clock کے ذریعے asynchronous behavior کو کنٹرول کریں۔ advance_time، advance_time_to، flush، اور timer inspection APIs کے ذریعے وقت کو فیصلہ کن انداز میں آگے بڑھائیں۔

اندرونی موکس

set_fetch_mock، enqueue_confirm_response، اور enqueue_prompt_response کے ذریعے fetch responses اور dialog outcomes inject کریں تاکہ tests الگ تھلگ رہیں۔

ٹریس اور تشخیص

جب test fail ہو تو trace logs فعال کریں اور event/timer flow نکالیں۔ یہ event order اور default action behavior کو debug کرنے میں مفید ہے۔

رن ٹائم پالیسی

  • سیکیورٹی اور determinism برقرار رکھنے کے لیے eval جان بوجھ کر unsupported ہے۔
  • یہ runtime عملی test scenarios کے لیے ہے، 100% حقیقی browser compatibility کے لیے نہیں۔
  • بیرونی network I/O scope سے باہر ہے؛ test coverage کے لیے fetch mocks استعمال کریں۔

اگر آپ کو اپنے test suite کے لیے مزید browser APIs درکار ہوں، تو scope اور priority پر بات کرنے کے لیے minimal fixture کے ساتھ issue کھولیں۔