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 सिम्युलेटर भौतिक डिवाइस के बिना ऐप्स के परीक्षण के लिए Xcode में निर्मित iOS डिवाइस का सॉफ़्टवेयर अनुकरण है।
# सभी उपकरणों और भाषाओं के लिए स्क्रीनशॉट जेनरेट करें
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 एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें