From dd3cd0324dda36c5694edb86679623415edd9023 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Thu, 13 Aug 2026 12:16:54 -0700 Subject: [PATCH 01/13] update ci chrome version to version:145.0.7632.117 --- .ci.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.ci.yaml b/.ci.yaml index 714e25471f3..52c1f652128 100644 --- a/.ci.yaml +++ b/.ci.yaml @@ -73,7 +73,7 @@ platform_properties: device_type: none dependencies: >- [ - {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"} + {"dependency": "chrome_and_driver", "version": "version:145.0.7632.117"} ] windows_arm64: properties: @@ -321,7 +321,7 @@ targets: {"dependency": "clang", "version": "git_revision:5d5aba78dbbee75508f01bcaa69aedb2ab79065a"}, {"dependency": "cmake", "version": "build_id:8787856497187628321"}, {"dependency": "ninja", "version": "version:1.9.0"}, - {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"} + {"dependency": "chrome_and_driver", "version": "version:145.0.7632.117"} ] channel: master @@ -340,7 +340,7 @@ targets: {"dependency": "clang", "version": "git_revision:5d5aba78dbbee75508f01bcaa69aedb2ab79065a"}, {"dependency": "cmake", "version": "build_id:8787856497187628321"}, {"dependency": "ninja", "version": "version:1.9.0"}, - {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"} + {"dependency": "chrome_and_driver", "version": "version:145.0.7632.117"} ] channel: stable @@ -769,7 +769,7 @@ targets: # Install Chrome as a default handler for schemes for url_launcher. dependencies: >- [ - {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"} + {"dependency": "chrome_and_driver", "version": "version:145.0.7632.117"} ] - name: Linux_desktop platform_tests stable @@ -783,7 +783,7 @@ targets: # Install Chrome as a default handler for schemes for url_launcher. dependencies: >- [ - {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"} + {"dependency": "chrome_and_driver", "version": "version:145.0.7632.117"} ] ### iOS+macOS tasks ### From ad03d1157aa74d1895bf7c698de3833bbe31e1e2 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Thu, 13 Aug 2026 16:46:40 -0700 Subject: [PATCH 02/13] make test less precise --- .../integration_test/video_player_test.dart | 2 +- .../example/ios/Flutter/Debug.xcconfig | 1 + .../example/ios/Flutter/Release.xcconfig | 1 + .../video_player/example/ios/Podfile | 43 +++++++++++++++++++ .../macos/Flutter/Flutter-Debug.xcconfig | 1 + .../macos/Flutter/Flutter-Release.xcconfig | 1 + .../video_player/example/macos/Podfile | 42 ++++++++++++++++++ .../example/ios/Flutter/Debug.xcconfig | 1 + .../example/ios/Flutter/Release.xcconfig | 1 + .../example/ios/Podfile | 43 +++++++++++++++++++ .../macos/Flutter/Flutter-Debug.xcconfig | 1 + .../macos/Flutter/Flutter-Release.xcconfig | 1 + .../example/macos/Podfile | 42 ++++++++++++++++++ 13 files changed, 179 insertions(+), 1 deletion(-) create mode 100644 packages/video_player/video_player/example/ios/Podfile create mode 100644 packages/video_player/video_player/example/macos/Podfile create mode 100644 packages/video_player/video_player_avfoundation/example/ios/Podfile create mode 100644 packages/video_player/video_player_avfoundation/example/macos/Podfile diff --git a/packages/video_player/video_player/example/integration_test/video_player_test.dart b/packages/video_player/video_player/example/integration_test/video_player_test.dart index b3b99c72728..ca20b053441 100644 --- a/packages/video_player/video_player/example/integration_test/video_player_test.dart +++ b/packages/video_player/video_player/example/integration_test/video_player_test.dart @@ -306,7 +306,7 @@ void main() { // Due to the duration calculation accuracy between platforms, // the milliseconds on Web will be a slightly different from natives. // The audio was made with 44100 Hz, 192 Kbps CBR, and 32 bits. - expect(controller.value.duration, const Duration(seconds: 5, milliseconds: kIsWeb ? 42 : 41)); + expect(controller.value.duration.inMilliseconds, closeTo(5000, 50)); }); testWidgets('can be played', (WidgetTester tester) async { diff --git a/packages/video_player/video_player/example/ios/Flutter/Debug.xcconfig b/packages/video_player/video_player/example/ios/Flutter/Debug.xcconfig index 592ceee85b8..ec97fc6f302 100644 --- a/packages/video_player/video_player/example/ios/Flutter/Debug.xcconfig +++ b/packages/video_player/video_player/example/ios/Flutter/Debug.xcconfig @@ -1 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" #include "Generated.xcconfig" diff --git a/packages/video_player/video_player/example/ios/Flutter/Release.xcconfig b/packages/video_player/video_player/example/ios/Flutter/Release.xcconfig index 592ceee85b8..c4855bfe200 100644 --- a/packages/video_player/video_player/example/ios/Flutter/Release.xcconfig +++ b/packages/video_player/video_player/example/ios/Flutter/Release.xcconfig @@ -1 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" #include "Generated.xcconfig" diff --git a/packages/video_player/video_player/example/ios/Podfile b/packages/video_player/video_player/example/ios/Podfile new file mode 100644 index 00000000000..620e46eba60 --- /dev/null +++ b/packages/video_player/video_player/example/ios/Podfile @@ -0,0 +1,43 @@ +# Uncomment this line to define a global platform for your project +# platform :ios, '13.0' + +# CocoaPods analytics sends network stats synchronously affecting flutter build latency. +ENV['COCOAPODS_DISABLE_STATS'] = 'true' + +project 'Runner', { + 'Debug' => :debug, + 'Profile' => :release, + 'Release' => :release, +} + +def flutter_root + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) + unless File.exist?(generated_xcode_build_settings_path) + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" + end + + File.foreach(generated_xcode_build_settings_path) do |line| + matches = line.match(/FLUTTER_ROOT\=(.*)/) + return matches[1].strip if matches + end + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" +end + +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) + +flutter_ios_podfile_setup + +target 'Runner' do + use_frameworks! + + flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) + target 'RunnerTests' do + inherit! :search_paths + end +end + +post_install do |installer| + installer.pods_project.targets.each do |target| + flutter_additional_ios_build_settings(target) + end +end diff --git a/packages/video_player/video_player/example/macos/Flutter/Flutter-Debug.xcconfig b/packages/video_player/video_player/example/macos/Flutter/Flutter-Debug.xcconfig index c2efd0b608b..4b81f9b2d20 100644 --- a/packages/video_player/video_player/example/macos/Flutter/Flutter-Debug.xcconfig +++ b/packages/video_player/video_player/example/macos/Flutter/Flutter-Debug.xcconfig @@ -1 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" #include "ephemeral/Flutter-Generated.xcconfig" diff --git a/packages/video_player/video_player/example/macos/Flutter/Flutter-Release.xcconfig b/packages/video_player/video_player/example/macos/Flutter/Flutter-Release.xcconfig index c2efd0b608b..5caa9d1579e 100644 --- a/packages/video_player/video_player/example/macos/Flutter/Flutter-Release.xcconfig +++ b/packages/video_player/video_player/example/macos/Flutter/Flutter-Release.xcconfig @@ -1 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" #include "ephemeral/Flutter-Generated.xcconfig" diff --git a/packages/video_player/video_player/example/macos/Podfile b/packages/video_player/video_player/example/macos/Podfile new file mode 100644 index 00000000000..ff5ddb3b8bd --- /dev/null +++ b/packages/video_player/video_player/example/macos/Podfile @@ -0,0 +1,42 @@ +platform :osx, '10.15' + +# CocoaPods analytics sends network stats synchronously affecting flutter build latency. +ENV['COCOAPODS_DISABLE_STATS'] = 'true' + +project 'Runner', { + 'Debug' => :debug, + 'Profile' => :release, + 'Release' => :release, +} + +def flutter_root + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'ephemeral', 'Flutter-Generated.xcconfig'), __FILE__) + unless File.exist?(generated_xcode_build_settings_path) + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure \"flutter pub get\" is executed first" + end + + File.foreach(generated_xcode_build_settings_path) do |line| + matches = line.match(/FLUTTER_ROOT\=(.*)/) + return matches[1].strip if matches + end + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Flutter-Generated.xcconfig, then run \"flutter pub get\"" +end + +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) + +flutter_macos_podfile_setup + +target 'Runner' do + use_frameworks! + + flutter_install_all_macos_pods File.dirname(File.realpath(__FILE__)) + target 'RunnerTests' do + inherit! :search_paths + end +end + +post_install do |installer| + installer.pods_project.targets.each do |target| + flutter_additional_macos_build_settings(target) + end +end diff --git a/packages/video_player/video_player_avfoundation/example/ios/Flutter/Debug.xcconfig b/packages/video_player/video_player_avfoundation/example/ios/Flutter/Debug.xcconfig index 592ceee85b8..ec97fc6f302 100644 --- a/packages/video_player/video_player_avfoundation/example/ios/Flutter/Debug.xcconfig +++ b/packages/video_player/video_player_avfoundation/example/ios/Flutter/Debug.xcconfig @@ -1 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" #include "Generated.xcconfig" diff --git a/packages/video_player/video_player_avfoundation/example/ios/Flutter/Release.xcconfig b/packages/video_player/video_player_avfoundation/example/ios/Flutter/Release.xcconfig index 592ceee85b8..c4855bfe200 100644 --- a/packages/video_player/video_player_avfoundation/example/ios/Flutter/Release.xcconfig +++ b/packages/video_player/video_player_avfoundation/example/ios/Flutter/Release.xcconfig @@ -1 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" #include "Generated.xcconfig" diff --git a/packages/video_player/video_player_avfoundation/example/ios/Podfile b/packages/video_player/video_player_avfoundation/example/ios/Podfile new file mode 100644 index 00000000000..620e46eba60 --- /dev/null +++ b/packages/video_player/video_player_avfoundation/example/ios/Podfile @@ -0,0 +1,43 @@ +# Uncomment this line to define a global platform for your project +# platform :ios, '13.0' + +# CocoaPods analytics sends network stats synchronously affecting flutter build latency. +ENV['COCOAPODS_DISABLE_STATS'] = 'true' + +project 'Runner', { + 'Debug' => :debug, + 'Profile' => :release, + 'Release' => :release, +} + +def flutter_root + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) + unless File.exist?(generated_xcode_build_settings_path) + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" + end + + File.foreach(generated_xcode_build_settings_path) do |line| + matches = line.match(/FLUTTER_ROOT\=(.*)/) + return matches[1].strip if matches + end + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" +end + +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) + +flutter_ios_podfile_setup + +target 'Runner' do + use_frameworks! + + flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) + target 'RunnerTests' do + inherit! :search_paths + end +end + +post_install do |installer| + installer.pods_project.targets.each do |target| + flutter_additional_ios_build_settings(target) + end +end diff --git a/packages/video_player/video_player_avfoundation/example/macos/Flutter/Flutter-Debug.xcconfig b/packages/video_player/video_player_avfoundation/example/macos/Flutter/Flutter-Debug.xcconfig index c2efd0b608b..4b81f9b2d20 100644 --- a/packages/video_player/video_player_avfoundation/example/macos/Flutter/Flutter-Debug.xcconfig +++ b/packages/video_player/video_player_avfoundation/example/macos/Flutter/Flutter-Debug.xcconfig @@ -1 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" #include "ephemeral/Flutter-Generated.xcconfig" diff --git a/packages/video_player/video_player_avfoundation/example/macos/Flutter/Flutter-Release.xcconfig b/packages/video_player/video_player_avfoundation/example/macos/Flutter/Flutter-Release.xcconfig index c2efd0b608b..5caa9d1579e 100644 --- a/packages/video_player/video_player_avfoundation/example/macos/Flutter/Flutter-Release.xcconfig +++ b/packages/video_player/video_player_avfoundation/example/macos/Flutter/Flutter-Release.xcconfig @@ -1 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" #include "ephemeral/Flutter-Generated.xcconfig" diff --git a/packages/video_player/video_player_avfoundation/example/macos/Podfile b/packages/video_player/video_player_avfoundation/example/macos/Podfile new file mode 100644 index 00000000000..ff5ddb3b8bd --- /dev/null +++ b/packages/video_player/video_player_avfoundation/example/macos/Podfile @@ -0,0 +1,42 @@ +platform :osx, '10.15' + +# CocoaPods analytics sends network stats synchronously affecting flutter build latency. +ENV['COCOAPODS_DISABLE_STATS'] = 'true' + +project 'Runner', { + 'Debug' => :debug, + 'Profile' => :release, + 'Release' => :release, +} + +def flutter_root + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'ephemeral', 'Flutter-Generated.xcconfig'), __FILE__) + unless File.exist?(generated_xcode_build_settings_path) + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure \"flutter pub get\" is executed first" + end + + File.foreach(generated_xcode_build_settings_path) do |line| + matches = line.match(/FLUTTER_ROOT\=(.*)/) + return matches[1].strip if matches + end + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Flutter-Generated.xcconfig, then run \"flutter pub get\"" +end + +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) + +flutter_macos_podfile_setup + +target 'Runner' do + use_frameworks! + + flutter_install_all_macos_pods File.dirname(File.realpath(__FILE__)) + target 'RunnerTests' do + inherit! :search_paths + end +end + +post_install do |installer| + installer.pods_project.targets.each do |target| + flutter_additional_macos_build_settings(target) + end +end From 3a87753c9611115c9ae80e43a0ed84cc91c5b2e0 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Thu, 13 Aug 2026 17:35:38 -0700 Subject: [PATCH 03/13] Removed the non-existent RunnerTests target blocks from example --- packages/video_player/video_player/example/ios/Podfile | 3 --- packages/video_player/video_player/example/macos/Podfile | 3 --- 2 files changed, 6 deletions(-) diff --git a/packages/video_player/video_player/example/ios/Podfile b/packages/video_player/video_player/example/ios/Podfile index 620e46eba60..17adeb14132 100644 --- a/packages/video_player/video_player/example/ios/Podfile +++ b/packages/video_player/video_player/example/ios/Podfile @@ -31,9 +31,6 @@ target 'Runner' do use_frameworks! flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) - target 'RunnerTests' do - inherit! :search_paths - end end post_install do |installer| diff --git a/packages/video_player/video_player/example/macos/Podfile b/packages/video_player/video_player/example/macos/Podfile index ff5ddb3b8bd..66f6172bbb3 100644 --- a/packages/video_player/video_player/example/macos/Podfile +++ b/packages/video_player/video_player/example/macos/Podfile @@ -30,9 +30,6 @@ target 'Runner' do use_frameworks! flutter_install_all_macos_pods File.dirname(File.realpath(__FILE__)) - target 'RunnerTests' do - inherit! :search_paths - end end post_install do |installer| From fd27dd4695ba4f3247cf9d1fd0d1b438ab702099 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Fri, 14 Aug 2026 14:25:13 -0700 Subject: [PATCH 04/13] attempt to shard --- .ci.yaml | 25 +++++++++++++++++++ .../web_platform_tests_material_ui.yaml | 16 ++++++++++++ .../web_platform_tests_material_ui_wasm.yaml | 17 +++++++++++++ script/configs/exclude_integration_web.yaml | 3 +++ 4 files changed, 61 insertions(+) create mode 100644 .ci/targets/web_platform_tests_material_ui.yaml create mode 100644 .ci/targets/web_platform_tests_material_ui_wasm.yaml diff --git a/.ci.yaml b/.ci.yaml index 52c1f652128..520b3fd076a 100644 --- a/.ci.yaml +++ b/.ci.yaml @@ -685,6 +685,14 @@ targets: channel: master package_sharding: "--shardIndex 2 --shardCount 3" + - name: Linux_web web_platform_tests_material_ui master + recipe: packages/packages + timeout: 90 + properties: + target_file: web_platform_tests_material_ui.yaml + version_file: flutter_master.version + channel: master + # Wasm integration tests in master - name: Linux_web web_platform_tests_wasm_shard_1 master recipe: packages/packages @@ -713,6 +721,14 @@ targets: channel: master package_sharding: "--shardIndex 2 --shardCount 3" + - name: Linux_web web_platform_tests_material_ui_wasm master + recipe: packages/packages + timeout: 90 + properties: + target_file: web_platform_tests_material_ui_wasm.yaml + version_file: flutter_master.version + channel: master + # JS integration tests in stable - name: Linux_web web_platform_tests_shard_1 stable recipe: packages/packages @@ -741,6 +757,15 @@ targets: channel: stable package_sharding: "--shardIndex 2 --shardCount 3" + - name: Linux_web web_platform_tests_material_ui stable + recipe: packages/packages + timeout: 90 + properties: + target_file: web_platform_tests_material_ui.yaml + version_file: flutter_stable.version + channel: stable + + ### Linux desktop tasks - name: Linux_desktop build_all_packages master recipe: packages/packages diff --git a/.ci/targets/web_platform_tests_material_ui.yaml b/.ci/targets/web_platform_tests_material_ui.yaml new file mode 100644 index 00000000000..ca203a755bc --- /dev/null +++ b/.ci/targets/web_platform_tests_material_ui.yaml @@ -0,0 +1,16 @@ +tasks: + - name: prepare tool + script: .ci/scripts/prepare_tool.sh + infra_step: true # Note infra steps failing prevents "always" from running. + - name: download Dart deps + script: .ci/scripts/tool_runner.sh + args: ["fetch-deps", "--web", "--supporting-target-platforms-only"] + infra_step: true + - name: drive examples + script: .ci/scripts/tool_runner.sh + args: [ + "drive-examples", + "--web", + "--run-chromedriver", + "--packages=material_ui", + ] diff --git a/.ci/targets/web_platform_tests_material_ui_wasm.yaml b/.ci/targets/web_platform_tests_material_ui_wasm.yaml new file mode 100644 index 00000000000..2a26e7c8751 --- /dev/null +++ b/.ci/targets/web_platform_tests_material_ui_wasm.yaml @@ -0,0 +1,17 @@ +tasks: + - name: prepare tool + script: .ci/scripts/prepare_tool.sh + infra_step: true # Note infra steps failing prevents "always" from running. + - name: download Dart deps + script: .ci/scripts/tool_runner.sh + args: ["fetch-deps", "--web", "--supporting-target-platforms-only"] + infra_step: true + - name: drive examples + script: .ci/scripts/tool_runner.sh + args: [ + "drive-examples", + "--web", + "--wasm", + "--run-chromedriver", + "--packages=material_ui", + ] diff --git a/script/configs/exclude_integration_web.yaml b/script/configs/exclude_integration_web.yaml index 8dbdd61b8d4..cafa68aa54d 100644 --- a/script/configs/exclude_integration_web.yaml +++ b/script/configs/exclude_integration_web.yaml @@ -2,3 +2,6 @@ - file_selector # Waiting on https://github.com/flutter/flutter/issues/145149 - google_maps_flutter/google_maps_flutter +# Moved to its own dedicated shard due to long test duration +- material_ui + From b13c76163c93bd6c51ac5944f600475fd6ee306f Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Fri, 14 Aug 2026 16:06:16 -0700 Subject: [PATCH 05/13] bring up --- .ci.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.ci.yaml b/.ci.yaml index 520b3fd076a..9a1e2110480 100644 --- a/.ci.yaml +++ b/.ci.yaml @@ -687,6 +687,7 @@ targets: - name: Linux_web web_platform_tests_material_ui master recipe: packages/packages + bringup: true timeout: 90 properties: target_file: web_platform_tests_material_ui.yaml @@ -723,6 +724,7 @@ targets: - name: Linux_web web_platform_tests_material_ui_wasm master recipe: packages/packages + bringup: true timeout: 90 properties: target_file: web_platform_tests_material_ui_wasm.yaml @@ -759,6 +761,7 @@ targets: - name: Linux_web web_platform_tests_material_ui stable recipe: packages/packages + bringup: true timeout: 90 properties: target_file: web_platform_tests_material_ui.yaml From ae555c7f3420a7c00571cd1e2102d2553f91d409 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Fri, 14 Aug 2026 18:28:28 -0700 Subject: [PATCH 06/13] more shard --- .ci.yaml | 28 +++++++++++++++++++ .ci/targets/web_dart_unit_tests.yaml | 3 +- .../web_dart_unit_tests_material_ui.yaml | 11 ++++++++ .../web_dart_unit_tests_material_ui_wasm.yaml | 12 ++++++++ .ci/targets/web_dart_unit_tests_wasm.yaml | 3 +- script/configs/exclude_web_unit_tests.yaml | 2 ++ 6 files changed, 57 insertions(+), 2 deletions(-) create mode 100644 .ci/targets/web_dart_unit_tests_material_ui.yaml create mode 100644 .ci/targets/web_dart_unit_tests_material_ui_wasm.yaml create mode 100644 script/configs/exclude_web_unit_tests.yaml diff --git a/.ci.yaml b/.ci.yaml index 9a1e2110480..b8225c1d0a8 100644 --- a/.ci.yaml +++ b/.ci.yaml @@ -209,6 +209,15 @@ targets: version_file: flutter_master.version package_sharding: "--shardIndex 2 --shardCount 3" + - name: Linux_web web_dart_unit_test_material_ui master + recipe: packages/packages + bringup: true + timeout: 90 + properties: + target_file: web_dart_unit_tests_material_ui.yaml + channel: master + version_file: flutter_master.version + - name: Linux_web web_dart_unit_test_shard_1 stable recipe: packages/packages timeout: 60 @@ -236,6 +245,15 @@ targets: version_file: flutter_stable.version package_sharding: "--shardIndex 2 --shardCount 3" + - name: Linux_web web_dart_unit_test_material_ui stable + recipe: packages/packages + bringup: true + timeout: 90 + properties: + target_file: web_dart_unit_tests_material_ui.yaml + channel: stable + version_file: flutter_stable.version + # Wasm unit tests in master # TODO(stuartmorgan): Switch to testing wasm on master and stable and non-wasm # only on master if/when wasm builds become the default on stable; see @@ -259,6 +277,16 @@ targets: version_file: flutter_master.version package_sharding: "--shardIndex 1 --shardCount 2" + - name: Linux_web web_dart_unit_test_material_ui_wasm master + recipe: packages/packages + bringup: true + timeout: 90 + properties: + target_file: web_dart_unit_tests_material_ui_wasm.yaml + channel: master + version_file: flutter_master.version + + - name: Linux analyze master recipe: packages/packages timeout: 30 diff --git a/.ci/targets/web_dart_unit_tests.yaml b/.ci/targets/web_dart_unit_tests.yaml index 16cdf1771bb..60b84133119 100644 --- a/.ci/targets/web_dart_unit_tests.yaml +++ b/.ci/targets/web_dart_unit_tests.yaml @@ -7,5 +7,6 @@ tasks: args: [ "dart-test", "--platform=chrome", - "--exclude=script/configs/dart_unit_tests_exceptions.yaml" + "--exclude=script/configs/dart_unit_tests_exceptions.yaml", + "--exclude=script/configs/exclude_web_unit_tests.yaml" ] diff --git a/.ci/targets/web_dart_unit_tests_material_ui.yaml b/.ci/targets/web_dart_unit_tests_material_ui.yaml new file mode 100644 index 00000000000..b1d505b03a6 --- /dev/null +++ b/.ci/targets/web_dart_unit_tests_material_ui.yaml @@ -0,0 +1,11 @@ +tasks: + - name: prepare tool + script: .ci/scripts/prepare_tool.sh + infra_step: true # Note infra steps failing prevents "always" from running. + - name: Dart unit tests - web (material_ui) + script: .ci/scripts/tool_runner.sh + args: [ + "dart-test", + "--platform=chrome", + "--packages=material_ui" + ] diff --git a/.ci/targets/web_dart_unit_tests_material_ui_wasm.yaml b/.ci/targets/web_dart_unit_tests_material_ui_wasm.yaml new file mode 100644 index 00000000000..7e5b17fca93 --- /dev/null +++ b/.ci/targets/web_dart_unit_tests_material_ui_wasm.yaml @@ -0,0 +1,12 @@ +tasks: + - name: prepare tool + script: .ci/scripts/prepare_tool.sh + infra_step: true # Note infra steps failing prevents "always" from running. + - name: Dart unit tests - web wasm (material_ui) + script: .ci/scripts/tool_runner.sh + args: [ + "dart-test", + "--platform=chrome", + "--wasm", + "--packages=material_ui" + ] diff --git a/.ci/targets/web_dart_unit_tests_wasm.yaml b/.ci/targets/web_dart_unit_tests_wasm.yaml index a5a6eeeddf0..67cb833b91a 100644 --- a/.ci/targets/web_dart_unit_tests_wasm.yaml +++ b/.ci/targets/web_dart_unit_tests_wasm.yaml @@ -9,5 +9,6 @@ tasks: "--platform=chrome", "--wasm", "--exclude=script/configs/dart_unit_tests_exceptions.yaml", - "--exclude=script/configs/dart_unit_tests_wasm_exceptions.yaml" + "--exclude=script/configs/dart_unit_tests_wasm_exceptions.yaml", + "--exclude=script/configs/exclude_web_unit_tests.yaml" ] diff --git a/script/configs/exclude_web_unit_tests.yaml b/script/configs/exclude_web_unit_tests.yaml new file mode 100644 index 00000000000..a1e54f8e051 --- /dev/null +++ b/script/configs/exclude_web_unit_tests.yaml @@ -0,0 +1,2 @@ +# Moved to its own dedicated shard due to long test duration +- material_ui From e20144113c97270f10c8048a92f7e39ea4cc3dea Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Fri, 14 Aug 2026 20:33:12 -0700 Subject: [PATCH 07/13] more logging on chrome --- script/tool/lib/src/dart_test_command.dart | 2 ++ 1 file changed, 2 insertions(+) diff --git a/script/tool/lib/src/dart_test_command.dart b/script/tool/lib/src/dart_test_command.dart index 29a7b15f7f5..846f3bc94b7 100644 --- a/script/tool/lib/src/dart_test_command.dart +++ b/script/tool/lib/src/dart_test_command.dart @@ -134,6 +134,7 @@ class DartTestCommand extends PackageLoopingCommand { final int exitCode = await processRunner.runAndStream(flutterCommand, [ 'test', '--color', + if (platform == 'chrome') ...['-r', 'expanded', '--timeout=5m', '-j', '2'], if (experiment.isNotEmpty) '--enable-experiment=$experiment', // Flutter defaults to VM mode (under a different name) and explicitly // setting it is deprecated, so pass nothing in that case. @@ -162,6 +163,7 @@ class DartTestCommand extends PackageLoopingCommand { 'run', if (experiment.isNotEmpty) '--enable-experiment=$experiment', 'test', + if (platform == 'chrome') ...['-r', 'expanded', '--timeout=5m', '-j', '2'], if (platform != null) '--platform=$platform', if (wasm) '--compiler=dart2wasm', ], workingDir: package.directory); From 0e1a6cdba8a8729f9a2e7fdf204b07d781ebc8cc Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Fri, 14 Aug 2026 21:32:27 -0700 Subject: [PATCH 08/13] revert logs --- script/tool/lib/src/dart_test_command.dart | 2 -- 1 file changed, 2 deletions(-) diff --git a/script/tool/lib/src/dart_test_command.dart b/script/tool/lib/src/dart_test_command.dart index 846f3bc94b7..29a7b15f7f5 100644 --- a/script/tool/lib/src/dart_test_command.dart +++ b/script/tool/lib/src/dart_test_command.dart @@ -134,7 +134,6 @@ class DartTestCommand extends PackageLoopingCommand { final int exitCode = await processRunner.runAndStream(flutterCommand, [ 'test', '--color', - if (platform == 'chrome') ...['-r', 'expanded', '--timeout=5m', '-j', '2'], if (experiment.isNotEmpty) '--enable-experiment=$experiment', // Flutter defaults to VM mode (under a different name) and explicitly // setting it is deprecated, so pass nothing in that case. @@ -163,7 +162,6 @@ class DartTestCommand extends PackageLoopingCommand { 'run', if (experiment.isNotEmpty) '--enable-experiment=$experiment', 'test', - if (platform == 'chrome') ...['-r', 'expanded', '--timeout=5m', '-j', '2'], if (platform != null) '--platform=$platform', if (wasm) '--compiler=dart2wasm', ], workingDir: package.directory); From 624748e09a60556031ff1197e29950d23e5a9745 Mon Sep 17 00:00:00 2001 From: Mouad Debbar Date: Mon, 17 Aug 2026 15:43:45 -0400 Subject: [PATCH 09/13] Update Chrome test flags to support Chrome 145 upgrade --- packages/cross_file/dart_test.yaml | 15 +++++++++- packages/cross_file/example/dart_test.yaml | 15 +++++++++- .../dart_test.yaml | 15 +++++++++- .../plugin_platform_interface/dart_test.yaml | 15 +++++++++- packages/web_benchmarks/CHANGELOG.md | 1 + packages/web_benchmarks/lib/src/browser.dart | 30 ++++++++++++++++--- 6 files changed, 83 insertions(+), 8 deletions(-) diff --git a/packages/cross_file/dart_test.yaml b/packages/cross_file/dart_test.yaml index cdb656dbb68..36d5c9b8bca 100644 --- a/packages/cross_file/dart_test.yaml +++ b/packages/cross_file/dart_test.yaml @@ -3,4 +3,17 @@ override_platforms: chrome: settings: executable: chrome - arguments: --no-sandbox + arguments: >- + --no-sandbox + --disable-background-timer-throttling + --disable-renderer-backgrounding + --disable-background-networking + --disable-search-engine-choice-screen + --disable-extensions + --disable-popup-blocking + --disable-translate + --disable-default-apps + --no-default-browser-check + --no-first-run + --password-store=basic + --bwsi diff --git a/packages/cross_file/example/dart_test.yaml b/packages/cross_file/example/dart_test.yaml index cdb656dbb68..36d5c9b8bca 100644 --- a/packages/cross_file/example/dart_test.yaml +++ b/packages/cross_file/example/dart_test.yaml @@ -3,4 +3,17 @@ override_platforms: chrome: settings: executable: chrome - arguments: --no-sandbox + arguments: >- + --no-sandbox + --disable-background-timer-throttling + --disable-renderer-backgrounding + --disable-background-networking + --disable-search-engine-choice-screen + --disable-extensions + --disable-popup-blocking + --disable-translate + --disable-default-apps + --no-default-browser-check + --no-first-run + --password-store=basic + --bwsi diff --git a/packages/google_identity_services_web/dart_test.yaml b/packages/google_identity_services_web/dart_test.yaml index cdb656dbb68..36d5c9b8bca 100644 --- a/packages/google_identity_services_web/dart_test.yaml +++ b/packages/google_identity_services_web/dart_test.yaml @@ -3,4 +3,17 @@ override_platforms: chrome: settings: executable: chrome - arguments: --no-sandbox + arguments: >- + --no-sandbox + --disable-background-timer-throttling + --disable-renderer-backgrounding + --disable-background-networking + --disable-search-engine-choice-screen + --disable-extensions + --disable-popup-blocking + --disable-translate + --disable-default-apps + --no-default-browser-check + --no-first-run + --password-store=basic + --bwsi diff --git a/packages/plugin_platform_interface/dart_test.yaml b/packages/plugin_platform_interface/dart_test.yaml index cdb656dbb68..36d5c9b8bca 100644 --- a/packages/plugin_platform_interface/dart_test.yaml +++ b/packages/plugin_platform_interface/dart_test.yaml @@ -3,4 +3,17 @@ override_platforms: chrome: settings: executable: chrome - arguments: --no-sandbox + arguments: >- + --no-sandbox + --disable-background-timer-throttling + --disable-renderer-backgrounding + --disable-background-networking + --disable-search-engine-choice-screen + --disable-extensions + --disable-popup-blocking + --disable-translate + --disable-default-apps + --no-default-browser-check + --no-first-run + --password-store=basic + --bwsi diff --git a/packages/web_benchmarks/CHANGELOG.md b/packages/web_benchmarks/CHANGELOG.md index a20c00696c6..7aed180f224 100644 --- a/packages/web_benchmarks/CHANGELOG.md +++ b/packages/web_benchmarks/CHANGELOG.md @@ -1,5 +1,6 @@ ## NEXT +* Updates Chrome launch arguments to unblock Chrome 145+ upgrade. * Updates minimum supported SDK version to Flutter 3.38/Dart 3.10. ## 4.1.1 diff --git a/packages/web_benchmarks/lib/src/browser.dart b/packages/web_benchmarks/lib/src/browser.dart index d632a68e762..75e22d4b6e1 100644 --- a/packages/web_benchmarks/lib/src/browser.dart +++ b/packages/web_benchmarks/lib/src/browser.dart @@ -98,10 +98,16 @@ class Chrome { final args = [ if (options.userDataDirectory != null) '--user-data-dir=${options.userDataDirectory}', if (url != null) url, - if (io.Platform.environment['CHROME_NO_SANDBOX'] == 'true') '--no-sandbox', - if (options.headless) '--headless', - if (withDebugging) '--remote-debugging-port=${options.debugPort}', - '--window-size=${options.windowWidth},${options.windowHeight}', + '--disable-background-timer-throttling', + '--disable-renderer-backgrounding', + '--disable-background-networking', + '--disable-sync', + '--disable-client-side-phishing-detection', + '--disable-notifications', + '--disable-features=GCM', + '--gcm-checkin-url=http://127.0.0.1', + '--gcm-registration-url=http://127.0.0.1', + '--gcm-mcs-endpoint=127.0.0.1:0', '--disable-extensions', '--disable-popup-blocking', // Indicates that the browser is in "browse without sign-in" (Guest session) mode. @@ -110,6 +116,22 @@ class Chrome { '--no-default-browser-check', '--disable-default-apps', '--disable-translate', + '--password-store=basic', + if (io.Platform.isMacOS) '--use-mock-keychain', + '--disable-search-engine-choice-screen', + if (io.Platform.environment['CHROME_NO_SANDBOX'] == 'true') '--no-sandbox', + if (options.headless) ...[ + '--headless', + '--no-sandbox', + if (io.Platform.isLinux) ...[ + '--use-gl=angle', + '--use-angle=swiftshader', + '--enable-unsafe-swiftshader', + '--disable-gpu-sandbox', + ], + ], + if (withDebugging) '--remote-debugging-port=${options.debugPort}', + '--window-size=${options.windowWidth},${options.windowHeight}', ]; final io.Process chromeProcess = await io.Process.start( _findSystemChromeExecutable(), From a704d9b5a35eabe545feaf2a3c0d4684c0f9e2c3 Mon Sep 17 00:00:00 2001 From: Mouad Debbar Date: Mon, 17 Aug 2026 15:53:02 -0400 Subject: [PATCH 10/13] Revert unrelated Podfile, xcconfig, and video_player test changes --- .../integration_test/video_player_test.dart | 2 +- .../example/ios/Flutter/Debug.xcconfig | 1 - .../example/ios/Flutter/Release.xcconfig | 1 - .../video_player/example/ios/Podfile | 40 ----------------- .../macos/Flutter/Flutter-Debug.xcconfig | 1 - .../macos/Flutter/Flutter-Release.xcconfig | 1 - .../video_player/example/macos/Podfile | 39 ----------------- .../example/ios/Flutter/Debug.xcconfig | 1 - .../example/ios/Flutter/Release.xcconfig | 1 - .../example/ios/Podfile | 43 ------------------- .../macos/Flutter/Flutter-Debug.xcconfig | 1 - .../macos/Flutter/Flutter-Release.xcconfig | 1 - .../example/macos/Podfile | 42 ------------------ 13 files changed, 1 insertion(+), 173 deletions(-) delete mode 100644 packages/video_player/video_player/example/ios/Podfile delete mode 100644 packages/video_player/video_player/example/macos/Podfile delete mode 100644 packages/video_player/video_player_avfoundation/example/ios/Podfile delete mode 100644 packages/video_player/video_player_avfoundation/example/macos/Podfile diff --git a/packages/video_player/video_player/example/integration_test/video_player_test.dart b/packages/video_player/video_player/example/integration_test/video_player_test.dart index ca20b053441..b3b99c72728 100644 --- a/packages/video_player/video_player/example/integration_test/video_player_test.dart +++ b/packages/video_player/video_player/example/integration_test/video_player_test.dart @@ -306,7 +306,7 @@ void main() { // Due to the duration calculation accuracy between platforms, // the milliseconds on Web will be a slightly different from natives. // The audio was made with 44100 Hz, 192 Kbps CBR, and 32 bits. - expect(controller.value.duration.inMilliseconds, closeTo(5000, 50)); + expect(controller.value.duration, const Duration(seconds: 5, milliseconds: kIsWeb ? 42 : 41)); }); testWidgets('can be played', (WidgetTester tester) async { diff --git a/packages/video_player/video_player/example/ios/Flutter/Debug.xcconfig b/packages/video_player/video_player/example/ios/Flutter/Debug.xcconfig index ec97fc6f302..592ceee85b8 100644 --- a/packages/video_player/video_player/example/ios/Flutter/Debug.xcconfig +++ b/packages/video_player/video_player/example/ios/Flutter/Debug.xcconfig @@ -1,2 +1 @@ -#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" #include "Generated.xcconfig" diff --git a/packages/video_player/video_player/example/ios/Flutter/Release.xcconfig b/packages/video_player/video_player/example/ios/Flutter/Release.xcconfig index c4855bfe200..592ceee85b8 100644 --- a/packages/video_player/video_player/example/ios/Flutter/Release.xcconfig +++ b/packages/video_player/video_player/example/ios/Flutter/Release.xcconfig @@ -1,2 +1 @@ -#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" #include "Generated.xcconfig" diff --git a/packages/video_player/video_player/example/ios/Podfile b/packages/video_player/video_player/example/ios/Podfile deleted file mode 100644 index 17adeb14132..00000000000 --- a/packages/video_player/video_player/example/ios/Podfile +++ /dev/null @@ -1,40 +0,0 @@ -# Uncomment this line to define a global platform for your project -# platform :ios, '13.0' - -# CocoaPods analytics sends network stats synchronously affecting flutter build latency. -ENV['COCOAPODS_DISABLE_STATS'] = 'true' - -project 'Runner', { - 'Debug' => :debug, - 'Profile' => :release, - 'Release' => :release, -} - -def flutter_root - generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) - unless File.exist?(generated_xcode_build_settings_path) - raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" - end - - File.foreach(generated_xcode_build_settings_path) do |line| - matches = line.match(/FLUTTER_ROOT\=(.*)/) - return matches[1].strip if matches - end - raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" -end - -require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) - -flutter_ios_podfile_setup - -target 'Runner' do - use_frameworks! - - flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) -end - -post_install do |installer| - installer.pods_project.targets.each do |target| - flutter_additional_ios_build_settings(target) - end -end diff --git a/packages/video_player/video_player/example/macos/Flutter/Flutter-Debug.xcconfig b/packages/video_player/video_player/example/macos/Flutter/Flutter-Debug.xcconfig index 4b81f9b2d20..c2efd0b608b 100644 --- a/packages/video_player/video_player/example/macos/Flutter/Flutter-Debug.xcconfig +++ b/packages/video_player/video_player/example/macos/Flutter/Flutter-Debug.xcconfig @@ -1,2 +1 @@ -#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" #include "ephemeral/Flutter-Generated.xcconfig" diff --git a/packages/video_player/video_player/example/macos/Flutter/Flutter-Release.xcconfig b/packages/video_player/video_player/example/macos/Flutter/Flutter-Release.xcconfig index 5caa9d1579e..c2efd0b608b 100644 --- a/packages/video_player/video_player/example/macos/Flutter/Flutter-Release.xcconfig +++ b/packages/video_player/video_player/example/macos/Flutter/Flutter-Release.xcconfig @@ -1,2 +1 @@ -#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" #include "ephemeral/Flutter-Generated.xcconfig" diff --git a/packages/video_player/video_player/example/macos/Podfile b/packages/video_player/video_player/example/macos/Podfile deleted file mode 100644 index 66f6172bbb3..00000000000 --- a/packages/video_player/video_player/example/macos/Podfile +++ /dev/null @@ -1,39 +0,0 @@ -platform :osx, '10.15' - -# CocoaPods analytics sends network stats synchronously affecting flutter build latency. -ENV['COCOAPODS_DISABLE_STATS'] = 'true' - -project 'Runner', { - 'Debug' => :debug, - 'Profile' => :release, - 'Release' => :release, -} - -def flutter_root - generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'ephemeral', 'Flutter-Generated.xcconfig'), __FILE__) - unless File.exist?(generated_xcode_build_settings_path) - raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure \"flutter pub get\" is executed first" - end - - File.foreach(generated_xcode_build_settings_path) do |line| - matches = line.match(/FLUTTER_ROOT\=(.*)/) - return matches[1].strip if matches - end - raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Flutter-Generated.xcconfig, then run \"flutter pub get\"" -end - -require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) - -flutter_macos_podfile_setup - -target 'Runner' do - use_frameworks! - - flutter_install_all_macos_pods File.dirname(File.realpath(__FILE__)) -end - -post_install do |installer| - installer.pods_project.targets.each do |target| - flutter_additional_macos_build_settings(target) - end -end diff --git a/packages/video_player/video_player_avfoundation/example/ios/Flutter/Debug.xcconfig b/packages/video_player/video_player_avfoundation/example/ios/Flutter/Debug.xcconfig index ec97fc6f302..592ceee85b8 100644 --- a/packages/video_player/video_player_avfoundation/example/ios/Flutter/Debug.xcconfig +++ b/packages/video_player/video_player_avfoundation/example/ios/Flutter/Debug.xcconfig @@ -1,2 +1 @@ -#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" #include "Generated.xcconfig" diff --git a/packages/video_player/video_player_avfoundation/example/ios/Flutter/Release.xcconfig b/packages/video_player/video_player_avfoundation/example/ios/Flutter/Release.xcconfig index c4855bfe200..592ceee85b8 100644 --- a/packages/video_player/video_player_avfoundation/example/ios/Flutter/Release.xcconfig +++ b/packages/video_player/video_player_avfoundation/example/ios/Flutter/Release.xcconfig @@ -1,2 +1 @@ -#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" #include "Generated.xcconfig" diff --git a/packages/video_player/video_player_avfoundation/example/ios/Podfile b/packages/video_player/video_player_avfoundation/example/ios/Podfile deleted file mode 100644 index 620e46eba60..00000000000 --- a/packages/video_player/video_player_avfoundation/example/ios/Podfile +++ /dev/null @@ -1,43 +0,0 @@ -# Uncomment this line to define a global platform for your project -# platform :ios, '13.0' - -# CocoaPods analytics sends network stats synchronously affecting flutter build latency. -ENV['COCOAPODS_DISABLE_STATS'] = 'true' - -project 'Runner', { - 'Debug' => :debug, - 'Profile' => :release, - 'Release' => :release, -} - -def flutter_root - generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) - unless File.exist?(generated_xcode_build_settings_path) - raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" - end - - File.foreach(generated_xcode_build_settings_path) do |line| - matches = line.match(/FLUTTER_ROOT\=(.*)/) - return matches[1].strip if matches - end - raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" -end - -require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) - -flutter_ios_podfile_setup - -target 'Runner' do - use_frameworks! - - flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) - target 'RunnerTests' do - inherit! :search_paths - end -end - -post_install do |installer| - installer.pods_project.targets.each do |target| - flutter_additional_ios_build_settings(target) - end -end diff --git a/packages/video_player/video_player_avfoundation/example/macos/Flutter/Flutter-Debug.xcconfig b/packages/video_player/video_player_avfoundation/example/macos/Flutter/Flutter-Debug.xcconfig index 4b81f9b2d20..c2efd0b608b 100644 --- a/packages/video_player/video_player_avfoundation/example/macos/Flutter/Flutter-Debug.xcconfig +++ b/packages/video_player/video_player_avfoundation/example/macos/Flutter/Flutter-Debug.xcconfig @@ -1,2 +1 @@ -#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" #include "ephemeral/Flutter-Generated.xcconfig" diff --git a/packages/video_player/video_player_avfoundation/example/macos/Flutter/Flutter-Release.xcconfig b/packages/video_player/video_player_avfoundation/example/macos/Flutter/Flutter-Release.xcconfig index 5caa9d1579e..c2efd0b608b 100644 --- a/packages/video_player/video_player_avfoundation/example/macos/Flutter/Flutter-Release.xcconfig +++ b/packages/video_player/video_player_avfoundation/example/macos/Flutter/Flutter-Release.xcconfig @@ -1,2 +1 @@ -#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" #include "ephemeral/Flutter-Generated.xcconfig" diff --git a/packages/video_player/video_player_avfoundation/example/macos/Podfile b/packages/video_player/video_player_avfoundation/example/macos/Podfile deleted file mode 100644 index ff5ddb3b8bd..00000000000 --- a/packages/video_player/video_player_avfoundation/example/macos/Podfile +++ /dev/null @@ -1,42 +0,0 @@ -platform :osx, '10.15' - -# CocoaPods analytics sends network stats synchronously affecting flutter build latency. -ENV['COCOAPODS_DISABLE_STATS'] = 'true' - -project 'Runner', { - 'Debug' => :debug, - 'Profile' => :release, - 'Release' => :release, -} - -def flutter_root - generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'ephemeral', 'Flutter-Generated.xcconfig'), __FILE__) - unless File.exist?(generated_xcode_build_settings_path) - raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure \"flutter pub get\" is executed first" - end - - File.foreach(generated_xcode_build_settings_path) do |line| - matches = line.match(/FLUTTER_ROOT\=(.*)/) - return matches[1].strip if matches - end - raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Flutter-Generated.xcconfig, then run \"flutter pub get\"" -end - -require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) - -flutter_macos_podfile_setup - -target 'Runner' do - use_frameworks! - - flutter_install_all_macos_pods File.dirname(File.realpath(__FILE__)) - target 'RunnerTests' do - inherit! :search_paths - end -end - -post_install do |installer| - installer.pods_project.targets.each do |target| - flutter_additional_macos_build_settings(target) - end -end From dc07cab82dcf11a43e83f1d9222a7397dfc67822 Mon Sep 17 00:00:00 2001 From: Mouad Debbar Date: Mon, 17 Aug 2026 16:03:58 -0400 Subject: [PATCH 11/13] Allow tolerance in audio duration check for Chrome 145 web tests --- .../example/integration_test/video_player_test.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/video_player/video_player/example/integration_test/video_player_test.dart b/packages/video_player/video_player/example/integration_test/video_player_test.dart index b3b99c72728..ca20b053441 100644 --- a/packages/video_player/video_player/example/integration_test/video_player_test.dart +++ b/packages/video_player/video_player/example/integration_test/video_player_test.dart @@ -306,7 +306,7 @@ void main() { // Due to the duration calculation accuracy between platforms, // the milliseconds on Web will be a slightly different from natives. // The audio was made with 44100 Hz, 192 Kbps CBR, and 32 bits. - expect(controller.value.duration, const Duration(seconds: 5, milliseconds: kIsWeb ? 42 : 41)); + expect(controller.value.duration.inMilliseconds, closeTo(5000, 50)); }); testWidgets('can be played', (WidgetTester tester) async { From 221a7f14816cf15f350cf698700e79bffc51e772 Mon Sep 17 00:00:00 2001 From: Mouad Debbar Date: Mon, 17 Aug 2026 16:17:41 -0400 Subject: [PATCH 12/13] Bump web_benchmarks to 4.1.2 --- packages/web_benchmarks/CHANGELOG.md | 2 +- packages/web_benchmarks/pubspec.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/web_benchmarks/CHANGELOG.md b/packages/web_benchmarks/CHANGELOG.md index 7aed180f224..1db81531bfd 100644 --- a/packages/web_benchmarks/CHANGELOG.md +++ b/packages/web_benchmarks/CHANGELOG.md @@ -1,4 +1,4 @@ -## NEXT +## 4.1.2 * Updates Chrome launch arguments to unblock Chrome 145+ upgrade. * Updates minimum supported SDK version to Flutter 3.38/Dart 3.10. diff --git a/packages/web_benchmarks/pubspec.yaml b/packages/web_benchmarks/pubspec.yaml index 4a687a973f8..f43d83af9d3 100644 --- a/packages/web_benchmarks/pubspec.yaml +++ b/packages/web_benchmarks/pubspec.yaml @@ -2,7 +2,7 @@ name: web_benchmarks description: A benchmark harness for performance-testing Flutter apps in Chrome. repository: https://github.com/flutter/packages/tree/main/packages/web_benchmarks issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+web_benchmarks%22 -version: 4.1.1 +version: 4.1.2 environment: sdk: ^3.10.0 From ac64fbebd31e0b895bbfaa50b3e29823396556d6 Mon Sep 17 00:00:00 2001 From: Mouad Debbar Date: Mon, 17 Aug 2026 17:58:44 -0400 Subject: [PATCH 13/13] Pass matching web browser flags in drive-examples and opt shared_preferences_tool out of non-vm testing --- .../shared_preferences_tool/dart_test.yaml | 1 + .../tool/lib/src/drive_examples_command.dart | 18 +++++ .../test/drive_examples_command_test.dart | 76 ++++++++++++++++++- 3 files changed, 93 insertions(+), 2 deletions(-) create mode 100644 packages/shared_preferences/shared_preferences_tool/dart_test.yaml diff --git a/packages/shared_preferences/shared_preferences_tool/dart_test.yaml b/packages/shared_preferences/shared_preferences_tool/dart_test.yaml new file mode 100644 index 00000000000..91ec220b8e2 --- /dev/null +++ b/packages/shared_preferences/shared_preferences_tool/dart_test.yaml @@ -0,0 +1 @@ +test_on: vm diff --git a/script/tool/lib/src/drive_examples_command.dart b/script/tool/lib/src/drive_examples_command.dart index 2d89df0b270..defffa4204b 100644 --- a/script/tool/lib/src/drive_examples_command.dart +++ b/script/tool/lib/src/drive_examples_command.dart @@ -51,6 +51,22 @@ class DriveExamplesCommand extends PackageLoopingCommand { static const String _chromeDriverFlag = 'run-chromedriver'; + static const List _webChromeBrowserFlags = [ + '--web-browser-flag=--no-sandbox', + '--web-browser-flag=--disable-background-timer-throttling', + '--web-browser-flag=--disable-renderer-backgrounding', + '--web-browser-flag=--disable-background-networking', + '--web-browser-flag=--disable-search-engine-choice-screen', + '--web-browser-flag=--disable-extensions', + '--web-browser-flag=--disable-popup-blocking', + '--web-browser-flag=--disable-translate', + '--web-browser-flag=--disable-default-apps', + '--web-browser-flag=--no-default-browser-check', + '--web-browser-flag=--no-first-run', + '--web-browser-flag=--password-store=basic', + '--web-browser-flag=--bwsi', + ]; + @override final String name = 'drive-examples'; @@ -139,6 +155,8 @@ class DriveExamplesCommand extends PackageLoopingCommand { if (useWasm) '--wasm', if (platform.environment.containsKey('CHROME_EXECUTABLE')) '--chrome-binary=${platform.environment['CHROME_EXECUTABLE']}', + ..._webChromeBrowserFlags, + if (platform.isMacOS) '--web-browser-flag=--use-mock-keychain', ], if (getBoolArg(platformWindows)) platformWindows: ['-d', 'windows'], }; diff --git a/script/tool/test/drive_examples_command_test.dart b/script/tool/test/drive_examples_command_test.dart index 81a0d9f4cba..aa357e5fec6 100644 --- a/script/tool/test/drive_examples_command_test.dart +++ b/script/tool/test/drive_examples_command_test.dart @@ -13,7 +13,6 @@ import 'package:flutter_plugin_tools/src/common/plugin_utils.dart'; import 'package:flutter_plugin_tools/src/drive_examples_command.dart'; import 'package:git/git.dart'; import 'package:mockito/mockito.dart'; -import 'package:platform/platform.dart'; import 'package:test/test.dart'; import 'mocks.dart'; @@ -21,10 +20,25 @@ import 'util.dart'; const String _fakeIOSDevice = '67d5c3d1-8bdf-46ad-8f6b-b00e2a972dda'; const String _fakeAndroidDevice = 'emulator-1234'; +const List _defaultWebBrowserFlags = [ + '--web-browser-flag=--no-sandbox', + '--web-browser-flag=--disable-background-timer-throttling', + '--web-browser-flag=--disable-renderer-backgrounding', + '--web-browser-flag=--disable-background-networking', + '--web-browser-flag=--disable-search-engine-choice-screen', + '--web-browser-flag=--disable-extensions', + '--web-browser-flag=--disable-popup-blocking', + '--web-browser-flag=--disable-translate', + '--web-browser-flag=--disable-default-apps', + '--web-browser-flag=--no-default-browser-check', + '--web-browser-flag=--no-first-run', + '--web-browser-flag=--password-store=basic', + '--web-browser-flag=--bwsi', +]; void main() { group('test drive_example_command', () { - late Platform mockPlatform; + late MockPlatform mockPlatform; late Directory packagesDir; late CommandRunner runner; late RecordingProcessRunner processRunner; @@ -776,6 +790,7 @@ void main() { 'web-server', '--web-port=7357', '--browser-name=chrome', + ..._defaultWebBrowserFlags, '--screenshot=/path/to/logs/plugin_example-drive', '--driver', 'test_driver/integration_test.dart', @@ -823,6 +838,7 @@ void main() { '--web-port=7357', '--browser-name=chrome', '--wasm', + ..._defaultWebBrowserFlags, '--screenshot=/path/to/logs/plugin_example-drive', '--driver', 'test_driver/integration_test.dart', @@ -870,6 +886,7 @@ void main() { 'web-server', '--web-port=7357', '--browser-name=chrome', + ..._defaultWebBrowserFlags, '--screenshot=/path/to/logs/plugin_example-drive', '--driver', 'test_driver/integration_test.dart', @@ -918,6 +935,56 @@ void main() { '--web-port=7357', '--browser-name=chrome', '--chrome-binary=/path/to/chrome', + ..._defaultWebBrowserFlags, + '--screenshot=/path/to/logs/plugin_example-drive', + '--driver', + 'test_driver/integration_test.dart', + '--target', + 'integration_test/plugin_test.dart', + ], pluginExampleDirectory.path), + ]), + ); + }); + + test('drives a web plugin on macOS with mock keychain', () async { + final RepositoryPackage plugin = createFakePlugin( + 'plugin', + packagesDir, + extraFiles: [ + 'example/integration_test/plugin_test.dart', + 'example/test_driver/integration_test.dart', + 'example/web/index.html', + ], + platformSupport: { + platformWeb: const PlatformDetails(PlatformSupport.inline), + }, + ); + + final Directory pluginExampleDirectory = getExampleDir(plugin); + + mockPlatform.isMacOS = true; + + final List output = await runCapturingPrint(runner, [ + 'drive-examples', + '--web', + ]); + + expect( + output, + containsAllInOrder([contains('Running for plugin'), contains('No issues found!')]), + ); + + expect( + processRunner.recordedCalls, + orderedEquals([ + ProcessCall(getFlutterCommand(mockPlatform), const [ + 'drive', + '-d', + 'web-server', + '--web-port=7357', + '--browser-name=chrome', + ..._defaultWebBrowserFlags, + '--web-browser-flag=--use-mock-keychain', '--screenshot=/path/to/logs/plugin_example-drive', '--driver', 'test_driver/integration_test.dart', @@ -1370,6 +1437,7 @@ void main() { 'web-server', '--web-port=7357', '--browser-name=chrome', + ..._defaultWebBrowserFlags, '--screenshot=/path/to/logs/plugin_example-drive', '--driver', 'test_driver/integration_test.dart', @@ -1382,6 +1450,7 @@ void main() { 'web-server', '--web-port=7357', '--browser-name=chrome', + ..._defaultWebBrowserFlags, '--screenshot=/path/to/logs/plugin_example-drive', '--driver', 'test_driver/integration_test.dart', @@ -1488,6 +1557,7 @@ void main() { 'web-server', '--web-port=7357', '--browser-name=chrome', + ..._defaultWebBrowserFlags, '--screenshot=/path/to/logs/a_package_example-drive', '--driver', 'test_driver/integration_test.dart', @@ -1534,6 +1604,7 @@ void main() { 'web-server', '--web-port=7357', '--browser-name=chrome', + ..._defaultWebBrowserFlags, '--driver', 'test_driver/integration_test.dart', '--target', @@ -1617,6 +1688,7 @@ void main() { 'web-server', '--web-port=7357', '--browser-name=chrome', + ..._defaultWebBrowserFlags, '--screenshot=/path/to/logs/a_package_example_with_web-drive', '--driver', 'test_driver/integration_test.dart',