anchor.diff:        await summary.writeSummaryToFile('transitions', pretty: true);
         final String histogramPath = path.join(testOutputsDirectory, 'transition_durations.timeline.json');
         await saveDurationsHistogram(timeline.json['traceEvents'], histogramPath);
  +
  +      // Execute the remaining tests.
  +      final Iterable<Demo> unprofiledDemos = demos.where((Demo demo) => !demo.profiled);
  +      await runDemos(unprofiledDemos, driver);
  +
       }, timeout: const Timeout(const Duration(minutes: 5)));
     });
   }
  
positive.code:     });
  
      test('all demos', () async {
        final Timeline timeline = await driver.traceAction(() async {
          // Scroll each demo menu item into view, launch the demo and
          // return to the demo menu 2x.
          for(String demoTitle in demoTitles) {
            print('Testing "$demoTitle" demo');
            final SerializableFinder menuItem = find.text(demoTitle);
            await driver.scrollIntoView(menuItem, alignment: 0.5);
            await new Future<Null>.delayed(kWaitBetweenActions);
  
            for(int i = 0; i < 2; i += 1) {
              await driver.tap(menuItem); // Launch the demo
              await new Future<Null>.delayed(kWaitBetweenActions);
              if (!unsynchedDemoTitles.contains(demoTitle)) {
                await driver.tap(find.byTooltip('Back'));
              } else {
                await driver.runUnsynchronized<Future<Null>>(() async {
                  await new Future<Null>.delayed(kWaitBetweenActions);
                  await driver.tap(find.byTooltip('Back'));
                });
              }
              await new Future<Null>.delayed(kWaitBetweenActions);
            }
            print('Success');
          }
        },
        streams: const <TimelineStream>[
          TimelineStream.dart,
  
negative.code:   await file.writeAsString(const JsonEncoder.withIndent('  ').convert(durations));
  }
  
  /// Scrolls each demo menu item into view, launches it, then returns to the
  /// home screen twice.
  Future<Null> runDemos(Iterable<Demo> demos, FlutterDriver driver) async {
    for (Demo demo in demos) {
      print('Testing "${demo.title}" demo');
      final SerializableFinder menuItem = find.text(demo.title);
      await driver.scrollIntoView(menuItem, alignment: 0.5);
      await new Future<Null>.delayed(kWaitBetweenActions);
  
      for (int i = 0; i < 2; i += 1) {
        await driver.tap(menuItem); // Launch the demo
        await new Future<Null>.delayed(kWaitBetweenActions);
        if (demo.synchronized) {
          await driver.tap(find.byTooltip('Back'));
        } else {
          await driver.runUnsynchronized<Future<Null>>(() async {
            await new Future<Null>.delayed(kWaitBetweenActions);
            await driver.tap(find.byTooltip('Back'));
          });
        }
        await new Future<Null>.delayed(kWaitBetweenActions);
      }
      print('Success');
    }
  }
  
  void main() {
    group('flutter gallery transitions', () {
      FlutterDriver driver;
  