ผลตรวจ Test
ผลทดสอบแต่ละรอบ จัดเป็นหัวข้อตามเรื่องที่ตรวจ แต่ละข้อบอกเป็นประโยคว่าตรวจอะไร เลือกดูเฉพาะเรื่องของ BA หรือ Technical ได้
ทั้งหมด 219
สำหรับ BA 146
สำหรับ Technical 118
ผ่าน
Mockup workspace: Sitemap / Page flow / Screen Listing
31 ต.ค. 2569, ผ่าน 7 จาก 7 ข้อ
Mockup browser 43 ข้อ + regression 70/25/9 รวม 147 ข้อผ่าน พร้อม Go/race/vet และ artifact validation
1 หัวข้อที่ตรวจ
ข้อมูลและการบันทึกร่วม
Technical
ตรวจ catalog/API/storage และไม่รบกวนเครื่องมือเดิม
ตรวจ 170 screen records, 990 preview variants, 6 component contracts/previews และ 162 flow mappings
ผ่าน
go test -race -count=1 ./... และ go vet ./... ผ่าน รวม catalog/reference validation ทุก flow
ผ่าน
Same-origin write, invalid references, path/symlink confinement และ concurrent stale saves ถูกตรวจ
ผ่าน
Saved graph ไม่ถูกแทนที่เมื่อ source เปลี่ยน และ JSON เสียไม่ถูก reset เงียบ
ผ่าน
Save/Restore เก็บ revision snapshots และปฏิเสธ stale save โดยคง local edits
ผ่าน
mockups-check.mjs ผ่าน 43 assertions; Use cases 70; workflow review 25; task briefs 9
ผ่าน
ตรวจ GET บน 8099 ครบเมนู/guide/catalog/drafts และไม่มี real mockup graph ถูกสร้างโดย tests
ผ่าน
สำหรับ Technical: คำสั่งและผลดิบ
คำสั่ง python3 mockups/tools/build_catalog.py --check; cd tracker && go test -race -count=1 ./... && go vet ./...; Playwright mockups-check/usecases-check/workflow-review-check/task-brief-check บน temporary data
ผลจากเครื่องมือทดสอบ ผ่าน 147, ไม่ผ่าน 0, ข้าม 0
หมายเหตุ 147 คือ browser assertions 43+70+25+9; Go/data checks เพิ่มแยกกัน ทดสอบเขียนเฉพาะ /tmp/tnsu-mockup-final/data ไม่ approve Use cases จริง
ผ่าน
ทบทวน Use cases และ canonical decision diagrams
31 ต.ค. 2569, ผ่าน 7 จาก 7 ข้อ
ตรวจครบ 162 กรณี/47 decisions พร้อม browser 95 assertions โดยใช้ temporary data เท่านั้น
1 หัวข้อที่ตรวจ
โครงสร้าง แผนภาพและการถดถอย
Technical
รักษาความสอดคล้องของต้นฉบับ ภาพ และ approval/history
go test -race -count=1 ./... และ go vet ./... ผ่าน
ผ่าน
ทุกขั้นทั้ง 162 use cases เข้าถึงได้ ไม่มี dangling edge/dead end และมีทางถึง terminal outcome
ผ่าน
เงื่อนไข workflow ที่เปลี่ยนทำ approval stale โดยไม่เขียนทับ saved diagram
ผ่าน
สร้าง generated catalog ซ้ำได้ผลเหมือนเดิมทั้ง 37 ไฟล์
ผ่าน
usecases-check.mjs ผ่าน 70 assertions รวม grid zoom export PNG และ revision/approval
ผ่าน
workflow-review-check.mjs ผ่าน 25 assertions รวม branch labels, reset, saved revision, fit และ mobile
ผ่าน
ตรวจหน้า 8099 แบบอ่านอย่างเดียวแสดง canonical draft รุ่นใหม่โดยไม่สร้าง approval จริง
ผ่าน
สำหรับ Technical: คำสั่งและผลดิบ
คำสั่ง python3 docs/agent/tools/check_use_case_review.py; cd tracker && go test -race -count=1 ./... && go vet ./...; Playwright usecases-check.mjs + workflow-review-check.mjs บน temporary server
ผลจากเครื่องมือทดสอบ ผ่าน 95, ไม่ผ่าน 0, ข้าม 0
หมายเหตุ 95 คือ browser assertions (70+25); Go และ data checks ตรวจเพิ่มแยกกัน การรันทดสอบก่อนหน้าพบ pointer นอก viewport และแก้ให้ scroll canvas ก่อนลากแล้วรันครบผ่าน ดู P-013
ผ่าน
ปิดงานจัดทำ Role/Security Matrix ฉบับร่าง
31 ต.ค. 2569, ผ่าน 4 จาก 4 ข้อ
ตรวจหลักฐานฉบับร่างและเปลี่ยนสถานะ Done เฉพาะ T-201/T-202 โดยคงรายการรอ BA/Security ยืนยัน
1 หัวข้อที่ตรวจ
สถานะและหลักฐาน
BA และ Technical
ปิดงาน Agent ที่เสร็จแล้วโดยไม่อนุมัติข้อกำหนดแทนผู้ตรวจ
Role/Security Matrix draft v0.1 มีไฟล์และหัวข้อครบตาม checkpoint C-004
ผ่าน
เปลี่ยนเป็น Done เฉพาะ T-201/T-202 และเวลา finished อ้างอิง C-004
ผ่าน
ข้อมูล review และ task อื่นทุก field คงเดิม
ผ่าน
go test -count=1 ./... ผ่าน
ผ่าน
สำหรับ Technical: คำสั่งและผลดิบ
คำสั่ง ตรวจ artifacts/status diff และ cd tracker && go test -count=1 ./...
ผลจากเครื่องมือทดสอบ ผ่าน 4, ไม่ผ่าน 0, ข้าม 0
หมายเหตุ Done คือจัดทำฉบับร่างเสร็จ ไม่ใช่ยืนยัน business/security requirements; review.todo คงไว้
ผ่าน
ตรวจส่งมอบงานที่ Reviewed แล้ว
31 ต.ค. 2569, ผ่าน 9 จาก 9 ข้อ
Go race/vet ผ่าน Browser 70+9 รวม 79 assertions ผ่าน ใช้ข้อมูลชั่วคราวเพื่อปิดชุดงาน T-408–T-417
2 หัวข้อที่ตรวจ
Use cases และ diagram
BA และ Technical
ตรวจฟีเจอร์ที่ผ่านรีวิวทั้งชุดก่อนเก็บ Git
ตารางแบ่ง module/tabs/filter/collapse และ editor ทั้งชุดผ่าน 70 assertions
ผ่าน
Save/revision history/rollback และ approval invalidation ทำงานครบ
ผ่าน
PNG ส่งออกครบและ background White/Transparent ถูกต้องจริง
ผ่าน
UI review panels, dark mode, mobile และ unsaved edits ผ่าน
ผ่าน
Task briefs และคุณภาพโค้ด
BA และ Technical
รักษาผลรีวิวและรายละเอียดงานที่ตรวจแล้ว
Task briefs ผ่าน 9 assertions รวม T-303 และคำถาม 39 ข้อ
ผ่าน
Go test -race -count=1 ./... ผ่าน
ผ่าน
go vet ./... ผ่าน
ผ่าน
JSON ทุกไฟล์ JavaScript syntax และ git diff --check ผ่าน
ผ่าน
สถานะ T-408–T-417 ยังเป็น Reviewed และไม่มี Reject/Hold ค้าง
ผ่าน
สำหรับ Technical: คำสั่งและผลดิบ
คำสั่ง cd tracker && go test -race -count=1 ./... && go vet ./...; node tracker/e2e/usecases-check.mjs <chrome> <temporary-server> <shots> <playwright> <temporary-data>; node tracker/e2e/task-brief-check.mjs <chrome> <temporary-server> <shots> <playwright>
ผลจากเครื่องมือทดสอบ ผ่าน 79, ไม่ผ่าน 0, ข้าม 0
หมายเหตุ 79 คือจำนวน browser assertions; Go suite ตรวจแยก ไม่มีการอนุมัติหรือแก้ diagram จริงใน repository
ผ่าน
Task briefs และ stakeholder questions
30 ต.ค. 2569, ผ่าน 5 จาก 5 ข้อ
Go race/vet ผ่าน และ browser read-only 9 ข้อผ่าน ครอบคลุม task brief, T-303, questions, mobile และ SQL Server decision
1 หัวข้อที่ตรวจ
โครงสร้างข้อมูลและการแสดงผล
Technical
คง review history และไม่บันทึกข้อสรุปที่ไม่มีคำตอบ
Go test -race -count=1 ./... และ go vet ./... ผ่าน
ผ่าน
รหัสคำถามไม่ซ้ำ dependencies อ้างอิง task ที่มีจริง และคำถาม answered ต้องมี answer
ผ่าน
SSR Task แสดง description/deliverables/questions/ผู้ตอบครบ พร้อม escape ข้อความ
ผ่าน
refs ทุกไฟล์ของ task ที่เติมรายละเอียดมีอยู่จริง
ผ่าน
Browser read-only 9 assertions ผ่าน ไม่เปลี่ยนข้อมูล/ผลรีวิว
ผ่าน
สำหรับ Technical: คำสั่งและผลดิบ
คำสั่ง cd tracker && go test -race -count=1 ./...; go vet ./...; node e2e/task-brief-check.mjs <headless-shell> <base-url> <output-dir> <playwright-module>
ผลจากเครื่องมือทดสอบ ผ่าน 9, ไม่ผ่าน 0, ข้าม 0
หมายเหตุ passed 9 คือ browser assertions; งาน hosting/data model/scope ยังคง todo ตามเดิม การเติม brief ไม่ใช่การปิดงานเหล่านั้น
ผ่าน
Review panels UI และ PNG export
30 ต.ค. 2569, ผ่าน 5 จาก 5 ข้อ
Browser 70 ข้อผ่าน รวมไฟล์ PNG จริง และ UI Approval/History ทั้งจอเล็กและโหมดมืด
1 หัวข้อที่ตรวจ
PNG export และ regression
Technical
ส่งออกได้ครบและรักษาความโปร่งใสจริง
เปิด Export PNG dialog และเลือกพื้นหลังได้
ผ่าน
PNG พื้นหลัง White มี pixel มุมเป็น RGBA 255,255,255,255
ผ่าน
PNG Transparent มี alpha channel ที่มุมเท่ากับ 0
ผ่าน
ขนาด PNG ตรงกับ full graph bounds แม้ซูม viewport
ผ่าน
Browser regression ทั้ง 70 ข้อผ่าน และ JavaScript syntax ถูกต้อง
ผ่าน
สำหรับ Technical: คำสั่งและผลดิบ
คำสั่ง node tracker/e2e/usecases-check.mjs <headless-shell> <temporary-server> <screenshots> <existing-playwright> <temporary-data>
ผลจากเครื่องมือทดสอบ ผ่าน 70, ไม่ผ่าน 0, ข้าม 0
หมายเหตุ ทดสอบการ Save/Approve เฉพาะ /tmp; ตรวจ PNG ที่ดาวน์โหลดจริง ไม่ใช้ screenshot แทนการส่งออก
ผ่าน
Horizontal workflow, revision history, approval และ module groups
30 ต.ค. 2569, ผ่าน 8 จาก 8 ข้อ
Browser 59 ข้อผ่าน Go race suite และ vet ผ่าน ทดสอบการเขียน/Approve เฉพาะข้อมูล /tmp
1 หัวข้อที่ตรวจ
ความถูกต้องและ concurrent edits
Technical
ไม่ทับงาน ไม่ยืนยันข้อมูลที่ยังไม่ได้ตรวจ และไม่ลบประวัติ
Go test -race -count=1 ./... และ go vet ./... ผ่าน
ผ่าน
ทุก snapshot และ current graph เขียน atomic และอ่านกลับหลังสร้าง store ใหม่ได้
ผ่าน
การ Save พร้อมกันยอมรับครั้งเดียวและเก็บ history ถูกต้อง
ผ่าน
stale restore / stale source / stale diagram approval ถูกปฏิเสธ
ผ่าน
CSRF และ approval ที่ไม่มีชื่อหรือไม่ยืนยันถูกปฏิเสธ
ผ่าน
ไฟล์เดิมที่ยังไม่มี history ถูกเก็บ revision เดิมก่อนบันทึกถัดไป
ผ่าน
Approve ร่างเริ่มต้นจะ Save layout เป็น revision 1 ก่อนและบันทึกการยืนยัน
ผ่าน
Browser regression ครบ 59 ข้อไม่พบ JavaScript exceptions
ผ่าน
สำหรับ Technical: คำสั่งและผลดิบ
คำสั่ง cd tracker && go test -race -count=1 ./...; go vet ./...; node e2e/usecases-check.mjs <headless-shell> <temporary-server> <screenshots> <existing-playwright> <temporary-data>
ผลจากเครื่องมือทดสอบ ผ่าน 59, ไม่ผ่าน 0, ข้าม 0
หมายเหตุ 59 คือจำนวน browser assertions; tests ของ approval ไม่เคยเขียนข้อมูลจริงใน repo
ผ่าน
Use cases tabs / full descriptions / Ctrl-wheel และ Overview order
30 ต.ค. 2569, ผ่าน 6 จาก 6 ข้อ
Browser regression ผ่าน 41 ข้อ พร้อม Go race suite และ vet ผ่าน ตรวจหน้า 8099 แบบอ่านอย่างเดียวผ่าน
1 หัวข้อที่ตรวจ
การซูมและ regression
Technical
ตรวจการทำงานร่วมกับ editor และการเก็บข้อมูลเดิม
Ctrl + scroll ขึ้นซูมเข้า ลงซูมออก โดยรักษาพิกัดใต้เมาส์
ผ่าน
dropdown แสดงสเกลตรงและไม่เปลี่ยนระดับ zoom ของ browser
ผ่าน
scroll ไม่กด Ctrl ยังคง pan และ zoom/pan ไม่ทำให้ข้อมูลมีสถานะยังไม่บันทึก
ผ่าน
Integration ต้องมีชื่อระบบที่ระบุ ไม่อนุมานจากขั้นตอนระบบทั่วไป
ผ่าน
Browser ทั้ง 41 ข้อผ่าน รวมกริด เส้นหักมุม สองผู้ใช้ SSE save/reload และมือถือ
ผ่าน
Go test -race -count=1 ./... และ go vet ./... ผ่าน
ผ่าน
สำหรับ Technical: คำสั่งและผลดิบ
คำสั่ง cd tracker && go test -race -count=1 ./...; go vet ./...; node e2e/usecases-check.mjs <headless-shell> <temporary-server> <screenshots> <existing-playwright> <temporary-data>; main read-only smoke
ผลจากเครื่องมือทดสอบ ผ่าน 41, ไม่ผ่าน 0, ข้าม 0
หมายเหตุ passed 41 หมายถึง browser regression; ยังตรวจ main 8099 แบบอ่านอย่างเดียวและ Go suite แยกต่างหาก
ผ่าน
Diagram Snap to grid และเส้นเชื่อมหักมุม
30 ต.ค. 2569, ผ่าน 4 จาก 4 ข้อ
Browser ผ่าน 24 ข้อหลังปรับ Snap to grid และเส้น orthogonal บนข้อมูล /tmp
1 หัวข้อที่ตรวจ
การจัดตำแหน่งและเส้นเชื่อม
BA และ Technical
จัด diagram ให้อยู่แนวเดียวกันและอ่านทางเดินของเส้นได้ง่าย
ลาก shape แล้วพิกัดขยับตรงกริด 20 หน่วย
ผ่าน
ทุกช่วงของเส้นเชื่อมเป็นแนวนอนหรือแนวตั้ง หักมุม 90°
ผ่าน
shape ที่เพิ่มและพิกัดหลังลากยังตรงกริดหลังบันทึกและเปิดใหม่
ผ่าน
Regression browser ทั้ง 24 ข้อผ่าน รวม Fit/กึ่งกลาง ซูม ลากเส้น สองผู้ใช้ SSE undo/redo โหมดมืดและมือถือ
ผ่าน
สำหรับ Technical: คำสั่งและผลดิบ
คำสั่ง node tracker/e2e/usecases-check.mjs <headless-shell> <temporary-server> <screenshots> <existing-playwright> <temporary-data>
ผลจากเครื่องมือทดสอบ ผ่าน 24, ไม่ผ่าน 0, ข้าม 0
หมายเหตุ การลากทดสอบใช้จุดที่ไม่อยู่กึ่งกลางระหว่างสองช่องกริด เพื่อไม่ผูก assertion กับทศนิยมจาก SVG zoom
ผ่าน
Use cases Table view และ Diagram editor
30 ต.ค. 2569, ผ่าน 7 จาก 7 ข้อ
Go suite พร้อม race detector และ go vet ผ่าน Browser ผ่าน 23 ข้อบนข้อมูลสำเนา รวมการจัดกึ่งกลางและ Fit ทั้งหมดตามคำขอล่าสุด
1 หัวข้อที่ตรวจ
ความถูกต้องและการบันทึก
Technical
รักษาข้อมูลและไม่ทับงานของผู้ใช้อื่น
Go test -race -count=1 ./... ผ่านทุก test รวม SSE
ผ่าน
go vet ./... และ JavaScript syntax check ผ่าน
ผ่าน
ปฏิเสธ CSRF รหัสไม่รู้จัก JSON ผิดรูปแบบ ข้อมูลเกินขนาด shape/เส้นไม่ถูกต้อง และ revision เก่า
ผ่าน
บันทึกแล้วอ่านกลับได้ และรองรับวงจรกับ canvas ว่าง
ผ่าน
ทดสอบสองผู้ใช้จริง: บันทึกเวอร์ชันเก่าไม่ทับงานอีกคนและเก็บข้อความในหน้าจอไว้
ผ่าน
SSE จริงไม่ล้าง diagram ที่ยังไม่บันทึก
ผ่าน
Browser ทดสอบ 23 ข้อผ่านและไม่พบ JavaScript exception
ผ่าน
สำหรับ Technical: คำสั่งและผลดิบ
คำสั่ง cd tracker && go test -race -count=1 ./...; go vet ./...; node e2e/usecases-check.mjs <headless-shell> <temporary-server> <screenshots> <existing-playwright> <temporary-data>
ผลจากเครื่องมือทดสอบ ผ่าน 23, ไม่ผ่าน 0, ข้าม 0
หมายเหตุ passed 23 คือ browser assertions; Go suite ผ่านทุกข้อด้วย ใช้ Playwright ที่มีอยู่แล้ว ไม่ได้เพิ่ม dependency ให้ tracker ทดสอบการเขียนบนข้อมูล /tmp เท่านั้น
ผ่าน
Tracker โหลดช้าเมื่อเปิดหลาย tab
30 ต.ค. 2569, ผ่าน 3 จาก 3 ข้อ
ตรวจว่า tab ที่ไม่ได้ดูคืนช่องเชื่อมต่อ, กลับมาแล้ว live update ทำงานต่อ และ CSS/JS โหลดจาก cache ผ่านทุกข้อ
1 หัวข้อที่ตรวจ
Server
Technical
ยืนยันว่า server ไม่ใช่ต้นเหตุ
ทุกหน้าตอบภายใน 2 ms บนเครื่อง และ 5–25 ms ผ่าน tailnet
ผ่าน
CSS/JS ที่มี ?v ตรงกับ build ได้ Cache-Control immutable, ไม่มีหรือไม่ตรงได้ no-cacheTestStaticCaching
ผ่าน
go test ทั้งหมด27 ผ่าน
ผ่าน
ผ่าน
Timeline เต็มจอและเส้นแบ่ง
30 ต.ค. 2569, ผ่าน 4 จาก 4 ข้อ
ตรวจว่า Timeline ใช้พื้นที่เต็มจอ, chart ยืดถึงขอบขวา, ลากเส้นแบ่งได้และจำค่า, ย่อ/ขยายแถวได้ และตำแหน่งแถบยังถูกต้องหลังเปลี่ยนเป็น % ผ่านทุกข้อ
1 หัวข้อที่ตรวจ
Timeline layout
Technical
ตำแหน่งแถบยังถูกต้องหลังเปลี่ยนจาก px เป็น %
Task 1 วันกว้าง 1 หน่วยพอดี และความกว้างขั้นต่ำ = จำนวนหน่วย × 44 px
ผ่าน
Task ที่ยังเปิดอยู่ยืดถึงเส้นตอนนี้
ผ่าน
แถบ Epic ครอบทุก task ข้างใน
ผ่าน
go test ทั้งหมด26 ผ่าน
ผ่าน
ผ่าน
Timeline (Gantt chart)
30 ต.ค. 2569, ผ่าน 8 จาก 8 ข้อ
ตรวจหน้า Timeline: คำนวณช่วงเวลาและตำแหน่งแถบถูกต้องทุกระดับเวลา, ย่อ/ขยาย, เลื่อนไปที่ตอนนี้ และ Live update ไม่ทำให้ตำแหน่ง scroll หาย ผ่านทุกข้อ
2 หัวข้อที่ตรวจ
Scales (Hour / Day / Week)
BA และ Technical
สลับระดับเวลาได้และหน้าไม่หนักเกินไป
ทั้ง 3 scale เปิดได้ (HTTP 200) และ scale ที่ไม่รู้จักกลับเป็น Day
ผ่าน
Week เริ่มวันจันทร์
ผ่าน
Hour view จำกัด 21 วันรอบตอนนี้เมื่อแผนยาว
ผ่าน
Minimum span: Day 21 วัน, Week 12 สัปดาห์, Hour 48 ชม. ไม่ให้ chart แคบเกินไป
ผ่าน
Interaction (E2E)
BA และ Technical
ใช้งานใน browser จริง
เปิดหน้าแล้วเส้น "ตอนนี้" อยู่ในจอ
ผ่าน
ย่อ Milestone แล้วซ่อนแถวลูกทั้งหมด และจำค่าหลัง reload
ผ่าน
Live update ไม่ทำให้ตำแหน่ง scroll แนวนอนหาย120 → 120 px ในมุมมองชั่วโมง
ผ่าน
Light / Dark / Mobile แสดงผลถูกต้อง
ผ่าน
สำหรับ Technical: คำสั่งและผลดิบ
คำสั่ง go test -count=1 -v ./... ; timeline browser check
ผลจากเครื่องมือทดสอบ ผ่าน 30, ไม่ผ่าน 0, ข้าม 0 ใช้เวลา 0.3s (go test) + 20s (E2E)
หมายเหตุ go test: 26 ผล (20 test + 6 subtest), E2E timeline 4 checks
ผ่าน
File viewer, Reviewed status และ Done สีเขียว
30 ต.ค. 2569, ผ่าน 10 จาก 10 ข้อ
ตรวจว่าไฟล์แนบเปิดเป็นหน้า HTML ในแท็บใหม่ได้ และปลอดภัย, สถานะ Reviewed ทำงานตามที่ตกลง และทุก flow เดิมยังผ่านหลังเปลี่ยน ผ่านทุกข้อ
3 หัวข้อที่ตรวจ
Security (file viewer)
Technical
ตัวเปิดไฟล์ต้องไม่เปิดอะไรนอก repo
Path traversal (../ และ %2e%2e) ได้ 404 หลัง clean path
ผ่าน
.git และไฟล์ซ่อนเปิดไม่ได้
ผ่าน
Symlink ที่ชี้ออกนอก repo เปิดไม่ได้ (EvalSymlinks + prefix check)
ผ่าน
Text ที่ไม่ใช่ path ใน repo ไม่ถูกทำเป็นลิงก์
ผ่าน
Markdown renderer
Technical
เอกสารใน docs/ แสดงครบเหมือนบน GitLab
Pipe table รวม escaped pipe และ code ในช่อง
ผ่าน
Heading ID แบบ GitHub รองรับภาษาไทย
ผ่าน
ยังตัด <script>, javascript: และ HTML tag ออก
ผ่าน
Regression (E2E)
BA และ Technical
flow เดิมยังทำงานหลังเปลี่ยน
Live update: browser เห็น task count เปลี่ยนเองโดยไม่ reload
ผ่าน
Theme: Light / Dark / System ผ่าน 5 กรณี
ผ่าน
Review form: Reject + Checklist + Save ผ่าน 7 checks บนข้อมูลสำเนา
ผ่าน
สำหรับ Technical: คำสั่งและผลดิบ
คำสั่ง go test -count=1 -v ./... ; node e2e/{live,theme,review}-check.mjs ; viewer check
ผลจากเครื่องมือทดสอบ ผ่าน 43, ไม่ผ่าน 0, ข้าม 0 ใช้เวลา 0.3s (go test) + ~40s (E2E)
หมายเหตุ go test: 25 ผล (19 test + 6 subtest). E2E: live 1, theme 5, review form 7, viewer 5 checks
ผ่าน
Review form: Approve / Reject / Hold
30 ต.ค. 2569, ผ่าน 14 จาก 14 ข้อ
ตรวจ Review form ที่ให้กรอกผลรีวิวแล้วกด Save ได้จากหน้าเว็บ: บันทึกลง milestones.json ถูกต้อง, กัน CSRF และไม่ทับข้อความที่กำลังพิมพ์ตอนมี Live update ผ่านทุกข้อ
3 หัวข้อที่ตรวจ
Data integrity (milestones.json)
Technical
Save แล้วเปลี่ยนเฉพาะ field ที่เกี่ยวข้อง diff ใน git อ่านง่าย
Ordered JSON round-trip: อ่านแล้วเขียนกลับได้ไฟล์เหมือนเดิมทุก byteทดสอบกับไฟล์ข้อมูลจริงทั้ง 4 ไฟล์
ผ่าน
Field อื่นและลำดับ key ไม่เปลี่ยน ภาษาไทยและ <b> ไม่ถูก escape
ผ่าน
Atomic write: เขียนไฟล์ชั่วคราวแล้ว rename ไม่มีไฟล์ครึ่ง ๆ
ผ่าน
Security
Technical
เปิดผ่าน Tailscale แล้ว ต้องกันการส่งฟอร์มจากเว็บอื่น
CSRF: POST จาก Origin อื่นได้ 403
ผ่าน
POST ที่ไม่มี Origin และ Referer ได้ 403
ผ่าน
Request ที่ถูกปฏิเสธไม่แก้ไฟล์ข้อมูล
ผ่าน
Task ที่ไม่มีจริงได้ 404
ผ่าน
Form size limit 64 KB และ Decision ไม่เกิน 10,000 ตัวอักษร
ผ่าน
Browser (E2E)
BA และ Technical
ทดสอบใน headless Chrome กับข้อมูลชุดสำเนา ไม่แตะข้อมูลจริง
Live update ไม่ทับข้อความที่กำลังพิมพ์ในฟอร์ม
ผ่าน
เลือก Reject, ติ๊ก Checklist, กรอกชื่อ แล้ว Save ได้
ผ่าน
Redirect ไป tab Rejected พร้อม notice
ผ่าน
Decision แสดงผลเป็น Markdown
ผ่าน
ไฟล์ข้อมูลบันทึกผลและชื่อผู้รีวิว
ผ่าน
Browser จำชื่อผู้รีวิวไว้ใช้ครั้งต่อไป
ผ่าน
สำหรับ Technical: คำสั่งและผลดิบ
คำสั่ง go test -count=1 -v ./... ; node e2e/review-check.mjs <chrome> http://localhost:8098 <copy>/milestones.json T-201
ผลจากเครื่องมือทดสอบ ผ่าน 29, ไม่ผ่าน 0, ข้าม 0 ใช้เวลา 0.3s (go test) + 12s (E2E)
หมายเหตุ go test: 22 ผล (16 test + 6 subtest), E2E review form: 7 checks บน server แยกที่ port 8098 กับข้อมูลสำเนา ข้อมูลจริงไม่ถูกแก้
ผ่าน
Tracker รอบ 2: หน้าย่อย, Checkpoint, Test แบบจัดกลุ่ม, Review tabs
30 ต.ค. 2569, ผ่าน 17 จาก 17 ข้อ
ตรวจว่าข้อมูลงานถูกต้อง หน้าเว็บทุกหน้าเปิดได้ การรีวิวแยกตามสถานะ และการอัปเดตสดยังทำงาน หลังเพิ่มหน้าย่อย Milestone / Epic / Task, ประวัติ Checkpoint จาก Agent, หน้าผลทดสอบแบบจัดกลุ่ม และ tab การรีวิว ผ่านทุกข้อ
5 หัวข้อที่ตรวจ
Pages & Routing
BA และ Technical
ทุกหน้าเปิดได้ และไปถึงรายละเอียดของงานได้ทุกระดับ
ทุก page ได้ HTTP 200 จากข้อมูลจริงทดสอบกับ server ที่รันอยู่ด้วย 11 หน้า ได้ 200 ทุกหน้า
ผ่าน
Milestone / Epic / Task page มี breadcrumb
ผ่าน
Multi-milestone: sidebar แสดงทุก milestone, epic code เป็น E1.x
ผ่าน
URL ที่ไม่มีจริงได้ 404milestone / epic / task ที่ไม่มี และ epic ที่อยู่ผิด milestone
ผ่าน
Test results view (BA / Technical)
BA และ Technical
แต่ละฝ่ายเลือกดูเฉพาะหัวข้อที่เกี่ยวกับงานของตัวเองได้
Filter BA / Technical แสดง group และ count ถูกต้อง
ผ่าน
มี case fail แล้ว run เป็น "ไม่ผ่าน"
ผ่าน
Markdown sanitize
Technical
ข้อความจากไฟล์ข้อมูลต้องแสดงสวยงาม แต่ฝังสคริปต์หรือ HTML ไม่ได้
Render bold / italic / code / link / list ถูกต้อง
ผ่าน
Sanitize: ตัด <script>, javascript: link และ HTML tag
ผ่าน
ข้อความใน code span ไม่ถูก format ซ้ำ
ผ่าน
Live update (SSE)
Technical
หน้าที่เปิดค้างไว้ต้องเปลี่ยนเองเมื่อข้อมูลเปลี่ยน
File watcher: แก้ไฟล์แล้ว reload และ broadcast
ผ่าน
SSE /events ส่ง hello แล้ว update
ผ่าน
E2E: browser เห็น task count เปลี่ยนเองโดยไม่ reload27 → 28 ใน headless Chrome แล้วคืนไฟล์ข้อมูลเหมือนเดิม
ผ่าน
Theme (Light / Dark / System)
BA และ Technical
เลือกธีมได้และจำค่าที่เลือก
ระบบตั้งเป็นโหมดมืด + เลือก "ตามระบบ" ได้ธีมมืด
ผ่าน
ระบบตั้งเป็นโหมดสว่าง + เลือก "ตามระบบ" ได้ธีมสว่าง
ผ่าน
กด "มืด" แล้วเปลี่ยนเป็นธีมมืดทันที
ผ่าน
reload แล้วยังเป็นธีมมืด
ผ่าน
กลับไป "ตามระบบ" แล้วลบค่าที่จำไว้
ผ่าน
สำหรับ Technical: คำสั่งและผลดิบ
คำสั่ง go test -count=1 -v ./... ; node e2e/live-check.mjs ; node e2e/theme-check.mjs
ผลจากเครื่องมือทดสอบ ผ่าน 25, ไม่ผ่าน 0, ข้าม 0 ใช้เวลา 0.5s (go test) + 15s (e2e)
หมายเหตุ go test: 19 ผล (13 test + 6 subtest), e2e อัปเดตสด 1 ชุด, e2e ธีม 5 กรณี และตรวจ 11 หน้าบน server ที่รันอยู่