// Copyright 2014 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. import 'dart:async'; import 'dart:convert'; import 'dart:io'; import 'package:e2e/common.dart' as e2e; import 'package:flutter_driver/flutter_driver.dart'; import 'package:path/path.dart' as path; const JsonEncoder _prettyEncoder = JsonEncoder.withIndent(' '); /// Flutter Driver test output directory. /// /// Tests should write any output files to this directory. Defaults to the path /// set in the FLUTTER_TEST_OUTPUTS_DIR environment variable, or `build` if /// unset. String testOutputsDirectory = Platform.environment['FLUTTER_TEST_OUTPUTS_DIR'] ?? 'build'; String testOutputFilename = 'e2e_perf_summary'; Future main() async { final FlutterDriver driver = await FlutterDriver.connect(); final String jsonResult = await driver.requestData(null, timeout: const Duration(minutes: 1)); final e2e.Response response = e2e.Response.fromJson(jsonResult); await driver.close(); if (response.allTestsPassed) { print('All tests passed.'); await fs.directory(testOutputsDirectory).create(recursive: true); final File file = fs.file(path.join( testOutputsDirectory, '$testOutputFilename.json' )); final String resultString = _encodeJson( response.data['performance'] as Map, true, ); await file.writeAsString(resultString); exit(0); } else { print('Failure Details:\n${response.formattedFailureDetails}'); exit(1); } } String _encodeJson(Map jsonObject, bool pretty) { return pretty ? _prettyEncoder.convert(jsonObject) : json.encode(jsonObject); }