ในการรัน E2E หรือ UI Test หลายๆครั้งเราจำเป็นต้องตรวจสอบค่าหลายๆค่าบนหน้าจอ เพื่อคอนเฟิร์มความถูกต้อง ปัญหาที่เรามักจะเจอคือ เวลาที่เทสมีปัญหา บางครั้งเราอยากรู้ด้วยว่าค่าอื่นๆในหน้าจอถูกต้องไหม แต่เทสก็หยุดการรันไปก่อน เพราะเจอเทสเฟลนั่นเอง ปัญหาแบบนี้เราสามารถแก้ได้แล้วโดยการใช้ Soft Assertion
Soft Assertion
เป็นส่วนเสริมของ Assert มีเพิ่มมาใน Playwright version 1.19 เป็นต้นไป โดย Soft Assert จะช่วยให้ เมื่อเกิด Error ขึ้น เทสของเราจะยังทำงานในขั้นตอนต่อๆไป ไม่หยุดการรันเทส แต่จะยังแสดงผลการรันเทสเป็น Fail เมื่อเทสรันเสร็จ ซึ่งความสามารถนี้จะช่วยให้เราสามารถตรวจสอบค่าต่างๆในหน้าจอให้ครบถ้วนได้นั่นเอง
การใช้งาน Soft Assertion
เราสามารถเปลี่ยนมาใช้ Soft Assertion ได้ง่ายๆโดยการเพิ่ม คำสั่ง soft ไปหลังจาก คำสั่ง expect ก็จะกลายเป็น expect.soft()
ตัวอย่าง
await expect.soft(page.locator('#status')).toHaveText('Success');
await expect.soft(page.locator('#eta')).toHaveText('1 day');
หากกรณีที่เรามีการใช้งาน soft expect และในขั้นตอนถัดๆไปต้องการให้เทสหยุดทำงาน หากก่อนหน้ามี soft expect error เราสามารถ ระบุโค้ดโดยเช็คจาก test.info().errors ได้ครับ
// Avoid running further if there were soft assertion failures.
expect(test.info().errors).toBeEmpty();
ข้อแนะนำการใช้ Soft Assertion
- พยายามใช้ soft expect เฉพาะกรณีที่เป็น validation ภายในเพจเดียวกันหรือ data set เดียวกัน
- อย่าเปลี่ยนทุก expect เป็น soft expect เพราะเวลาเทสเสต็ปมีปัญหาที่ขั้นตอนใดแล้ว แต่เราปล่อยให้เทสทำขั้นตอนถัดๆไป ก็จะยิ่งทำให้มีการแจ้งปัญหาหลายจุด ซึ่งบางครั้งจะทำให้เราสับสนว่าปัญหาจริงๆเกิดที่ส่วนไหนนั่นเอง
References
Playwright Web Automated Test
เรียนรู้การทดสอบ Web Application ด้วย
Playwright และ TypeScript