Repository navigation
[build-tools] Encode macOS session previews with cwebp - #4549
Merged
Merged
Conversation
Homebrew's FFmpeg is built without libwebp, so every macOS preview failed with "Encoder not found" (exit code 8). Resize the screenshot with sips and encode it with cwebp from Homebrew's webp package instead. Android keeps using FFmpeg.
|
✅ Thank you for adding the changelog entry! |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #4549 +/- ##
==========================================
+ Coverage 73.79% 73.80% +0.01%
==========================================
Files 1000 1000
Lines 48937 48954 +17
Branches 10582 10583 +1
==========================================
+ Hits 36109 36126 +17
Misses 11834 11834
Partials 994 994 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
gwdp
approved these changes
Oct 6, 2026
gwdp
added a commit
that referenced
this pull request
Oct 8, 2026
Appium's startRecordingScreen runs ffmpeg on the worker. The macOS session image does not ship it, and #4549 removed the only install that iOS sessions ran, so XCUITest recording fails with "'ffmpeg' binary is not found in PATH". Install ffmpeg concurrently with Appium, wait for both installs, and fail the step when ffmpeg is still missing.
gwdp
added a commit
that referenced
this pull request
Oct 8, 2026
Appium's startRecordingScreen runs ffmpeg on the worker. The macOS session image does not ship it, and #4549 removed the only install that iOS sessions ran, so XCUITest recording fails with "'ffmpeg' binary is not found in PATH". Install ffmpeg concurrently with Appium, wait for both installs, and fail the step when ffmpeg is still missing.
gwdp
added a commit
that referenced
this pull request
Oct 8, 2026
Appium's startRecordingScreen runs ffmpeg on the worker. The macOS session image does not ship it, and #4549 removed the only install that iOS sessions ran, so XCUITest recording fails with "'ffmpeg' binary is not found in PATH". Install ffmpeg concurrently with Appium, and wait for both installs before the step continues.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
Session previews from #4398 fail on every iOS session. The worker logs show:
The macOS session image has no FFmpeg, so the worker installs it with
brew install ffmpeg. Homebrew's FFmpeg is built without libwebp, so it cannot encode WebP. Exit code 8 is FFmpeg's "Encoder not found".How
On macOS, the preview no longer uses FFmpeg. It resizes the simulator screenshot with the built-in
sips -Z 320and encodes it withcwebp -q 70from Homebrew'swebppackage. The session host runsbrew install webpin the background only whencwebpis missing. If that fails, it logs a warning and the session runs without previews. This also removes thebrew install ffmpegthat macOS sessions ran only for previews.Android keeps the FFmpeg command, because the Android session image's FFmpeg includes libwebp.
Test Plan
Tests, ran EAS Workflow with this logic to test e2e