# 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.

# This has a group corresponding to each product name.  It gives the
# additional base packages that should be included in the build done by
# a bot to run tests and build-time checks to cover that product's code.

group("bringup") {
  testonly = true
  deps = [ "//bundles/bringup:tests" ]
}

group("core") {
  testonly = true
  deps = [
    "//build:tests",
    "//bundles:tools",
    "//bundles/fidl:tests",
    "//examples",
    "//examples:tests",
    "//garnet",
    "//garnet/packages:all",
    "//scripts:tests",
    "//scripts/sdk/gn:tests",
    "//sdk:tests",
    "//sdk/cts",
    "//src",
    "//src:tests",
    "//src/diagnostics:tests",
    "//src/media/audio/bundles:virtual_audio_driver",
    "//src/media/bundles:examples",
    "//src/media/bundles:services",
    "//src/media/bundles:tools",

    # Placed with core because core does not run scenic, in contrast to terminal bundle.
    # (perf:touch_input_test expects scenic _not_ to be running)
    "//src/tests/end_to_end/perf:touch_input_test",
    "//src/tests/end_to_end/screen_is_not_black:config",
    "//tools",
    "//tools:tests",
    "//topaz/bundles:buildbot",
  ]
}

group("terminal") {
  testonly = true
  deps = [
    # TODO(fxbug.dev/51983): Re-organize these deps to include all packages
    # required for running tests.
    "//garnet/bin/run_test_component",
    "//src/tests/end_to_end/screen_is_not_black:config",
  ]
}

group("workstation") {
  testonly = true
  deps = [
    "//garnet/bin/setui_client:setui_client",
    "//src/tests/end_to_end/screen_is_not_black:config",
  ]
}

# This target is for tests which depend on package artefacts such as
# the FVM. It should be included using `fx set --with-host`.
# TODO(fxbug.dev/63508): teach infra about this target.
group("host-tests") {
  testonly = true
  deps = []
}
