blob: 35814d9326ccb092d8cf1ca526d892ef69f81ac8 [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:flutter_driver/flutter_driver.dart';
import 'package:sl4f/sl4f.dart';
import 'package:test/test.dart';
import 'ermine_driver.dart';
/// Tests that the DUT running ermine can do the following:
/// - Launch `spinning_square_view` ephemeral package.
/// - Verify it is show by taking its screenshot.
void main() {
Sl4f sl4f;
ErmineDriver ermine;
setUpAll(() async {
sl4f = Sl4f.fromEnvironment();
await sl4f.startServer();
ermine = ErmineDriver(sl4f);
await ermine.setUp();
});
tearDownAll(() async {
// Any of these may end up being null if the test fails in setup.
await ermine.tearDown();
await sl4f?.stopServer();
sl4f?.close();
});
test('Verify spinning square view is shown', () async {
const componentUrl =
'fuchsia-pkg://fuchsia.com/spinning_square_view#meta/spinning_square_view.cmx';
await ermine.launch(componentUrl);
// Get the view rect.
final viewRect = await ermine.getViewRect(componentUrl);
// Give the view couple of seconds to draw before taking its screenshot.
await Future.delayed(Duration(seconds: 2));
final screenshot = await ermine.screenshot(viewRect);
final histogram = ermine.histogram(screenshot);
// spinning_square_view displays a red square on purple background.
const purple = 0xffb73a67; // (0xAABBGGRR)
const red = 0xff5700f5; // (0xAABBGGRR)
expect(histogram.keys.length, 2);
expect(histogram[purple], isNotNull);
expect(histogram[red], isNotNull);
expect(histogram[purple] > histogram[red], isTrue);
// Close the view.
await ermine.driver.requestData('close');
// Verify the view is closed.
await ermine.driver.waitForAbsent(find.text('spinning_square_view'));
});
}