feat: add tvOS support#3021
Open
DouweBos wants to merge 4 commits into
Open
Conversation
DouweBos
commented
Feb 28, 2026
| import XCTest | ||
|
|
||
| extension XCUIElement { | ||
| #if !os(tvOS) |
Author
There was a problem hiding this comment.
Unsure if we have/want a tvOS equivalent for this function.
96e92af to
3b40e4e
Compare
8b11b05 to
46db006
Compare
55f9a85 to
049ec4f
Compare
e5697c4 to
2c9184e
Compare
|
Does this mean Apple TV is coming back? |
Author
|
@jeeftor I hope so! @amanjeetsingh150 Is there any straightforward way to deal with these driver binary differences? Since those are essentially expected when adding tvOS support, but are also the only remaining check that is failing. @Fishbowler Now this also has an E2E test target for tvOS (RN based since Flutter doesn't support tvOS) - is there anything left to unblock this PR? |
Strip the absolute build-machine prefix from SourceFilesCommonPathPrefix entries so the committed xctestrun is reproducible across environments and the Check Drivers Up-to-Date workflow no longer diffs on user paths.
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.
This PR is only so big because this embeds a RN TV app for the E2E testing. Scope can get reduced, but that also means reducing the test suite.
Features
CLI
Adds tvOS as a named CLI platform, building on the driver work from #2067 by @maxphillipsdev.
Made some additional changes in the device picker to separate out iOS and tvOS devices fully.
Since their UX paradigms are different enough, and any tests previously written against iOS platforms are per definition non-functional on tvOS simulators I felt like this was not a breaking change. Happy to merge the tvOS platform logic back into the iOS one though if you all disagree.
Testing
maestro --platform tvos test ...connects to a booted Apple TV simulator and installs the tvOS driver.maestro --platform ios test ...no longer shows Apple TV simulators in the device pickermaestro studioshould optionally show a device picker listing Apple TV simulators. Should connect to said simulator upon selection.tvOS Settings flow
Fixes
Fixes a pre-existing bug in PickDeviceView where devices were displayed grouped by platform but indexed against the original unsorted list, causing the wrong device to be selected when multiple platforms were listed together.
Screenshots / Recordings
TV Settings Flow
Screen.Recording.2026-02-28.at.23.47.29.mov
Device Picker
Screen.Recording.2026-02-28.at.23.54.32.mov
Simple Test Flow
Screen.Recording.2026-03-01.at.00.06.46.mov
Notes
- launchAppcommand is run. Again, a commit I am happy to drop if the latter is preferred.For tvOS E2E testing we are initially just running against the existing settings app within the simulator. But I now also added a proper demo app using React Native tvOS + Expo based on an earlier one we had laying around over here https://github.com/plexinc/react-native-tvos/tree/request-focus-unmounted-views
Flutter is incompatible with tvOS so the existing app could not get reused.
Issues Fixed
#1515 - Adds support for testing tvOS Apps