Fuchsia 的指令碼層 (SL4F) 是一項 HTTP 伺服器,可讓端對端測試在 Fuchsia 裝置上存取驅動程式服務 (例如音訊、螢幕、輸入、診斷和 WebDriver)。
在主體機器上執行端對端測試,這點與其他在 Fuchsia 裝置上執行,並於裝置上執行的其他 Fuchsia 套件不同。如要透過遠端測試主機觸發 Fuuchsia 裝置上的動作 (例如「在螢幕上向右滑動」),端對端測試會將 JSON-RPC 要求傳送給裝置上執行的 SL4F。然後,SL4F 會將這些要求轉譯為與 Fuchsia 對等的 FIDL 指令,用於裝置上各種驅動程式庫服務。
不過,從測試主機傳送至 Fuchsia 裝置的所有要求不一定都必須通過 SL4F。舉例來說,如果測試主機可存取裝置上的這些驅動程式通訊埠,測試可以直接透過獨立的專用 HTTP 連線存取 Fuchsia 裝置的 Flutter 驅動程式庫或 Chrome 驅動程式庫 (請參閱圖 1)。如果不行,測試設定可能需要進行通訊埠轉送。
端對端測試與 SL4F 之間的互動
以下序列會逐步說明端對端測試如何在 Fuchsia 裝置上觸發「在螢幕上向右滑動」動作:
- 在主體機器上執行端對端測試。
- 測試會透過 SSH 在 Fuchsia 裝置上啟動 SL4F。
- SL4F 會在裝置的通訊埠 80 上監聽 HTTP 要求。
- 測試會將 JSON-RPC 要求傳送至 SL4F,要求裝置上的「向右滑動」動作。
- SL4F 的「輸入門面」會將要求剖析為 FIDL 指令。
- 裝置會執行「在螢幕上向右滑動」動作。
啟動之後,SL4F 會繼續在裝置上執行,並接受要求,直到測試終止 SL4F。
SL4F 中的立面
Fuchsia 擴充 SL4F 的功能,引進測試 Fuchsia 產品所需的其他自動化調度管理和檢查機制。SL4F 會將這項新功能分割為「立面門」的分組。每個門面都會公開一或多個 JSON-RPC 方法。
要讓端對端測試在 Fuchsia 裝置上觸發動作及驗證狀態,門面提供以下機制:
- 自動化調度管理:門面是 FIDL API 的包裝函式,在 Fuchsia 裝置上以 HTTP 服務處理常式的形式執行。
- 檢查:門面追蹤 Fuchsia 裝置上的非同步事件。
SL4F 目前支援多種門面,例如:
- 音訊淡出 - 插入及擷取音訊。
- 螢幕表面 - 擷取螢幕畫面。
- 輸入立面 - 在觸控螢幕上插入輸入手勢。
- 診斷途徑 - 讀取「檢查元件」發布的資料。
- Wlan 立面 - 操控無線 LAN 裝置的狀態。
- 網路堆疊 facade - 操控網路介面。
- 檔案立面 - 在裝置儲存空間中寫入及讀取檔案。
- WebDriver 立面元件 - 在 Chrome WebRunner 中啟用及停用開發人員工具。