flutter_driver_extension_extensions 0.0.4
flutter_driver_extension_extensions: ^0.0.4 copied to clipboard
Flutter driver extensions.
flutter_driver_extension_extensions #
Flutter package to enhance Flutter Driver possibilities with Finder Extensions and Command Extensions.
Rationale #
Flutter Driver enables test instrumentation from any language or framework. And so this extensions. The case is different for integration tests package, which only allows test cases to be written from dart (in general).
Getting Started #
Assuming you're already using Flutter Driver, you can go straight to point 2.
1. Turn On Flutter Driver #
Follow an introduction to integration testing steps.
2. Attach Flutter Driver Extensions #
In test_driver/app.dart (or any your test driver application file) add import:
import 'package:flutter_driver_extension_extensions/flutter_driver_extension_factories.dart';
In the same file, call enableFlutterDriverExtension with the new command and finders arguments:
enableFlutterDriverExtension(
// +++
commands: commandExtensions,
finders: finderExtensions,
// +++
);
3. Use Extensions From Tests File #
In test_driver/app_test.dart add import:
import 'package:flutter_driver_extension_extensions/flutter_driver_extensions.dart';
And start using extensions:
group("E2E Tests", () {
setUpAll(() async {
driver = await FlutterDriver.connect();
});
tearDownAll(() async {
await driver.close();
});
test("longPress", () async {
await driver.longPress(find.byValueKey("button"));
});
test("getChildrenCount", () async {
final count = await driver.getChildrenCount(find.byValueKey("row"));
expect(count, 7);
});
test("atFirst finder", () async {
final count = await driver.waitFor(find.byType("MaterialButton").atFirst());
expect(count, 7);
});
}
Available extensions #
The package adds extension functions on Driver object and finders.
driveris the object returned bydriver = await FlutterDriver.connect();finderis one offind.byText(...),find.byType(...)etc. Could be used as an argument of command (e.g. waitFor)
Commands:
driver.getValueKey(finder)- returns aKeyvalue of single element found byfinder(tip: it must be only one available)driver.getCount(finder)- returns a number of elements matched by the givenfinder(e.g. number of MaterialButtons in the row)driver.getChildrenCount(finder)- returns a number of direct children inside a component found byfinderdriver.getInnerText(finder)- returns a "text" of any component that has children with
Finders:
finder.at(n)- finds an element atnth placefinder.atFirst()- finds only first elementfinder.atLast()- finds the last element
For the complete use case check our E2E tests.