صرف Rust رن ٹائم
ایک ہی Rust process کے اندر چلتا ہے۔ کسی بیرونی browser، WebDriver، یا Node.js dependency کی ضرورت نہیں۔
browser-tester مکمل browser rendering compatibility کے بجائے قابلِ پیش گوئی form/UI behavior tests پر توجہ دیتا ہے۔
ایک ہی Rust process کے اندر چلتا ہے۔ کسی بیرونی browser، WebDriver، یا Node.js dependency کی ضرورت نہیں۔
شروع سے repeatable tests کے لیے بنایا گیا: fake clock، فیصلہ کن random seed، اور explicit timer control APIs۔
عملی 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(())
}
بنیادی 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 کرنے میں مفید ہے۔
اگر آپ کو اپنے test suite کے لیے مزید browser APIs درکار ہوں، تو scope اور priority پر بات کرنے کے لیے minimal fixture کے ساتھ issue کھولیں۔