Supertest · Production Workflow และ Capstone
Timeout และ Flaky Test Control
ลด flaky behavior จาก timing, shared state และ cleanup ที่ไม่ครบ
แยก timeout จาก slow behavior
Timeout อาจเกิดจาก database ช้า, app ไม่ close, request ไม่ถูก await หรือระบบมี bug จริง อย่าเพิ่ม timeout ทันที ให้ระบุว่า operation ไหนช้าและ timeout นั้นเป็นส่วนหนึ่งของ policy หรือเป็นเพียงการกลบปัญหา
ลด flaky test จากต้นเหตุ
| อาการ | สาเหตุที่ควรตรวจ | การแก้ที่ตรงจุด |
|---|---|---|
| บางครั้ง 404 บางครั้ง 200 | fixture/cleanup ไม่ครบ | สร้างและ reset state ใน test เอง |
| process ไม่จบ | app/prisma open handle | await close/disconnect |
| CI ช้ากว่า local | database readiness หรือ worker | health check และ worker policy |
| retry แล้วผ่าน | race หรือ timing bug | trace await/order ก่อนเพิ่ม retry |
กฎสำคัญ
trust
flaky คือ failure ที่ต้องแก้
อย่าปิด test หรือใช้ retry หลายรอบจนไม่เห็นความไม่แน่นอนของระบบ
debug
เก็บ context เมื่อ fail
ชื่อ test, request input ที่ปลอดภัย และ response status ช่วย trace ต้นเหตุโดยไม่เปิด secret