In the last months Flutter Driver tests has been enabled for most browsers.
This document explains the steps that should be followed before running the tests, how to run the tests, example usages and handy tools that can be used.
The first step of using Flutter Driver tests for Flutter Web testing is to install(prepare) the driver for the target browser.
For Chrome Desktop browsers:
chromedriver --port=4444
Chrome on Android browser tests can be run both on device and on the emulator.
adb start-server
you can later kill with adb kill-server
chrome://inspect/devices#devices
. For more details on useful links: remote debugging webviews, remote debugging android deviceschromedriver --port=4444
Like Safari browser Safari driver also comes installed on the macOS devices. For using Safari on macOS steps are easy:
./usr/bin/safaridriver --port=4444
IOS Safari can be run on a simulator. Simulators are part of Xcode, more details. After making sure your macOS have simulators, follow the steps above to start the Safari driver. Unlike Android the Desktop Safari version and simulator version is the same.
Note that this section is experimental, at this point we don't have automated tests running on Firefox.
More information can be found on Edge Drivers on developer site. Edge driver should also be added to the path after installation.
Note that this section is experimental, at this point we don't have automated tests running on Edge.
The command for running the driver tests:
flutter drive --target=test_driver/[driver_test].dart -d web-server --release --browser-name=chrome --web-port=8080
Let's go over the different arguments that can be used:
--browser-name
parameter: chrome, safari, ios-safari, android-chrome, firefox, edge.--local-engine=host_debug_unopt --local-engine-host=host_debug_unopt
for running tests with a local engine.--release
or --profile
mode for running the tests. Debug mode will be supported soon.--webport
as needed, don't forget to change remote debugging settings for Android Chrome.--no-android-emulator
for using Android with real devices.Web installers is a new Flutter project repository where we are planning to add utilities for launching, downloading browsers/drivers.
Currently it can be used for downloading/running Chrome Driver:
dart lib/web_driver_installer.dart chromedriver --driver-version="78.0.3904.105"
Or for running the Safari driver:
dart lib/web_driver_installer.dart safaridriver
For more details use the documentation.
We already use Flutter Driver in many different places in Flutter Project. We have a smoke test running as a Cirrus CI task in Flutter repo, which is also a great example for showing web_installers + flutter drive usage.
script: - flutter config --enable-web - git clone https://github.com/flutter/web_installers.git - cd web_installers/packages/web_drivers/ - pub get - dart lib/web_driver_installer.dart & - sleep 20 - chromedriver/chromedriver --port=4444 & - sleep 5 - cd ../../../examples/hello_world/ - flutter drive --target=test_driver/smoke_web_engine.dart -d web-server --profile --browser-name=chrome
Other example usages: