The TV storefronts were the only ones with no automated screenshot captures #222

Merged
enricobuehler merged 1 commits from worktree-store-shots-tv-automation into main 2026-08-14 11:11:47 +00:00
Owner

Closes the two TV gaps in the store-screenshot automation, found while refreshing the Play/App Store listings:

Apple TV (App Store, 1920×1080) — the harness supported tools/screenshots.sh tvos all along; the screenshots job in apple.yml just never invoked it. The job now:

  • installs nightly + rust-src and builds the xcframework with BUILD_TVOS=1 (the same Tier-3 -Zbuild-std recipe the distribute job already runs green on this runner),
  • shoots tvOS with an explicit scene list (01-stream 02-hosts 05-settings 03-pair): the gamepad-console scenes are compiled out on tvOS, and an unknown scene name falls back to a normal app launch — the capture would silently be of the real, empty app,
  • stays best-effort (|| ::warning::), so a tvOS hiccup can never red the job. Timeout 75 → 90 min for the cold build-std build.

Note: the job skips PRs, so this leg first exercises on the merge-to-main push.

Android TV (Google Play, 16:9 1920×1080) — the console scenes existed but Roborazzi rendered everything at phone geometry with phone-* names. New TvScreenshotTest renders console-home, console-settings, console-controllers, connecting-console and the stream HUD at w960dp-h540dp-television-xhdpi = native 1920×1080 px, prefixed tv-. Verified locally: all six scenes render at exactly 1920×1080. android-screenshots.yml needs no change (it runs the whole unit-test task and uploads the whole output dir).

Follow-ups deliberately not in this PR: mock pads for the controllers scene (it honestly renders "no controller detected"), a tablet qualifier for Play's 7″/10″ slots.

Closes the two TV gaps in the store-screenshot automation, found while refreshing the Play/App Store listings: **Apple TV (App Store, 1920×1080)** — the harness supported `tools/screenshots.sh tvos` all along; the `screenshots` job in `apple.yml` just never invoked it. The job now: - installs nightly + `rust-src` and builds the xcframework with `BUILD_TVOS=1` (the same Tier-3 `-Zbuild-std` recipe the distribute job already runs green on this runner), - shoots tvOS with an **explicit scene list** (`01-stream 02-hosts 05-settings 03-pair`): the gamepad-console scenes are compiled out on tvOS, and an unknown scene name falls back to a *normal app launch* — the capture would silently be of the real, empty app, - stays best-effort (`|| ::warning::`), so a tvOS hiccup can never red the job. Timeout 75 → 90 min for the cold build-std build. Note: the job skips PRs, so this leg first exercises on the merge-to-main push. **Android TV (Google Play, 16:9 1920×1080)** — the console scenes existed but Roborazzi rendered everything at phone geometry with `phone-*` names. New `TvScreenshotTest` renders `console-home`, `console-settings`, `console-controllers`, `connecting-console` and the stream HUD at `w960dp-h540dp-television-xhdpi` = native 1920×1080 px, prefixed `tv-`. Verified locally: all six scenes render at exactly 1920×1080. `android-screenshots.yml` needs no change (it runs the whole unit-test task and uploads the whole output dir). Follow-ups deliberately not in this PR: mock pads for the controllers scene (it honestly renders "no controller detected"), a tablet qualifier for Play's 7″/10″ slots.
enricobuehler added 1 commit 2026-08-14 11:04:25 +00:00
ci(screenshots): the TV storefronts were the only ones with no automated captures
ci / bun-nix (pull_request) Successful in 1m49s
ci / web (pull_request) Successful in 3m53s
ci / rust-arm64 (pull_request) Successful in 4m41s
apple / swift (pull_request) Successful in 2m3s
apple / distribute (pull_request) Skipped
apple / screenshots (pull_request) Skipped
ci / docs-site (pull_request) Successful in 5m11s
ci / rust (pull_request) Failing after 10m14s
android / android (pull_request) Successful in 11m24s
b6b3c10cb5
Google Play's Android TV slot needs 16:9 1920x1080 shots and the App Store
needs Apple TV 1920x1080 — neither existed as automation output:

- apple.yml screenshots job now runs the tvos leg. The harness supported it
  all along (tools/screenshots.sh tvos); what the job was missing is the
  Tier-3 tvOS xcframework slices (nightly + -Zbuild-std, same recipe the
  distribute job uses on this runner) and an explicit scene list — the
  gamepad-console scenes are compiled out on tvOS, and an UNKNOWN scene
  name falls back to a normal app launch, which would silently capture the
  real empty app. Still best-effort: a tvOS hiccup warns, never reds.
- TvScreenshotTest renders the console scenes + the stream HUD at Android
  TV geometry (w960dp-h540dp-television-xhdpi = native 1920x1080, no
  resampling), prefixed tv- so the artifact separates the form factors.
  Verified locally: 6 scenes, all 1920x1080.

android-screenshots.yml needs no change — it runs the whole unit-test task
and uploads the whole roborazzi output dir.
enricobuehler merged commit 76c677a8f8 into main 2026-08-14 11:11:47 +00:00
enricobuehler deleted branch worktree-store-shots-tv-automation 2026-08-14 11:11:48 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: unom/punktfunk#222