Snapshot (Fastlane) — สาระสำคัญ การสร้างภาพหน้าจอ และการตั้งค่าในแอปมือถือ

ผู้แต่ง: IT Sectr เผยแพร่เมื่อ: 2026-04-15 เวลาอ่าน: 10 นาที

Snapshot (Fastlane) เป็นเครื่องมือสำหรับสร้างภาพหน้าจอแอป iOS อัตโนมัติบนอุปกรณ์และภาษาที่รองรับทั้งหมด แตกต่างจากการสร้างภาพหน้าจอด้วยตนเองผ่าน simulator ตรงที่ Snapshot จะรัน UI ทดสอบและจับภาพหน้าจอที่จุดที่ระบุในแอป ตาม เอกสารทางการของ Fastlane (2026) Snapshot ลดเวลาเตรียมภาพหน้าจอสำหรับการเผยแพร่จาก 4 ชั่วโมงเหลือ 15 นาที

ประเด็นสำคัญ

  • Snapshot เป็นยูทิลิตี้ Fastlane สำหรับสร้างภาพหน้าจอแอป iOS อัตโนมัติผ่าน UI ทดสอบบนอุปกรณ์และภาษาทั้งหมด
  • เครื่องมือนี้ทำงานร่วมกับ XCTest UI ทดสอบ: นักพัฒนาเพิ่มคำสั่ง snapshot() ในโค้ดทดสอบเพื่อจับภาพที่หน้าจอสำคัญของแอป
  • Snapshot รองรับขนาดอุปกรณ์ iPhone และ iPad ทั้งหมดที่ App Store ต้องการ: 6.5, 5.5, 6.7, 12.9 นิ้ว และรูปแบบหน้าจออื่นๆ
  • การกำหนดค่าทำผ่านไฟล์ Snapfile ซึ่งระบุอุปกรณ์ ภาษา การแปลภาษา และพารามิเตอร์การเปิด simulator สำหรับการสร้าง
  • ผลลัพธ์ถูกบันทึกในไดเรกทอรี screenshots/ ที่เข้ากันได้กับ Deliver — ภาพหน้าจอพร้อมอัปโหลดไปยัง App Store โดยไม่ต้องประมวลผลเพิ่มเติม

Snapshot (Fastlane) คืออะไร?

Snapshot (Fastlane) เป็นส่วนประกอบของระบบนิเวศ Fastlane ที่ทำให้การสร้างภาพหน้าจอแอปสำหรับ App Store เป็นอัตโนมัติ โดยรัน UI ทดสอบบน simulator iOS จับภาพหน้าจอในสถานะแอปที่กำหนด และบันทึกในไดเรกทอรีที่มีโครงสร้างพร้อมชื่อที่ถูกต้องสำหรับแต่ละภาษาและอุปกรณ์

หากไม่มี Snapshot นักพัฒนาจะต้องเปิด simulator ด้วยตนเอง เปิดแต่ละหน้าจอ จับภาพด้วย Cmd+S เปลี่ยนภาษา และทำซ้ำขั้นตอนสำหรับทุกการรวมกัน การอัตโนมัติภาพหน้าจอ เป็นองค์ประกอบสำคัญของการปรับแต่ง ASO เนื่องจาก App Store ต้องการภาพหน้าจอที่อัปเดตสำหรับทุกการเผยแพร่ใหม่ และการอัปเดตภาพหน้าจอมากกว่า 60 ภาพด้วยตนเองต้องใช้เวลาหลายชั่วโมง

ตาม เอกสาร App Store Connect (2025) แอปที่มีภาพหน้าจอแปลภาษาได้รับการแปลงเป็นยอดขายเพิ่มขึ้น 25% ในประเทศเป้าหมาย Snapshot ช่วยให้ทีมงานอัปเดตเนื้อหาภาพสำหรับ 32 ภาษาในการรันครั้งเดียว ซึ่งสำคัญอย่างยิ่งสำหรับแคมเปญการตลาดที่เชื่อมโยงกับฟีเจอร์ใหม่ของแอป

ใช้ Snapshot ในทุกโปรเจกต์ที่เผยแพร่บน App Store — เป็นเครื่องมือมาตรฐานสำหรับทีมที่ต้องการอัตโนมัติกระบวนการเผยแพร่และปรับปรุง ASO

Snapshot สร้างภาพหน้าจออย่างไร

กระบวนการสร้างภาพหน้าจอ ใน Snapshot ประกอบด้วยหลายขั้นตอน: การเตรียม UI ทดสอบ การกำหนดค่า Snapfile การเปิด simulator และการรวบรวมผลลัพธ์ Snapshot จะเปิดแต่ละ simulator ตามลำดับสำหรับอุปกรณ์และภาษาที่ระบุ รัน UI ทดสอบ และจับภาพที่จุดที่เรียกฟังก์ชัน snapshot()

หลังจากทดสอบทั้งหมดเสร็จ Snapshot จะรวบรวมภาพหน้าจอในไดเรกทอรี screenshots/[Language]/ ด้วยชื่อที่ตรงตามข้อกำหนดของ App Store แต่ละภาพจะถูกบันทึกในรูปแบบ PNG ด้วยความละเอียดที่ตรงกับอุปกรณ์เป้าหมาย Snapshot ยังสร้างรายงาน HTML สำหรับการตรวจสอบภาพหน้าจอที่สร้างขึ้นทั้งหมดด้วยสายตา

การตั้งค่า UI ทดสอบสำหรับ Snapshot

เพื่อให้ Snapshot ทำงาน จำเป็นต้องเพิ่มการเรียก snapshot() ในโค้ด XCTest UI ทดสอบของแอป ฟังก์ชันนี้จะจับภาพหน้าจอสถานะปัจจุบันของหน้าจอ ณ เวลาที่เรียก นักพัฒนาจะวาง snapshot() หลังจากการกระทำหลักแต่ละครั้ง: การเปิดหน้าจอ การป้อนข้อมูล การนำทางผ่านแท็บ หรือการแสดงผลลัพธ์

ตัวอย่างโครงสร้าง UI ทดสอบ: ทดสอบเข้าสู่ระบบแอป เรียก snapshot("01-LoginScreen") เพื่อจับภาพหน้าจอเข้าสู่ระบบ จากนั้นไปที่หน้าจอหลักและเรียก snapshot("02-HomeScreen") เพื่อจับภาพหน้าจอหลัก XCTest คือเฟรมเวิร์กของ Apple สำหรับการทดสอบหน่วยและ UI ของแอป iOS ที่รวมอยู่ใน Xcode โดยตรง

objective-c
// UI ทดสอบสำหรับ Snapshot
- (void)testScreenshots {
    XCUIApplication *app = [[XCUIApplication alloc] init];
    [app launch];
    
    snapshot(@"01-LoginScreen");
    
    [app.textFields[@"email"] tap];
    [app.textFields[@"email"] typeText:@"user@company.com"];
    [app.buttons[@"Login"] tap];
    
    snapshot(@"02-HomeScreen");
}

การทำงานกับภาษาและอุปกรณ์

Snapshot จะเปลี่ยนภาษา simulator โดยอัตโนมัติสำหรับแต่ละภาษาที่ระบุใน Snapfile แอปจะเปิดพร้อมการแปลภาษาที่เกี่ยวข้อง และ UI ทดสอบจะทำงานในภาษานั้น การแปลภาษาภาพหน้าจอ เป็นปัจจัยสำคัญของ ASO: 75% ของผู้ใช้ชอบแอปที่มีเนื้อหาในภาษาแม่ของตน รวมถึงภาพหน้าจอใน App Store

สำหรับแต่ละอุปกรณ์ Snapshot จะเปิด simulator แยกต่างหากด้วยขนาดหน้าจอที่เกี่ยวข้อง ทุกขนาดที่ App Store ต้องการรองรับ: iPhone 6.5 นิ้ว (iPhone 15 Pro Max), 5.5 นิ้ว (iPhone 8 Plus), 6.7 นิ้ว (iPhone 15 Plus) และ iPad 12.9 นิ้ว iOS Simulator คือการจำลองซอฟต์แวร์ของอุปกรณ์ iOS ที่สร้างใน Xcode สำหรับทดสอบแอปโดยไม่ต้องใช้อุปกรณ์จริง

bash
# สร้างภาพหน้าจอสำหรับอุปกรณ์และภาษาทั้งหมด
fastlane snapshot

# สร้างเฉพาะอุปกรณ์ที่ระบุ
fastlane snapshot --devices "iPhone 15 Pro Max,iPhone 15"

# ล้างก่อนสร้างภาพหน้าจอ
fastlane snapshot --reinstall_app --erase_simulator

การกำหนดค่า Snapshot ผ่าน Snapfile

Snapfile คือไฟล์กำหนดค่า Fastlane ที่กำหนดพารามิเตอร์การสร้างภาพหน้าจอ: รายการอุปกรณ์ ภาษา ระยะหมดเวลา และตัวเลือกการเปิด Snapfile ถูกเก็บในไดเรกทอรี fastlane และถูกควบคุมเวอร์ชันพร้อมกับโปรเจกต์ ทำให้มั่นใจได้ถึงการกำหนดค่าที่เป็นหนึ่งเดียวสำหรับสมาชิกทีมทุกคน

ruby
# Snapfile — การกำหนดค่าภาพหน้าจอ
devices([
    "iPhone 15 Pro Max",
    "iPhone 15",
    "iPad Pro (12.9-inch)"
])

languages([
    "en-US",
    "ru",
    "de-DE"
])

scheme("MyAppUITests")
output_directory("./screenshots")
clear_previous_screenshots(true)
reinstall_app(true)
erase_simulator(true)

พารามิเตอร์ clear_previous_screenshots จะลบภาพหน้าจอเก่าก่อนเริ่มสร้าง — ป้องกันการสะสมของภาพหน้าจอที่ล้าสมัยในไดเรกทอรีเอาต์พุต reinstall_app จะติดตั้งแอปบน simulator ใหม่ก่อนแต่ละการรัน เพื่อรับประกันเซสชันที่สะอาดโดยไม่มีอิทธิพลจากการทดสอบก่อนหน้าต่อการสร้างใหม่

พารามิเตอร์ erase_simulator จะล้างเนื้อหา simulator ก่อนเริ่มทดสอบ — รวมถึงแคช การตั้งค่า และข้อมูลจากเซสชันก่อนหน้า ซึ่งสำคัญอย่างยิ่งสำหรับการทดสอบที่ตรวจสอบการเริ่มต้นใช้งานหรือการเปิดแอปครั้งแรก Snapshot ยังรองรับพารามิเตอร์ ios_version สำหรับระบุเวอร์ชัน iOS บน simulator และ stop_after_first_error สำหรับหยุดสร้างเมื่อพบข้อผิดพลาด UI ทดสอบครั้งแรก

สำหรับโปรเจกต์ SwiftUI มีพารามิเตอร์ use_simulator_for_language ที่ควบคุมการเปลี่ยนภาษาผ่านการตั้งค่า simulator แทนการเปลี่ยนภูมิภาคของระบบ Snapshot ยังรองรับ launch_arguments สำหรับส่งอาร์กิวเมนต์เพิ่มเติมเมื่อเปิดแอป — มีประโยชน์สำหรับการทดสอบกับการกำหนดค่าแบ็กเอนด์ต่างๆ หรือการทดสอบ A/B

คำสั่ง Snapshot สำหรับสร้างภาพ

อินเทอร์เฟซ Snapshot ประกอบด้วยคำสั่งพื้นฐานสำหรับเริ่มสร้างและแฟล็กเพิ่มเติมสำหรับควบคุมกระบวนการอย่างแม่นยำ คำสั่งหลัก fastlane snapshot จะรันวงจรการสร้างภาพหน้าจอทั้งหมดตามการกำหนดค่า Snapfile

การสร้างด่วนและการกรอง

คำสั่ง fastlane snapshot --devices "iPhone 15" จะสร้างภาพหน้าจอสำหรับอุปกรณ์ที่ระบุเท่านั้น โดยไม่สนใจส่วนที่เหลือจาก Snapfile --languages "en-US,ru" กรองภาษาสำหรับสร้าง การรวมแฟล็กเหล่านี้มีประโยชน์สำหรับตรวจสอบภาพหน้าจอบนอุปกรณ์และภาษาเดียวอย่างรวดเร็วโดยไม่ต้องวงจรสร้างเต็มรูปแบบ ซึ่งอาจใช้เวลาถึง 30 นาทีสำหรับ 5 อุปกรณ์และ 10 ภาษา

bash
# สร้างด่วนสำหรับอุปกรณ์เดียว
fastlane snapshot --devices "iPhone 15" --languages "en-US"

# สร้างด้วยการติดตั้งแอปใหม่
fastlane snapshot --reinstall_app --erase_simulator

# สร้างพร้อมรายงาน HTML
fastlane snapshot --output_directory "./build/screenshots"

แฟล็ก --output_directory เปลี่ยนไดเรกทอรีบันทึกผลลัพธ์ โดยค่าเริ่มต้น Snapshot จะบันทึกภาพหน้าจอใน fastlane/screenshots สำหรับการรวมกับ Deliver ให้ระบุไดเรกทอรีที่ตรงกับโครงสร้าง Deliverfile ที่คาดหวัง — ซึ่งช่วยให้ส่งภาพหน้าจอไปยังกระบวนการเผยแพร่ได้โดยตรงโดยไม่ต้องคัดลอกไฟล์ด้วยตนเองระหว่างโฟลเดอร์

พารามิเตอร์ Snapshotวัตถุประสงค์ตัวอย่าง
devicesรายการอุปกรณ์สำหรับสร้างiPhone 15, iPad Pro
languagesรายการภาษาที่แปลen-US, ru, de-DE
reinstall_appติดตั้งแอปใหม่ก่อนทดสอบtrue / false
erase_simulatorล้าง simulator ก่อนเปิดtrue / false
clear_previousลบภาพหน้าจอเก่าtrue / false

การรวม Snapshot ในไปป์ไลน์ CI/CD

Snapshot ใน CI/CD คือการสร้างภาพหน้าจออัตโนมัติกับทุก commit ที่เผยแพร่ Snapshot จะรันก่อนขั้นตอน Deliver เพื่อให้แน่ใจว่าภาพหน้าจอใน App Store ตรงกับเวอร์ชันแอปปัจจุบันและไม่มีองค์ประกอบอินเทอร์เฟซที่ล้าสมัยจากเวอร์ชันก่อนหน้า

เพื่อให้ Snapshot ทำงานใน CI จำเป็นต้องมี Xcode พร้อม simulator iOS ที่ติดตั้ง ในสภาพแวดล้อม CI Snapshot จะใช้ simulator จาก Xcode ที่โหลดไว้ล่วงหน้าบน runner GitHub Actions มีอิมเมจพร้อม Xcode และ simulator iOS ที่ติดตั้งไว้ล่วงหน้าสำหรับรัน UI ทดสอบโดยไม่ต้องตั้งค่าเพิ่มเติม

bash
# รัน Snapshot ในสภาพแวดล้อม CI
fastlane snapshot --skip_open_summary \

      --output_directory "$CI_PROJECT_DIR/screenshots"

# บันทึกภาพหน้าจอเป็นอาร์ติแฟกต์ CI
cp -R "screenshots/" "$CI_PROJECT_DIR/artifacts/"

พารามิเตอร์ --skip_open_summary ปิดการเปิดรายงาน HTML หลังสร้าง — ในสภาพแวดล้อม CI อินเทอร์เฟซกราฟิกไม่พร้อมใช้งาน ผลลัพธ์การสร้างถูกบันทึกในไดเรกทอรีที่ส่งเป็นอาร์ติแฟกต์งาน CI และจากนั้น Deliver ใช้อัปโหลดไปยัง App Store พร้อมกับการเผยแพร่

เพื่อเร่งไปป์ไลน์ CI ให้ใช้การสร้างภาพหน้าจอแบบขนานผ่าน concurrent_simulators — พารามิเตอร์ Snapfile ที่เปิดหลาย simulator พร้อมกัน ซึ่งลดเวลาการสร้างภาพหน้าจอสำหรับ 5 อุปกรณ์และ 10 ภาษาจาก 40 นาทีเหลือ 15 นาทีเมื่อใช้ 4 เธรดแบบขนาน

ข้อผิดพลาดทั่วไปเมื่อทำงานกับ Snapshot

เมื่อใช้ Snapshot นักพัฒนามักพบข้อผิดพลาดที่เกี่ยวข้องกับความไม่เสถียรของ UI ทดสอบ ปัญหา simulator และการกำหนดค่าอุปกรณ์ที่ไม่ถูกต้อง การวินิจฉัยข้อผิดพลาด ของ Snapshot เริ่มต้นด้วยการวิเคราะห์รายงาน HTML ซึ่งมีภาพหน้าจอของแต่ละขั้นตอนและข้อมูลเกี่ยวกับการทดสอบที่ล้มเหลว

ข้อผิดพลาด "Failed to build scheme MyAppUITests" เกิดขึ้นเมื่อโครงร่าง UI ทดสอบไม่ได้กำหนดค่าสำหรับการสร้าง วิธีแก้ไข: ตรวจสอบว่า Scheme แยกต่างหากสำหรับ UI ทดสอบถูกสร้างใน Xcode และเปิดตัวเลือก Shared สำหรับการเข้าถึงจากบรรทัดคำสั่ง Xcode Scheme คือการกำหนดค่าสร้าง ทดสอบ และรันแอปที่กำหนดชุดเป้าหมายและพารามิเตอร์สำหรับแต่ละการกระทำ

ข้อผิดพลาด "No simulators found matching..." ระบุว่าไม่มี simulator ที่ตรงกับประเภทอุปกรณ์หรือเวอร์ชัน iOS ที่ระบุ วิธีแก้ไข: รัน xcrun simctl create เพื่อสร้าง simulator หรือระบุอุปกรณ์ที่มีอยู่จากรายการ xcrun simctl list xcrun simctl คือยูทิลิตี้บรรทัดคำสั่ง Xcode สำหรับจัดการ simulator iOS: สร้าง ลบ เปิด และวินิจฉัย

สำหรับข้อผิดพลาด "UI test failure" UI ทดสอบล้มเหลวในภาษาหรืออุปกรณ์ใดอุปกรณ์หนึ่ง วิธีแก้ไข: รัน Snapshot ด้วยแฟล็ก --stop_after_first_error เพื่อหยุดที่ข้อผิดพลาดแรก วิเคราะห์ภาพหน้าจอในรายงาน HTML และแก้ไขการทดสอบ สาเหตุทั่วไปคือความยาวข้อความที่แตกต่างกันในแต่ละภาษา ทำให้องค์ประกอบอินเทอร์เฟซทับซ้อนกันหรือออกนอกขอบเขตหน้าจอ

คำถามที่พบบ่อย

Snapshot รองรับอุปกรณ์ iOS ใดบ้าง?

Snapshot รองรับอุปกรณ์ทั้งหมดในตระกูล iPhone และ iPad รวมถึง iPhone 15 Pro Max (6.7 นิ้ว), iPhone 15 (6.1 นิ้ว), iPad Pro 12.9 นิ้ว และ iPad mini สำหรับแต่ละอุปกรณ์ Snapshot จะโหลดสกิน simulator ที่เกี่ยวข้องจาก Xcode ซึ่งรับประกันความละเอียดหน้าจอที่แม่นยำ

จำเป็นต้องใช้อุปกรณ์จริงสำหรับ Snapshot หรือไม่?

ไม่ Snapshot ทำงานเฉพาะกับ iOS simulator จาก Xcode เท่านั้น ไม่จำเป็นต้องใช้อุปกรณ์จริงและไม่รองรับ — ภาพหน้าจอทั้งหมดถูกสร้างในสภาพแวดล้อม simulator ซึ่งให้ความละเอียดและการสร้างสีที่เหมือนกันสำหรับข้อกำหนดของ App Store

Snapshot จัดการการแปลภาษาข้อความในภาพหน้าจออย่างไร?

Snapshot จะเปลี่ยนภาษา simulator ก่อนรัน UI ทดสอบสำหรับแต่ละภาษาจาก Snapfile แอปจะแสดงในภาษาที่เกี่ยวข้องผ่านการตั้งค่าการแปลภาษาของระบบ UI ทดสอบ ใช้สตริงที่แปลภาษาผ่าน NSLocalizedString เพื่อรับประกันข้อความที่ถูกต้องในภาพหน้าจอทั้งหมด

สามารถสร้างภาพหน้าจอสำหรับแอป macOS ได้หรือไม่?

ใช่ Snapshot รองรับแอป macOS ตั้งแต่ Fastlane เวอร์ชัน 2.200 สำหรับ macOS ให้ระบุแพลตฟอร์มใน Snapfile ผ่านพารามิเตอร์ app_platform("macOS") Snapshot จะรัน UI ทดสอบบน macOS และสร้างภาพหน้าจอตามข้อกำหนดของ Mac App Store

Snapshot แตกต่างจากภาพหน้าจอปกติด้วย Cmd+S อย่างไร?

ภาพหน้าจอด้วยตนเองต้องการเปิดแต่ละหน้าจอด้วยตนเอง เปลี่ยนภาษา เปลี่ยนอุปกรณ์ — ประมาณ 60 การกระทำสำหรับชุดสมบูรณ์ Snapshot ทำให้กระบวนการทั้งหมดเป็นอัตโนมัติ: เปลี่ยนภาษา อุปกรณ์ รัน UI ทดสอบ และบันทึกภาพหน้าจอด้วยชื่อที่ถูกต้องสำหรับ App Store ใน 15 นาที

สรุป

  • Snapshot คือยูทิลิตี้ Fastlane สำหรับสร้างภาพหน้าจอแอป iOS อัตโนมัติผ่าน XCTest UI ทดสอบบนอุปกรณ์และภาษาทั้งหมด
  • นักพัฒนาเพิ่มการเรียก snapshot() ในโค้ด UI ทดสอบที่จุดสำคัญของแอป — Snapshot จะจับภาพที่ตำแหน่งเหล่านี้
  • การกำหนดค่าผ่าน Snapfile กำหนดรายการอุปกรณ์ ภาษา และพารามิเตอร์ simulator: devices, languages, reinstall_app และ erase_simulator
  • ผลลัพธ์ถูกบันทึกในไดเรกทอรี screenshots/[Language]/ ในรูปแบบที่เข้ากันได้กับ Deliver สำหรับอัปโหลดตรงไปยัง App Store
  • การรวม CI/CD ช่วยให้สร้างภาพหน้าจอใหม่อัตโนมัติก่อนทุกการเผยแพร่ด้วย simulator แบบขนานเพื่อเร่งกระบวนการ
  • ข้อผิดพลาด Snapshot ทั่วไปเกี่ยวข้องกับ UI ทดสอบที่ไม่เสถียรในภาษาต่างๆ การขาด simulator ใน Xcode หรือการกำหนดค่า Scheme ไม่ถูกต้อง

เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร

IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ

ปรึกษาโครงการ

อ่านเพิ่มเติม