ป้ายกำกับ: Dependencies

Playwright: tests ชื่อไฟล์, folderPlaywright: tests ชื่อไฟล์, folder

Playwright มีกติกาในการเรียงลำดับการรัน Test ( ใน /Playwright/tests ) ที่ค่อนข้างชัดเจน โดยยึดตามลำดับตัวอักษร( Alphabetical Order ) เป็นหลักครับ นี่คือรายละเอียดว่าโครงสร้างชื่อไฟล์และ Folder ส่งผลอย่างไร


📂 1. การเรียงลำดับตาม Folder และ File

Playwright จะสแกนหาไฟล์ Test ( ปกติคือ .spec.ts หรือ .spec.js ) แล้วเรียงลำดับการทำงานดังนี้

  1. ชื่อ Folder: จะรัน Folder ที่ขึ้นต้นด้วยตัวอักษรก่อน ( เช่น admin/ จะรันก่อน user/ )
  2. ชื่อไฟล์: ภายใน Folder เดียวกัน จะเรียงตามชื่อไฟล์ ( เช่น 01-login.spec.ts จะรันก่อน 02-dashboard.spec.ts )

💡 เทคนิคยอดนิยม: ถ้าคุณต้องการคุมลำดับการรัน ( เช่น ต้องสร้าง Data ก่อนค่อยไปลบ ) นิยมใช้ตัวเลขนำหน้าชื่อไฟล์ครับ

  1. 01-setup.spec.ts
  2. 02-feature-a.spec.ts
  3. 03-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 ผ่านแล้ว
  },
],

สรุปสั้น ๆ

  1. ชื่อไฟล์ / Folder: มีผลต่อลำดับการ “เริ่ม” ( เริ่มจาก A-Z )
  2. ถ้าอยากคุมลำดับ: ให้ใช้ตัวเลขนำหน้าชื่อไฟล์ เช่น 01-..., 02-...
  3. คำเตือน: ถ้าเปิดรันแบบ Parallel ( หลาย Worker ) ลำดับอาจจะสลับกันได้ตามความเร็วของแต่ละหน้าจอครับ

อ่านเพิ่มเติม