// 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:io'; import 'package:flutter_devicelab/framework/framework.dart'; import 'package:flutter_devicelab/framework/task_result.dart'; import 'package:flutter_devicelab/framework/utils.dart'; import 'package:flutter_devicelab/tasks/perf_tests.dart' show WebCompileTest; import 'package:flutter_devicelab/versions/gallery.dart' show galleryVersion; import 'package:path/path.dart' as path; Future<void> main() async { await task(const NewGalleryWebCompileTest().run); } /// Measures the time to compile the New Flutter Gallery to JavaScript /// and the size of the compiled code. class NewGalleryWebCompileTest { const NewGalleryWebCompileTest(); String get metricKeyPrefix => 'new_gallery'; /// Runs the test. Future<TaskResult> run() async { final Directory galleryParentDir = Directory.systemTemp.createTempSync('flutter_gallery_v2_web_compile.'); final Directory galleryDir = Directory(path.join(galleryParentDir.path, 'gallery')); await getNewGallery(galleryVersion, galleryDir); final Map<String, Object> metrics = await inDirectory<Map<String, int>>( galleryDir, () async { await flutter('doctor'); return WebCompileTest.runSingleBuildTest( directory: galleryDir.path, metric: metricKeyPrefix, measureBuildTime: true, ); }, ); rmTree(galleryParentDir); return TaskResult.success(metrics, benchmarkScoreKeys: metrics.keys.toList()); } }