3566f858-7732-11e5-95aa-a606d4e71aab
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
ตัวอย่างดังรูป
Screen Shot 2559-02-12 at 7.30.18 PM

เพียงเท่านี้ก็สามารถทำการ capture รูปการทำงานของ Android app ได้แล้ว
ซึ่งมันง่ายและสะดวกกว่า Spoon เยอะเลย

แต่สิ่งที่ยังขาดไปก็คือ
ถ้ารวมรูปเหล่านี้ไปไว้ในรายงานของ Espresso เลยจะแจ่มมาก ๆ
หรือมีการสร้างรายงานแบบสวย ๆ
และแยกตามแต่ละ test case ไปเลย
มันจะแจ่มกว่านี้มากมาย

และดูรายละเอียดเพิ่มเติมของ Screengrab ด้วยคำสั่ง

$screengrab --help

สามารถดู code และตัวอย่าง project ได้จาก Github::Basic Android Testing

ส่วน Fastlane สำหรับ iOS มันแจ่มมาก ๆ
เดี๋ยวจะเอามาเล่าให้ฟังต่อไป