// Copyright 2016 The Chromium 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 'package:flutter_driver/flutter_driver.dart'; import 'package:test/test.dart'; void main() { group('scrolling performance test', () { FlutterDriver driver; setUpAll(() async { driver = await FlutterDriver.connect(); }); tearDownAll(() async { if (driver != null) driver.close(); }); test('measure', () async { Map profileJson = await driver.traceAction(() async { // Find the scrollable stock list ObjectRef stockList = await driver.findByValueKey('stock-list'); expect(stockList, isNotNull); // Scroll down for (int i = 0; i < 5; i++) { await driver.scroll(stockList, 0.0, -300.0, new Duration(milliseconds: 300)); await new Future.delayed(new Duration(milliseconds: 500)); } // Scroll up for (int i = 0; i < 5; i++) { await driver.scroll(stockList, 0.0, 300.0, new Duration(milliseconds: 300)); await new Future.delayed(new Duration(milliseconds: 500)); } }); // Usually the profile is saved to a file and then analyzed using // chrom://tracing or a script. Both are out of scope for this little // test, so all we do is check that we received something. expect(profileJson, isNotNull); }); }); }