开源项目 / 容器。

浏览器测试工具。

`browser-tester` 是一个用纯 Rust 语言实现的、具有浏览器功能的测试运行环境。它可以在不启动实际浏览器的情况下,验证 DOM(文档对象模型)和事件的行为。

锈蚀。 确定性运行时环境。 DOM测试。

这个工具包的优势和特点。

browser-tester 主要关注的是可预测的表单/用户界面行为测试,而不是全面的浏览器渲染兼容性测试。

仅支持 Rust 语言的运行时环境。

该程序运行在单个 Rust 进程内部,无需依赖任何外部浏览器、WebDriver 或 Node.js 环境。

确定性执行。

该系统设计之初就考虑了可重复性测试的需求,因此具备以下特性:模拟时钟、可预测的随机数种子以及明确的定时器控制接口。

DOM 和事件测试。

支持类似于浏览器的工作流程:选择器、内联脚本执行、事件传播以及DOM更新。

快速的本地反馈。

该系统提供快速的反馈循环,用于以表单为中心的UI测试,同时确保错误输出信息集中于选择器和预期/实际值。

快速入门指南。

使用HTML创建测试框架,执行交互操作,并验证DOM结果。从一个简单的测试用例开始,然后通过添加定时器和模拟API来扩展其功能。

安装。

将 "browser_tester" 添加到 cargo 依赖项中。

基本示例。

主要API接口。

整合行动与声明。

核心 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` 函数来模拟网络请求的响应和对话结果。

跟踪与诊断。

启用跟踪日志,并在测试失败时提取事件/计时器流程信息。这对于调试事件顺序和默认行为非常有用。

运行时策略。

  • `eval` 功能被故意禁用,以确保系统的安全性和可预测性。
  • 这个运行时环境主要针对实际的测试场景,并非完全兼容所有浏览器。
  • 外部网络输入/输出功能不在此范围之内;请使用模拟数据来覆盖测试用例。

如果您需要为您的测试套件添加额外的浏览器API,请提交一个问题,并在问题中提供一个最小化的测试用例,以便我们讨论其适用范围和优先级。