Fastlane คือ ชุดเครื่องมือ automation
สำหรับ iOS app ที่เริ่มได้รับความนิยมอย่างมาก
ซึ่งปัจจุบันเป็นหนึ่งใน project ของ Twiiter Fabric แล้วด้วย
พัฒนาด้วยภาษา ruby
เป็น project ที่มีอายุได้เพียง 1 ปีเท่านั้น
สำหรับ Mobile developer ทั้ง iOS และ Android
ถ้าใครไม่รู้จัก ถือว่า พลาดมาก ๆ
ดังนั้น มาเรียนรู้ และ นำไปใช้งานกัน
โดยในบทความนี้ จะแนะนำการใช้งาน Screengrab
เพื่อทำการ capture หน้าจอการทำงานของ Android app
มาดูกันเลย
ความสามารถหลักนั้นสร้างมาเพื่อ iOS app
ประกอบไปด้วย
- Deliver
- Snapshot
- Frameit
- Pem
- Sigh
- Produce
- Cert
- Scan
- Gym
- Match
- Pilot
- Boarding
ซึ่งมันครบถ้วนและสมบูรณ์อย่างมาก
แต่สำหรับ Android app นั้น เพิ่งจะมีเพียง 2 ตัวเท่านั้น
ประกอบไปด้วย
- Supply สำหรับการ update app บน Google Play Store
- Screengrab สำหรับการ snapshot หน้าจอของ app
โดยความสามารถที่น่าสนใจคือ Screengrab
เมื่อลงไปดูในรายละเอียดพบว่า
มันสามารถทำงานร่วมกับ Espresso test หรือ UI Test ของ Android ได้เลย
นั่นคือ ในแต่ละขั้นตอนของการทดสอบ
เราสามารถทำการ snapshot รูปในแต่ละขั้นตอนการทดสอบ app เลย
ดังนั้น มาดูการใช้งานดีกว่า
1. เริ่มด้วยการติดตั้ง Fastlane และ Screengrab
$sudo gem install fastlane $sudo gem install screengrab
2. เริ่มใช้งานกับ Android app ด้วยการสร้างไฟล์ต่าง ๆ ของ fastlane
$fastlane init
ผลการทำงานเป็นดังนี้
ทำการสร้าง folder fastlane และ ไฟล์ต่าง ๆ ที่จำเป็น คือ
- Appfile ใช้กำหนดข้อมูลต่าง ๆ ของ app เรา เช่น package name และ key file สำหรับการ upload app
- Fastfile ใช้กำหนด action ต่าง ๆ สำหรับการ run fastlane
3. มาเริ่มใช้งานกับ Screengrab กันบ้าง
ก่อนอื่นต้องเขียน UI Test สำหรับ Android app ด้วย Espresso ก่อนนะ !!
ถ้าไม่เขียน ก็ถือว่า จบกัน ไม่ต้องไปต่อนะ !!
แต่ถ้าเขียน Espresso สำหรับทดสอบเรียบร้อยแล้ว
และต้องทำงานได้ด้วยนะ
ก็เริ่มมาใช้งานร่วมกับ Screengrab กันได้เลย
มีขั้นตอนดังนี้
3.1 เพิ่ม dependency ไปยังไฟล์ build.gradle
3.2 สร้างไฟล์ src/debug/AndroidManifest.xml ขึ้นมา
เน้นย้ำว่าอยู่ใน folder debug นะ ต้องสร้างเอง
3.3 ทำการแก้ไข code ของการทดสอบที่เขียนด้วย Espresso ดังนี้
ทำการเพิ่ม code
- เพิ่ม ClassRule สำหรับจัดการกับ Locale
- ทำการเพิ่ม code ของการ capture หน้าจอของ app ด้วยคำสั่ง Screengrab.screenshot();
ตัวอย่าง
4. เมื่อทุกอย่างเสร็จเรียบร้อย ให้ทำการ run ดังนี้
เริ่มด้วยการสร้างไฟล์ apk ก่อน ด้วยคำสั่ง
$./gradlew assembleDebug assembleAndroidTest
จากนั้นทำการ run Screengrab ด้วยคำสั่ง
$screengrab
ผลการทำงานเป็นดังนี้
แต่ก่อนที่จะ run ทั้งสองคำสั่งได้นั้น
ต้องทำการกำหนดค่าของ ANDROID_HOME และ PATH ก่อนนะ
เพื่อกำหนด Android SDK และ Platform tool สำหรับการใช้งาน adb นั่นเอง
ตัวอย่างการกำหนดค่าใน Mac OS
export ANDROID_HOME=YOUR ANDROID SDK PATH export PATH=.:$ANDROID_HOME/platform-tools:$PATH
และรูปที่ได้จาก Screengrab นั้นจะอยู่ใน folder fastlane/metadata
ตัวอย่างดังรูป
เพียงเท่านี้ก็สามารถทำการ capture รูปการทำงานของ Android app ได้แล้ว
ซึ่งมันง่ายและสะดวกกว่า Spoon เยอะเลย
แต่สิ่งที่ยังขาดไปก็คือ
ถ้ารวมรูปเหล่านี้ไปไว้ในรายงานของ Espresso เลยจะแจ่มมาก ๆ
หรือมีการสร้างรายงานแบบสวย ๆ
และแยกตามแต่ละ test case ไปเลย
มันจะแจ่มกว่านี้มากมาย
และดูรายละเอียดเพิ่มเติมของ Screengrab ด้วยคำสั่ง
$screengrab --help
สามารถดู code และตัวอย่าง project ได้จาก Github::Basic Android Testing
ส่วน Fastlane สำหรับ iOS มันแจ่มมาก ๆ
เดี๋ยวจะเอามาเล่าให้ฟังต่อไป