配置 Playwright
預設情況下,TypeScript 無法辨識提供者選項及額外的 expect 屬性。請務必參考 @vitest/browser/providers/playwright,以便 TypeScript 能載入自訂選項的定義:
/// <reference types="@vitest/browser/providers/playwright" />或者,您也可以將其加入 tsconfig.json 檔案中的 compilerOptions.types 欄位。請注意,在此欄位中指定任何值將會禁用 @types/* 套件的自動載入。
{
"compilerOptions": {
"types": ["@vitest/browser/providers/playwright"]
}
}Vitest 會開啟一個單一頁面,以在同一個檔案中執行所有測試。您可以在 instances 中設定 launch、connect 和 context 屬性:
import { defineConfig } from 'vitest/config'
export default defineConfig({
test: {
browser: {
instances: [
{
browser: 'firefox',
launch: {},
connect: {},
context: {},
},
],
},
},
})WARNING
在 Vitest 3 之前,這些選項位於 test.browser.providerOptions 屬性中:
export default defineConfig({
test: {
browser: {
providerOptions: {
launch: {},
context: {},
},
},
},
});providerOptions 已被棄用,並由 instances 取代。
launch
這些選項直接傳遞至 playwright[browser].launch 命令。您可以在 Playwright 文件中查閱該命令及可用參數的更多資訊。
WARNING
Vitest 將忽略 launch.headless 選項。建議改用 test.browser.headless。
請注意,如果啟用 --inspect,Vitest 會將偵錯旗標加入 launch.args。
connect 3.2.0+
這些選項直接傳遞至 playwright[browser].connect 命令。您可以在 Playwright 文件中查閱該命令及可用參數的更多資訊。
WARNING
由於此命令會連線至現有的 Playwright 伺服器,因此任何 launch 選項都將被忽略。
context
Vitest 透過呼叫 browser.newContext() 為每個測試檔案建立新的上下文。您可以透過指定自訂參數來設定此行為。
TIP
請注意,上下文是為每個測試檔案所建立,而非像 Playwright 測試執行器那樣為每個測試所建立。
WARNING
Vitest 始終將 ignoreHTTPSErrors 設定為 true,以應對您的伺服器透過 HTTPS 提供服務的情況;並將 serviceWorkers 設定為 'allow',以支援透過 MSW 進行模組模擬。
也建議使用 test.browser.viewport 而非在此處指定,因為當測試在無頭模式下執行時,該設定將會失效。
actionTimeout 3.0.0+
- 預設值: 無時間限制,3.0.0 之前為 1 秒
此值設定 Playwright 等待所有輔助功能檢查通過及動作實際完成的預設逾時時間。
您也可以為每個動作設定逾時:
import { page, userEvent } from '@vitest/browser/context';
await userEvent.click(page.getByRole('button'), {
timeout: 1_000,
});