Snapshot (Fastlane) হল একটি টুল যা সমস্ত সমর্থিত ডিভাইস এবং ভাষায় iOS অ্যাপের স্বয়ংক্রিয় স্ক্রিনশট জেনারেশনের জন্য। সিমুলেটরের মাধ্যমে ম্যানুয়ালি স্ক্রিনশট তৈরি করার বিপরীতে, Snapshot UI টেস্ট চালায় এবং অ্যাপের নির্দিষ্ট পয়েন্টে স্ক্রিনশট নেয়। অফিসিয়াল Fastlane ডকুমেন্টেশন (2026) অনুসারে, Snapshot রিলিজের জন্য স্ক্রিনশট প্রস্তুতির সময় 4 ঘন্টা থেকে 15 মিনিটে কমিয়ে আনে।
মূল বিষয়
Snapshot (Fastlane) হল Fastlane ইকোসিস্টেমের একটি উপাদান যা App Store-এর জন্য অ্যাপ স্ক্রিনশট তৈরিকে স্বয়ংক্রিয় করে। এটি iOS সিমুলেটরে UI টেস্ট চালায়, নির্দিষ্ট অ্যাপ অবস্থায় স্ক্রিনশট নেয় এবং প্রতিটি ভাষা ও ডিভাইসের জন্য সঠিক নামসহ একটি কাঠামোবদ্ধ ডিরেক্টরিতে সংরক্ষণ করে।
Snapshot ছাড়া, ডেভেলপাররা ম্যানুয়ালি সিমুলেটর চালু করে, প্রতিটি স্ক্রিন খোলে, Cmd+S-এর মাধ্যমে স্ক্রিনশট নেয়, ভাষা পরিবর্তন করে এবং সমস্ত কম্বিনেশনের জন্য প্রক্রিয়াটি পুনরাবৃত্তি করে। স্ক্রিনশট অটোমেশন ASO অপ্টিমাইজেশনের একটি মূল উপাদান, কারণ App Store-এর প্রতিটি নতুন রিলিজের জন্য আপ-টু-ডেট স্ক্রিনশট প্রয়োজন, এবং 60+ স্ক্রিনশট ম্যানুয়ালি আপডেট করতে ঘণ্টার পর ঘণ্টা কাজ লাগে।
App Store Connect Documentation (2025) অনুসারে, স্থানীয়কৃত স্ক্রিনশটযুক্ত অ্যাপগুলি লক্ষ্য দেশে 25% বেশি রূপান্তর পায়। Snapshot টিমগুলিকে একটি রানে 32টি ভাষার জন্য ভিজ্যুয়াল কন্টেন্ট আপডেট করতে দেয়, যা অ্যাপের নতুন বৈশিষ্ট্যগুলির সাথে যুক্ত মার্কেটিং ক্যাম্পেইনের জন্য বিশেষভাবে গুরুত্বপূর্ণ।
Snapshot যে কোনো প্রকল্পে ব্যবহার করুন যা App Store-এ প্রকাশিত হয় — এটি রিলিজ প্রক্রিয়া স্বয়ংক্রিয় করতে এবং ASO উন্নত করতে ইচ্ছুক টিমগুলির জন্য মানক টুল।
Snapshot-এ স্ক্রিনশট জেনারেশন প্রক্রিয়া বিভিন্ন ধাপ নিয়ে গঠিত: UI টেস্ট প্রস্তুত করা, Snapfile কনফিগার করা, সিমুলেটর চালু করা এবং ফলাফল সংগ্রহ করা। Snapshot নির্দিষ্ট ডিভাইস এবং ভাষার জন্য ক্রমান্বয়ে প্রতিটি সিমুলেটর চালু করে, UI টেস্ট চালায় এবং snapshot() ফাংশন কল করার পয়েন্টগুলিতে স্ক্রিনশট নেয়।
সব টেস্ট শেষ হওয়ার পর, Snapshot App Store প্রয়োজনীয়তা পূরণ করে এমন নাম সহ screenshots/[Language]/ ডিরেক্টরিতে স্ক্রিনশট সংগ্রহ করে। প্রতিটি স্ক্রিনশট PNG ফরম্যাটে লক্ষ্য ডিভাইসের সাথে মেলে এমন রেজোলিউশনে সংরক্ষিত হয়। Snapshot সমস্ত তৈরি স্ক্রিনশটের ভিজ্যুয়াল যাচাইয়ের জন্য একটি HTML রিপোর্টও জেনারেট করে।
Snapshot কাজ করার জন্য, অ্যাপের XCTest UI টেস্ট কোডে snapshot() কল যোগ করা প্রয়োজন। ফাংশনটি কলের মুহূর্তে বর্তমান স্ক্রিন অবস্থার স্ক্রিনশট নেয়। ডেভেলপার প্রতিটি মূল ক্রিয়ার পরে snapshot() রাখে: স্ক্রিন খোলা, ডেটা ইনপুট করা, ট্যাবের মাধ্যমে নেভিগেট করা বা ফলাফল প্রদর্শন করা।
UI টেস্ট স্ট্রাকচারের উদাহরণ: টেস্ট অ্যাপে লগইন করে, লগইন স্ক্রিন ক্যাপচার করতে snapshot("01-LoginScreen") কল করে, তারপর হোম স্ক্রিনে নেভিগেট করে এবং হোম স্ক্রিন ক্যাপচার করতে snapshot("02-HomeScreen") কল করে। XCTest হল iOS অ্যাপের ইউনিট এবং UI পরীক্ষার জন্য Apple-এর ফ্রেমওয়ার্ক, যা সরাসরি Xcode-এ একীভূত।
// Snapshot-এর জন্য UI টেস্ট
- (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-এর একটি গুরুত্বপূর্ণ ফ্যাক্টর: 75% ক্ষেত্রে ব্যবহারকারীরা তাদের মাতৃভাষায় কন্টেন্টযুক্ত অ্যাপ পছন্দ করেন, যার মধ্যে 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-এ তৈরি, শারীরিক ডিভাইস ছাড়াই অ্যাপ পরীক্ষার জন্য।
# সব ডিভাইস এবং ভাষার জন্য স্ক্রিনশট জেনারেট করুন
fastlane snapshot
# শুধুমাত্র নির্দিষ্ট ডিভাইসের জন্য জেনারেট করুন
fastlane snapshot --devices "iPhone 15 Pro Max,iPhone 15"
# স্ক্রিনশট জেনারেশনের আগে পরিষ্কার করুন
fastlane snapshot --reinstall_app --erase_simulator
Snapfile হল একটি Fastlane কনফিগারেশন ফাইল যা স্ক্রিনশট জেনারেশন প্যারামিটার সংজ্ঞায়িত করে: ডিভাইস তালিকা, ভাষা, টাইমআউট এবং লঞ্চ অপশন। Snapfile fastlane ডিরেক্টরিতে সংরক্ষিত হয় এবং প্রকল্পের সাথে সংস্করণভুক্ত হয়, যা টিমের সকল সদস্যের জন্য একীভূত কনফিগারেশন নিশ্চিত করে।
# 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 সংস্করণ নির্দিষ্ট করার জন্য ios_version প্যারামিটার এবং প্রথম UI টেস্ট ত্রুটিতে জেনারেশন বন্ধ করার জন্য stop_after_first_error সমর্থন করে।
SwiftUI প্রকল্পের জন্য, use_simulator_for_language প্যারামিটার উপলব্ধ, যা সিস্টেম অঞ্চল পরিবর্তন না করে সিমুলেটর সেটিংসের মাধ্যমে ভাষা পরিবর্তন নিয়ন্ত্রণ করে। Snapshot অ্যাপ চালু করার সময় অতিরিক্ত আর্গুমেন্ট পাস করার জন্য launch_arguments সমর্থন করে — বিভিন্ন ব্যাকএন্ড কনফিগারেশন বা A/B টেস্টের জন্য দরকারী।
Snapshot ইন্টারফেস জেনারেশন শুরুর জন্য বেসিক কমান্ড এবং প্রক্রিয়ার উপর সুনির্দিষ্ট নিয়ন্ত্রণের জন্য বর্ধিত ফ্ল্যাগ অন্তর্ভুক্ত করে। মূল কমান্ড fastlane snapshot Snapfile কনফিগারেশনের উপর ভিত্তি করে সম্পূর্ণ স্ক্রিনশট জেনারেশন চক্র চালায়।
কমান্ড fastlane snapshot --devices "iPhone 15" শুধুমাত্র নির্দিষ্ট ডিভাইসের জন্য স্ক্রিনশট জেনারেট করে, Snapfile থেকে বাকি উপেক্ষা করে। --languages "en-US,ru" জেনারেশনের জন্য ভাষা ফিল্টার করে। এই ফ্ল্যাগগুলির সংমিশ্রণ একটি ডিভাইস এবং ভাষায় সম্পূর্ণ জেনারেশন চক্র ছাড়াই দ্রুত স্ক্রিনশট পরীক্ষার জন্য দরকারী, যা 5টি ডিভাইস এবং 10টি ভাষার জন্য 30 মিনিট পর্যন্ত সময় নিতে পারে।
# একটি ডিভাইসের জন্য দ্রুত জেনারেশন
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 |
CI/CD-তে Snapshot প্রতিটি রিলিজ কমিটের সাথে স্বয়ংক্রিয় স্ক্রিনশট জেনারেশন। Snapshot Deliver ধাপের আগে চলে যাতে নিশ্চিত করা যায় যে App Store-এর স্ক্রিনশট বর্তমান অ্যাপ সংস্করণের সাথে মেলে এবং পূর্ববর্তী সংস্করণের পুরানো UI উপাদান না থাকে।
CI-তে Snapshot কাজ করার জন্য, ইনস্টল করা iOS সিমুলেটর সহ Xcode প্রয়োজন। CI পরিবেশে, Snapshot Xcode থেকে সিমুলেটর ব্যবহার করে, যা রানারে প্রি-লোড করা থাকে। GitHub Actions অতিরিক্ত সেটআপ ছাড়াই UI টেস্ট চালানোর জন্য পূর্ব-ইনস্টল করা Xcode এবং iOS সিমুলেটর সহ ইমেজ সরবরাহ করে।
# CI পরিবেশে Snapshot চালান
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 প্যারামিটার যা একাধিক সিমুলেটর একসাথে চালু করে। এটি 4টি সমান্তরাল থ্রেড ব্যবহার করার সময় 5টি ডিভাইস এবং 10টি ভাষার জন্য স্ক্রিনশট জেনারেশন সময় 40 মিনিট থেকে 15 মিনিটে হ্রাস করে।
Snapshot ব্যবহার করার সময়, ডেভেলপাররা প্রায়ই UI টেস্ট অস্থিরতা, সিমুলেটর সমস্যা এবং ভুল ডিভাইস কনফিগারেশনের সাথে সম্পর্কিত ত্রুটির সম্মুখীন হয়। Snapshot-এ ত্রুটি নির্ণয় HTML রিপোর্ট বিশ্লেষণের মাধ্যমে শুরু হয়, যাতে প্রতিটি ধাপের স্ক্রিনশট এবং ব্যর্থ টেস্ট সম্পর্কে তথ্য থাকে।
ত্রুটি "Failed to build scheme MyAppUITests" ঘটে যখন UI টেস্ট স্কিম বিল্ডের জন্য কনফিগার করা না থাকে। সমাধান: নিশ্চিত করুন যে Xcode-এ UI টেস্টের জন্য একটি আলাদা Scheme তৈরি করা হয়েছে এবং কমান্ড লাইন অ্যাক্সেসের জন্য Shared অপশন সক্ষম করা হয়েছে। Xcode Scheme হল অ্যাপের জন্য একটি বিল্ড, টেস্ট এবং রান কনফিগারেশন যা প্রতিটি অ্যাকশনের জন্য লক্ষ্য এবং প্যারামিটারের সেট সংজ্ঞায়িত করে।
ত্রুটি "No simulators found matching..." ইঙ্গিত করে যে নির্দিষ্ট ডিভাইস টাইপ বা iOS সংস্করণের সাথে কোন সিমুলেটর নেই। সমাধান: সিমুলেটর তৈরি করতে xcrun simctl create চালান বা xcrun simctl list তালিকা থেকে বিদ্যমান ডিভাইস নির্দিষ্ট করুন। xcrun simctl হল iOS সিমুলেটর পরিচালনার জন্য Xcode কমান্ড-লাইন ইউটিলিটি: তৈরি, মুছে ফেলা, চালু করা এবং নির্ণয় করা।
ত্রুটি "UI test failure"-এর জন্য UI টেস্ট একটি ভাষা বা ডিভাইসে ব্যর্থ হয়। সমাধান: প্রথম ত্রুটিতে থামতে --stop_after_first_error ফ্ল্যাগ সহ Snapshot চালান, HTML রিপোর্টে স্ক্রিনশট বিশ্লেষণ করুন এবং টেস্ট ঠিক করুন। একটি সাধারণ কারণ বিভিন্ন ভাষায় ভিন্ন টেক্সট দৈর্ঘ্য, যার কারণে UI উপাদান ওভারল্যাপ হয় বা স্ক্রিন সীমানার বাইরে চলে যায়।
প্রায়শই জিজ্ঞাসিত প্রশ্ন
Snapshot iPhone এবং iPad পরিবারের সমস্ত ডিভাইস সমর্থন করে, যার মধ্যে iPhone 15 Pro Max (6.7 ইঞ্চি), iPhone 15 (6.1 ইঞ্চি), iPad Pro 12.9 ইঞ্চি এবং iPad mini অন্তর্ভুক্ত। প্রতিটি ডিভাইসের জন্য, Snapshot Xcode থেকে সংশ্লিষ্ট সিমুলেটর স্কিন লোড করে, যা সঠিক স্ক্রিন রেজোলিউশন নিশ্চিত করে।
না, Snapshot একচেটিয়াভাবে Xcode থেকে iOS সিমুলেটরের সাথে কাজ করে। বাস্তব ডিভাইসের প্রয়োজন নেই এবং সমর্থিত নয় — সমস্ত স্ক্রিনশট সিমুলেটর পরিবেশে জেনারেট হয়, যা App Store প্রয়োজনীয়তার জন্য অভিন্ন রেজোলিউশন এবং রঙ প্রজনন প্রদান করে।
Snapshot Snapfile-এর প্রতিটি ভাষার জন্য UI টেস্ট চালানোর আগে সিমুলেটর ভাষা পরিবর্তন করে। অ্যাপ সিস্টেম স্থানীয়করণ সেটিংসের মাধ্যমে সংশ্লিষ্ট ভাষায় প্রদর্শিত হয়। UI টেস্ট NSLocalizedString-এর মাধ্যমে স্থানীয়কৃত স্ট্রিং ব্যবহার করে, যা সমস্ত স্ক্রিনশটে সঠিক টেক্সট নিশ্চিত করে।
হ্যাঁ, Snapshot Fastlane সংস্করণ 2.200 থেকে macOS অ্যাপ সমর্থন করে। macOS-এর জন্য, app_platform("macOS") প্যারামিটারের মাধ্যমে Snapfile-এ প্ল্যাটফর্ম নির্দিষ্ট করুন। Snapshot macOS-এ UI টেস্ট চালায় এবং Mac App Store প্রয়োজনীয়তা অনুযায়ী স্ক্রিনশট তৈরি করে।
ম্যানুয়াল স্ক্রিনশটের জন্য প্রতিটি স্ক্রিন ম্যানুয়ালি খোলা, ভাষা পরিবর্তন, ডিভাইস পরিবর্তন — সম্পূর্ণ সেটের জন্য প্রায় 60টি ক্রিয়া প্রয়োজন। Snapshot পুরো প্রক্রিয়াটি স্বয়ংক্রিয় করে: ভাষা, ডিভাইস পরিবর্তন করে, UI টেস্ট চালায় এবং App Store-এর জন্য সঠিক নাম সহ স্ক্রিনশট 15 মিনিটে সংরক্ষণ করে।
সারসংক্ষেপ
আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব
IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন