Tik Rust vykdymo aplinka
Veikia vieno Rust proceso viduje. Nereikalauja išorinės naršyklės, „WebDriver“ ar „Node.js“ priklausomybių.
Atvirasis kodas / Biblioteka
„browser-tester“ yra deterministinė, į naršyklę panaši testavimo aplinka, sukurta gryna Rust kalba. Ji patikrina DOM ir įvykių elgseną nepaleisdama tikros naršyklės.
„browser-tester“ orientuojasi į prognozuojamą formų ir vartotojo sąsajos elgsenos testavimą, o ne į visišką suderinamumą su naršyklių atvaizdavimu.
Veikia vieno Rust proceso viduje. Nereikalauja išorinės naršyklės, „WebDriver“ ar „Node.js“ priklausomybių.
Sukurta visiškam testų atkartojamumui: naudojamas simuliuojamas laikrodis, deterministinė atsitiktinių skaičių generavimo sėkla (seed) ir aiškios laikmačio valdymo API.
Palaiko praktinius naršyklės veiksmus: selektorius, vidinių skriptų (inline scripts) vykdymą, įvykių plitimą (event propagation) ir DOM atnaujinimus.
Greitas grįžtamojo ryšio ciklas į formas orientuotiems vartotojo sąsajos testams, užtikrinantis, kad klaidos būtų aiškiai susietos su selektoriais ir tikėtinomis bei faktinėmis reikšmėmis.
Sukurkite testavimo aplinką iš HTML, atlikite veiksmus ir patikrinkite DOM rezultatus. Pradėkite nuo paprasto scenarijaus ir papildykite jį laikmačių ar imitacijų API.
Įdiegimas
cargo add browser_tester
Paprastas pavyzdys
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(())
}
Pagrindinės DOM testavimo funkcijos: `Harness::from_html`, `type_text`, `set_checked`, `click`, `submit` ir pagalbiniai metodai tekstui, reikšmei, būsenai ir elementų egzistavimui tikrinti.
Asinchroninę elgseną galima valdyti naudojant simuliuojamą laikrodį. Laiką galima deterministiškai pastumti į priekį naudojant `advance_time`, `advance_time_to`, `flush` ir laikmačių patikros API.
Naudokite funkcijas `set_fetch_mock`, `enqueue_confirm_response` ir `enqueue_prompt_response` užklausų atsakymams ir dialogų langų rezultatams imituoti, kad išlaikytumėte testų izoliaciją.
Aktyvinkite žurnalų sekimą ir ištraukite įvykių bei laikmačių eigą, kai testas nepavyksta. Tai naudinga analizuojant įvykių eiliškumą ir numatytąją elgseną.
Jei jūsų testams reikia papildomų naršyklės API, sukurkite problemą (issue) su minimaliu pavyzdžiu, kad galėtume aptarti jos įgyvendinimą.