Sitelet https://github.com/flutter/flutter/pull/192463
Skip to content

Migrate ios driver tests batch 4 to simulators - #192463

Merged
auto-submit[bot] merged 1 commit into
flutter:masterfrom
okorohelijah:migrate_ios_driver_tests_batch_4
Sep 15, 2026
Merged

auto-submit[bot] merged 1 commit into
flutter:masterfrom
okorohelijah:migrate_ios_driver_tests_batch_4

Conversation

@okorohelijah

@okorohelijah okorohelijah commented Sep 9, 2026 •

Copy link
Copy Markdown
Contributor

Part of #186414

This batch migrates 2 Devicelab tests to simulators:

  • external_ui_integration_test_ios (external_textures_integration_test_ios)
  • hello_world_impeller_ios_sdfs

Changes:

  • Moved targets in .ci.yaml from Mac_ios to Mac (Simulator) with bringup: true and injected ruby dependency.
  • Changed tags to ["devicelab", "hostonly", "mac"].
  • Wrapped external_textures_integration_test_ios Devicelab task with testWithNewIOSSimulator.
  • Migrated dev/integration_tests/external_textures and examples/hello_world iOS projects to adopt UIScene .

@github-actions github-actions Bot added the d: examples Sample code and demos label Sep 9, 2026
@okorohelijah

okorohelijah commented Sep 9, 2026 •

Copy link
Copy Markdown
Contributor Author

This PR migrates another batch of devicelab driver tests from physical iOS devices to macOS Simulators (hostonly bots).

What these tests do:

  • external_ui_integration_test_ios (external_textures_integration_test_ios): Runs an integration driver test against dev/integration_tests/external_textures to verify external texture creation and consumption via FlutterTexture and CVPixelBufferRef, asserting that texture frames are consumed as expected and widget build counts remain stable.
  • hello_world_impeller_ios_sdfs: Verifies that Impeller correctly switches to the Signed Distance Field (MetalSDF) font rendering backend when configured with the FLTEnableSDFs flag in Info.plist, validating both standard Metal and MetalSDF log outputs.

Why it is safe to migrate:

  • Neither test requires physical hardware or external sensors.

  • external_textures generates mock pixel buffers in Objective-C using an NSTimer and registers them with the engine texture registry. I confirmed that its Android counterpart (external_textures_integration_test) is already running on an emulator (Linux_android_emu in .ci.yaml, migrated in Start renaming by adding a new bringup: true as an Android emulator. #142257).

  • hello_world_impeller_ios_sdfs was originally implemented with testWithNewIOSSimulator when added in Adds integration test for the FLTEnableSDFs flag for iOS #185637, but its CI configuration in .ci.yaml had not yet been updated from Mac_ios to Mac (hostonly).

  • Both tests were verified locally on ephemeral iOS Simulators and passed.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request updates CI configurations for iOS integration tests to run on Mac hosts with a Ruby dependency, and refactors the iOS test runner to execute within a newly created iOS simulator. It also updates the iOS AppDelegates to adopt the FlutterImplicitEngineDelegate and configures scene manifests in Info.plist. Feedback on the changes suggests removing redundant simulator cleanup in the Dart test script, as testWithNewIOSSimulator already manages simulator lifecycles, and removing a redundant application:didFinishLaunchingWithOptions: override in the hello_world example.

Comment thread dev/devicelab/bin/tasks/external_textures_integration_test_ios.dart
Comment on lines 8 to 20
@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[GeneratedPluginRegistrant registerWithRegistry:self];
// Override point for customization after application launch.
return [super application:application didFinishLaunchingWithOptions:launchOptions];
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
return [super application:application
didFinishLaunchingWithOptions:launchOptions];
}

- (void)didInitializeImplicitFlutterEngine:
(NSObject<FlutterImplicitEngineBridge> *)engineBridge {
[GeneratedPluginRegistrant registerWithRegistry:engineBridge.pluginRegistry];
}
@end

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The overridden application:didFinishLaunchingWithOptions: method only calls super and returns its result. Since FlutterAppDelegate already implements this method, this override is redundant and can be safely removed to simplify the class.

@implementation AppDelegate

- (void)didInitializeImplicitFlutterEngine:
    (NSObject<FlutterImplicitEngineBridge> *)engineBridge {
  [GeneratedPluginRegistrant registerWithRegistry:engineBridge.pluginRegistry];
}
@end

@okorohelijah okorohelijah added the CICD Run CI/CD label Sep 9, 2026
@Piinks Piinks added platform-ios iOS applications specifically team-ios Owned by iOS platform team labels Sep 9, 2026
@okorohelijah okorohelijah added the autosubmit Merge PR when tree becomes green via auto submit App label Sep 15, 2026
@auto-submit
auto-submit Bot added this pull request to the merge queue Sep 15, 2026
Merged via the queue into flutter:master with commit 37410f2 Sep 15, 2026
40 of 41 checks passed
@flutter-dashboard flutter-dashboard Bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Sep 15, 2026
@okorohelijah okorohelijah mentioned this pull request Sep 16, 2026
6 of 11 tasks
b-luk pushed a commit to artemkulyk/flutter that referenced this pull request Sep 16, 2026
Remove bringup for flutter#192463

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [AI contribution guidelines] and understand my
responsibilities, or I am not using AI tools.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [ ] I listed at least one issue that this PR fixes in the description
above.
- [ ] I updated/added relevant in-code documentation (doc comments with
`///`).
- [ ] If this PR introduces a new feature or capability, I created and
linked a website documentation issue or PR in [flutter/website] (or
verified none is needed).
- [ ] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [ ] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel
on [Discord].

If this change needs to override an active code freeze, provide a
comment explaining why. The code freeze workflow can be overridden by
code reviewers. See pinned issues for any active code freezes with
guidance.

**Note**: The Flutter team is currently trialing the use of [Gemini Code
Assist for
GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).
Comments from the `gemini-code-assist` bot should not be taken as
authoritative feedback from the Flutter team. If you find its comments
useful you can update your code accordingly, but if you are unsure or
disagree with the feedback, please feel free to wait for a Flutter team
member's review for guidance on which automated comments should be
addressed.

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[AI contribution guidelines]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[flutter/website]: https://github.com/flutter/website
[breaking change policy]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CICD Run CI/CD d: examples Sample code and demos platform-ios iOS applications specifically team-ios Owned by iOS platform team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants