కేవలం Rust రన్టైమ్
ఒకే Rust ప్రాసెస్లో నడుస్తుంది. బాహ్య బ్రౌజర్, WebDriver, లేదా Node.js ఆధారత అవసరం లేదు.
ఓపెన్ సోర్స్ / క్రేట్
browser-tester అనేది pure Rust లో అమలు చేసిన నిర్ణీత బ్రౌజర్-లాంటి పరీక్ష రన్టైమ్. నిజమైన బ్రౌజర్ను ప్రారంభించకుండా DOM మరియు ఈవెంట్ ప్రవర్తనను ధృవీకరిస్తుంది.
browser-tester అంచనా వేయగల ఫారమ్ / UI ప్రవర్తన పరీక్షలపై దృష్టి పెడుతుంది, పూర్తి బ్రౌజర్ రెండరింగ్ అనుకూలత కంటే.
ఒకే Rust ప్రాసెస్లో నడుస్తుంది. బాహ్య బ్రౌజర్, WebDriver, లేదా Node.js ఆధారత అవసరం లేదు.
పునరావృతమయ్యే పరీక్షల కోసం రూపొందించబడింది: నకిలీ గడియారం, నిర్ణీత యాదృచ్ఛిక విత్తనం, మరియు timer నియంత్రణ కోసం స్పష్టమైన APIs.
ప్రయోగాత్మక బ్రౌజర్-లాంటి ప్రవాహాలకు మద్దతు ఇస్తుంది: selectors, inline script అమలు, ఈవెంట్ వ్యాప్తి, మరియు DOM నవీకరణలు.
ఫారమ్-కేంద్రీకృత UI పరీక్షల కోసం వేగవంతమైన స్థానిక ప్రతిస్పందన చక్రం ఇస్తుంది; విఫలత అవుట్పుట్ selectors మరియు ఆశించిన / నిజమైన విలువలపై కేంద్రీకృతమై ఉంటుంది.
HTML నుండి హార్నెస్ను సృష్టించి, పరస్పర చర్యలను నడిపి, DOM ఫలితాలను ధృవీకరించండి. చిన్న 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 పరీక్ష చర్యలు: Harness::from_html, type_text, set_checked, click, submit, మరియు text / value / checked / existence కోసం ధృవీకరణ సహాయకాలు.
నకిలీ గడియారంతో అసమకాలిక ప్రవర్తనను నియంత్రించండి. advance_time, advance_time_to, flush, మరియు timer inspection APIs ద్వారా సమయాన్ని నిర్ణీతంగా ముందుకు జరపండి.
set_fetch_mock, enqueue_confirm_response, మరియు enqueue_prompt_response తో fetch ప్రతిస్పందనలు మరియు డైలాగ్ ఫలితాలను చేర్చి పరీక్షలను వేరు గా ఉంచండి.
పరీక్ష విఫలమైనప్పుడు ట్రేస్ లాగ్లను ప్రారంభించి ఈవెంట్ / టైమర్ ప్రవాహాన్ని పొందండి. ఈవెంట్ క్రమం మరియు డిఫాల్ట్ చర్య ప్రవర్తనను డీబగ్ చేయడానికి ఉపయోగపడుతుంది.
మీ పరీక్షా సమాహారం కోసం అదనపు బ్రౌజర్ APIs అవసరమైతే, పరిధి మరియు ప్రాధాన్యం గురించి చర్చించడానికి కనిష్ఠ fixture తో issue తెరవండి.