Writing E2E Test with Playwright in .Net (Part I)

Keattisak Chinburarat
2 min readApr 2, 2021

--

Playwright enables fast, reliable and capable automation across all modern browsers. This guide covers those key differentiators to help you decide on the right tool for your automated tests.

วันนี้ผมอยากจะเขียนถึง E2E test หรือ Integration test หรือ Feature test แล้วแต่ว่าเราจะมองอย่างไง แต่โดยรวมเราจะพูดถึง test ที่เกิดจาก client ซึ่งในที่นี้ผมหมายถึง Browser ก็แล้วกันซึ่งผมต้องการแค่ Firefox, Chromium, WebKit

แล้วปกติเราจะใช้อะไรทำกันล่ะ คำตอบแรกๆ น่าจะเป็น Selenium ซึ่งที่ทำงานผมก็ใช้ และใช้มานานแล้ว และก็มีข้อเสียเยอะพอสมควรแต่เหตุผลที่ผมไม่ชอบมี 3 ข้อ

  1. มันเชื่อถือไม่ค่อยได้ในหลายๆกรณี เพราะบางครั้งก็ fail แบบหาสาเหตุไม่ได้บน grid

2. กินทรัพยากรเยอะพอสมควร ดีหน่อยที่หลังๆมี headless ให้ใช้

3. ใช้เวลาเยอะในการ run test แต่ล่ะครั้ง

อีกเหตุผลที่สำคัญคือ Selenium ถึงพัฒนามาด้วย protocal เก่าอย่าง DevTools และไม่ค่อยมีการพัฒนาแล้วช่วงเวลานี้

เห้ยเดี๋ยว ที่ผมพูดมันจริงเหรอ ตามผมมาผมมีอะไรให้ดู

ขออ้างอิงคุณ somkiat ในการทดสอบ

และ testim Modernize test automation with AI

Total score

อ้าวแต่ selenium คะแนนเยอะกว่านะ ใช่ครับแต่สิ่งที่ผมต้องการคือ ความเร็ว!!!, ใช้ native api,ไม่ flaky , เชื่อถือได้ ,ใช้ทรัพยาการน้อย, debug ได้ง่าย และเสถียร และที่สำคัญสิ่งหนึ่งที่ผมกำลังทำในที่ทำงานคือ Contract test โดยต้องอาศัยการ feature ของ Intercept network activity ที่ selenium ยังไม่ support เท่าที่ตรวจสอบ ณ.ตอนนี้

Playwright กับ .NET Ecosystem

สำหรับตอนนี้ผมอยากจะแสดงให้เห็นว่า .NET เราเหมาะที่จะทำ e2e test เป็นอย่างมากเพราะเราสามารถใช้ stack ตามนี้ได้เลย

  1. xUnit
  2. c# asp.net
  3. platwrightsharp

แล้ว test ทุกอย่างแค่ 1 click เลย งั้นมาจับมือทำกันเลย

  1. clone repo จาก AspnetPlaywrightFeatureTest
  2. เปิด Solution ขึ้นมาเลยครับ
  3. กด run all เลยครับ (ตามหมายเลข 1)

การ run แบบ headfull ให้ไปที่ file : AspnetPlaywrightFeatureTest/TestConstants.cs at master · execution/AspnetPlaywrightFeatureTest (github.com) โดย set ค่า เป็น false เมื่อ run test จะเห็น browser เปิดขึ้นมาครับ

Headfull mode

การ run แบบ headless ให้ไปที่ file : AspnetPlaywrightFeatureTest/TestConstants.cs at master · execution/AspnetPlaywrightFeatureTest (github.com) โดย set ค่า เป็น true

ตอนต่อไปจะมาอธิบายว่าทำงานอย่างไร สวัสดี….

--

--

Keattisak Chinburarat
Keattisak Chinburarat

Written by Keattisak Chinburarat

Father, Husband, and Engineering Technical @Agoda

No responses yet