ลองใช้งาน Playwright ในการทำ e2e testing
สวัสดีครับ บทความนี้มาลองเล่น Playwright เพื่อเอามาทำ automate e2e testing ครับ Playwright เป็น e2e testing framework (end to end) ที่พัฒนาโดย Microsoft ตัว API มีความคล้ายกับ Puppeteer (แน่นอนแหละ main contributor ของ puppeteer ย้ายมา playwright)
ทำไมถึงเลือก Playwright
ด้วยความที่ผมไม่ใช่ Tester อาจจะไม่รู้จักเครื่องมือ หรือ Framework อะไรมากมายนัก มีแค่เคยใช้งานผ่าน ก็พวก Cypress, Puppeteer และเมื่อดู Playwright ตัว API แทบจะเหมือน Puppeteer ทำให้ ไม่มีเหตุผลอะไรที่จะไม่ใช้ Playwright
อีกอย่าง Playwright รองรับ JavaScript / TypeScript ซึ่งเป็นภาษาหลักที่ผมใช้งานอยู่แล้ว รวมถึง Community ก็โอเค แม้จะเทียบไม่ได้กับ Selenium ก็ตาม
ข้อดีของ Playwright
- รันได้ทุก browser (chromium, WebKit และ Firefox)
- รองรับ Cross-platform (Windows, Linux, Mac OS หรือ headless)
- รองรับหลายภาษา เช่น TypeScript, JavaScript, Python, .NET, Java (ในบทความนี้ผมขอใช้ TypeScript นะครับ)
ลองใช้งาน Playwright
ทำการสร้างโปรเจ็ค Playwright โดยการติดตั้งผ่าน npm เลย (ต้องมี Node.js บนเครื่องก่อน)
จากนั้นก็ตอบคำถามที่ต้องการ เช่น เลือกภาษาอะไร ตั้งชื่อ folder tests อะไร? จะใช้ Github Actions มั้ย เป็นต้น
เมื่อได้โปรเจ็คแล้ว ตัวโฟลเดอร์จะมีโครงสร้างดังนี้
ตัวอย่างไฟล์เทส จะอยู่ในโฟลเดอร์ tests และ tests-examples
tests/example.spec.ts
- เป็นตัวอย่าง e2e testing ง่ายๆtests-examples/demo-todo-app.spec.ts
เป็นตัวอย่าง การเทส Demo Todo App
แต่ก่อนไปดูข้างในไฟล์ ลอง start sample test ดูก่อน
จะได้ผลลัพธ์ดังนี้
สามารถเปิดดูผลลัพธ์แบบ HTML ได้ด้วยคำสั่ง
จะได้ผลลัพธ์แบบรูปด้านล่างนี้ และแต่ละ test case สามารถกดเข้าไปดูรายละเอียด test steps
รันเทสในโหมด UI
จะเป็นโหมดเทส ที่มี UI ให้เรากด ดูข้อมูล test steps ดู Screenshot ต่างๆ
เขียน Test
หากเราดู example test จะเห็นว่าตัว test syntax ไม่แตกต่างจากการเขียน unit test มีกำหนด test()
block และส่วน assertion ก็จะเป็น expect สิ่งที่ต่าง ก็คือ เราอาจจะต้องรู้ API ของ Playwrigh
ซึ่งถ้าดูโค๊ดด้านล่างนี้
ตัว Playwright ทำการเปิดหน้าเว็บ ด้วยคำสั่ง
ใช้ PageAssertions toHaveTitle เพื่อเช็คว่าเพจที่เราเข้า มี title ตรงกับที่ expect มั้ย
อื่นๆ เพิ่มเติม
config
นอกจากนี้ เราจะเห็นว่ามีไฟล์ playwright.config.ts ที่เป็น config ไฟล์ เราสามารถทำอะไรได้บ้าง?
- กำหนด folder tests
- เลือก browser ที่ต้องการเทสได้
- เลือก test reporter เช่น html, line, JSON หรือ อื่นๆ
Test Generator
หากเราไม่ถนัดการเขียน test เราสามารถ generate ด้วย codegen ได้ โดย script จะทำการเปิดหน้าเว็บที่เราต้องการเทส แล้วก็ record สิ่งที่เราจะเทส เช่น เราเลือกกด click button, input text ตัว Playwright ก็จะทำการ record และ generate ให้เรา เป็นโค๊ด spec.ts
ตัวอย่าง codegen เว็บ playwright.dev
สรุป
บทความนี้ก็เป็นเพียงแค่การแนะนำ Playwright สำหรับ e2e testing tool เบื้องต้นเท่านั้น ตัว Playwright ยังมี features / API อีกเพียบ สามารถศึกษาเพิ่มเติมได้จาก Docs ครับ
Happy Coding ❤️
Reference
- Authors
-
Chai Phonbopit
เป็น Web Dev ในบริษัทแห่งหนึ่ง ทำงานมา 10 ปีกว่าๆ ด้วยภาษาและเทคโนโลยี เช่น JavaScript, Node.js, React, Vue และปัจจุบันกำลังสนใจในเรื่องของ Blockchain และ Crypto กำลังหัดเรียนภาษา Rust