Playwright มีกติกาในการเรียงลำดับการรัน Test ( ใน /Playwright/tests ) ที่ค่อนข้างชัดเจน โดยยึดตามลำดับตัวอักษร( Alphabetical Order ) เป็นหลักครับ นี่คือรายละเอียดว่าโครงสร้างชื่อไฟล์และ Folder ส่งผลอย่างไร
📂 1. การเรียงลำดับตาม Folder และ File
Playwright จะสแกนหาไฟล์ Test ( ปกติคือ .spec.ts หรือ .spec.js ) แล้วเรียงลำดับการทำงานดังนี้
- ชื่อ Folder: จะรัน Folder ที่ขึ้นต้นด้วยตัวอักษรก่อน ( เช่น
admin/จะรันก่อนuser/) - ชื่อไฟล์: ภายใน Folder เดียวกัน จะเรียงตามชื่อไฟล์ ( เช่น
01-login.spec.tsจะรันก่อน02-dashboard.spec.ts)
💡 เทคนิคยอดนิยม: ถ้าคุณต้องการคุมลำดับการรัน ( เช่น ต้องสร้าง Data ก่อนค่อยไปลบ ) นิยมใช้ตัวเลขนำหน้าชื่อไฟล์ครับ
01-setup.spec.ts02-feature-a.spec.ts03-cleanup.spec.ts
🔢 2. ลำดับภายในไฟล์เดียวกัน ( Inside File )
ภายในไฟล์เดียวที่คุณเขียนคำสั่ง test(...) ไว้หลายๆ Block
- Playwright จะรัน จากบนลงล่าง ตามลำดับที่คุณเขียนไว้ครับ
⚡ 3. ตัวแปรสำคัญ: Parallelism ( การรันพร้อมกัน )
นี่คือจุดที่ “ลำดับ” อาจจะเปลี่ยนไปจนคุณงงได้ครับ
- ถ้าเปิด Parallel ( ค่าเริ่มต้น ): Playwright จะพยายามรัน Test หลาย ๆ ไฟล์พร้อมกันในเวลาเดียว ( แยก Worker ) ทำให้ลำดับที่ใครจะ “จบก่อน” หรือ “เริ่มก่อน” อาจจะไม่เป็นไปตามชื่อไฟล์เป๊ะ ๆ เพราะมันรันคนละจอ
- ถ้าปิด Parallel (
fullyParallel: falseหรือรันด้วย--workers=1): ลำดับจะเป็นไปตามชื่อไฟล์และ Folder แบบ 100% ครับ
🛠️ วิธีควบคุมลำดับที่แน่นอน ( Dependencies )
หากคุณมี Test ที่ “ต้องรอให้อีกตัวเสร็จก่อน” Playwright แนะนำให้ใช้ฟีเจอร์ test.step หรือ Project Dependencies แทนการฝากความหวังไว้กับชื่อไฟล์ครับ
// ตัวอย่างใน playwright.config.ts
projects: [
{
name: 'setup',
testMatch: /global.setup\.ts/,
},
{
name: 'chromium',
use: { ...devices['Desktop Chrome'] },
dependencies: ['setup'], // จะรัน chromium ก็ต่อเมื่อ setup ผ่านแล้ว
},
],
สรุปสั้น ๆ
- ชื่อไฟล์ / Folder: มีผลต่อลำดับการ “เริ่ม” ( เริ่มจาก A-Z )
- ถ้าอยากคุมลำดับ: ให้ใช้ตัวเลขนำหน้าชื่อไฟล์ เช่น
01-...,02-... - คำเตือน: ถ้าเปิดรันแบบ Parallel ( หลาย Worker ) ลำดับอาจจะสลับกันได้ตามความเร็วของแต่ละหน้าจอครับ
อ่านเพิ่มเติม
