integrationDriver function

Future<void> integrationDriver({
  1. Duration timeout = const Duration(minutes: 20),
  2. ResponseDataCallback? responseDataCallback = writeResponseData,
  3. bool writeResponseOnFailure = false,
})

Adaptor to run an integration test using flutter drive.

To run an integration test <test_name>.dart using flutter drive, put a file named <test_name>_test.dart in the app's test_driver directory:

import 'dart:async';

import 'package:integration_test/integration_test_driver.dart';

Future<void> main() async => integrationDriver();

Parameters:

timeout controls the longest time waited before the test ends. It is not necessarily the execution time for the test app: the test may finish sooner than the timeout.

responseDataCallback is the handler for processing Response.data. The default value is writeResponseData.

writeResponseOnFailure determines whether the responseDataCallback function will be called to process the Response.data when a test fails. The default value is false.

Implementation

Future<void> integrationDriver({
  Duration timeout = const Duration(minutes: 20),
  ResponseDataCallback? responseDataCallback = writeResponseData,
  bool writeResponseOnFailure = false,
}) async {
  final FlutterDriver driver = await FlutterDriver.connect();
  final String jsonResult = await driver.requestData(null, timeout: timeout);
  final Response response = Response.fromJson(jsonResult);

  await driver.close();

  if (response.allTestsPassed) {
    print('All tests passed.');
    if (responseDataCallback != null) {
      await responseDataCallback(response.data);
    }
    exit(0);
  } else {
    print('Failure Details:\n${response.formattedFailureDetails}');
    if (responseDataCallback != null && writeResponseOnFailure) {
      await responseDataCallback(response.data);
    }
    exit(1);
  }
}