blob: 5908c3056a835b8eede154aa56eec3f6c8324171 [file] [log] [blame]
// Copyright 2019 The Fuchsia 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:test/test.dart';
import 'package:image/image.dart';
import 'package:sl4f/sl4f.dart' as sl4f;
int _ignoreAlpha(int pixel) => pixel & 0x00ffffff;
/// Returns true if [image] is all black.
bool _isAllBlack(Image image) =>
image.data.every((pixel) => _ignoreAlpha(pixel) == 0);
/// How many times to check the screen.
const _tries = 10;
/// How long to wait between screen checks.
const _delay = Duration(seconds: 10);
void main() {
sl4f.Sl4f sl4fDriver;
sl4f.Scenic scenicDriver;
setUp(() async {
sl4fDriver = sl4f.Sl4f.fromEnvironment();
await sl4fDriver.startServer();
scenicDriver = sl4f.Scenic(sl4fDriver);
});
tearDown(() async {
await sl4fDriver.stopServer();
sl4fDriver.close();
});
test('the startup screen is not black', () async {
for (var attempt = 0; attempt < _tries; attempt++) {
final screen = await scenicDriver.takeScreenshot(dumpName: 'screen');
if (!_isAllBlack(screen)) {
print('Saw a screen that is not black.');
return;
}
await Future.delayed(_delay);
}
fail('Screen was all black.');
},
// This is a large test that waits for the DUT to come up and to start
// rendering something.
timeout: Timeout.none);
}