Snapshot (Fastlane) — ماهیت، تولید اسکرین‌شات و پیکربندی در برنامه‌های موبایل

نویسنده: IT Sectr منتشر شده: 2026-04-15 زمان مطالعه: 10 دقیقه

Snapshot (Fastlane) ابزاری برای تولید خودکار اسکرین‌شات‌های برنامه‌های iOS در تمام دستگاه‌ها و زبان‌های پشتیبانی‌شده است. برخلاف ایجاد دستی تصاویر صفحه از طریق شبیه‌ساز، Snapshot تست‌های UI را اجرا می‌کند و در نقاط مشخصی از برنامه اسکرین‌شات می‌گیرد. طبق مستندات رسمی Fastlane (2026)، Snapshot زمان آماده‌سازی اسکرین‌شات‌ها برای انتشار را از ۴ ساعت به ۱۵ دقیقه کاهش می‌دهد.

نکات اصلی

  • Snapshot — ابزار Fastlane برای ایجاد خودکار اسکرین‌شات‌های برنامه‌های iOS از طریق تست‌های UI در تمام دستگاه‌ها و زبان‌ها.
  • ابزار با تست‌های XCTest UI یکپارچه می‌شود: توسعه‌دهنده دستورات snapshot() را در کد تست برای گرفتن تصاویر در صفحات کلیدی برنامه اضافه می‌کند.
  • Snapshot از تمام اندازه‌های دستگاه‌های iPhone و iPad مورد نیاز App Store پشتیبانی می‌کند: 6.5، 5.5، 6.7، 12.9 اینچ و سایر فرمت‌های صفحه.
  • پیکربندی از طریق فایل Snapfile انجام می‌شود که در آن دستگاه‌ها، زبان‌ها، محلی‌سازی و پارامترهای راه‌اندازی شبیه‌ساز برای تولید مشخص می‌شوند.
  • نتایج در پوشه screenshots/ سازگار با Deliver ذخیره می‌شوند — اسکرین‌شات‌ها بدون پردازش اضافی برای بارگذاری در App Store آماده هستند.

Snapshot (Fastlane) چیست؟

Snapshot (Fastlane) — مؤلفه‌ای از اکوسیستم Fastlane است که ایجاد اسکرین‌شات‌های برنامه را برای App Store خودکار می‌کند. این ابزار تست‌های UI را روی شبیه‌سازهای iOS اجرا می‌کند، در حالت‌های مشخصی از برنامه اسکرین‌شات می‌گیرد و آنها را در پوشه‌ای ساختاریافته با نام‌های صحیح برای هر زبان و دستگاه ذخیره می‌کند.

بدون Snapshot، توسعه‌دهندگان به صورت دستی شبیه‌ساز را راه‌اندازی می‌کنند، هر صفحه را باز می‌کنند، با Cmd+S اسکرین‌شات می‌گیرند، زبان را تغییر می‌دهند و این فرآیند را برای همه ترکیب‌ها تکرار می‌کنند. خودکارسازی اسکرین‌شات‌ها یک عنصر کلیدی بهینه‌سازی ASO است، زیرا App Store برای هر نسخه جدید به تصاویر به‌روز نیاز دارد و به‌روزرسانی دستی بیش از ۶۰ اسکرین‌شات ساعت‌ها زمان می‌برد.

طبق App Store Connect Documentation (2025)، برنامه‌هایی با اسکرین‌شات‌های محلی‌سازی‌شده ۲۵٪ تبدیل بیشتری در کشورهای هدف دارند. Snapshot به تیم‌ها امکان می‌دهد محتوای بصری را برای ۳۲ زبان در یک بار اجرا به‌روزرسانی کنند که به ویژه برای کمپین‌های بازاریابی مرتبط با ویژگی‌های جدید برنامه مهم است.

از Snapshot در هر پروژه‌ای که در App Store منتشر می‌شود استفاده کنید — این یک ابزار استاندارد برای تیم‌هایی است که به دنبال خودکارسازی فرآیند انتشار و بهبود ASO هستند.

Snapshot چگونه اسکرین‌شات تولید می‌کند

فرآیند تولید اسکرین‌شات‌ها در Snapshot از چند مرحله تشکیل شده است: آماده‌سازی تست‌های UI، پیکربندی Snapfile، راه‌اندازی شبیه‌سازها و جمع‌آوری نتایج. Snapshot به ترتیب هر شبیه‌ساز را برای دستگاه‌ها و زبان‌های مشخص شده راه‌اندازی می‌کند، تست‌های 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 به طور خودکار زبان شبیه‌ساز را برای هر زبان مشخص شده در Snapfile تغییر می‌دهد. برنامه با محلی‌سازی مربوطه راه‌اندازی می‌شود و تست‌های UI در آن زبان اجرا می‌شوند. محلی‌سازی اسکرین‌شات‌ها یک عامل حیاتی ASO است: کاربران در ۷۵٪ موارد برنامه‌هایی با محتوا به زبان مادری خود ترجیح می‌دهند، از جمله اسکرین‌شات‌ها در App Store.

برای هر دستگاه، Snapshot یک شبیه‌ساز جداگانه با اندازه صفحه مربوطه راه‌اندازی می‌کند. تمام اندازه‌های مورد نیاز App Store پشتیبانی می‌شوند: iPhone 6.5 اینچ (iPhone 15 Pro Max)، 5.5 اینچ (iPhone 8 Plus)، 6.7 اینچ (iPhone 15 Plus) و iPad 12.9 اینچ. شبیه‌ساز iOS شبیه‌سازی نرم‌افزاری دستگاه 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 برنامه را قبل از هر اجرا روی شبیه‌ساز دوباره نصب می‌کند که جلسه تمیزی را بدون تأثیر تست‌های قبلی بر تولید جدید تضمین می‌کند.

پارامتر erase_simulator محتوای شبیه‌ساز را قبل از شروع تست‌ها پاک می‌کند — از جمله کش، تنظیمات و داده‌های جلسات قبلی. این به ویژه برای تست‌هایی که راهنمای کاربری یا اولین راه‌اندازی برنامه را بررسی می‌کنند مهم است. Snapshot همچنین از پارامترهای ios_version برای指定 نسخه iOS روی شبیه‌ساز و stop_after_first_error برای توقف تولید در اولین خطای تست UI پشتیبانی می‌کند.

برای پروژه‌های SwiftUI، پارامتر use_simulator_for_language در دسترس است که تغییر زبان را از طریق تنظیمات شبیه‌ساز به جای تغییر منطقه سیستم مدیریت می‌کند. Snapshot همچنین از launch_arguments برای ارسال آرگومان‌های اضافی هنگام راه‌اندازی برنامه پشتیبانی می‌کند — برای تست با پیکربندی‌های مختلف بک‌اند یا تست‌های A/B مفید است.

دستورات Snapshot برای تولید تصاویر

رابط Snapshot شامل دستورات پایه برای اجرای تولید و فلگ‌های پیشرفته برای کنترل دقیق بر فرآیند است. دستور اصلی fastlane snapshot چرخه کامل تولید اسکرین‌شات‌ها را بر اساس پیکربندی Snapfile اجرا می‌کند.

تولید سریع و فیلتر کردن

دستور fastlane snapshot --devices "iPhone 15" اسکرین‌شات‌ها را فقط برای دستگاه‌های مشخص شده تولید می‌کند و بقیه را از Snapfile نادیده می‌گیرد. --languages "en-US,ru" زبان‌ها را برای تولید فیلتر می‌کند. ترکیب این فلگ‌ها برای بررسی سریع اسکرین‌شات‌ها روی یک دستگاه و زبان بدون چرخه کامل تولید که می‌تواند با ۵ دستگاه و ۱۰ زبان تا ۳۰ دقیقه طول بکشد مفید است.

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پاک کردن شبیه‌ساز قبل از اجراtrue / false
clear_previousحذف اسکرین‌شات‌های قدیمیtrue / false

یکپارچه‌سازی Snapshot در خط لوله CI/CD

Snapshot در CI/CD — تولید خودکار اسکرین‌شات‌ها در هر commit انتشار است. Snapshot قبل از مرحله Deliver اجرا می‌شود تا اطمینان حاصل شود که اسکرین‌شات‌های App Store با نسخه فعلی برنامه مطابقت دارند و حاوی عناصر رابط کاربری قدیمی از نسخه‌های قبلی نیستند.

برای کار Snapshot در CI به Xcode با شبیه‌سازهای iOS نصب شده نیاز است. در محیط CI، Snapshot از شبیه‌سازهای Xcode که از قبل روی runner بارگذاری شده‌اند استفاده می‌کند. GitHub Actions تصاویری با Xcode و شبیه‌سازهای 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 که چندین شبیه‌ساز را همزمان اجرا می‌کند. این زمان تولید اسکرین‌شات‌ها را برای ۵ دستگاه و ۱۰ زبان از ۴۰ دقیقه به ۱۵ دقیقه با استفاده از ۴ رشته موازی کاهش می‌دهد.

خطاهای رایج هنگام کار با Snapshot

هنگام استفاده از Snapshot، توسعه‌دهندگان اغلب با خطاهای مربوط به ناپایداری تست‌های UI، مشکلات شبیه‌سازها و پیکربندی نادرست دستگاه‌ها مواجه می‌شوند. تشخیص خطاهای Snapshot با تجزیه و تحلیل گزارش HTML که شامل اسکرین‌شات‌های هر مرحله و اطلاعات مربوط به تست‌های ناموفق است آغاز می‌شود.

خطای «Failed to build scheme MyAppUITests» زمانی رخ می‌دهد که طرح تست‌های UI برای ساخت پیکربندی نشده باشد. راه‌حل: مطمئن شوید که در Xcode یک Scheme جداگانه برای تست‌های UI ایجاد شده و گزینه Shared برای دسترسی از خط فرمان فعال است. Xcode Scheme — پیکربندی ساخت، تست و اجرای برنامه است که مجموعه اهداف و پارامترها را برای هر اقدام تعریف می‌کند.

خطای «No simulators found matching...» نشان‌دهنده عدم وجود شبیه‌ساز با نوع دستگاه یا نسخه iOS مشخص شده است. راه‌حل: xcrun simctl create را برای ایجاد شبیه‌ساز اجرا کنید یا یک دستگاه موجود از لیست xcrun simctl list را مشخص کنید. xcrun simctl — ابزار خط فرمان Xcode برای مدیریت شبیه‌سازهای 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 پوست‌های شبیه‌ساز مربوطه را از Xcode بارگذاری می‌کند که وضوح دقیق صفحه را تضمین می‌کند.

آیا برای کار Snapshot به دستگاه‌های واقعی نیاز است؟

خیر، Snapshot منحصراً با شبیه‌سازهای iOS از طریق Xcode کار می‌کند. دستگاه‌های واقعی نه required هستند و نه پشتیبانی می‌شوند — تمام اسکرین‌شات‌ها در محیط شبیه‌ساز تولید می‌شوند که وضوح و بازتولید رنگ یکسانی را برای الزامات App Store فراهم می‌کند.

Snapshot چگونه محلی‌سازی متن را در اسکرین‌شات‌ها مدیریت می‌کند؟

Snapshot قبل از اجرای تست‌های UI برای هر زبان از Snapfile، زبان شبیه‌ساز را تغییر می‌دهد. برنامه از طریق تنظیمات محلی‌سازی سیستم به زبان مربوطه نمایش داده می‌شود. تست‌های UI از رشته‌های محلی‌سازی‌شده از طریق NSLocalizedString استفاده می‌کنند که متن صحیح را در تمام اسکرین‌شات‌ها تضمین می‌کند.

آیا می‌توان برای برنامه‌های macOS اسکرین‌شات تولید کرد؟

بله، Snapshot از برنامه‌های macOS از نسخه Fastlane 2.200 پشتیبانی می‌کند. برای macOS، پلتفرم را در Snapfile از طریق پارامتر app_platform("macOS") مشخص کنید. Snapshot تست‌های UI را روی macOS اجرا می‌کند و اسکرین‌شات‌هایی مطابق با الزامات Mac App Store ایجاد می‌کند.

Snapshot چه تفاوتی با اسکرین‌شات معمولی با Cmd+S دارد؟

اسکرین‌شات دستی نیاز به باز کردن هر صفحه به صورت دستی، تغییر زبان، تغییر دستگاه دارد — حدود ۶۰ عمل برای مجموعه کامل. Snapshot کل فرآیند را خودکار می‌کند: زبان‌ها و دستگاه‌ها را تغییر می‌دهد، تست‌های UI را اجرا می‌کند و اسکرین‌شات‌ها را با نام‌های صحیح برای App Store در ۱۵ دقیقه ذخیره می‌کند.

خلاصه

  • Snapshot — ابزار Fastlane برای تولید خودکار اسکرین‌شات‌های برنامه‌های iOS از طریق تست‌های UI XCTest در تمام دستگاه‌ها و زبان‌ها.
  • توسعه‌دهنده فراخوانی‌های snapshot() را در کد تست‌های UI در نقاط کلیدی برنامه اضافه می‌کند — Snapshot در این مکان‌ها تصاویر می‌گیرد.
  • پیکربندی از طریق Snapfile لیست دستگاه‌ها، زبان‌ها و پارامترهای شبیه‌ساز را تعریف می‌کند: devices، languages، reinstall_app و erase_simulator.
  • نتایج در پوشه screenshots/[Language]/ در قالبی سازگار با Deliver برای بارگذاری مستقیم در App Store ذخیره می‌شوند.
  • یکپارچه‌سازی در CI/CD امکان تولید خودکار اسکرین‌شات‌های تازه قبل از هر انتشار با شبیه‌سازهای موازی برای تسریع فرآیند را فراهم می‌کند.
  • خطاهای رایج Snapshot مربوط به تست‌های UI ناپایدار در زبان‌های مختلف، عدم وجود شبیه‌سازها در Xcode یا پیکربندی نادرست Scheme است.

ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد

IT Sectr از سال 2017 برنامه‌های iOS و Android را برای استارتاپ‌ها و کسب‌وکارها ایجاد می‌کند. ما به شما مشاوره می‌دهیم و بهترین راه‌حل را پیشنهاد خواهیم کرد.

بحث درباره پروژه

همچنین بخوانید