ในการรัน 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