พอดีมีการพูดคุยเรื่องของ 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
ลองใช้งานกันดูครับ