僅支援 Rust 語言的執行時環境。
它在單個 Rust 程式中執行,無需任何外部瀏覽器、WebDriver 或 Node.js 依賴。
browser-tester 的重點在於針對表單/使用者介面行為進行可預測的測試,而不是全面測試瀏覽器渲染的相容性。
它在單個 Rust 程式中執行,無需任何外部瀏覽器、WebDriver 或 Node.js 依賴。
該系統設計之初就考慮了可重複的測試需求,因此具備以下特性:模擬時鐘、可預測的隨機數種子以及明確的定時器控制API。
支援類似於瀏覽器的實用功能:選擇器、內聯指令碼執行、事件傳播以及DOM更新。
針對以表單為中心的UI測試,提供快速的反饋迴圈,同時確保錯誤輸出資訊集中於選擇器以及預期值和實際值。
使用 HTML 建立測試框架,執行互動操作,並驗證 DOM 結果。從一個簡單的測試用例開始,然後逐步擴充套件,加入定時器和模擬 API。
安裝。
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`(從 HTML 字串建立 DOM 樹)、`type_text`(輸入文字)、`set_checked`(設定核取方塊狀態)、`click`(點選)、`submit`(提交表單)以及用於驗證文字內容、數值、核取方塊狀態和元素是否存在的相關輔助函式。
使用模擬時鐘來控制非同步行為。透過 `advance_time`、`advance_time_to`、`flush` 以及計時器檢查 API 等功能,可以以確定性的方式推進時間。
為了保持測試的獨立性,可以使用 `set_fetch_mock`、`enqueue_confirm_response` 和 `enqueue_prompt_response` 函式來模擬網路請求的響應和對話結果。
啟用追蹤日誌,並在測試失敗時提取事件/計時器流程資訊。這對於除錯事件順序和預設行為非常有用。