พอดีมีการพูดคุยเรื่องของ Playwright กันนิดหน่อย
สิ่งที่น่าสนใจคือ โครงสร้างหรือ architecture ของ Playwright ว่าเป็นอย่างไร
รวมทั้งการแก้ไขปัญหาที่มักเกิดขึ้นจาก end-to-end testing
นั่นก็คือ Flaky test หรือการทดสอบที่พังง่าย และ หาปัญหาได้ยากมากๆ
ทำให้ชุดการทดสอบไม่น่าเชื่อถือ

จึงทำแก้ไขออกมาด้วย feature ของ Playwright นั่นเอง
ประกอบไปด้วย

  • Auto-wait ทำการรอให้แบบอัตโนมัติ หรือจพ config เรื่องของ timeout และ retry ได้
  • Tracing ทำการเก็บ log ทั้ง message, รูปภาพ และ VDO การทดสอบไว้ให้อีก
  • HTML report ก็มีมาให้เลย
  • Test generator
  • Playwright inspector และ Debug mode
  • Authentication สามารถทำงาน login และนำ session นั้นมาใช้ซ้ำได้อีก โดยไม่ต้อง login ใหม่ ลดเวลาไปได้เยอะมาก ๆ รวมทั้งสามารถสร้าง session ได้มากกว่า 1 session
  • API testing ก็ทำได้
  • ทำ Visual testing ได้อีกด้วย

โครงสร้างหรือ architecture ของ Playwright ว่าเป็นอย่างไร ?

อีกเรื่องคือ ต่างจาก Selenium อย่างไร

เริ่มจาก Selenium นั้น จะทำงานผ่าน HTTP protocol
สำหรับการส่งคำสั่งต่าง ๆ หรือ command ไปยัง Selenium server
ดังนั้นถ้ามีหลาย ๆ คำสั่ง ก็จะทำการสร้าง HTTP connection ใหม่เสมอ
นั่นคือหนึ่งในปัญหาของความช้า
ต่อมาคือ จะไปยัง browser ใด ๆ ต้องผ่าน Driver อีก
แต่ละ driver ต้องจัดการเรื่อง version อีกด้วย

ส่วน Playwright นั้นจะทำงานผ่าน WebSocket

ดังนั้น command ต่าง ๆ ใน test case นั้น ๆ
จะใช้ connection เดียวกันทั้งหมด
ลดการสร้าง connection ส่งผลให้ทำงานได้รวดเร็วขึ้น
รวมทั้งลดจุดที่ก่อให้เกิดปัญหาลงไป

แสดงการทำงานของ HTTP และ WebSocket ดังรูป

รูปแสดงการทำงานของ Selenium และ Playwright

ลองใช้งานกันดูครับ