Skip to content

[EPAC-1973]: add native iPad screenshot capture via Fastlane Snapshot#684

Merged
github-actions[bot] merged 1 commit into
mainfrom
symphony/epac-1973-capture-native-ipad-screenshots-extend-snapfile
May 28, 2026
Merged

[EPAC-1973]: add native iPad screenshot capture via Fastlane Snapshot#684
github-actions[bot] merged 1 commit into
mainfrom
symphony/epac-1973-capture-native-ipad-screenshots-extend-snapfile

Conversation

@riddim-developer-bot
Copy link
Copy Markdown
Contributor

Summary

Adds native iPad App Store screenshot capture so the listing shows real iPad layouts instead of upscaled iPhone art.

  • Snapfile: extended with iPad Pro 13-inch (M4) and iPad Pro 11-inch (M4) — 4 devices total
  • AppStoreScreenshotTests.swift: new UI test testCaptureAppStoreScreenshotSources that iterates 6 showcase pages and calls snapshot() via Fastlane's SnapshotHelper
  • ContentView.swift: AppStoreScreenshotShowcaseView now detects horizontalSizeClass == .regular (iPad) and renders a two-column layout — headline/subtitle on the left, content card on the right — visually distinct from the phone's page-style TabView
  • Legacy cleanup: removed 12 APP_IPAD_PRO_* upscaled PNGs; excluded vendored SnapshotHelper.swift from SwiftLint
  • README: updated docs/marketing/screenshots/README.md to document the actual fastlane snapshot pipeline, removing stale references to render_app_store_screenshots.sh

Design decision

Decision (b) — iPad-adapted showcase layout. The showcase view branches on horizontalSizeClass to use a two-column HStack composition (larger 44pt headlines on the left, phone-frame content card constrained to 420pt on the right) instead of the phone's single-column page-style TabView. This ships faster than capturing the real iPadLayout NavigationSplitView (decision a), which depends on Stage 2 per-tab two-column work landing first. A follow-up issue for decision (a) can be filed after Stage 2 lands.

Files changed

File Change
ios/fastlane/Snapfile Added 2 iPad devices
ios/epacUITests/AppStoreScreenshotTests.swift New — screenshot capture test
ios/epacUITests/SnapshotHelper.swift New — vendored from Fastlane
ios/epac/Views/ContentView.swift iPad two-column layout in showcase view
.swiftlint.yml Exclude vendored SnapshotHelper
docs/marketing/screenshots/README.md Updated pipeline documentation
ios/fastlane/screenshots/en-CA/APP_IPAD_PRO_* Deleted 12 legacy upscaled PNGs

Verification

  • cd ios && make build passes
  • cd ios && xcodebuild build-for-testing (UI test target compiles)
  • swiftlint --strict clean on changed files (pre-existing violations in epac-clip/ are unrelated)
  • Localization check passes: python3 scripts/localization/check_localizations.py --github-warnings — 100% coverage
  • bundle exec fastlane snapshot not run in CI (local-only release task per issue scope) — requires iPhone 16 Pro Max, iPhone 16, iPad Pro 13-inch (M4), and iPad Pro 11-inch (M4) simulators installed

Skipped verification

  • Simulator screenshot visual QA: this machine's simulators (iPhone 17 Pro Max, iPad Pro 13-inch M5) don't match the Snapfile device names (iPhone 16 Pro Max, iPad Pro 13-inch M4). Visual QA is delegated to the Human Handoff issue per the acceptance criteria.
  • Full fastlane snapshot run: requires the specific simulator runtimes listed in the Snapfile. This is a local-only release-engineering task; CI screenshot capture is out of scope per the issue.

Reviewer-Boundary: review-only

Extend the Snapfile to include iPad Pro 13-inch (M4) and iPad Pro 11-inch (M4)
alongside the existing two iPhone devices. Add AppStoreScreenshotTests with a
testCaptureAppStoreScreenshotSources method that iterates all 6 showcase pages
and calls snapshot() via SnapshotHelper.swift (vendored from Fastlane).

The showcase view (AppStoreScreenshotShowcaseView) now detects iPad via
horizontalSizeClass == .regular and renders a two-column layout — headlines on
the left, content card on the right — instead of the phone's page-style TabView.
This ensures iPad screenshots are visually distinct (decision b per the ticket).

Remove 12 legacy APP_IPAD_PRO_* upscaled PNGs that were resized from iPhone
captures. Update docs/marketing/screenshots/README.md to reflect the actual
fastlane snapshot pipeline. Exclude vendored SnapshotHelper.swift from SwiftLint.
@riddim-developer-bot riddim-developer-bot Bot added the autonomous Enrolled in prconverged daemon for automated review and merge label May 28, 2026
@github-actions github-actions Bot enabled auto-merge (squash) May 28, 2026 01:41
@github-actions github-actions Bot merged commit 26bc71e into main May 28, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

autonomous Enrolled in prconverged daemon for automated review and merge

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants