Supertest · Production Workflow และ Capstone
CI Migration และ Isolation
รัน migration, cleanup และ suite ในลำดับที่ deterministic
CI ต้องมีลำดับที่ deterministic
ลำดับมาตรฐานคือ install → generate → รอ database → migrate → seed/cleanup → รัน E2E การวาง migration หลัง test หรือใช้ database ที่มี state เก่าทำให้ผลของ job ขึ้นกับประวัติของ runner
ใช้ `--frozen-lockfile` เพื่อให้ dependency ใน CI ตรงกับ lockfile ที่ commit
isolation ต้องชัดทั้ง database และ worker
กฎสำคัญ
database ชื่อสำหรับ test เท่านั้น
อย่าชี้ CI ไปยัง shared development หรือ production database
worker strategy ต้องตรงกับ cleanup
ถ้า suite ไม่รองรับ parallel writes ให้ใช้ runInBand หรือแยก database ต่อ worker อย่างตั้งใจ
seed ต้องทำซ้ำได้
การรัน job ซ้ำจาก commit เดิมควรได้ state เริ่มต้นที่เทียบกันได้
CI ที่เขียวเพราะข้อมูลค้างไม่ใช่ความสำเร็จ
ความสำเร็จที่แท้จริงคือ job เริ่มจาก state ที่กำหนดและสามารถ fail เมื่อ migration หรือ contract ผิด