Buscar pacotes, repositórios e categorias de apps

Detalhes do pacotev4.11.0

patrol

Um poderoso framework de teste E2E de interface do usuário multiplataforma para aplicativos Flutter que supera as limitações do integration_test ao lidar com interações nativas.

AndroidiOSWebmacOS
Downloads em 30 dias
710 mil
Curtidas
732
Pontos Pub
150

Instalar pacote

flutter pub add patrol

Visão geral do pacote

Orientação gerada a partir de informações públicas. Apenas para referência.

Patrol é um framework de teste de UI end-to-end multiplataforma para Flutter que vai além das capacidades do integration_test, permitindo interação fluida com recursos nativos da plataforma. Ele permite que testadores simulem o comportamento real do usuário em Android, iOS, Web e macOS, incluindo o manuseio de diálogos nativos, permissões e ações de nível do sistema. Construído para confiabilidade e experiência do desenvolvedor, o Patrol simplifica cenários de teste complexos, mantendo consistência entre plataformas. Sua arquitetura suporta conjuntos de testes robustos e sustentáveis que refletem o uso real do aplicativo.

Casos de uso

  • Testando interações de diálogo nativo
  • Validando comportamentos específicos de plataforma
  • Validação de interface do usuário multiplataforma
  • Gerenciamento de permissões em tempo de execução
  • Simulando eventos específicos do dispositivo
  • verificação de fluxo de trabalho ponto a ponto

Principais recursos

  • Suporte de interação nativa
  • Testes multiplataforma (Android, iOS, Web, macOS)
  • Melhor confiabilidade de teste em relação ao integration_test
  • simulação de usuário realista
  • Mecanismos embutidos de repetição e espera
  • Sintaxe de teste limpa e legível

Indicado para

  • Equipes desenvolvendo aplicativos complexos com Flutter
  • Desenvolvedores que precisam de testes de funcionalidades nativas
  • Projetos que exigem testes E2E consistentes entre plataformas
  • Engenheiros de automação de testes
  • Integrações de pipeline CI/CD

Considerações

  • Requer configuração adicional em comparação com a integração básica integration_test
  • Pode ser necessário configurar especificamente para a plataforma
  • Mais adequado para projetos maduros com fluxos de teste dedicados
  • Documentação limitada em comparação com pacotes principais
  • Curva de aprendizado mais acentuada para novos usuários

README original

Snapshot do README original do repositório-fonte vinculado. Consulte o repositório para o conteúdo mais recente.

Patrol

patrol on pub.dev patrol_cli on pub.dev patrol_finders on pub.dev patrol_mcp on pub.dev patrol_discord code style patrol_github_stars patrol_x

A powerful, multiplatform E2E UI testing framework for Flutter apps that overcomes the limitations of integration_test by handling native interactions. Developed by LeanCode since 2022, battle-tested and shaped by production-grade experience.

Patrol promotional graphics

Learn more about Patrol:

How can we help you:

Patrol is an open-source framework created and maintained by LeanCode. However, if your company wants to scale fast and accelerate Patrol’s adoption, we offer a set of value-added services on top of the core framework.

You can find out more below:

[!NOTE] Patrol 4.7.0 adds Swift Package Manager support for iOS and macOS! If you migrate your project to SPM, a few small setup changes are needed — see the iOS setup guide for details.

Patrol custom finders

Flutter's finders are powerful, but not very intuitive to use.

We took them and made something awesome.

Thanks to Patrol's custom finders, you'll take your tests from this:

testWidgets('signs up', (WidgetTester tester) async {
  await tester.pumpWidget(AwesomeApp());
  await tester.pumpAndSettle();

  await tester.enterText(
    find.byKey(Key('emailTextField')),
    'charlie@root.me',
  );
  await tester.pumpAndSettle();

  await tester.enterText(
    find.byKey(Key('nameTextField')),
    'Charlie',
  );
  await tester.pumpAndSettle();

  await tester.enterText(
    find.byKey(Key('passwordTextField')),
    'ny4ncat',
  );
  await tester.pumpAndSettle();

  await tester.tap(find.byKey(Key('termsCheckbox')));
  await tester.pumpAndSettle();

  await tester.tap(find.byKey(Key('signUpButton')));
  await tester.pumpAndSettle();

  expect(find.text('Welcome, Charlie!'), findsOneWidget);
});

to this:

patrolTest('signs up', (PatrolIntegrationTester $) async {
  await $.pumpWidgetAndSettle(AwesomeApp());

  await $(#emailTextField).enterText('charlie@root.me');
  await $(#nameTextField).enterText('Charlie');
  await $(#passwordTextField).enterText('ny4ncat');
  await $(#termsCheckbox).tap();
  await $(#signUpButton).tap();

  await $('Welcome, Charlie!').waitUntilVisible();
});

Learn more about custom finders in the docs!

Patrol's custom finders are also available standalone in the patrol_finders package.

Patrol native automation

Flutter's default integration_test package can't interact with the OS your Flutter app is running on. This makes it impossible to test many critical business features, such as:

  • granting runtime permissions
  • signing into the app which through WebView or Google Services
  • tapping on notifications
  • much more!

Patrol's native automation feature solves these problems:

void main() {
  patrolTest('showtime', (PatrolIntegrationTester $) async {
    await $.pumpWidgetAndSettle(AwesomeApp());
    // prepare network conditions
    await $.platform.mobile.enableCellular();
    await $.platform.mobile.disableWifi();

    // toggle system theme
    await $.platform.mobile.enableDarkMode();

    // handle native location permission request dialog
    await $.platform.mobile.selectFineLocation();
    await $.platform.mobile.grantPermissionWhenInUse();

    // tap on the first notification
    await $.platform.mobile.openNotifications();
    await $.platform.mobile.tapOnNotificationByIndex(0);
  });
}

CLI

See packages/patrol_cli.

The CLI is needed to enable Patrol's native automation feature in integration tests. It also makes development of integration tests much faster thanks to [Hot Restart].

To run widget tests, you can continue to use flutter test.

Package

See packages/patrol.

CI/CD Workflows

See .github/WORKFLOWS.md for detailed documentation about all GitHub Actions workflows, including test schedules, Flutter versions, and deployment pipelines.

Patrol contracts generator

  1. (Optionally) add new request type:
class OpenAppRequest {
  late String appId;
}
  1. Add new method to NativeAutomator:
abstract class NativeAutomator<IOSServer, AndroidServer, DartClient> {
  ...
  void openApp(OpenAppRequest request);
  ...
}
  1. Run gen_from_schema script, few files will be updated

Develop patrol_cli

If you have previously activated patrol_cli run:

dart pub global deactivate patrol_cli

then

cd packages/patrol_cli
flutter pub global activate -s path .

🛠️ Maintained by LeanCode

This package is built with 💙 by LeanCode. We are top-tier experts focused on Flutter Enterprise solutions.

Why LeanCode?
  • Creators of Patrol – the next-gen testing framework for Flutter.

  • Production-Ready – We use this package in apps with millions of users.

  • Full-Cycle Product Development – We take your product from scratch to long-term maintenance.


Need help with your Flutter project?

👉 Hire our team   •   Check our other packages

Categorias

Dependências

Lista de dependências 12 itens

Repositório-fonte

Projetos que usam este pacote

Rankings