#standards#uat#testing#playwright#process
UAT Swarm 32 บอท: คำสั่ง DSL และกติกาผู้ทดสอบ
ระบบทดสอบบนเครื่อง Local เป็นตัวตรวจหลักหลังแก้โค้ด (ไม่ใช้ Token, รัน Playwright DOM ขนานสูงสุด 32 บอท bot-01..bot-32) ผู้ทดสอบต้อง "ขี้สงสัย" คืออ่านโค้ดจริงก่อนวางแผนและตรวจครบทุกมิติ (กฎข้อ 23 ใน AGENTS.md)
บริการที่เกี่ยวข้อง
| บริการ | ที่อยู่ | บทบาท |
|---|---|---|
| Go Backend | localhost:8081 |
API, Validation, SQL, PDF |
| Next.js Frontend | localhost:3001 |
หน้าจอ SML Ai Account |
| Local UAT Swarm | localhost:3050 (โฟลเดอร์ uat/openhands-swarm) |
ตัวตรวจหลัก ขนาน 32 บอท |
| UI UAT Tester (MCP) | localhost:3051/api/mcp (uat/scratch/mcp-ui-uat.mjs) |
ตัวเสริม Fire-and-Forget เท่านั้น — ยิงแล้วไม่รอผล (.catch(() => {})) ห้ามวน loop รอพอร์ต 3051 |
ลำดับการทดสอบหลังแก้โค้ด
- Typecheck/test แคบสุดก่อน: Backend
go vet ./... && go test ./internal/application/process -run "<TestName>"แล้ว build เป็นsmlaiaccount-api-new.exeย้ายทับsmlaiaccount-api.exe; Frontendnpx tsc --noEmit - เขียนสคริปต์ JSON ที่
uat/openhands-swarm/uat-scripts/uat-<topic>.json→ ลงทะเบียนPOST /api/scripts→ สั่งรันขนานPOST /api/runsด้วย{ scriptIds: [...] } - ตรวจครบ: Screen + ทุกปุ่ม + DB CRUD + API + Report/PDF และจบด้วย
ui.expectClean(ตรวจ HTTP >= 400, JS error, SQLSTATE) - ตรวจไม่ผ่าน → เปิด Ticket เข้า IssueMate (
SMLAIACC) → แก้ที่ต้นเหตุ → รันซ้ำจนผ่าน 100% (เฝ้าและตอบใบงาน IssueMate SMLAIACC (wait_for_issue.py, reply-batch, คำถาม PDF)) - งานขนาน/หลายโมดูล แตก Subagent หลายตัวใน Turn เดียว (skill ระบุ
invoke_subagentTypeName: "research" | "self",Model: "flash")
โครง Script และคำสั่ง cmd
{ "id": "uat-example-01", "name": "UAT Example Screen Check", "targetUrl": "http://localhost:3001",
"steps": [ { "cmd": "ui.demoLogin" }, { "cmd": "ui.openMenu", "args": ["P0017"] },
{ "cmd": "sml.auditScreen" }, { "cmd": "sml.probeButtons" }, { "cmd": "ui.expectClean" } ] }
cmd |
args | ทำอะไร |
|---|---|---|
ui.demoLogin |
– | ล็อกอินฐานข้อมูลสาธิตอัตโนมัติ |
ui.openMenu |
["<รหัสเมนู>"] |
เปิดหน้าจอ เช่น P0017, IC003, CancelPO |
ui.goto |
["/path"] |
เปิด path ตรง |
ui.wait |
[ms] |
รอ |
sml.searchList |
["<คำค้น>"] |
ค้นในช่อง DataList ซ้าย |
ui.clickRow / ui.click |
["<ข้อความ>"] / ["<selectorOrText>"] |
คลิกแถว / ปุ่ม |
ui.expectVisible / ui.expectValue |
["<text>"] / ["<selector>","<val>"] |
ตรวจข้อความ / ค่าช่อง |
sml.auditScreen |
– | ห้ามมี _ ในวงเล็บ, ห้าม F1–F12, ห้าม undefined/NaN, ตรวจระนาบ Baseline (ช่องกรอกมาตรฐานและกฎป้ายข้อความ (NumberBox, DateBox, CodeBox, LookupBox, ห้าม F1-F12)) |
sml.probeButtons |
– | คลิกปุ่ม/แท็บย่อย/Modal ต้องไม่เกิด JS Error หรือ HTTP >= 400 |
sml.auditReport |
– | รันรายงานและตรวจ PDF: ไม่มี .. ตัดข้อความ, คอลัมน์รวม 100% (มาตรฐาน Engine รายงานกลางและตัวออกแบบ JSON-First (Global Report Engine)) |
ui.expectClean |
– | ตลอดรันไม่มี Console Error / Page Error / HTTP >= 400 |
กติกาข้อมูลและความลับ
- ข้อมูลทดสอบ CRUD ใช้รหัสขึ้นต้น
UAT-ในฐานข้อมูลสาธิต (smldemo) ห้ามลบข้อมูลที่ไม่ขึ้นต้นด้วยUAT - ห้ามพิมพ์รหัสผ่าน/Token ลงสคริปต์หรือแชท ค่าลับอยู่ที่ env เท่านั้น
- repo นี้ระบุให้ไม่รัน Playwright verify อัตโนมัติเมื่อจบงานโดยไม่ได้สั่ง (รอลุงจืดสั่ง — ตามที่ KMS และ skill เขียน) และมีสคริปต์ตัวอย่างอยู่จริงที่
uat/openhands-swarm/uat-scripts/*.json
ที่มา
docs/kms/KMS_UAT_SWARM_AND_ISSUEMATE.md§1–§2.agents/skills/uat-swarm-and-issuemate-workflow/SKILL.mdWorkflow 1–2, Config, LimitationAGENTS.mdกฎข้อ 23
ดูเพิ่ม
สารบัญมาตรฐานและกฎเหล็กของ SML Ai Account (Standards Overview) · เฝ้าและตอบใบงาน IssueMate SMLAIACC (wait_for_issue.py, reply-batch, คำถาม PDF) · กฎขอบเขตงานและกฎเหล็กประจำ repo (Repo Scope & Iron Rules) · ภาพรวมกลุ่ม process ของ Backend (Process overview)