Endast Rust-runtime
Kör i en enda Rust-process. Ingen extern webbläsare, ingen WebDriver och inget beroende av Node.js.
Öppen källkod / Crate
browser-tester är en deterministisk, webbläsarliknande testruntime implementerad i ren Rust. Den validerar DOM- och händelsebeteende utan att starta en riktig webbläsare.
browser-tester fokuserar på förutsägbara tester av formulär- och UI-beteende snarare än full kompatibilitet med riktig webbläsarrendering.
Kör i en enda Rust-process. Ingen extern webbläsare, ingen WebDriver och inget beroende av Node.js.
Byggt för repeterbara tester från grunden: falsk klocka, deterministiskt slumpfrö och explicita API:er för timerstyrning.
Stödjer praktiska, webbläsarliknande flöden: selektorer, körning av inline-script, händelsepropagering och DOM-uppdateringar.
Snabb lokal feedback för UI-tester kring formulär, samtidigt som felutskrifter håller fokus på selektorer och förväntade/faktiska värden.
Skapa en harness från HTML, kör interaktioner och verifiera DOM-resultat. Börja med ett litet fixture och bygg sedan vidare med timer- och mock-API:er.
Installera
cargo add browser_tester
Grundexempel
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(())
}
Centrala DOM-testoperationer: Harness::from_html, type_text, set_checked, click, submit och assertionshjälpare för text/värde/ikryssad/finns.
Styr asynkront beteende med en falsk klocka. Flytta tiden deterministiskt med advance_time, advance_time_to, flush och API:er för timerinspektion.
Injicera fetch-svar och dialogresultat med set_fetch_mock, enqueue_confirm_response och enqueue_prompt_response för att hålla tester isolerade.
Aktivera spårningsloggar och hämta händelse- och timerflöden när ett test misslyckas. Användbart för felsökning av händelseordning och standardbeteende.
Om du behöver fler webbläsar-API:er i din testsvit, öppna ett issue med ett minimalt fixture så att omfattning och prioritet kan diskuteras.