昨天把「新增任務後重新整理,資料就消失」整理成一份可以重現的 Bug 回報,並請 Codex 先診斷、不修改程式。
今天要開始修正,但不是直接要求 Codex 加入 localStorage。
第一步是先建立一個會失敗的測試,證明目前程式確實無法保存任務,而且測試失敗的原因和昨天觀察到的現象相同。
如果先修改程式,等功能正常後才補測試,我只能看到測試在新版本通過,卻不知道它能不能抓到原本的問題。
先讓測試在舊程式上失敗,可以確認:
這個流程通常稱為 Red → Green:先看到代表問題的紅燈,再做最小修改讓它轉為綠燈。
我會沿用昨天的診斷任務,先輸入:
根據剛才確認的診斷,請先為「重新整理後任務仍然存在」建立一個會失敗的測試。
測試情境:
1. 以乾淨的瀏覽器儲存狀態開始
2. render Issue Tracker
3. 新增一筆「修正登入頁面」
4. 確認任務已顯示
5. 模擬頁面重新載入,重新建立 App
6. 確認同一筆任務仍然顯示
要求:
- 沿用現有測試工具,不新增套件
- 從使用者可觀察的畫面驗證行為
- 不直接呼叫未來才會建立的儲存函式
- 每個測試前清除 localStorage,避免案例互相影響
- 目前只允許修改測試檔案,不要修改產品程式
- 執行這個測試並保留完整失敗輸出
完成後請停下來,不要修正功能。
請說明測試修改在哪裡、如何模擬重新載入,以及為什麼目前的失敗和回報問題相同。
失敗測試確認完成後,才繼續輸入第二段 Prompt:
剛才的失敗測試已確認能重現「重新整理後任務消失」。
現在請做最小修正,讓任務資料保存在瀏覽器的 localStorage,並在 App 啟動時讀回。
要求:
- 遵守 AGENTS.md
- 不新增套件
- 沿用目前的任務資料結構
- 不實作編輯、刪除、搜尋、篩選、排序或拖曳
- 不進行無關重構或重新設計畫面
- 保留並通過剛才的失敗測試
- 避免不同測試共用殘留的 localStorage 資料
完成後請執行:
1. 持久化相關測試
2. 完整測試
3. lint
4. build
最後請回報:
- 實際修改的檔案
- 資料寫入與讀回的流程
- 修正前後的測試結果
- 所有驗證指令與結果
- 是否還有未處理的風險
這是我的 repo,在裡面的 commit 找到 "fix bug" 就是這篇文章寫完時的狀態。
持久化測試通過後,我還會確認三件事。
新增 localStorage 不能破壞原本的新增任務、空白驗證與清空輸入欄位等行為。
啟動 Issue Tracker,新增幾筆任務後重新整理頁面,確認內容仍然存在。接著關閉並重新開啟頁面,再檢查一次。
localStorage 會留在同一個測試環境中。如果案例執行前沒有清除資料,單獨執行可能通過,和其他測試一起執行卻可能失敗,或因殘留資料得到假成功。
因此要確認每個案例都能從可預期的儲存狀態開始。
今天沒有直接叫 Codex「幫我修好」,而是把任務分成兩個階段:先建立能穩定重現問題的失敗測試,確認紅燈原因正確後,再做最小修正讓同一個測試轉為綠燈。