Analyzed Jul 13, 2026
This skill provides standard instructions for configuring and executing Flutter integration tests. It uses official Flutter SDK tools and follows established development practices for UI automation and performance profiling.
flutter/agent-plugins · Official
Configures Flutter Driver for app interaction and converts MCP actions into permanent integration tests. Use when adding integration testing to a project, exploring UI components via MCP, or automating user flows with the integration_test package.
npx skills add flutter/agent-plugins --skill flutter-add-integration-test
Related neighbors and high-traction skills in the same topics — useful to compare before installing.
Browser automation CLI for AI agents. Use when the user needs to interact with websites, includ…
810.4K installsPostgres best practices maintained by Supabase, for Postgres running anywhere. Load this skill …
391.6K installsReview UI code for Web Interface Guidelines compliance. Use when asked to "review my UI", "chec…
617.3K installsBuild, deploy, evaluate, optimize, fine-tune, and manage Microsoft Foundry agents, models, and …
576.5K installsDebug Azure production issues on Azure using AppLens, Azure Monitor, resource health, and safe …
568.9K installsPartner security reviews for this skill.
Analyzed Jul 13, 2026
This skill provides standard instructions for configuring and executing Flutter integration tests. It uses official Flutter SDK tools and follows established development practices for UI automation and performance profiling.
Analyzed Jul 13, 2026
No issues detected.
Analyzed Jul 13, 2026
0 alerts
Other skills from flutter/agent-plugins · top by installs.
npx skills add flutter/agent-plugins
Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.
main
Parsed from SKILL.md frontmatter.
Files included with this skill beyond the listing page.
SKILL.md
7,342 B
SUMMARY.md
283 B
Configure the project to support integration testing and Flutter Driver extensions.
pubspec.yaml:``bash flutter pub add 'dev:integrationtest:{"sdk":"flutter"}' flutter pub add 'dev:fluttertest:{"sdk":"flutter"}' ``
lib/main.dart or a dedicated lib/main_test.dart):- Import package:flutterdriver/driverextension.dart. - Call enableFlutterDriverExtension(); before runApp().
Key parameters (e.g., ValueKey('login_button')) to critical widgets in the application code to ensure reliable targeting during tests.Use the Dart/Flutter MCP server tools to interactively explore and manipulate the application state before writing static tests.
launchapp with target: "lib/maintest.dart" to start the application and acquire the DTD URI.getwidgettree to discover available Keys, Text nodes, and widget Types.tap, enter_text, and scroll to simulate user flows.waitFor or verify state with get_health when navigating or triggering animations.SliverList or ListView. Execute scroll or scrollIntoView to force the widget to mount before interacting with it.Structure integration tests using the flutter_test API paradigm.
integration_test/ directory at the project root.<name>_test.dart convention.IntegrationTestWidgetsFlutterBinding.ensureInitialized(); at the start of main().await tester.pumpWidget(MyApp());.await tester.pumpAndSettle(); after interactions like tester.tap().expect(find.byKey(ValueKey('foo')), findsOneWidget); or findsNothing.await tester.scrollUntilVisible(itemFinder, 500.0, scrollable: listFinder);.Conditional Logic for Legacy flutter_driver:
flutter_driver tests, use driver.waitFor(), driver.waitForAbsent(), driver.tap(), and driver.scroll() instead of the WidgetTester APIs.Execute tests using the flutter drive command. Require a host driver script located in testdriver/integrationtest.dart that calls integrationDriver().
Conditional Execution Targets:
chromedriver --port=4444 in a separate terminal, then run:flutter drive --driver=testdriver/integrationtest.dart --target=integrationtest/apptest.dart -d chrome
-d web-server.flutter drive --driver=testdriver/integrationtest.dart --target=integrationtest/apptest.dart.1. Build debug APK: flutter build apk --debug 2. Build test APK: ./gradlew app:assembleAndroidTest 3. Upload both APKs to the Firebase Test Lab console.
Copy and follow this checklist to implement and verify integration tests.
- [ ] Add integrationtest and fluttertest to pubspec.yaml. - [ ] Inject enableFlutterDriverExtension() into the app entry point. - [ ] Assign ValueKeys to target widgets.
- [ ] Run launchapp via MCP. - [ ] Map the widget tree using getwidgettree. - [ ] Validate interaction paths using MCP tools (tap, entertext).
- [ ] Create integrationtest/apptest.dart. - [ ] Write test cases using WidgetTester APIs. - [ ] Create testdriver/integrationtest.dart with integrationDriver().
- [ ] Run flutter drive --driver=testdriver/integrationtest.dart --target=integrationtest/apptest.dart. - [ ] Feedback Loop: Review test output -> If PumpAndSettleTimedOutException occurs, check for infinite animations -> If widget not found, add scrollUntilVisible -> Re-run test until passing.
integrationtest/apptest.dart)import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:integration_test/integration_test.dart';
import 'package:my_app/main.dart';
void main() {
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
group('End-to-end test', () {
testWidgets('tap on the floating action button, verify counter', (tester) async {
// Load app widget.
await tester.pumpWidget(const MyApp());
// Verify the counter starts at 0.
expect(find.text('0'), findsOneWidget);
// Find the floating action button to tap on.
final fab = find.byKey(const ValueKey('increment'));
// Emulate a tap on the floating action button.
await tester.tap(fab);
// Trigger a frame and wait for animations.
await tester.pumpAndSettle();
// Verify the counter increments by 1.
expect(find.text('1'), findsOneWidget);
});
});
}
testdriver/integrationtest.dart)import 'package:integration_test/integration_test_driver.dart';
Future<void> main() => integrationDriver();
testdriver/perfdriver.dart)Use this driver script if you wrap your test actions in binding.traceAction() to capture performance metrics.
import 'package:flutter_driver/flutter_driver.dart' as driver;
import 'package:integration_test/integration_test_driver.dart';
Future<void> main() {
return integrationDriver(
responseDataCallback: (data) async {
if (data != null) {
final timeline = driver.Timeline.fromJson(
data['scrolling_timeline'] as Map<String, dynamic>,
);
final summary = driver.TimelineSummary.summarize(timeline);
await summary.writeTimelineToFile(
'scrolling_timeline',
pretty: true,
includeSummary: true,
);
}
},
);
}