ช่วงนี้จำเป็นต้องทดสอบ Mobile App ที่พัฒนาด้วย React Native จึงได้ลองนำ Detox Test Framework มาใช้งานแทน Appium ในการทดสอบ Mobile App เนื่องจาก Appium มีปัญหาในเรื่อง Performance เวลาทดสอบเพจที่มี Element เยอะๆ และปัญหาความไม่เสถียรของ test script

Detox คืออะไร

Detox เป็น Cross platform test framework ที่พัฒนามาเพื่อทดสอบ iOS & Android Application

Detox วางตัวเองเป็น Gray box end-to-end test framework หรือก็คือเป็น framework ที่จำเป็นต้องเข้าถึง process ของ app ที่เราจะเทส โดยมีการ monitor สถาณะของแอพ และไม่ต้องพึ่งพา Web Driver Agent แบบ Appium

ถ้าทีมใครใช้ React Native ในการพัฒนา App ล่ะก็ Detox เองประกาศตัวว่าเป็น first level support ให้ React Native หมายความว่า feature ต่างๆ และรูปแบบการใช้งาน รองรับการทดสอบ App ที่พัฒนาจาก React Native โดยเฉพาะเลย

เราสามารถเขียน test script ด้วยภาษา Java script / Type script ก็ได้

Detox ต่างกับ Appium ยังไงบ้าง

Detox client คุยกับ server ผ่าน Web Socket ซึ่งไม่ต้องเปิด connection ซ้ำๆ แบบ Appium ที่ใช้ REST API

Detox มีการตรวจสอบสถาณะของ App แบบอัตโนมัติ ก่อนที่จะส่งคำสั่งต่อๆไป Detox จะรอจนกว่า App จะอยู่ในสถาณะ Idle ก่อนเสมอ

คำสั่ง Expect ที่ใช้ในการตรวจสอบค่าจะรันบน App process โดยตรง ต่างจาก Appium ที่จะรันอยู่บน test process ซึ่งทำให้มี performance ที่ดีกว่านั่นเอง

เริ่มต้น Setup Detox Environment เพื่อเทส iOS กัน

สำหรับการทดสอบ iOS App จำเป็นต้องใช้ mac OS ในการทดสอบ iOS App โดยทำการลง Software ที่จำเป็นตาม step นี้ได้เลย (สำหรับ Android ไว้ EP หน้าเรามาดูกันนะ)

ติดตั้ง XCode จาก Appstore

ติดตั้ง Node.js โดยรันคำสั่ง

brew install node

ติดตั้ง Detox CLI

npm install detox-cli --global

ติดตั้ง xcode homebrew และ applesimutils สำหรับจัดการ iOS simulator

xcode-select --install
brew tap wix/brew
brew install applesimutils

Setup Test Project

เพิ่อประหยัดเวลา ให้ download demo project บน Github โดยผมได้ config ค่าพื้นฐานไว้ให้แล้วโดยใช้งาน Jest เป็น test runner ควบคู่ไปกับ Detox

หลังจาก Download เสร็จแล้วให้รัน npm install ก่อนเพื่อติดตั้ง library ต่างๆ ที่ใช้งาน จากนั้นสามารถลองรันเทสโดยใช้คำสั่ง

npm run test:ios-release

โดยถ้าต้องการเพิ่ม Test Case สามารถทำการเพิ่มไว้ที่ folder e2e/tests และตั้งชื่อ test suite ให้อยู่ใน format <test suite>.e2e.ts เช่น update-todo-list.e2e.ts

ข้อจำกัดของ Detox

  • Detox ไม่รองรับการทดสอบ iOS บน Real device
  • Community ของ Detox เล็กกว่า Appium ทำให้มีตัวอย่างโค้ดต่างๆน้อยกว่า
Previous articleถ้าเทสรันช้า ก็รันเทสพร้อมๆกันด้วย Playwright Parallelism
Next articleลองใช้ Mock กับ Detox framework