Integration Testing with Flutter

To test Flutter apps with Firebase Test Lab, you can write Flutter integration tests, build Android APKs or iOS test zip files, and run as regular Android instrumentation tests or iOS XCTests.

Flutter integration test types

Flutter supports three types of tests: unit tests, widget tests, and integration tests. A unit test verifies the behavior of a method or class. A widget test verifies the behavior of Flutter widgets without running the app itself. An integration test, also called end-to-end testing or GUI testing, runs the full app.

To learn more about integration tests, see Flutter integration testing.

Write Flutter integration tests

To learn how to write integration tests, see the project setup section of the Flutter integration tests documentation. Optionally, you can follow running using Flutter command to run and verify the tests locally.

Test on Test Lab

You can use Test Lab with both Android and iOS targets.

Android setup

Follow the instructions in the Android Device Testing section of the README.

iOS setup

Follow the instructions in the iOS Device Testing section of the README.

Robo test support

Robo tests do not natively support Flutter. To improve crawling of your app, use Robo scripts, which are tests that automate manual QA tasks for mobile apps, and enable continuous integration (CI) and pre-launch testing strategies. For example, to control Robo behavior in a more precise and robust way, you can use clicks with visionText.

Analyze test results

You can run Flutter integration tests as an Android instrumentation test or an iOS XCTest. To analyze the result of an integration test, see the documentation for Android and iOS, depending on your platform.

Limitations

Test timing information for individual test cases is not available, which means that features like test case duration and videos for individual test cases don't work as expected.

Troubleshooting

If you encounter issues, check the public issue tracker for integration tests.

If you encounter a new issue caused by the integration test framework, file a new issue in the public issue tracker following the guidance in Creating useful bug reports.