Skip to main content

Implementing a Custom Testing Framework Driver

The testing framework driver is a core component of Pilot, enabling seamless integration with any testing framework. It allows Pilot to translate natural language commands into actionable steps using the framework's API. This guide outlines how to implement and integrate a custom testing framework driver into the Pilot ecosystem.


Available Framework Drivers

Pilot has several framework drivers available:

Built into this package:

  • Puppeteer Driver: A complete implementation for web testing using Puppeteer
  • Playwright Driver: A modern web testing implementation using Playwright

Available in other packages:

  • Detox Driver: Mobile app testing implementation (available in the Detox repository)

You can use these implementations as references when creating your own custom driver.


Where possible, framework support should ideally be provided directly from the framework's codebase. For example, Detox includes support within its own repository: Detox Pilot Driver.

If this is not feasible, or for custom efforts, feel free to reach out via our GitHub Issues Page to discuss integration ideas before development.


Framework Integration

Pilot is designed to integrate with any testing framework. This flexibility allows developers to extend its capabilities by implementing custom drivers that align with the TestingFrameworkDriver interface.

To view supported frameworks, visit our Supported Frameworks page.


Steps to Implement a Custom Framework Driver

1. Understand the TestingFrameworkDriver Interface

All drivers must implement the TestingFrameworkDriver interface. Key methods include:

  • captureSnapshotImage(): Promise<string | undefined>
    (Optional) Captures a snapshot of the current screen.

  • captureViewHierarchyString(): Promise<string>
    Returns the view hierarchy of the current screen as a string.

  • apiCatalog: TestingFrameworkAPICatalog
    Categorizes the framework's actions, matchers, and utilities.

For detailed documentation, see the Framework Driver API.

2. Develop Your Driver

  • Create your driver under the src/drivers directory.
  • Follow naming conventions and maintain consistency with existing drivers.
  • Implement the required interface methods.

3. Define the API Catalog

The apiCatalog organizes the framework's capabilities into categories:

  • Actions: e.g., tap, longPress, scroll.
  • Matchers: e.g., by.id, by.text.
  • Utilities: Framework-specific helpers.

Provide clear documentation and examples for each method to ensure ease of use.

4. Contribute and Collaborate

Share your driver with the community by proposing your idea on the GitHub Issues Page. Once aligned, contribute your work by adding your driver to the repository and providing relevant documentation.


Additional Resources