针对 Fuchsia 的脚本层 (SL4F)

Fuchsia 脚本层 (SL4F) 是一种 HTTP 服务器,可让端到端测试访问 Fuchsia 设备上的驱动程序服务(例如音频、屏幕、输入、诊断和 WebDriver)。

端到端测试在宿主机上运行,这与其他提供给 Fuchsia 设备并在设备上运行的 Fuchsia 软件包不同。如需从远程测试宿主机触发 Fuchsia 设备上的操作(例如“在屏幕上向右滑动”),端到端测试会向设备上运行的 SL4F 发送 JSON-RPC 请求。然后,SL4F 会将这些请求转换为 Fuchsia 等效的 FIDL 命令,以用于设备上的各种驱动程序服务。

Fuchsia 的端到端测试支持系统
图 1. Fuchsia 的端到端测试支持服务示意图。

不过,并非所有从测试主机到 Fuchsia 设备的请求都需要通过 SL4F。例如,如果测试宿主机可以访问设备上这些驱动程序的端口,则测试可以通过单独的专用 HTTP 连接直接访问 Fuchsia 设备的 Flutter 驱动程序或 Chrome 驱动程序(请参阅图 1)。如果不是,测试设置可能需要端口转发。

端到端测试与 SL4F 之间的交互

以下序列逐步介绍了端到端测试如何在 Fuchsia 设备上触发“在屏幕上向右滑动”操作:

  1. 端到端测试在宿主机上运行。
  2. 测试通过 SSH 在 Fuchsia 设备上启动 SL4F。
  3. SL4F 在设备上监听端口 80 上的 HTTP 请求。
  4. 测试会向 SL4F 发送 JSON-RPC 请求,要求设备执行“在屏幕上向右滑动”操作。
  5. SL4F 的输入 facade 会将请求解析为 FIDL 命令。
  6. 设备执行“在屏幕上向右滑动”操作。

一旦启动,SL4F 将继续在设备上运行并接受请求,直到测试终止 SL4F。

SL4F 中的外观

Fuchsia 扩展了 SL4F 的功能,引入了测试 Fuchsia 产品所需的额外编排和检查机制。SL4F 将此新功能结构化为称为 facade 的分组。每个外观都会公开一个或多个 JSON-RPC 方法。

为了让端到端测试在 Fuchsia 设备上触发操作和验证状态,外观提供了以下机制:

  • 编排:外观是 FIDL API 的封装容器,可在 Fuchsia 设备上作为 HTTP 服务处理程序运行。
  • 检查:一个外观会跟踪 Fuchsia 设备上的异步事件。

SL4F 目前支持多种外观,例如:

  • 音频外观 - 插入和捕获音频。
  • 屏幕外观 - 捕获屏幕。
  • 输入外观 - 在触摸屏上注入输入手势。
  • 诊断 facade - 从组件读取由 Inspect 发布的数据。
  • WLAN facade - 用于操纵无线局域网设备的状态。
  • Netstack facade - 用于操作网络接口。
  • 文件外观 - 在设备的存储空间中写入和读取文件。
  • WebDriver facade - 在 Chrome webrunner 中启用和停用开发者工具。