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
[code] $sudo gem install fastlane $sudo gem install screengrab [/code]2. เริ่มใช้งานกับ Android app ด้วยการสร้างไฟล์ต่าง ๆ ของ fastlane
[code] $fastlane init [/code] ผลการทำงานเป็นดังนี้ ทำการสร้าง 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 [gist id="e4de0191fa4de153a511" file="build.gradle"] 3.2 สร้างไฟล์ src/debug/AndroidManifest.xml ขึ้นมา เน้นย้ำว่าอยู่ใน folder debug นะ ต้องสร้างเอง [gist id="e4de0191fa4de153a511" file="AndroidManifest.xml"] 3.3 ทำการแก้ไข code ของการทดสอบที่เขียนด้วย Espresso ดังนี้ ทำการเพิ่ม code- เพิ่ม ClassRule สำหรับจัดการกับ Locale
- ทำการเพิ่ม code ของการ capture หน้าจอของ app ด้วยคำสั่ง Screengrab.screenshot();
4. เมื่อทุกอย่างเสร็จเรียบร้อย ให้ทำการ run ดังนี้
เริ่มด้วยการสร้างไฟล์ apk ก่อน ด้วยคำสั่ง [code] $./gradlew assembleDebug assembleAndroidTest [/code] จากนั้นทำการ run Screengrab ด้วยคำสั่ง [code] $screengrab [/code] ผลการทำงานเป็นดังนี้ [gist id="e4de0191fa4de153a511" file="result.txt"]แต่ก่อนที่จะ run ทั้งสองคำสั่งได้นั้น
ต้องทำการกำหนดค่าของ ANDROID_HOME และ PATH ก่อนนะ เพื่อกำหนด Android SDK และ Platform tool สำหรับการใช้งาน adb นั่นเอง ตัวอย่างการกำหนดค่าใน Mac OS [code] export ANDROID_HOME=YOUR ANDROID SDK PATH export PATH=.:$ANDROID_HOME/platform-tools:$PATH [/code] และรูปที่ได้จาก Screengrab นั้นจะอยู่ใน folder fastlane/metadata ตัวอย่างดังรูป เพียงเท่านี้ก็สามารถทำการ capture รูปการทำงานของ Android app ได้แล้ว ซึ่งมันง่ายและสะดวกกว่า Spoon เยอะเลย แต่สิ่งที่ยังขาดไปก็คือ ถ้ารวมรูปเหล่านี้ไปไว้ในรายงานของ Espresso เลยจะแจ่มมาก ๆ หรือมีการสร้างรายงานแบบสวย ๆ และแยกตามแต่ละ test case ไปเลย มันจะแจ่มกว่านี้มากมาย และดูรายละเอียดเพิ่มเติมของ Screengrab ด้วยคำสั่ง [code] $screengrab --help [/code] สามารถดู code และตัวอย่าง project ได้จาก Github::Basic Android Testingส่วน Fastlane สำหรับ iOS มันแจ่มมาก ๆ เดี๋ยวจะเอามาเล่าให้ฟังต่อไป