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

Add iOS Universal Link integration test (Simulator) - #191443

Merged
auto-submit[bot] merged 15 commits into
flutter:masterfrom
okorohelijah:add_integration_test_sim
Sep 4, 2026
Merged

auto-submit[bot] merged 15 commits into
flutter:masterfrom
okorohelijah:add_integration_test_sim

Conversation

@okorohelijah

@okorohelijah okorohelijah commented Aug 20, 2026 •

Copy link
Copy Markdown
Contributor

This is a pivot of #191201 to run on the iOS Simulator instead of physical devicelab hardware to conserve capacity.

This PR introduces automated integration tests for iOS deep linking and Universal Links for standard standalone Flutter apps on the iOS Simulator.

  1. UIScene Lifecycle (ios_universal_link):
    • Tests the standard UISceneDelegate lifecycle (UIApplicationSceneManifest) used by default Flutter apps.
  2. Complete Cold and Warm Start Coverage:
    • HTTPS Universal Links: Verified on both cold launch and warm background resume.
    • Custom Schemes (testscheme://): Verified on both cold launch and warm background resume.
  3. End-to-End Route Delivery:
    • Verifies that the iOS deep link correctly traverses the Flutter Engine and is delivered to the Dart framework (pushRouteInformation), rendering the destination route on the UI for XCUITest assertion.
  4. Devicelab Automation:
    • Implemented dev/devicelab/bin/tasks/ios_universal_link_test.dart to provision a clean simulator runtime, build the test app, run XCUITests via xcodebuild test, and guarantee simulator teardown.
    • Pre-warms simulator caches before assertion loops to prevent first-frame deadline timeouts.

(Note: Plugin lifecycle and Add-to-App deep link testing is decoupled into #192173).

@github-actions github-actions Bot added the team-ios Owned by iOS platform team label Aug 20, 2026
@okorohelijah

Copy link
Copy Markdown
Contributor Author

Regarding why this test uses a dedicated, standalone app instead of piggybacking on an existing integration test app:

  1. The integration test tests the the cold-start NSUserActivity payload routing. If we attach this test to a shared integration app, any future heavy plugins or UI frameworks added to that app could accidentally alter/slow down the cold-boot process, leading to noisy and hard-to-debug test failures.

  2. This test also requires a very specific iOS project configuration (e.g adding the development team, embedding applinks:flutter-dashboard.appspot.com etc). If we applied these domain-specificsettings to a shared integration app, it could easily conflict with or break other integration tests that rely on default CI settings or different domains.

Because we are explicitly testing a delicate Native-to-Dart bridge routing mechanism, isolating it is the safest approach. It ensures the test stays pristine, robust, and completely immune to unrelated framework or .pbxproj changes elsewhere in the repo

@okorohelijah
okorohelijah force-pushed the add_integration_test_sim branch from 74a6cba to c518867 Compare August 20, 2026 20:21
@okorohelijah
okorohelijah marked this pull request as ready for review August 20, 2026 20:22
@okorohelijah
okorohelijah requested a review from a team as a code owner August 20, 2026 20:22

@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 introduces a new integration test, ios_universal_link_test.dart, along with a dedicated Flutter test project to verify that iOS Universal Links correctly cold-start the Flutter Engine and forward routes to the Dart framework. The test is also registered in .ci.yaml and TESTOWNERS. Review feedback points out that the simulator lifecycle is already managed by testWithNewIOSSimulator, making the manual try-finally block and removeIOSSimulator call redundant, and recommends removing them to avoid potential double-deletion issues.

Comment thread dev/devicelab/bin/tasks/ios_universal_link_test.dart Outdated
Comment thread dev/devicelab/bin/tasks/ios_universal_link_test.dart Outdated
@okorohelijah okorohelijah added the CICD Run CI/CD label Aug 20, 2026
@vashworth
vashworth self-requested a review August 20, 2026 22:02
Comment on lines +51 to +122
await exec('xcrun', <String>[
'devicectl',
'device',
'install',
'app',
'--device',
deviceId,
appPath,
]);

print('Launching app via universal link...');

// Launch the app via universal link with --console to capture native stdout/stderr.
final Process process = await startProcess('xcrun', <String>[
'devicectl',
'device',
'process',
'launch',
'--device',
deviceId,
'--console',
'--payload-url',
'https://flutter-dashboard.appspot.com/invalid_route',
'com.google.experimental0.dev', // Bundle ID from the static project
]);

var linkReceived = false;
final completer = Completer<void>();

unawaited(
process.exitCode.then((int code) {
if (!completer.isCompleted) {
print('Process exited early with code $code');
completer.complete();
}
}),
);

void handleLine(String line, String prefix) {
print('[$prefix] $line');
if (line.contains(
'Engine sent: pushRouteInformation {location: https://flutter-dashboard.appspot.com/invalid_route',
)) {
linkReceived = true;
if (!completer.isCompleted) {
completer.complete();
}
}
}

process.stdout
.transform(utf8.decoder)
.transform(const LineSplitter())
.listen((String line) => handleLine(line, 'stdout'));
process.stderr
.transform(utf8.decoder)
.transform(const LineSplitter())
.listen((String line) => handleLine(line, 'stderr'));

// Wait for the link or timeout
try {
await completer.future.timeout(const Duration(minutes: 2));
} catch (e) {
print('Timeout waiting for universal link route to be printed.');
}

process.kill();

if (!linkReceived) {
result = TaskResult.failure('App did not receive the universal link route.');
return;
}

@vashworth vashworth Aug 24, 2026 •

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.

I think you should consider using XCUITest instead of devicectl.

This test appears to only validate that it receives a http url on cold start, but it should also test warm start, which I don't know if you can do with devicectl. Cold vs warm start use different APIs and https vs custom scheme use different APIs. We need to validate each use case.

For example, when using a https link on warm start, it calls scene:continueUserActivity:. When using a custom scheme on warm start, it calls scene:openURLContexts:. On cold start, for both, it calls scene:willConnectToSession:options: but use different connectionOptions.

This test should verify the following:

  • Flutter app navigates appropriately on cold start when using https link
  • Flutter app navigates appropriately on warm start (app is already open in background) when using https link
  • Flutter app navigates appropriately on cold start when using custom scheme link
  • Flutter app navigates appropriately on warm start (app is already open in background) when using custom scheme link

See https://docs.flutter.dev/cookbook/navigation/set-up-universal-links
See go/flutter-ios-team-deeplinking
See

// If your app has opted into Scenes, and your app is not running, the system delivers the
// universal link to the scene(_:willConnectTo:options:) delegate method after launch, and to
// scene(_:continue:) when the universal link is tapped while your app is running or suspended in
// memory.
for (NSUserActivity* userActivity in connectionOptions.userActivities) {
if ([self handleDeeplink:userActivity.webpageURL flutterEngine:engine]) {
return;
}
}
// If your app has opted into Scenes, and your app isn’t running, the system delivers the URL to
// the scene:willConnectToSession:options: delegate method after launch, and to
// scene:openURLContexts: when your app opens a URL while running or suspended in memory.
for (UIOpenURLContext* urlContext in connectionOptions.URLContexts) {
if ([self handleDeeplink:urlContext.URL flutterEngine:engine]) {
return;
}
}

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.

@hellohuanlin Is there anything else specific you're wanting this integration test to validate?

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.

It would be helpful to write XCUITests to verify that plugin lifecycle works with the right deep links (or userActivities) passed in, because there are plugins that use these values. You can follow the existing examples in module_uiscene_test_ios.dart.

@vashworth vashworth Aug 28, 2026 •

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.

It may be better to just add to module_uiscene_test_ios.dart directly. That setup is quite complex. And that would save us from having to introduce a new builder.

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.

@okorohelijah Why did you decide against using module_uiscene_test_ios.dart?

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.

Let's use module_uiscene_test_ios - it will be easier to just run the same command to verify all scene/app life cycle related logic works.

@okorohelijah okorohelijah Aug 31, 2026 •

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

I kept this as a separate integration test for a few key reasons:

  1. Standalone App vs. Add-to-App Scope:
    module_uiscene_test_ios.dart is specifically built to test Add-to-App scenarios (embedding a Flutter module into native UIKit and SwiftUI host applications). In contrast, ios_universal_link_test verifies a standard, standalone Flutter application i.e the default flutter create template. Universal links are predominantly configured on standard standalone apps, so testing the default iOS runner and its end-to-end routing into the Flutter framework (pushRouteInformation) provides direct coverage for how most developers use this feature.

  2. Failure & Separation of Concerns:
    If deep linking regresses, having a dedicated test makes triage immediate and unambiguous. Bundling this into module_uiscene_test_ios would couple universal link validation with Add-to-App host scaffolding, making failures harder to isolate and debug.

  3. Execution Speed:
    Also seems likemodule_uiscene_test_ios already runs through a large matrix of Add-to-App template permutations (testing different native host UI frameworks and scene configurations) which takes significantly longer to run. Keeping ios_universal_link_test standalone keeps it focused and fast. The entire XCUITest suite runs in ~16 seconds on the simulator which i don't expect to be much of a difference in time in the CI

@okorohelijah
okorohelijah requested a review from vashworth August 31, 2026 16:24
Comment on lines +12 to +15
// Pre-warm the app and simulator caches so the initial launch does not exceed
// FlutterEngine's 3.0s first-frame deadline.
app.launch()
app.terminate()

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.

Is this actually needed? Do we do this is other XCUITests?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

A cold boot simulator can be sluggish, and the engine drop deep links if the first frame takes longer than 3 seconds to render. I added it to prevent test flakiness on CI

Comment thread dev/devicelab/bin/tasks/ios_universal_link_test.dart Outdated
Comment thread dev/integration_tests/ios_universal_link/ios/RunnerUITests/RunnerUITests.swift Outdated
Comment thread dev/integration_tests/ios_universal_link/lib/main.dart
Comment thread dev/integration_tests/ios_universal_link/ios/Runner/AppDelegate.swift Outdated
Comment thread dev/integration_tests/ios_universal_link/ios/RunnerUITests/RunnerUITests.swift Outdated
Comment thread dev/integration_tests/ios_universal_link/ios/RunnerUITests/RunnerUITests.swift Outdated
Comment thread dev/integration_tests/ios_universal_link/ios/Runner/AppDelegate.swift Outdated
Comment thread dev/integration_tests/ios_universal_link/ios/Runner/AppDelegate.swift Outdated
Comment thread dev/integration_tests/ios_universal_link/ios/RunnerUITests/RunnerUITests.swift Outdated
@okorohelijah

okorohelijah commented Sep 1, 2026 •

Copy link
Copy Markdown
Contributor Author

Following up on our offline discussion (@hellohuanlin, @vashworth), we've aligned on the scope here.

Here is a summary of the decisions and changes:

  1. As agreed, we are keeping this PR strictly focused on testing deep linking for standard, standalone iOS apps (verifying that the route successfully reaches the Dart UI). I have removed the LifecycleDetectorPlugin from this PR. We decided to keep this standalone test separate from module_uiscene_test_ios because it gives us a simple, fast way to test the most common Universal Link setup. Mixing this end-to-end routing validation with the complex Add-to-App and plugin lifecycle tests makes it harder to isolate failures. The native plugin lifecycle validation will be moved to a separate PR targeting module_uiscene_test_ios instead.

  2. We are keeping the ios_universal_link_appdelegate tests alongside the UIScene ones because we still need to validate the fallback logic for unmigrated plugins and legacy apps for the foreseeable future.

Comment thread dev/integration_tests/ios_universal_link/lib/main.dart
Comment thread dev/devicelab/bin/tasks/ios_universal_link_test.dart Outdated

@vashworth vashworth 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.

LGTM with one last tweak

Comment thread dev/devicelab/bin/tasks/ios_universal_link_test.dart Outdated
Comment thread dev/devicelab/bin/tasks/ios_universal_link_test.dart Outdated

let app = XCUIApplication()
let url = url(string: "https://flutter-dashboard.appspot.com/invalid_cold")!
app.open(url)

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.

What's the difference between doing this and doing XCUIDevice.shared.system.open(url)?

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.

Why do you have to do one for cold start and something different for warm?

@okorohelijah okorohelijah Sep 4, 2026 •

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

app.open(url) sometimes inherits the behavior of -launch (i.e if the application is already running, the existing instance will be terminated to ensure a clean state), making it ideal to guarantee a clean cold start, but unstable for warm starts since it could kill the backgrounded process. In contrast, XCUIDevice.shared.system.open(url) (XCUISystem) dispatches the URL at the OS level (like tapping a link in Safari), bringing the existing backgrounded process to the foreground so we can test the warm-start lifecycle (sceneContinueUserActivity) without terminating the app.

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.

Should we use XCUIDevice.shared.system.open(url) for both?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

We shouldn't use XCUIDevice.shared.system.open(url) for cold start because it doesn't terminate any pre-existing instance (risking an accidental warm start if a prior test left the app alive) and can flake on freshly booted CI simulators by falling back to MobileSafari if Universal Link domain caching hasn't completed yet.

@okorohelijah okorohelijah added the autosubmit Merge PR when tree becomes green via auto submit App label Sep 4, 2026
@auto-submit
auto-submit Bot added this pull request to the merge queue Sep 4, 2026
Merged via the queue into flutter:master with commit 2a071e2 Sep 4, 2026
22 of 23 checks passed
@flutter-dashboard flutter-dashboard Bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Sep 4, 2026
auto-submit Bot pushed a commit to flutter/packages that referenced this pull request Sep 4, 2026
…12760)

Manual roll Flutter from 70797e15325e to 5a6cfa7f3d26 (52 revisions)

Manual roll requested by bensonluk@google.com

flutter/flutter@70797e1...5a6cfa7

2026-09-04 bkonyi@google.com [tool] Migrate ScreenshotCommand to modular dependency injection (flutter/flutter#190767)
2026-09-04 engine-flutter-autoroll@skia.org Roll Skia from 8fce167bdded to 93ac1e630d1d (3 revisions) (flutter/flutter#192306)
2026-09-04 okorohelijah@google.com Add iOS Universal Link integration test (Simulator) (flutter/flutter#191443)
2026-09-04 269567208+reidbaker-agent@users.noreply.github.com [AGP 9.1.0 Migration #5] Delete getLegacyAndroidExtension and migrate NDK fallback to public DSL (flutter/flutter#192116)
2026-09-04 bkonyi@google.com Reland "[tool_tests] Remove bringup from Windows tool_tests_commands_2_2" (#191732) (flutter/flutter#191802)
2026-09-04 bkonyi@google.com [flutter_tools] Fix unhandled DebugAdapterException on early process termination (flutter/flutter#192294)
2026-09-04 engine-flutter-autoroll@skia.org Roll Packages from f9b3954 to 9af9c60 (4 revisions) (flutter/flutter#192292)
2026-09-04 engine-flutter-autoroll@skia.org Roll Skia from 2e3f7e07eee6 to 8fce167bdded (5 revisions) (flutter/flutter#192283)
2026-09-04 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from GTZNkoIR_WegRPWgL... to FgDQeF6jb1dVRVh3K... (flutter/flutter#192276)
2026-09-04 engine-flutter-autoroll@skia.org Roll Skia from b6b00df360e5 to 2e3f7e07eee6 (2 revisions) (flutter/flutter#192275)
2026-09-04 cetinibrahim.ci@gmail.com [iOS] TextField should support typing accented words with external keyboard (flutter/flutter#191062)
2026-09-04 engine-flutter-autoroll@skia.org Roll Skia from 1f68c0b16f17 to b6b00df360e5 (7 revisions) (flutter/flutter#192269)
2026-09-04 kevmoo@users.noreply.github.com [flutter_tools] add typed enum and defaulted option descriptors (flutter/flutter#191760)
2026-09-04 engine-flutter-autoroll@skia.org Roll Dart SDK from c2edc382a4f8 to 5501d02b583d (1 revision) (flutter/flutter#192263)
2026-09-04 robert.ancell@canonical.com [Linux] Use fences to synchronize frames between OpenGL contexts (flutter/flutter#192098)
2026-09-03 brunocorona.alcantar@gmail.com Defer semantics geometry updates for blocked branches (flutter/flutter#192146)
2026-09-03 engine-flutter-autoroll@skia.org Roll Skia from 8d3e197531c6 to 1f68c0b16f17 (8 revisions) (flutter/flutter#192244)
2026-09-03 57765714+Vi-debug@users.noreply.github.com Fix DeleteSurrounding splitting UTF-16 surrogate pairs (flutter/flutter#190514)
2026-09-03 32538273+ValentinVignal@users.noreply.github.com Remove no-shuffle from progress indicator test (flutter/flutter#186655)
2026-09-03 srawlins@google.com [material] Remove unused parameters from constructors of generic test class (flutter/flutter#191764)
2026-09-03 97480502+b-luk@users.noreply.github.com Handle linear and radial gradients in UberSDF (re-implement after fix) (flutter/flutter#192124)
2026-09-03 engine-flutter-autoroll@skia.org Roll Dart SDK from fcbfb64f42a1 to c2edc382a4f8 (2 revisions) (flutter/flutter#192240)
2026-09-03 34871572+gmackall@users.noreply.github.com Fix parsing of --enable-hcpp-and-surface-control switch and add --no-enable-hcpp tests (flutter/flutter#192202)
2026-09-03 97480502+b-luk@users.noreply.github.com Fix issue where shapes rendered with gradient+blur+rotation end up incorrectly cut off (flutter/flutter#192136)
2026-09-03 47866232+chunhtai@users.noreply.github.com Fix sibling nodes crash under MergeSemantics (flutter/flutter#191587)
2026-09-03 30870216+gaaclarke@users.noreply.github.com Makes backdrop groups operate on the union. (flutter/flutter#191838)
2026-09-03 engine-flutter-autoroll@skia.org Roll Skia from 008936396810 to 8d3e197531c6 (1 revision) (flutter/flutter#192236)
2026-09-03 parlough@gmail.com [docs] Remove superseded AI rules for Flutter (flutter/flutter#192185)
2026-09-03 15619084+vashworth@users.noreply.github.com Collect analytics about SwiftPM errors and warnings (flutter/flutter#191746)
2026-09-03 engine-flutter-autoroll@skia.org Roll Packages from 18fe786 to f9b3954 (7 revisions) (flutter/flutter#192235)
2026-09-03 robert.ancell@canonical.com [Linux] Remove frame sharing between OpenGL contexts (flutter/flutter#192150)
2026-09-03 engine-flutter-autoroll@skia.org Roll Dart SDK from cf79067a1e44 to fcbfb64f42a1 (1 revision) (flutter/flutter#192228)
2026-09-03 engine-flutter-autoroll@skia.org Roll Skia from 731fe9af4c0b to 008936396810 (3 revisions) (flutter/flutter#192225)
2026-09-03 engine-flutter-autoroll@skia.org Roll Dart SDK from 700ab60bfe53 to cf79067a1e44 (2 revisions) (flutter/flutter#192219)
2026-09-03 engine-flutter-autoroll@skia.org Roll Skia from 823f82e18177 to 731fe9af4c0b (5 revisions) (flutter/flutter#192217)
2026-09-03 louisehsu@google.com Fixes OverlayPortal semantics bounds corruption (flutter/flutter#192139)
2026-09-03 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from idslm9FikVLy2K_A-... to GTZNkoIR_WegRPWgL... (flutter/flutter#192215)
2026-09-03 engine-flutter-autoroll@skia.org Roll Fuchsia Test Scripts from u_fSMsPU22VvUsvSo... to VObjlh3xw2P9sEbC_... (flutter/flutter#192212)
2026-09-03 engine-flutter-autoroll@skia.org Roll Skia from ae22da2e8308 to 823f82e18177 (13 revisions) (flutter/flutter#192209)
2026-09-02 ishaquehassan@gmail.com Expose skipTraversal in FocusableActionDetector (flutter/flutter#191308)
2026-09-02 97480502+b-luk@users.noreply.github.com Add `IsProgram` mock method to `MockGLESImpl`, use it in `BufferBindingsGLESTest` (flutter/flutter#192196)
2026-09-02 uros.radulovic23@gmail.com Fix nested scroll view fling crash (flutter/flutter#191130)
2026-09-02 brunocorona.alcantar@gmail.com Fix TabBarView/PageView edge auto-scroll during mouse text selection (flutter/flutter#189544)
2026-09-02 30870216+gaaclarke@users.noreply.github.com Bypass gamma correction when alpha >= 1.0 (flutter/flutter#192193)
...
pull Bot pushed a commit to specialized806/flutterrettulf that referenced this pull request Sep 4, 2026
…ugins (flutter#192173)

### Description
Extends native iOS Add-to-App UIScene lifecycle testing by validating
deep link (Universal Links and custom URL schemes) delivery to plugins
across both cold and warm starts.

As discussed on flutter#191443, this PR decouples native plugin lifecycle
verification from the standalone app route delivery test:

- Renames `module_uiscene_test_ios` to
`uiscene_plugin_lifecycle_test_ios` across CI (`.ci.yaml`),
`TESTOWNERS`, and task runners to accurately reflect its role in
verifying plugin lifecycle events.
- Adds two new test scenarios to
`uiscene_plugin_lifecycle_test_ios.dart`:
- `AppMigrated-FlutterSceneDelegate-PluginMigrated-DeepLink`: Verifies
plugins adopting `FlutterSceneLifeCycleDelegate` receive connection
options, `openURLContexts`, and `continueUserActivity`.
- `AppMigrated-FlutterSceneDelegate-PluginNotMigrated-DeepLink`:
Verifies legacy plugins implementing
`FlutterApplicationLifeCycleDelegate` receive fallback callbacks via
`FlutterPluginAppLifeCycleDelegate`.
- . Adds `UITests-DeepLinks.swift` verifying warm/cold × universal
link/custom scheme


Part of flutter#191443

## 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].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant in-code documentation (doc comments with
`///`).
- [x] 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).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] All existing and new tests are passing.

<!-- 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
Shawn-Yu-Dev pushed a commit to Shawn-Yu-Dev/flutter that referenced this pull request Sep 5, 2026
…guration (flutter#192321)

The `ios_universal_link_test` devicelab task introduced in flutter#191443
failed in post-submit CI during `flutter build ios --simulator` with "No
Xcode build settings have been found." On headless CI bots that lack
developer provisioning profiles, physical device code signing specifiers
in `project.pbxproj` prevented Xcode from querying build settings. In
addition, running a full simulator build prior to `runXcodeTests`
triggered redundant code signing evaluations on bots without codesigning
support.

This fixes the failure by removing the `PROVISIONING_PROFILE_SPECIFIER`
properties from `project.pbxproj` and building with `--config-only`
during the task's preliminary Flutter build step, matching the pattern
in `native_platform_view_ui_tests_ios`. It also sets
`deviceOperatingSystem = DeviceOperatingSystem.ios` for proper Devicelab
device handling, updates `Runner.xcscheme` to reference `RunnerUITests`
under Debug configuration, wires up the missing target dependency in
`project.pbxproj`, and simplifies `setUpWithError` in
`RunnerUITests.swift`.

Fixes flutter#192320

## 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].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] 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).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] All existing and new tests are passing.

<!-- 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
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
victorsanni pushed a commit to victorsanni/packages that referenced this pull request Sep 9, 2026
…lutter#12760)

Manual roll Flutter from 70797e15325e to 5a6cfa7f3d26 (52 revisions)

Manual roll requested by bensonluk@google.com

flutter/flutter@70797e1...5a6cfa7

2026-09-04 bkonyi@google.com [tool] Migrate ScreenshotCommand to modular dependency injection (flutter/flutter#190767)
2026-09-04 engine-flutter-autoroll@skia.org Roll Skia from 8fce167bdded to 93ac1e630d1d (3 revisions) (flutter/flutter#192306)
2026-09-04 okorohelijah@google.com Add iOS Universal Link integration test (Simulator) (flutter/flutter#191443)
2026-09-04 269567208+reidbaker-agent@users.noreply.github.com [AGP 9.1.0 Migration flutter#5] Delete getLegacyAndroidExtension and migrate NDK fallback to public DSL (flutter/flutter#192116)
2026-09-04 bkonyi@google.com Reland "[tool_tests] Remove bringup from Windows tool_tests_commands_2_2" (#191732) (flutter/flutter#191802)
2026-09-04 bkonyi@google.com [flutter_tools] Fix unhandled DebugAdapterException on early process termination (flutter/flutter#192294)
2026-09-04 engine-flutter-autoroll@skia.org Roll Packages from f9b3954 to 9af9c60 (4 revisions) (flutter/flutter#192292)
2026-09-04 engine-flutter-autoroll@skia.org Roll Skia from 2e3f7e07eee6 to 8fce167bdded (5 revisions) (flutter/flutter#192283)
2026-09-04 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from GTZNkoIR_WegRPWgL... to FgDQeF6jb1dVRVh3K... (flutter/flutter#192276)
2026-09-04 engine-flutter-autoroll@skia.org Roll Skia from b6b00df360e5 to 2e3f7e07eee6 (2 revisions) (flutter/flutter#192275)
2026-09-04 cetinibrahim.ci@gmail.com [iOS] TextField should support typing accented words with external keyboard (flutter/flutter#191062)
2026-09-04 engine-flutter-autoroll@skia.org Roll Skia from 1f68c0b16f17 to b6b00df360e5 (7 revisions) (flutter/flutter#192269)
2026-09-04 kevmoo@users.noreply.github.com [flutter_tools] add typed enum and defaulted option descriptors (flutter/flutter#191760)
2026-09-04 engine-flutter-autoroll@skia.org Roll Dart SDK from c2edc382a4f8 to 5501d02b583d (1 revision) (flutter/flutter#192263)
2026-09-04 robert.ancell@canonical.com [Linux] Use fences to synchronize frames between OpenGL contexts (flutter/flutter#192098)
2026-09-03 brunocorona.alcantar@gmail.com Defer semantics geometry updates for blocked branches (flutter/flutter#192146)
2026-09-03 engine-flutter-autoroll@skia.org Roll Skia from 8d3e197531c6 to 1f68c0b16f17 (8 revisions) (flutter/flutter#192244)
2026-09-03 57765714+Vi-debug@users.noreply.github.com Fix DeleteSurrounding splitting UTF-16 surrogate pairs (flutter/flutter#190514)
2026-09-03 32538273+ValentinVignal@users.noreply.github.com Remove no-shuffle from progress indicator test (flutter/flutter#186655)
2026-09-03 srawlins@google.com [material] Remove unused parameters from constructors of generic test class (flutter/flutter#191764)
2026-09-03 97480502+b-luk@users.noreply.github.com Handle linear and radial gradients in UberSDF (re-implement after fix) (flutter/flutter#192124)
2026-09-03 engine-flutter-autoroll@skia.org Roll Dart SDK from fcbfb64f42a1 to c2edc382a4f8 (2 revisions) (flutter/flutter#192240)
2026-09-03 34871572+gmackall@users.noreply.github.com Fix parsing of --enable-hcpp-and-surface-control switch and add --no-enable-hcpp tests (flutter/flutter#192202)
2026-09-03 97480502+b-luk@users.noreply.github.com Fix issue where shapes rendered with gradient+blur+rotation end up incorrectly cut off (flutter/flutter#192136)
2026-09-03 47866232+chunhtai@users.noreply.github.com Fix sibling nodes crash under MergeSemantics (flutter/flutter#191587)
2026-09-03 30870216+gaaclarke@users.noreply.github.com Makes backdrop groups operate on the union. (flutter/flutter#191838)
2026-09-03 engine-flutter-autoroll@skia.org Roll Skia from 008936396810 to 8d3e197531c6 (1 revision) (flutter/flutter#192236)
2026-09-03 parlough@gmail.com [docs] Remove superseded AI rules for Flutter (flutter/flutter#192185)
2026-09-03 15619084+vashworth@users.noreply.github.com Collect analytics about SwiftPM errors and warnings (flutter/flutter#191746)
2026-09-03 engine-flutter-autoroll@skia.org Roll Packages from 18fe786 to f9b3954 (7 revisions) (flutter/flutter#192235)
2026-09-03 robert.ancell@canonical.com [Linux] Remove frame sharing between OpenGL contexts (flutter/flutter#192150)
2026-09-03 engine-flutter-autoroll@skia.org Roll Dart SDK from cf79067a1e44 to fcbfb64f42a1 (1 revision) (flutter/flutter#192228)
2026-09-03 engine-flutter-autoroll@skia.org Roll Skia from 731fe9af4c0b to 008936396810 (3 revisions) (flutter/flutter#192225)
2026-09-03 engine-flutter-autoroll@skia.org Roll Dart SDK from 700ab60bfe53 to cf79067a1e44 (2 revisions) (flutter/flutter#192219)
2026-09-03 engine-flutter-autoroll@skia.org Roll Skia from 823f82e18177 to 731fe9af4c0b (5 revisions) (flutter/flutter#192217)
2026-09-03 louisehsu@google.com Fixes OverlayPortal semantics bounds corruption (flutter/flutter#192139)
2026-09-03 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from idslm9FikVLy2K_A-... to GTZNkoIR_WegRPWgL... (flutter/flutter#192215)
2026-09-03 engine-flutter-autoroll@skia.org Roll Fuchsia Test Scripts from u_fSMsPU22VvUsvSo... to VObjlh3xw2P9sEbC_... (flutter/flutter#192212)
2026-09-03 engine-flutter-autoroll@skia.org Roll Skia from ae22da2e8308 to 823f82e18177 (13 revisions) (flutter/flutter#192209)
2026-09-02 ishaquehassan@gmail.com Expose skipTraversal in FocusableActionDetector (flutter/flutter#191308)
2026-09-02 97480502+b-luk@users.noreply.github.com Add `IsProgram` mock method to `MockGLESImpl`, use it in `BufferBindingsGLESTest` (flutter/flutter#192196)
2026-09-02 uros.radulovic23@gmail.com Fix nested scroll view fling crash (flutter/flutter#191130)
2026-09-02 brunocorona.alcantar@gmail.com Fix TabBarView/PageView edge auto-scroll during mouse text selection (flutter/flutter#189544)
2026-09-02 30870216+gaaclarke@users.noreply.github.com Bypass gamma correction when alpha >= 1.0 (flutter/flutter#192193)
...
victorsanni pushed a commit to victorsanni/packages that referenced this pull request Sep 9, 2026
…lutter#12760)

Manual roll Flutter from 70797e15325e to 5a6cfa7f3d26 (52 revisions)

Manual roll requested by bensonluk@google.com

flutter/flutter@70797e1...5a6cfa7

2026-09-04 bkonyi@google.com [tool] Migrate ScreenshotCommand to modular dependency injection (flutter/flutter#190767)
2026-09-04 engine-flutter-autoroll@skia.org Roll Skia from 8fce167bdded to 93ac1e630d1d (3 revisions) (flutter/flutter#192306)
2026-09-04 okorohelijah@google.com Add iOS Universal Link integration test (Simulator) (flutter/flutter#191443)
2026-09-04 269567208+reidbaker-agent@users.noreply.github.com [AGP 9.1.0 Migration flutter#5] Delete getLegacyAndroidExtension and migrate NDK fallback to public DSL (flutter/flutter#192116)
2026-09-04 bkonyi@google.com Reland "[tool_tests] Remove bringup from Windows tool_tests_commands_2_2" (#191732) (flutter/flutter#191802)
2026-09-04 bkonyi@google.com [flutter_tools] Fix unhandled DebugAdapterException on early process termination (flutter/flutter#192294)
2026-09-04 engine-flutter-autoroll@skia.org Roll Packages from f9b3954 to 9af9c60 (4 revisions) (flutter/flutter#192292)
2026-09-04 engine-flutter-autoroll@skia.org Roll Skia from 2e3f7e07eee6 to 8fce167bdded (5 revisions) (flutter/flutter#192283)
2026-09-04 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from GTZNkoIR_WegRPWgL... to FgDQeF6jb1dVRVh3K... (flutter/flutter#192276)
2026-09-04 engine-flutter-autoroll@skia.org Roll Skia from b6b00df360e5 to 2e3f7e07eee6 (2 revisions) (flutter/flutter#192275)
2026-09-04 cetinibrahim.ci@gmail.com [iOS] TextField should support typing accented words with external keyboard (flutter/flutter#191062)
2026-09-04 engine-flutter-autoroll@skia.org Roll Skia from 1f68c0b16f17 to b6b00df360e5 (7 revisions) (flutter/flutter#192269)
2026-09-04 kevmoo@users.noreply.github.com [flutter_tools] add typed enum and defaulted option descriptors (flutter/flutter#191760)
2026-09-04 engine-flutter-autoroll@skia.org Roll Dart SDK from c2edc382a4f8 to 5501d02b583d (1 revision) (flutter/flutter#192263)
2026-09-04 robert.ancell@canonical.com [Linux] Use fences to synchronize frames between OpenGL contexts (flutter/flutter#192098)
2026-09-03 brunocorona.alcantar@gmail.com Defer semantics geometry updates for blocked branches (flutter/flutter#192146)
2026-09-03 engine-flutter-autoroll@skia.org Roll Skia from 8d3e197531c6 to 1f68c0b16f17 (8 revisions) (flutter/flutter#192244)
2026-09-03 57765714+Vi-debug@users.noreply.github.com Fix DeleteSurrounding splitting UTF-16 surrogate pairs (flutter/flutter#190514)
2026-09-03 32538273+ValentinVignal@users.noreply.github.com Remove no-shuffle from progress indicator test (flutter/flutter#186655)
2026-09-03 srawlins@google.com [material] Remove unused parameters from constructors of generic test class (flutter/flutter#191764)
2026-09-03 97480502+b-luk@users.noreply.github.com Handle linear and radial gradients in UberSDF (re-implement after fix) (flutter/flutter#192124)
2026-09-03 engine-flutter-autoroll@skia.org Roll Dart SDK from fcbfb64f42a1 to c2edc382a4f8 (2 revisions) (flutter/flutter#192240)
2026-09-03 34871572+gmackall@users.noreply.github.com Fix parsing of --enable-hcpp-and-surface-control switch and add --no-enable-hcpp tests (flutter/flutter#192202)
2026-09-03 97480502+b-luk@users.noreply.github.com Fix issue where shapes rendered with gradient+blur+rotation end up incorrectly cut off (flutter/flutter#192136)
2026-09-03 47866232+chunhtai@users.noreply.github.com Fix sibling nodes crash under MergeSemantics (flutter/flutter#191587)
2026-09-03 30870216+gaaclarke@users.noreply.github.com Makes backdrop groups operate on the union. (flutter/flutter#191838)
2026-09-03 engine-flutter-autoroll@skia.org Roll Skia from 008936396810 to 8d3e197531c6 (1 revision) (flutter/flutter#192236)
2026-09-03 parlough@gmail.com [docs] Remove superseded AI rules for Flutter (flutter/flutter#192185)
2026-09-03 15619084+vashworth@users.noreply.github.com Collect analytics about SwiftPM errors and warnings (flutter/flutter#191746)
2026-09-03 engine-flutter-autoroll@skia.org Roll Packages from 18fe786 to f9b3954 (7 revisions) (flutter/flutter#192235)
2026-09-03 robert.ancell@canonical.com [Linux] Remove frame sharing between OpenGL contexts (flutter/flutter#192150)
2026-09-03 engine-flutter-autoroll@skia.org Roll Dart SDK from cf79067a1e44 to fcbfb64f42a1 (1 revision) (flutter/flutter#192228)
2026-09-03 engine-flutter-autoroll@skia.org Roll Skia from 731fe9af4c0b to 008936396810 (3 revisions) (flutter/flutter#192225)
2026-09-03 engine-flutter-autoroll@skia.org Roll Dart SDK from 700ab60bfe53 to cf79067a1e44 (2 revisions) (flutter/flutter#192219)
2026-09-03 engine-flutter-autoroll@skia.org Roll Skia from 823f82e18177 to 731fe9af4c0b (5 revisions) (flutter/flutter#192217)
2026-09-03 louisehsu@google.com Fixes OverlayPortal semantics bounds corruption (flutter/flutter#192139)
2026-09-03 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from idslm9FikVLy2K_A-... to GTZNkoIR_WegRPWgL... (flutter/flutter#192215)
2026-09-03 engine-flutter-autoroll@skia.org Roll Fuchsia Test Scripts from u_fSMsPU22VvUsvSo... to VObjlh3xw2P9sEbC_... (flutter/flutter#192212)
2026-09-03 engine-flutter-autoroll@skia.org Roll Skia from ae22da2e8308 to 823f82e18177 (13 revisions) (flutter/flutter#192209)
2026-09-02 ishaquehassan@gmail.com Expose skipTraversal in FocusableActionDetector (flutter/flutter#191308)
2026-09-02 97480502+b-luk@users.noreply.github.com Add `IsProgram` mock method to `MockGLESImpl`, use it in `BufferBindingsGLESTest` (flutter/flutter#192196)
2026-09-02 uros.radulovic23@gmail.com Fix nested scroll view fling crash (flutter/flutter#191130)
2026-09-02 brunocorona.alcantar@gmail.com Fix TabBarView/PageView edge auto-scroll during mouse text selection (flutter/flutter#189544)
2026-09-02 30870216+gaaclarke@users.noreply.github.com Bypass gamma correction when alpha >= 1.0 (flutter/flutter#192193)
...
pull Bot pushed a commit to Mattlk13/flutter that referenced this pull request Sep 11, 2026
<!--
Thanks for filing a pull request!
Reviewers are typically assigned within a week of filing a request.
To learn more about code review, see our documentation on Tree Hygiene:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
-->

remove ios_universal_link_test and uiscene_plugin_lifecycle_test_ios
deeplink integration tests from bringup

Part of flutter#191443,
flutter#192173

*If you had to change anything in the [flutter/tests] repo, include a
link to the migration guide as per the [breaking change policy].*

## 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].
- [x] 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.
- [ ] 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
pull Bot pushed a commit to Mu-L/flutter that referenced this pull request Sep 12, 2026
Fixes flutter#191628
Fixes flutter#187204

Bumps Dart across the repo to 3.13 and reformats the repo
The CI formatting check is also re-enabled with this change.

#### Deviating pubspec.yaml Packages
The following packages deviate from the standard repository Dart SDK
constraint (^3.11.0-0 before the bump). Some of these cannot cleanly
downgrade. Changing them is considered out of scope. Some of them may
also pertain to active work that requires later versions of Dart.

1. ios_universal_link
- Full File Path: dev/integration_tests/ios_universal_link/pubspec.yaml
  - Dart SDK Version: ^3.14.0-53.0.dev
  - Author: @okorohelijah 
  - Commit: 2a071e2 (2026-09-04)
- PR / Message: Add iOS Universal Link integration test (Simulator)
(flutter#191443)
2. flutter_analyzer_plugin
  - Full File Path: dev/flutter_analyzer_plugin/pubspec.yaml
  - Dart SDK Version: ^3.7.0
  - Author: @bkonyi 
  - Commit: ae9963e (2026-08-12)
- PR / Message: [analysis] Reland "Added initial implementation of the
flutter_analyzer_plugin (flutter#175679)" (flutter#191022)
3. widget_preview_scaffold
- Full File Path:
dev/integration_tests/widget_preview_scaffold/pubspec.yaml
  - Dart SDK Version: ^3.12.0
  - Author: @polina-c 
  - Commit: 3ca99c3 (2026-05-15)
- PR / Message: [ Widget Preview ] Improve zoom behavior and add zoom
slider (flutter#186422)
4. hybrid_platform_views
- Full File Path:
dev/integration_tests/hybrid_android_views/pubspec.yaml
  - Dart SDK Version: ^3.7.0-0
  - Author: @andrewkolos 
  - Commit: 112f170 (2026-03-09)
  - PR / Message: Reland hybrid views test (flutter#181336)
5. record_use_test_app
- Full File Path: dev/integration_tests/record_use_test_app/pubspec.yaml
  - Dart SDK Version: >=3.5.0-0 <4.0.0
  - Author: @dcharkes 
  - Commit: eb6acab (2026-04-09)
- PR / Message: [record_use] Add experimental flag and test project
(flutter#184719)
6. record_use_test_package
- Full File Path:
dev/integration_tests/record_use_test_package/pubspec.yaml
  - Dart SDK Version: >=3.5.0-0 <4.0.0
  - Author: @dcharkes 
  - Commit: eb6acab (2026-04-09)
- PR / Message: [record_use] Add experimental flag and test project
(flutter#184719)
7. data_asset_app
  - Full File Path: dev/integration_tests/data_asset_app/pubspec.yaml
  - Dart SDK Version: >=3.5.0-0 <4.0.0
  - Author: @dcharkes 
  - Commit: a0924c7 (2026-04-07)
  - PR / Message: Reland "[data_assets] Cleanup tests" (flutter#184714)
8. data_asset_package
- Full File Path: dev/integration_tests/data_asset_package/pubspec.yaml
  - Dart SDK Version: >=3.5.0-0 <4.0.0
  - Author: @dcharkes 
  - Commit: a0924c7 (2026-04-07)
  - PR / Message: Reland "[data_assets] Cleanup tests" (flutter#184714)

## 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].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant in-code documentation (doc comments with
`///`).
- [x] 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).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] 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 team-ios Owned by iOS platform team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants