This folder contains e2e integration tests for the engine in conjunction with a fake dart:ui framework running in JIT or AOT.
It intentionally has no dependencies on the Flutter framework or tooling, such that it should be buildable as a presubmit or postsubmit to the engine even in the face of changes to Dart or dart:ui that require upstream changes in the Flutter tooling.
Create a new subclass of Scenario and add it to the map in scenarios.dart. For an example, see animated_color_square.dart, which draws a continuously animating colored square that bounces off the sides of the viewport.
Then set the scenario from the Android or iOS app by calling “set_scenario” on platform channel.
ios_debug_sim_unopt engine variant, and run
in your shell.
To run or debug in Xcode, open the xcodeproj file located in
For PlatformView tests on iOS, you‘ll also have to edit the dictionaries in AppDelegate.m and GoldenTestManager.m so that the correct golden image can be found. Also, you’ll have to add a GoldenPlatformViewTests in PlatformViewUITests.m.
PlatformViewRotation is failing, make sure Simulator app Device > Rotate Device Automatically is selected, or run:
defaults write com.apple.iphonesimulator RotateWindowWhenSignaledByGuest -int 1
Screenshots are saved as XCTAttachment‘s. If you look at the output from running the tests you’ll find a path in the form:
/Users/$USER/Library/Developer/Xcode/DerivedData/Scenarios-$HASH. Inside that directory you'll find
./Build/Products/Debug-iphonesimulator/ScenariosUITests-Runner.app/PlugIns/ScenariosUITests.xctest/ which is where all the images that were compared against golden reside.
The only test that is currently run is the Firebase TestLab test, which is a smoke test to make sure an application can be built and run on a real Android device.
To run it, build the
android_profile_arm64 variant of the engine, and run
./flutter/ci/firebase_testlab.py. If you wish to test a different variant, e.g. debug arm64, pass
If a Gradle dependency is updated, lockfiles must be regenerated.
To generate new lockfiles, run:
cd android ../../../../gradle/bin/gradle generateLockfiles