// 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 'package:flutter_driver/flutter_driver.dart';
import 'package:test/test.dart' hide TypeMatcher, isInstanceOf;

Future<void> main() async {
  const String fileName = 'large_image_changer';

  test('Animate for 20 seconds', () async {
    final FlutterDriver driver = await FlutterDriver.connect();
    await driver.forceGC();

    final String targetPlatform = await driver.requestData('getTargetPlatform');

    Timeline? timeline;
    switch (targetPlatform) {
      case 'TargetPlatform.iOS':
        {
          timeline = await driver.traceAction(() async {
            await Future<void>.delayed(const Duration(seconds: 20));
          });
        }
        break;
      case 'TargetPlatform.android':
        {
          // Just run for 20 seconds to collect memory usage. The widget itself
          // animates during this time.
          await Future<void>.delayed(const Duration(seconds: 20));
        }
        break;
      default:
        throw UnsupportedError('Unsupported platform $targetPlatform');
    }

    if (timeline != null) {
      final TimelineSummary summary = TimelineSummary.summarize(timeline);
      await summary.writeTimelineToFile(fileName, pretty: true);
    }

    await driver.close();
  }, timeout: Timeout.none);
}
