# 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
  public_deps = [
    "//bundles:infratools",
    "//bundles/bringup:tests",
  ]
}

group("core") {
  testonly = true
  public_deps = [
    "//bundles:infratools",
    "//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
  public_deps = [
    "//bundles:infratools",

    # FIXME(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
  public_deps = [
    "//bundles:infratools",
    "//garnet/bin/setui_client:setui_client",
    "//src/tests/end_to_end/screen_is_not_black:config",
  ]
}
