# 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("//build/dart/test.gni")
import("//build/testing/environments.gni")
import("//build/testing/host_test_data.gni")

group("tests") {
  testonly = true

  deps = [
    ":screen_is_not_black",
    ":tiles_test",
  ]
}

_ENVIRONMENTS = [
  # The astro environment has tags as it is still to be run on an FYI builder.
  {
    dimensions = {
      device_type = "Astro"
    }
    tags = [ "e2e-fyi" ]
  },

  # Runs on "main" builders (try and ci) in NUC environments.
  nuc_env,

  # Also runs on fyi builders in NUC environments, so it doesn't look empty
  # there, and we have a second data set of flakiness information if needed.
  {
    dimensions = {
      device_type = "Intel NUC Kit NUC7i5DNHE"
    }
    tags = [ "e2e-fyi" ]
  },
]

_DEPS = [
  "//sdk/testing/sl4f/client",
  "//third_party/dart-pkg/pub/image",
  "//third_party/dart-pkg/pub/logging",
  "//third_party/dart-pkg/pub/matcher",
  "//third_party/dart-pkg/pub/test",
  "//third_party/dart-pkg/pub/args",
]

_NON_DART_DEPS = [ ":runtime_deps($host_toolchain)" ]

dart_test("screen_is_not_black_test") {
  sources = [ "screen_is_not_black_test.dart" ]

  deps = _DEPS

  args = []

  non_dart_deps = _NON_DART_DEPS

  environments = _ENVIRONMENTS
}

# Same as above, except that the test starts up the "tiles".
dart_test("screen_is_not_black_tiles_test") {
  sources = [ "screen_is_not_black_test.dart" ]

  deps = _DEPS

  args = [ "--start=tiles" ]

  non_dart_deps = _NON_DART_DEPS

  environments = _ENVIRONMENTS
}

if (is_host) {
  host_test_data("runtime_deps") {
    sources = [ "$root_out_dir/catapult_converter" ]

    outputs = [ "$target_gen_dir/runtime_deps/{{source_file_part}}" ]

    deps = [ "//src/testing/catapult_converter:converter_bin" ]
  }
}

group("screen_is_not_black") {
  testonly = true

  deps = [ ":screen_is_not_black_test($host_toolchain)" ]
}

group("tiles_test") {
  testonly = true

  deps = [ ":screen_is_not_black_tiles_test($host_toolchain)" ]
}
