As your Flutter application grows, manual testing gets more and more tedious and time-consuming.
Each time you release your mobile app to production, you have to test not only new features but also all the existing ones developed so far.
When ubiquitous regression starts to be a problem, the speed of development slows down, and the release schedule gets less predictable.
We’ve built our own Flutter UI testing framework, Patrol. It overcomes the limitations of the existing solutions. Patrol is the only UI Testing Framework that works with both Flutter and native UI.
No matter if you’re just starting or have already written thousands of lines of code - we will set up Patrol in your app.
We’ll create a comprehensive set of Flutter UI tests in Patrol. It significantly reduces the number of regression bugs and speeds up the release cycle.
Codemagic, Bitrise, GitHub Actions, or Jenkins - each of them has its peculiarities. We have experience with all of them, and we know how to make it work with Patrol.
Taking advantage of popular device farms such as Firebase Test Lab or Browser Stack can help check whether the app works fine across all kinds of phones and operating systems.
Our QA team took part in tens of Flutter projects encountering many kinds of problems and challenges. Let us take care of your QA processes so that your team can focus exclusively on delivering business value.
If you have an internal QA team that is not yet familiar with Patrol we can teach them both Dart language and Patrol framework. Working hand in hand with our QA experts is the best way to transfer knowledge and best practices.
Unfortunately, the Flutter ecosystem doesn’t provide developers with a robust solution for e2e UI testing. Libraries provided by the Flutter team, such as flutter_driver and integration_test are great when it comes to interacting with Flutter widgets but they don’t allow us to interact with the native UI of the app. As we know, each Flutter app is also a native app with purely native components. For example, in virtually any mobile app, there’s some native permission request dialog. If you want to give your app permission to access the camera or to send push notifications, you have to click on a native system dialog. This is an obstacle which can’t be overcome with the above-mentioned Flutter libraries.
There are also solutions popular in the native development world that can be integrated with Flutter. The most popular solution of this kind is Appium - a cross-platform UI testing framework. Although Appium has no official support for Flutter, it has an open-source connector to Flutter. Technically it allows access to both native and Flutter components, but it’s extremely inconvenient to use with Flutter. You can’t write your tests in Dart; Flutter widgets can be accessed only by bare strings, and the open-source connector is buggy and poorly maintained.