"Web"
- Playwright 瀏覽器驗證流程
用 Playwright 驗證 web 版本的 UI 行為 — test 結構、selector 策略、和 widget test 的互補關係
- U.C9 提取成功卻誤報失敗 — 結果通知鏈路被搶通道
操作實際成功、資料已寫入,UI 卻顯示失敗時使用。多 context 的訊息通道語意(誰負責回應)是結果通知鏈路的一部分,async listener 搶通道會把 undefined 當成回應送回
- U.C10 Service Worker 冷啟動期間的假離線 — initializing 狀態未建模
查詢對象有獨立生命週期(service worker、遠端服務)的畫面,把「還不知道」與「離線」合併就會把慢啟動呈現成假離線 — initializing 是真實狀態、要進狀態矩陣、timeout 是它的退出路徑
- U.C11 抓到 96/928 本就顯示完成 — 完成判定的證據強度不足
批次 / 遍歷類操作宣告完成、實際只處理了一部分:「連續 N 輪沒有變化」是暫時停滯的訊號、不是窮盡的證據 — 完成判定需要獨立的窮盡證據(總數對照、終止標記)
- U.C12 匯入空檔會清空書庫 — 破壞性操作的確認與安全預設
設計會覆蓋 / 清空既有資料的操作時使用。破壞性操作 gate 有兩層:確認使用者意圖、加上確認機制本身故障時的安全預設 — 故障要倒向不可逆性低的那邊
- U.C13 匯入錯誤卡片出現「重新載入擴充功能」— 錯誤行動與層級不對位
錯誤畫面上的行動比錯誤本身更重(重載 app、重啟、重裝)是不對位訊號 — 行動的破壞半徑要與錯誤發生的層級相稱,通用錯誤容器會把最重的行動配給所有錯誤
- U.C14 hash SPA 的 pathname 永遠是根路徑 — 路由辨識遺漏 fragment
依 URL 判斷「目前在哪一頁」的功能對 hash-based SPA 失效時使用。web 路由有 path-based 與 hash-based 兩套慣例,跨 app 讀取對方 URL 時對方的路由形態是輸入規格的一部分
- Same-Origin Policy
前端送得出請求卻拿不到回應、或要判斷跨站防護的前提還在不在時,用來定位瀏覽器隔離的是讀取而非送出
- Cross-Site Request Forgery
憑證靠瀏覽器自動附上時,用來判斷攻擊者不必讀到憑證就能做到什麼、以及各層防護的缺口分別落在哪
- Cross-Site Scripting
要判斷憑證放在 JavaScript 讀得到的位置有多大代價、或哪些防護以「攻擊者讀不到」為前提時,用來定位這個攻擊面取得的是整個來源的能力
- Registrable Domain
判斷兩個主機名算不算同一方、或某個跨站防護的信任邊界實際涵蓋誰時,用來定位「站」的切點在哪一層
- Content Security Policy
要限制注入成立之後那段程式碼能做什麼、或判斷既有政策實際擋住了誰時,用來定位它承擔哪一層而不承擔哪一層
- Zellij Web Client 外網連線教學
要讓別人透過瀏覽器連進你的 Zellij session、需要設定 SSL 憑證/防火牆/token 時回來讀