| // Copyright 2013 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:convert' show JsonEncoder; |
| import 'dart:io'; |
| |
| import 'package:test/test.dart'; |
| |
| import 'package:web_benchmarks/server.dart'; |
| |
| Future<void> main() async { |
| test('Can run a web benchmark', () async { |
| final BenchmarkResults taskResult = await serveWebBenchmark( |
| benchmarkAppDirectory: Directory('testing/test_app'), |
| entryPoint: 'lib/benchmarks/runner.dart', |
| useCanvasKit: false, |
| ); |
| |
| for (final String benchmarkName in <String>['scroll', 'page', 'tap']) { |
| for (final String metricName in <String>[ |
| 'preroll_frame', |
| 'apply_frame', |
| 'drawFrameDuration', |
| ]) { |
| for (final String valueName in <String>[ |
| 'average', |
| 'outlierAverage', |
| 'outlierRatio', |
| 'noise', |
| ]) { |
| expect( |
| taskResult.scores[benchmarkName]!.where((BenchmarkScore score) => |
| score.metric == '$metricName.$valueName'), |
| hasLength(1), |
| ); |
| } |
| } |
| expect( |
| taskResult.scores[benchmarkName]!.where( |
| (BenchmarkScore score) => score.metric == 'totalUiFrame.average'), |
| hasLength(1), |
| ); |
| } |
| |
| expect( |
| const JsonEncoder.withIndent(' ').convert(taskResult.toJson()), |
| isA<String>(), |
| ); |
| }, timeout: Timeout.none); |
| } |