patrol

Last updated:

0 purchases

patrol Image
patrol Images
Add to Cart

Description:

patrol

patrol #


patrol package builds on top of flutter_test and integration_test to make
it easy to control the native UI from Dart test code. Created and supported by
LeanCode.
It must be used together with patrol_cli.
It also provides a new custom finder system to make Flutter widget tests more
concise and understandable, and writing them – faster and more fun. It you want
to only use custom finders, check out
patrol_finders.
Installation #
$ dart pub add patrol --dev
copied to clipboard
Usage #
Patrol has 2 main features – native automation and custom finders.
Read our docs to learn more about them!
Accessing native platform features #
// example/integration_test/example_test.dart
import 'package:example/main.dart';
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:patrol/patrol.dart';

void main() {
patrolTest(
'counter state is the same after going to home and going back',
($) async {
await $.pumpWidgetAndSettle(const MyApp());

await $(FloatingActionButton).tap();
expect($(#counterText).text, '1');

await $.native.pressHome();
await $.native.pressDoubleRecentApps();

expect($(#counterText).text, '1');
await $(FloatingActionButton).tap();
expect($(#counterText).text, '2');

await $.native.openNotifications();
await $.native.pressBack();
},
);
}
copied to clipboard
Custom finders #
import 'package:example/main.dart';
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:patrol/patrol.dart';

void main() {
patrolTest(
'logs in successfully',
($) async {
await $.pumpWidgetAndSettle(const MyApp());

await $(#emailInput).enterText('[email protected]');
await $(#passwordInput).enterText('ny4ncat');

// Finds all widgets with text 'Log in' which are descendants of widgets with key
// box1, which are descendants of a Scaffold widget and tap on the first one.
await $(Scaffold).$(#box1).$('Log in').tap();

// Finds all Scrollables which have Text descendant
$(Scrollable).containing(Text);

// Finds all Scrollables which have a Button descendant which has a Text descendant
$(Scrollable).containing($(Button).containing(Text));

// Finds all Scrollables which have a Button descendant and a Text descendant
$(Scrollable).containing(Button).containing(Text);
},
);
}
copied to clipboard

License:

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.