test_actions
This plugin can be used to facilitate the integration test on a Flutter app, handles the tests at a "higher" level.
Getting Started
Add this line to the dev_dependencies in the pubspec.yaml file in your project.
test_actions: ^1.0.0
Usage
If you have never used integration tests, please follow the official guide to create the files necessary to use the integration tests.
Then you just have to import the package with:
import 'package:test_actions/test_actions.dart';
Since Flutter 2 the integration_test plugin is integrated into the sdk:
dev_dependencies:
integration_test:
sdk: flutter
The first things to set up is the TestActions itself; this is the class that contains all the actions that you will execute, this class needs a WidgetTester if you don't want to set it for all the actions that you add. Of course the tester should be assigned inside the testWidgets method.
TestActions actions = TestActions();
actions.setTester(tester);
If you don't see the table below correctly, open the GitHub page.
Currently there are 5 actions that you can perform using this plugin:
Action name | Effect | Required vars |
---|---|---|
pump | Executes the pump command on the WidgetTester for a number of times defined by the {pumpTimes} variable. | If you set the awaitDuration it will be used as duration in the pump command. |
pumpAndSettle | Executes the pumpAndSettle command on the WidgetTester. | |
press | Executes the tap on the WidgetTester using a Finder. | This action needs the finder not to be null |
futureAwait | Awaits for a certain Duration. | This action needs the awaitDuration not to be null. |
customAction | Executes a custom function. | This action needs the customAction function not to be null. |
drag | Executes a drag action | This action needs the dragOffset not to be null. |
enterText | Enters a text into a textfield or a widget that accepts text as input | This function needs enterText not to be null. |
From version 1.0.0 you can assign a name to the testActions to find more easily the failed action.
You can perform all the actions in order
await actions.performActions();
Or perform only one action:
await actions.performActionAt(0);
The TestAction doesn't need to be inside the TestActions class, you can create an action and perform by itself
TestAction singleAction = TestAction(
action: TestActionType.CustomAction,
customAction: () {
print('This is a custom action');
expect(1 + 1, 2);
}
);
singleAction.performAction();
To perform the single TestAction, you can add the action index and/or the function to be called when the action is performed.