# Copyright 2018 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("//topaz/runtime/dart/dart_fuchsia_test.gni")
import("//topaz/runtime/flutter_runner/flutter_app.gni")

flutter_app("flutter_screencap_test_app") {
  testonly = true

  main_dart = "lib/main.dart"

  meta = [
    {
      path = rebase_path("meta/flutter_screencap_test_app.cmx")
      dest = "flutter_screencap_test_app.cmx"
    },
  ]

  deps = [
    "//third_party/dart-pkg/git/flutter/packages/flutter",
    "//topaz/public/lib/app/dart",
  ]
}

dart_fuchsia_test("flutter_screencap_test") {
  meta = [
    {
      path = rebase_path("meta/flutter_screencap_test.cmx")
      dest = "flutter_screencap_test.cmx"
    },
  ]

  deps = [
    "//sdk/fidl/fuchsia.sys",
    "//sdk/fidl/fuchsia.ui.app",
    "//sdk/fidl/fuchsia.ui.policy",
    "//sdk/fidl/fuchsia.ui.scenic",
    "//topaz/public/dart/fuchsia_services",
    "//topaz/public/dart/zircon",
  ]

  environments = [
    {
      dimensions = {
        device_type = "Intel NUC Kit NUC7i5DNHE"
      }
    },
  ]
}
