Supertest · Production Workflow และ Capstone
Capstone: Todo E2E Suite
รวม harness, request, validation, JWT, persistence, CRUD และ CI readiness เป็น suite เดียว
Capstone: Todo E2E Suite
Capstone คือการประกอบ suite ที่อ่านเหมือนระบบจริง: เปิด Nest app, ใช้ test database, login, ยิง protected CRUD, ตรวจ validation/error, cleanup state และเตรียม command ให้ CI รันซ้ำได้ งานนี้ไม่มี concept ใหม่ เป้าหมายคือการจัดระบบความรู้เดิมให้เป็น workflow
แยก setup, fixtures และ suite เพื่อให้แต่ละไฟล์มี responsibility เดียว
เกณฑ์ว่าชุดทดสอบพร้อมใช้งาน
กฎสำคัญ
HTTP contract ครบ
มี create, list, read, update, delete และตรวจ status/body ที่สำคัญ
boundary ครบ
มี validation, 404, 409, 401, 403 และ safe 500 ตาม policy
state แยกได้
database เป็น test database, fixture deterministic และ test ไม่พึ่ง order
CI ทำซ้ำได้
มี readiness, migration, environment และ one-shot command ที่คืน exit code ถูกต้อง
Capstone ที่ดีไม่ใช่ test ที่ยาวที่สุด
ลด duplication ด้วย helper ที่อ่านง่าย แต่ต้องไม่ซ่อน request หรือ expected behavior จน reviewer มองไม่เห็น contract
แผนลงมือแบบเป็นขั้น
เริ่มจากทำให้ harness ผ่านหนึ่ง GET ก่อน จากนั้นเพิ่ม database lifecycle และ fixture, login/token, CRUD happy path, error matrix และสุดท้ายย้าย command เดียวกันเข้า GitHub Actions การแบ่งขั้นนี้ทำให้แต่ละ failure มีขอบเขตเล็กและแก้ได้
จัดลำดับงานและระบุ done state ของ suite ก่อนเริ่มเขียนไฟล์ทั้งหมด
งานที่ต้องทำ
- เขียนรายการไฟล์ที่ต้องมีและหน้าที่ของแต่ละไฟล์
- กำหนด test database/env และ migration command
- กำหนด auth fixture และ protected CRUD flow
- กำหนด error matrix และ cleanup policy
- กำหนด CI readiness และ command ที่ต้องคืน exit code
ลองทำด้วยตัวเองก่อน แล้วค่อยเปิดเฉลยเพื่อเทียบแนวคิดและรายละเอียด