はじめに
プロジェクトでE2Eテストを導入することになったため、最新のフレームワークを調査しました。
本記事は2026年4月時点の情報をベースにまとめています。
前提
今回のアプリでは以下の要件がありました:
- WebViewの操作が必要
- OSの権限ダイアログの操作が必要
つまり、
👉 ネイティブ画面も操作できる必要がある
Flutter標準のE2Eテストフレームワークである integration_test は、FlutterのWidget Tree(Flutter内部のUI構造)に対して操作を行います。
そのため、以下の制約があります。
- 操作可能:Flutterウィジェット(ボタン、テキストなど)
- 操作不可:OSの権限ダイアログ、プッシュ通知、システムUI、WebViewのネイティブ部分
ネイティブ操作が可能な主要フレームワーク
前提を踏まえると、選択肢は以下の3つとなりました。
- Patrol
- Maestro
- Appium
Patrol
LeanCodeが開発した、Dartで完結する強力なフレームワークです。
特徴
-
二重プロセス構造
- iOS:XCTest
- Android:UIAutomator
をバックグラウンドで利用し、ネイティブ操作を実現
-
Hot Restart対応
- テストコード変更が即反映される
-
簡潔な構文
-
$(Text)のような直感的なファインダー - 自動待機(Smart Waiting)
-
Maestro
mobile.devが提供する、YAMLベースのモバイルテストツールです。
特徴
-
宣言的YAML
- プログラミング不要でテスト記述可能
-
Maestro Studio
- 操作を記録してテスト生成(ノーコード)
メリット
- リリースビルド(難読化済み)でも安定動作
- 言語非依存
Appium
長年モバイル自動化を支えてきたエンタープライズ標準ツールです。
特徴
-
コンテキスト切り替え
FLUTTER / NATIVE_APP / WEBVIEW
-
マルチ言語対応
- Java / Python / JavaScript など
-
高い汎用性
- 他アプリ・Webとの連携が可能
クラウドデバイスファームの選択
E2Eテストはローカルだけでなく、実機での検証が重要です。
そのため、クラウドデバイスファームを併用するのが一般的です。
| サービス | 強み | 推奨フレームワーク |
|---|---|---|
| Firebase Test Lab | Googleエコシステムとの統合、低コスト | Patrol / integration_test |
| BrowserStack | 3500種以上の実機、ネットワーク・地域シミュレーション | Appium / Patrol |
| Maestro Cloud | 高速並列実行、Maestro専用 | Maestro |
| AWS Device Farm | エンタープライズ向け、高セキュリティ | Appium |
👉 これらはGitHub ActionsなどのCI/CDと連携して使うのが一般的です。
どれを選ぶべきか?
プロジェクトやチーム構成によって最適解は変わります。
開発者主体・スピード重視
👉 Patrol + Firebase Test Lab
- Dartで完結
- 開発効率が高い
- 個人開発にも最適
QA主体・非エンジニアも関与
👉 Maestro + Maestro Cloud
- YAMLで記述
- ノーコードツールあり
- メンテナンス性が高い
大規模・標準化・既存資産あり
👉 Appium + BrowserStack / AWS Device Farm
- 多言語対応
- 柔軟性が高い
- エンタープライズ向け
まとめ
FlutterのE2Eテストは、かつてのように「ネイティブが触れないから難しい」という状況ではなくなっています。
- Patrol → 開発者向け最速
- Maestro → QA主導で運用しやすい
- Appium → 大規模・複雑シナリオ対応
そして、
👉 クラウド実機と組み合わせることで、実用レベルの品質保証が可能