Otvoreni kod / Rust biblioteka

browser-tester

browser-tester je determinističko okruženje za testiranje slično pregledniku, implementirano u potpunom Rustu. Omogućuje provjeru DOM-a i ponašanja događaja bez pokretanja stvarnog preglednika.

Rust Determinističko okruženje Testiranje DOM-a

Za što je ova biblioteka najprikladnija

browser-tester se fokusira na predvidljivo ponašanje obrazaca i korisničkog sučelja, a ne na potpunu kompatibilnost s renderskim prikazom preglednika.

Izvođenje isključivo u Rustu

Izvodi se unutar jednog Rust procesa. Bez ovisnosti o vanjskom pregledniku, WebDriveru ili Node.js-u.

Determinističko izvršavanje

Dizajnirano za ponovljive testove: simulirani sat, deterministički generator slučajnih brojeva (seed) i API za izravnu kontrolu tajmera.

Testiranje DOM-a i događaja

Podržava uobičajene scenarije preglednika: selektore, ugrađeno izvođenje skripti, propagaciju događaja i ažuriranje DOM-a.

Brze lokalne povratne informacije

Brzi ciklus povratnih informacija za testiranje sučelja usmjerenog na obrasce, uz jasan prikaz grešaka fokusiran na selektore i očekivane/stvarne vrijednosti.

Brzi početak

Stvorite ispitni sustav iz HTML-a, pokrenite interakcije i provjerite rezultate DOM-a. Počnite s jednostavnim HTML predloškom, pa ga proširite pomoću tajmera i simuliranih API-ja.

Instalacija

cargo add browser_tester

Osnovni primjer

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

Glavni API

Radnje i tvrdnje (assertions) sučelja Harness

Osnovne operacije testiranja DOM-a: `Harness::from_html`, `type_text`, `set_checked`, `click`, `submit` te pomoćne funkcije za provjeru teksta, vrijednosti, stanja označenosti i postojanja.

Deterministički tajmeri

Kontrolirajte asinkrono ponašanje pomoću simuliranog sata. Upravljajte vremenom na deterministički način pomoću funkcija `advance_time`, `advance_time_to`, `flush` i API-ja za provjeru tajmera.

Ugrađene simulacije (mocks)

Simulirajte odgovore mrežnih zahtjeva i ishode dijaloga pomoću `set_fetch_mock`, `enqueue_confirm_response` i `enqueue_prompt_response` kako bi testovi ostali izolirani.

Praćenje i dijagnostika

Omogućite zapisnike praćenja i izdvojite redoslijed događaja i rad tajmera kada test ne uspije. Korisno za uklanjanje pogrešaka u redoslijedu događaja i ponašanju zadane radnje.

Pravila okruženja

  • Funkcija eval je namjerno onemogućena radi sigurnosti i determinizma.
  • Ovo okruženje je optimizirano za praktične testne scenarije, a ne za 100% kompatibilnost sa stvarnim preglednicima.
  • Vanjski mrežni I/O nije podržan; koristite simulacije mrežnih zahtjeva (fetch mocks) za pokrivenost testovima.

Ako su vam za testni skup potrebni dodatni API-ji preglednika, otvorite zahtjev (issue) s minimalnim primjerom kako bismo raspravili o prioritetu.