在無頭瀏覽器中進行測試
透過環境變數配置
預設情況下,測試會在 Node.js 上執行。若要以瀏覽器為目標,您可以使用 WASM_BINDGEN_USE_BROWSER
環境變數
WASM_BINDGEN_USE_BROWSER=1 cargo test --target wasm32-unknown-unknown
以下組態可用
WASM_BINDGEN_USE_DEDICATED_WORKER
:適用於專用 WorkerWASM_BINDGEN_USE_SHARED_WORKER
:適用於共享 WorkerWASM_BINDGEN_USE_SERVICE_WORKER
:適用於服務 WorkerWASM_BINDGEN_USE_DENO
:適用於 DenoWASM_BINDGEN_USE_NODE_EXPERIMENTAL
:適用於 Node.js 但作為 ES 模組
強制組態
也可以使用 wasm_bindgen_test_configure!
巨集強制測試在特定環境中執行
# #![allow(unused_variables)] #fn main() { use wasm_bindgen_test::wasm_bindgen_test_configure; // Run in a browser. wasm_bindgen_test_configure!(run_in_browser); // Or run in a dedicated worker. wasm_bindgen_test_configure!(run_in_dedicated_worker); // Or run in a shared worker. wasm_bindgen_test_configure!(run_in_shared_worker); // Or run in a service worker. wasm_bindgen_test_configure!(run_in_service_worker); // Or run in Node.js but as an ES module. wasm_bindgen_test_configure!(run_in_node_experimental); #}
請注意,這將忽略任何設定的環境變數。
組態使用哪個瀏覽器
若要控制無頭測試使用哪個瀏覽器,請在 wasm-pack test
中使用適當的標誌
-
wasm-pack test --chrome
— 在 Chrome 中執行測試。您的機器必須安裝 Chrome。 -
wasm-pack test --firefox
— 在 Firefox 中執行測試。您的機器必須安裝 Firefox。 -
wasm-pack test --safari
— 在 Safari 中執行測試。您的機器必須安裝 Safari。
如果傳遞多個瀏覽器標誌,則測試將在每個瀏覽器下執行。
在無頭瀏覽器中執行測試
一旦組態為在無頭瀏覽器中執行測試,只需使用適當的瀏覽器標誌和 --headless
執行 wasm-pack test
wasm-pack test --headless --chrome --firefox --safari
組態無頭瀏覽器功能
將檔案 webdriver.json
新增到您的 crate 的根目錄。每個瀏覽器都有自己的功能區段。例如
{
"moz:firefoxOptions": {
"prefs": {
"media.navigator.streams.fake": true,
"media.navigator.permission.disabled": true
},
"args": []
},
"goog:chromeOptions": {
"args": [
"--use-fake-device-for-media-stream",
"--use-fake-ui-for-media-stream"
]
}
}
可以在這裡找到支援的完整功能清單
請注意,headless
引數始終對兩個瀏覽器都啟用。
除錯無頭瀏覽器測試
省略 --headless
標誌將會停用無頭模式,並讓您在瀏覽器的開發人員工具中除錯失敗的測試。
附錄:在沒有 wasm-pack
的情況下在無頭瀏覽器中進行測試
⚠️ 建議使用 wasm-pack
來使用 wasm-bindgen-test
,因為它將處理安裝測試執行器、安裝瀏覽器的 WebDriver 用戶端,以及通知 cargo
如何使用自訂的測試執行器。 但是,如果您願意,也可以自行管理這些任務。
組態使用哪個瀏覽器
如果設定了以下其中一個環境變數,則將使用對應的 WebDriver 和瀏覽器。如果未設定這些環境變數,則將在 $PATH
中搜尋合適的 WebDriver 實作。
GECKODRIVER=path/to/geckodriver
使用 Firefox 進行無頭瀏覽器測試,並使用 geckodriver
作為其 WebDriver。
firefox
二進位檔必須在您的 $PATH
中。
CHROMEDRIVER=path/to/chromedriver
使用 Chrome 進行無頭瀏覽器測試,並使用 chromedriver
作為其 WebDriver。
chrome
二進位檔必須在您的 $PATH
中。
SAFARIDRIVER=path/to/safaridriver
使用 Safari 進行無頭瀏覽器測試,並使用 safaridriver
作為其 WebDriver。
這預設安裝在 Mac OS 上。它應該能夠依預設找到您的 Safari 安裝。
在遠端無頭瀏覽器中執行測試
測試可以在遠端 webdriver 上執行。為此,上述環境變數必須設定為遠端 webdriver 的 URL。例如
CHROMEDRIVER_REMOTE=http://remote.host/
在無頭瀏覽器中執行測試
一旦組態為在無頭瀏覽器中執行測試,並且設定了適當的環境變數,則執行無頭瀏覽器的測試與執行 Node.js 的測試相同
cargo test --target wasm32-unknown-unknown
除錯無頭瀏覽器測試
設定 NO_HEADLESS=1
環境變數,瀏覽器測試將不會以無頭模式執行。相反地,測試將啟動一個本機伺服器,您可以在您選擇的 Web 瀏覽器中造訪該伺服器,且不應使用無頭測試。然後,您可以使用瀏覽器的開發人員工具進行除錯。