เห็นมีการ share เรื่องของ Playwright ที่พัฒนาจาก Microsoft กันเยอะ
เลยลองมาทำความรู้จักและลองใช้งานกันหน่อย
เป้าหมายหลัก ๆ ของ Playwright ประกอบไปด้วย
- End-to-End testing
- Cross-browser automation library สนับสนุน web browser หลัก ๆ ทั้ง Google Chrome, Firefox และ Microsoft Edge ตัวใหม่
- สามารถทำงานได้บน device ต่าง ๆ ได้ ทั้ง desktop, mobile และ tablet
- เขียนชุดการทดสอบที่ทำงานได้เร็ว และ เสถียร มีความน่าเชื่อถือ ซึ่งเข้ามาช่วยแก้ไขปัญหาของการทดสอบบน weeb browser ต่าง ๆ ที่ช้าและไม่ค่อยเสถียร
- ใช้ API เดียวสำหรับทุก ๆ browser ได้เลย
โดย library จะพัฒนาด้วย TypeScript + JavaScript เป็นหลัก
ทำการติดตั้งดังนี้
[gist id="970dead40ec07b200b3ef925fb1546ce" file="1.txt"]มาดูความสามารถที่น่าสนใจของ Playwright กัน
เมื่อมีการทำงานกับระบบที่ทำงานแบบ asynchornous แล้ว
บ่อยครั้งการเขียน test จะต้องใช้ wait, delay หรือ timeout มาใช้งาน
เพื่อรอไปการทำงานของหน้า web
ซึ่งแนวทางนี้ ก่อให้เกิดผลการทดสอบที่ไม่เสถียร
นั่นคือ ได้บ้าง ไม่ได้บ้าง
ดังนั้น Playwright จึงทำการแก้ไขด้วยการจัดการเรื่องนี้ให้เอง
ทำให้คนเขียน test ไม่ต้องมาสนใจส่วนนี้
ให้ไปสนใจที่ scenario ที่ต้องการจะทดสอบไปเลย
ส่งผลให้การดูแลรักษา test ง่ายและสะดวกขึ้น
ไม่ต้องมาห่วงหน้าพะวงหลังอีกต่อไป
โดยที่ Playwright ถูกสร้างขึ้นมาตามแนวคิด Event-driven architecture นั่นคือ
จะค่อยดักฟัง event ที่เกิดขึ้นใน browser
เช่น DOM, network request และ console log ต่าง ๆ
ส่วน protocol ที่ใช้งานก็ใช้ตาม developer tool ใน browser นั่นเอง
ตัวอย่าง code
[gist id="970dead40ec07b200b3ef925fb1546ce" file="demo-01.js"]ความสามารถต่อมา คือ ความเร็วในการทำงาน
โดยที่สามารถทำงานแบบ parallel ได้เลย
สามารถทำทำการทดสอบด้วย browser หลาย ๆ ตัว พร้อมกันได้
เนื่องจากมีความสามารถที่ชื่อว่า multi-page emulation scenario นั่นคือ
แต่ละการทดสอบจะแยกเป็นอิสระแก่กัน
รวมทั้งยังสามารถกำหนดค่าต่าง ๆ ได้เองอีกด้วยผ่าน context object เช่น
- การกำหนด device ที่จะ run test
- ขนาดหน้าจอของ device
- การขออนุญาตต่าง ๆ เช่น location เป็นต้น
- กำหนดตำแหน่ง location ของ device ได้
- กำหนดค่า locale ได้
- Network interception
- Web worker
ตัวอย่าง code เป็นดังนี้
[gist id="970dead40ec07b200b3ef925fb1546ce" file="demo-03.js"]น่าจะเป็นอีก library ในการทดสอบระบบงานบน Web browser ที่ดี
น่าจะพอมีประโยชน์นะครับ
สำหรับใครที่เขียน test ด้วย RobotFramework แล้ว
ก็มีคนทำ library ไว้ให้ชื่อว่า RobotFramework-Browser