มีคำถามเกี่ยวกับการเข้าถึง element ต่าง ๆ
ใน User Interface ของการทดสอบพวก UI testing บน web browser 
ว่าจะทำอย่างไรดี ?

เนื่องจากทำการเข้าถึง element ด้วย xpath บ้าง
เข้าถึงด้วย css selector บ้าง
เข้าถึงด้วยการเขียน JavaScript บ้าง

เพราะว่า มีปัญหาของการทดสอบ จากการเปลี่ยนแปลงมาก ๆ

การแก้ไขเบื้องต้นคือ

ถ้าทำได้ก็ทดสอบระบบงานส่วนนี้น้อยลง ทำเท่าที่จำเป็น
เพราะว่า มันใช้เวลาในการทดสอบและเตรียมมากมาย
แต่ถ้าเลี่ยงไม่ได้ แนะนำให้ เข้าถึงด้วยสิ่งที่คงที่ หรือ ไม่เปลี่ยนแปลง เป็นดีที่สุด
เพราะว่า บ่อยครั้งเรามักกจะเข้าถึง element ต่าง ๆ  ด้วยสิ่งที่ผูกกติดกับ UI
ส่งผลให้เมื่อทำการเปลี่ยนแปลง UI แล้วส่วนของการทดสอบก็จะพังทั้งหมด !!
แบบนี้ไม่น่าจะเป็นเรื่องที่ดี

ยกตัวอย่างเช่น

  • การกำหนด id ให้แต่ละ element ที่จะเข้าถึง และต้องเป็น unique id ด้วย
  • ทำการกำหนด attribute ใหม่ขึ้นมา เพื่อใช้สำหรับการทดสอบ

มาดูจากเอกสารของ Cypress เรื่อง Best Practice กันบ้าง

มีคำแนะนำเกี่ยวกับการเข้าถึง element โดยแนะนำให้เพิ่ม attribute ใหม่ขึ้นมา
ชื่อขึ้นต้นด้วย data-* ไปเลย เพื่อใช้แยกออกมาจากส่วนของ UI อย่างชัดเจน
ว่าเป็น attribute ที่สร้างมาเพื่อการทดสอบเท่านั้น
น่าจะช่วยลดผลกระทบต่อการเปลี่ยน UI ได้

และเห็นว่ามี Cypress Testing Library ออกมาให้ใช้

โดยสามารถเพิ่ม attribute ชื่อว่า data-testid เข้ามาได้เลย
จากนั้นในชุดการทดสอบจะมี function cy.findByTestId() ให้ใช้งานเลย
ก็ง่ายขึ้นมาอีกเป็นกองเลยนะ