![]() Match the example and integration test apps to the the properties in the `flutter create` template, updated in https://github.com/flutter/flutter/pull/156201. We discussed perhaps making this an auto-migration for existing Flutter apps (if they've never edited the template from the old values), but it probably makes sense for devs to manage this themselves depending on how beefy the machine they are running on is. Filed https://github.com/flutter/flutter/issues/163801 to show a nicer message when the user hits this so they can manage `java.lang.OutOfMemoryError: Java heap space` errors themselves. Speculatively hoping this helps with the `Java heap space` build test flakes https://github.com/flutter/flutter/issues/163121#issuecomment-2665783740 ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [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 documentation (doc comments with `///`). - [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]. <!-- Links --> [Contributor Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview [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 [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 |
||
---|---|---|
.. | ||
android | ||
lib | ||
test_driver | ||
tool | ||
.metadata | ||
pubspec.yaml | ||
README.md |
android_engine_test
This directory contains a sample app and tests that demonstrate how to use the (experimental) native Flutter Driver API to drive Flutter apps that run on Android devices or emulators, interact with and capture screenshots of the app, and compare the screenshots against golden images.
Caution
This test suite is a very end-to-end suite that is testing a combination of the graphics backend, the Android embedder, the Flutter framework, and Flutter tools, and only useful when the documentation and naming stays up to date and is clearly actionable.
Please take extra care when updating the test suite to also update the REAMDE.
How it runs on CI (LUCI)
See dev/bots/suite_runners/run_android_engine_tests.dart
, but tl;dr:
# TIP: If golden-files do not exist locally, this command will fail locally.
SHARD=android_engine_vulkan_tests bin/cache/dart-sdk/bin/dart dev/bots/test.dart
SHARD=android_engine_opengles_tests bin/cache/dart-sdk/bin/dart dev/bots/test.dart
Running the apps and tests
Each lib/{prefix}_main.dart
file is a standalone Flutter app that you can run
on an Android device or emulator.
flutter_rendered_blue_rectangle
external_texture/surface_producer_smiley_face
external_texture/surface_texture_smiley_face
platform_view/hybrid_composition_platform_view
platform_view/texture_layer_hybrid_composition_platform_view
platform_view/virtual_display_platform_view
platform_view_tap_color_change
flutter_rendered_blue_rectangle
This app displays a full screen blue rectangle. It mostly serves as a test that Flutter can run at all on the target device, and that the Flutter (native) driver can take a screenshot and compare it to a golden image. If this app or test fails, it's likely none of the other apps or tests will work either.
# Run the app
$ flutter run lib/flutter_rendered_blue_rectangle_main.dart
# Run the test
$ flutter drive lib/flutter_rendered_blue_rectangle_main.dart
external_texture/surface_producer_smiley_face
This app displays a full screen rectangular deformed smiley face with a yellow
background. It tests the SurfaceProducer
API end-to-end, including historic regression cases around
backgrounding the app, trimming memory, and resuming the app.
# Run the app
$ flutter run lib/external_texture/surface_producer_smiley_face_main.dart
# Run the test
$ flutter drive lib/external_texture/surface_producer_smiley_face_main.dart
external_texture/surface_texture_smiley_face
This app displays a full screen rectangular deformed smiley face with a yellow
background. It tests the SurfaceTexture
API end-to-end.
# Run the app
$ flutter run lib/external_texture/surface_texture_smiley_face_main.dart
# Run the test
$ flutter drive lib/external_texture/surface_texture_smiley_face_main.dart
platform_view/hybrid_composition_platform_view
This app displays a blue orange gradient, the app is backgrounded, and then resumed. It tests the Hybrid Composition implementation.
# Run the app
$ flutter run lib/platform_view/hybrid_composition_platform_view_main.dart
# Run the test
$ flutter drive lib/platform_view/hybrid_composition_platform_view_main.dart
platform_view/texture_layer_hybrid_composition_platform_view
This app displays a blue orange gradient, the app is backgrounded, and then resumed. It tests the Texture Layer Hybrid Composition implementation.
# Run the app
$ flutter run lib/platform_view/texture_layer_hybrid_composition_platform_view_main.dart
# Run the test
$ flutter drive lib/platform_view/texture_layer_hybrid_composition_platform_view_main.dart
platform_view/virtual_display_platform_view
This app displays a blue orange gradient, the app is backgrounded, and then resumed. It tests the Virtual Display implementation.
# Run the app
$ flutter run lib/platform_view/virtual_display_platform_view_main.dart
# Run the test
$ flutter drive lib/platform_view/virtual_display_platform_view_main.dart
platform_view_tap_color_change
This app displays a blue rectangle, using platform views, which upon being tapped (natively, not by Flutter), changes from blue to red.
# Run the app
$ flutter run lib/platform_view_tap_color_change_main.dart
# Run the test
$ flutter drive lib/platform_view_tap_color_change_main_test.dart
Deflaking
Use tool/deflake.dart <path/to/lib/main.dart>
to, in 1-command:
- Build an APK.
- Establish a baseline set of golden-files locally.
- Run N tests (by default, 10) in the same state, asserting the same output.
For example:
dart tool/deflake.dart lib/flutter_rendered_blue_rectangle_main.dart
For more options, see dart tool/deflake.dart --help
.