Playwright 1.63 可持久化 OPFS:隔離代理區域測試狀態
Microsoft 於 2026 年 9 月 4 日發布 Playwright 1.63。瀏覽器內容的 storageState() API 新增可選的 opfs 參數,可將來源私有檔案系統納入儲存狀態快照,再復原到後續瀏覽器內容。

當獲准測試依賴網站寫入 OPFS 的檔案時,這項能力很實用;但它也擴大了代理測試可跨執行攜帶的本機狀態。若同一快照被不同國家、帳號或實驗組重複使用,看似由地理位置造成的結果,其實可能來自先前復原的本機檔案。
公開資料說明:Microsoft Playwright「Playwright v1.63.0」,發布於 2026 年 9 月 4 日;Microsoft Playwright「BrowserContext API reference」,查閱於 2026 年 9 月 10 日。
1.63 改變了什麼
Playwright 的儲存狀態原本就能保存 Cookie 和 local storage,並可選擇包含 IndexedDB 與虛擬 WebAuthn 憑證。1.63 再加入 OPFS:
await context.storageState({
path: statePath,
opfs: true
});
官方 API 說明指出,opfs: true 會把來源私有檔案系統放入快照;暫時性 WebKit 內容目前不支援 OPFS。
此參數必須明確啟用,不會因保存儲存狀態就自動開啟。但升級審查仍很重要:共用 helper 或框架封裝可能集中啟用,而單一測試中看不到該選項。
為何代理測試會被狀態污染
代理改變網路路徑與可能呈現的出口地區,卻不會自動清除瀏覽器本機狀態。復原的 OPFS 屬於特定來源,應用程式可能把其中檔案與 Cookie、IndexedDB、local storage、伺服器端帳號狀態及網路訊號共同使用。
例如,美國測試把市場目錄寫入 OPFS;工具保存包含 OPFS 的狀態;歐洲測試復原同一檔案;應用程式優先讀取舊內容;最後錯誤判定歐洲代理收到美國內容。代理可能運作正常,真正問題是瀏覽器實驗組不乾淨。
反過來,若重現流程確實依賴 OPFS,但工具默默省略它,即使 Cookie 和 local storage 已復原,流程仍可能失敗。
盤點每一層狀態
不要把 storageState.json 當成單一登入檔案。分別記錄 Cookie、local storage、IndexedDB、OPFS、虛擬憑證和伺服器端帳號狀態,並說明加入理由、敏感等級及保存期限。
包含憑證或應用資料的快照不能提交至原始碼倉庫、輸出到 CI 日誌,也不能在未經批准的實驗組之間重複使用。
建立乾淨與復原狀態矩陣
升級測試應將路由和狀態分開。每個目標地區至少執行:
- 全新內容的直連對照;
- 全新內容透過區域代理;
- 僅復原 Cookie;
- 必要時復原 Cookie 與 IndexedDB;
- 明確需要時才加入 OPFS;
- 同地區建立並於同地區復原;
- 跨地區復原作為負向測試;
- 分別測試新帳號與既有帳號。
固定瀏覽器版本、目標 URL、代理路由、視窗、語言、時區、標頭和測試資料,每次只變更一個狀態維度。涉及貨幣、稅費和供應範圍時,可搭配區域代理在地價格驗證指南。
依實驗組命名狀態
避免使用通用 auth.json。應依允許共享的維度整理:
state/<環境>/<帳號類別>/<市場>/<實驗>/<瀏覽器>.json
路徑本身不要包含密碼或個人識別。受保護清單應記錄狀態 ID、建立與到期時間、環境、瀏覽器版本、允許來源、市場實驗組、帳號類別、實驗 ID、包含的狀態類型及檔案摘要。任務與清單不符時直接拒絕執行。
證明 OPFS 是否改變結果
在自有或已獲授權的來源上,透過應用程式正常行為寫入無害 canary 檔案。分別保存包含與不包含 OPFS 的快照,復原至新內容,再確認 canary 是否存在。
真實工作流程應比較最終 URL、重新導向鏈、回應狀態、內容摘要、應用顯示的市場與幣別、代理出口地區、OPFS canary、伺服器端帳號狀態,以及去識別後的截圖或 trace。
不得查看或擷取其他使用者資料。測試目的是驗證自身狀態邊界,不是探索目標內部檔案。
將復原檔案視為不可信輸入
OPFS 快照可能比建立它的工作階段存活更久,因此應加密儲存與傳輸、依環境與實驗組限制存取、復原前驗證完整性、設定短效期、隔離正式與低階環境資料、排除客戶資料,並在憑證變更後輪替。
不要讓多個平行 worker 共同寫入一個狀態檔。每個 worker 應取得不可變輸入或獨立副本,避免一個測試破壞另一個測試的前提。
明確標示瀏覽器能力邊界
API 文件說明暫時性 WebKit 內容目前不支援 OPFS。不要默默跳過判定,應將該組合標記為不支援、改用其他測試設計,或只在受支援瀏覽器執行依賴 OPFS 的工作流程。
主測試前先執行能力探針,並把結果與瀏覽器版本一起保存;不能假設不同引擎會以完全相同方式序列化應用狀態。
升級發布步驟
- 盤點所有呼叫或復原
storageState()的 helper。 - 在 canary 環境固定 Playwright 1.63 與瀏覽器版本。
- 檢查清單是否意外包含 OPFS。
- 在受控來源執行乾淨與復原矩陣。
- 驗證實驗組鍵可阻止跨地區、跨帳號重複使用。
- 明確測試暫時性 WebKit 的限制。
- 檢查 CI 日誌、trace 和上傳附件是否洩漏狀態。
- 為狀態錯配、陳舊內容和附件洩漏設定失敗門檻。
- 每次只擴展一個地區或工作流程。
- 保留舊版本與舊狀態格式的回復路徑。
網路層驗證可搭配代理回應新鮮度指南,避免將復原的本機檔案誤判為新的區域回應。
檢查清單
- [ ] OPFS 是有意啟用且已有文件。
- [ ] 每種儲存狀態都有負責人和保留期。
- [ ] 檔案依環境、帳號、市場和實驗分組。
- [ ] 工具拒絕跨實驗組復原。
- [ ] 乾淨內容與復原內容分別測試。
- [ ] 使用獲准 canary 證明 OPFS 是否復原。
- [ ] 代理地區與瀏覽器狀態獨立驗證。
- [ ] 內容新鮮度和市場判定使用多個訊號。
- [ ] 暫時性 WebKit 限制已清楚標示。
- [ ] 附件已加密、受控且排除在原始碼倉庫外。
- [ ] 平行 worker 無法修改共用狀態。
- [ ] 已記錄回復路徑。
常見問題
Playwright 1.63 會自動在所有儲存狀態中加入 OPFS 嗎?
不會,opfs 是可選參數。但共用 helper 可能集中啟用,升級時仍需審查。
更換代理地區會清除 OPFS 嗎?
不會。代理控制網路路由,本機狀態必須由測試工具明確隔離或復原。
OPFS 會包含驗證資訊嗎?
取決於應用程式。分類完成前應將快照視為敏感資料,不能因為它不是 Cookie 就假設安全。
合規說明
只在獲准的系統與帳號上使用代理和瀏覽器自動化。不得利用儲存狀態繞過驗證、同意流程、地區控制、速率限制、購買限制或反詐欺系統。最小化個人資料、保護保存的憑證和檔案、遵守目標條款與隱私法規,並在核准用途結束後刪除測試附件。