オープンソース / Crate

browser-tester

browser-tester は、Rustだけで実装された決定論的ブラウザライクテストランタイムです。実ブラウザ起動なしでDOMとイベント挙動を検証できます。

Rust Deterministic Runtime DOM Testing

このcrateの強み

実ブラウザの完全互換ではなく、業務UIの振る舞い確認を安定かつ高速に回す用途に最適化しています。

Rust完結ランタイム

単一のRustプロセスで動作。外部ブラウザ・WebDriver・Node.jsに依存しません。

決定論実行

fake clock、乱数seed固定、明示的なタイマー実行APIで再現性の高いテストを実現します。

DOM + イベント検証

セレクタ、インラインscript実行、イベント伝播、DOM更新といったブラウザライク操作をカバーします。

高速フィードバック

フォーム中心UIの検証を高速化し、失敗時はセレクタ単位で期待値と実値を比較できます。

クイックスタート

HTMLからHarnessを作成し、要素操作とDOMアサートを実行します。最小fixtureから始めて、タイマーやモックAPIを段階的に追加できます。

インストール

cargo add browser_tester

基本例

主要API

操作 + アサートAPI

Harness::from_html, type_text, set_checked, click, submit と、text/value/checked/existence のアサートAPIを中心にDOM検証を行えます。

決定論タイマー制御

fake clock を使い、advance_time / advance_time_to / flush で非同期挙動を固定化してテストできます。

モック注入API

set_fetch_mock、enqueue_confirm_response、enqueue_prompt_response で外部依存を切り離したテストを構築できます。

トレースと診断

trace ログでイベント順序やタイマー実行を追跡し、失敗時の原因調査を短時間で行えます。

ランタイム方針

  • セキュリティと決定論維持のため、eval は意図的に未対応です。
  • 100%実ブラウザ互換ではなく、実用テストシナリオを優先した設計です。
  • 実ネットワークI/Oは対象外です。fetchモックを使って検証してください。

必要なDOM APIが不足する場合は、最小再現fixtureとともにIssueを作成してください。拡張の優先度を検討できます。