One of Flutter’s greatest strengths is being able to abstract coding applications for multiple platforms. One of the most useful features that Flutter has within this toolset is the ability to run visual integration tests against multiple platforms.
GitHub has built-in CI/CD through GitHub Actions which allows you to run integration tests automatically with ease.
In this article we’ll explore using Flutter for Web integration tests.
Why Test Using Flutter for Web⌗
This is not ideal in all scenarios, meaning your app will need to support Flutter for Web in order for this to work. You can run Flutter integration tests in iOS and Android using GitHub Actions, however it requires you use a MacOS runner which costs 10x what a Linux runner does. For real production apps it is definitely recommended to use the target platform to run tests. In a future article I will explore using both MacOS runners and Firebase Test lab for integration tests.
Create a new Flutter Project⌗
(note: for the first steps of this project you can follow the official integration testing docs)
To begin, lets make a new project to house our tests:
flutter new test_project
Then go into the project’s folder and type
flutter run to get your project up and running.
Run Integration Tests Locally⌗
Set up GitHub Actions to run Integration Tests⌗
In order to create a GitHub Action you must create a file with the
.github/workflows directory. In this case we’ll call it
name: Flutter Integration Tests on: [push, pull_request] jobs: integration_tests: runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v2 - uses: subosito/flutter-action@v1 - run: flutter pub get - run: chromedriver --port=4444 & - run: flutter drive --driver=test_driver/integration_test.dart --target=integration_test/app_test.dart -d web-server