Öppen källkod / Crate

browser-tester

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.

Rust Deterministisk körning DOM-testning

Vad den här craten är bra på

browser-tester fokuserar på förutsägbara tester av formulär- och UI-beteende snarare än full kompatibilitet med riktig webbläsarrendering.

Endast Rust-runtime

Kör i en enda Rust-process. Ingen extern webbläsare, ingen WebDriver och inget beroende av Node.js.

Deterministisk körning

Byggt för repeterbara tester från grunden: falsk klocka, deterministiskt slumpfrö och explicita API:er för timerstyrning.

DOM- och händelsetestning

Stödjer praktiska, webbläsarliknande flöden: selektorer, körning av inline-script, händelsepropagering och DOM-uppdateringar.

Snabb lokal feedback

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.

Snabbstart

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

Viktigaste API-ytan

Harness-åtgärder + assertions

Centrala DOM-testoperationer: Harness::from_html, type_text, set_checked, click, submit och assertionshjälpare för text/värde/ikryssad/finns.

Deterministiska timers

Styr asynkront beteende med en falsk klocka. Flytta tiden deterministiskt med advance_time, advance_time_to, flush och API:er för timerinspektion.

Inbyggda mocks

Injicera fetch-svar och dialogresultat med set_fetch_mock, enqueue_confirm_response och enqueue_prompt_response för att hålla tester isolerade.

Spårning och diagnostik

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.

Runtimepolicy

  • eval stöds avsiktligt inte för att bevara säkerhet och determinism.
  • Den här runtimen riktar sig mot praktiska testscenarier, inte 100 % kompatibilitet med en riktig webbläsare.
  • Externt nätverks-I/O ligger utanför omfattningen; använd fetch-mocks för testtäckning.

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.