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

# End to end (E2E) product test runtime dependencies. This bundle can be added
# to a product build spec that also contains end to end product tests, so they
# can be executed against an instance of the product.
#
# If the end to end product test is meant to run in an environment without a
# package server - specifically, on a luci bot -, then the end_to_end_deps
# bundle must be added to base_package_labels or cache_package_labels of the
# product, but it cannot be, unlike the end to end tests themselves, in the
# universe_package_labels.
group("end_to_end_deps") {
  testonly = true
  public_deps = [
    # Needed to send fake input.
    "//src/ui/tools:input",

    # Needed to start sl4f from ssh.
    "//garnet/packages/prod:run",

    # Needed to inject and capture audio.
    "//src/media/audio/bundles:virtual_audio_service_with_config",

    # Needed for ifconfig.
    "//src/connectivity/network/netstack:tools",

    # SL4F to translate JSON-RPC to calls.
    "//garnet/packages/tools:sl4f",

    # Needed for performance testing.
    "//garnet/packages/prod:tracing",

    # Needed for file exist verification.
    "//third_party/sbase:ls",

    # Needed for flutter driver using find to get vmservice-port.
    "//third_party/sbase:find",

    # Needed for VP9 decode conformance testing.
    "//src/media/codec/examples:vp9_decoder_conformance_http",

    # Needed for bt-a2dp test
    "//src/connectivity/bluetooth/profiles/tests/bt-a2dp-loopback",
    "//src/connectivity/bluetooth/tests/bt-profile-test-server",
  ]
}

# Product-specific dependency groups for dependencies that are only used for a
# small number of tests, to avoid them being included in the cached package set
# for products that do not include the corresponding test.
group("terminal_end_to_end_deps") {
  testonly = true
  public_deps = [
    # Needed for running performance tests.
    "//src/tests/end_to_end/perf:package_deps",
  ]
}
