# 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/components.gni")
import("//build/dart/dart_test_component.gni")
import("//build/flutter/flutter_app.gni")

flutter_app("inspect_flutter_integration_tester") {
  main_dart = "lib/main.dart"
  package_name = "inspect_flutter_integration_tester"

  fuchsia_package_name = "inspect_flutter_integration_tester"

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

  sources = [
    "main.dart",
    "src/inspect_integration_app.dart",
  ]

  deps = [
    "//sdk/dart/fuchsia_inspect",
    "//sdk/dart/fuchsia_logger",
    "//sdk/dart/fuchsia_modular",
    "//sdk/dart/fuchsia_services",
    "//third_party/dart-pkg/git/flutter/packages/flutter",
    "//third_party/dart-pkg/git/flutter/packages/flutter_driver",
  ]
}

dart_test_component("integration-test-component") {
  component_name = "inspect-dart-integration-test-driver"
  manifest = "meta/inspect_dart_integration_test_driver.cmx"
  sources = [ "integration_driver_test.dart" ]

  deps = [
    "//sdk/dart/fuchsia_inspect",
    "//sdk/dart/fuchsia_services",
    "//sdk/dart/zircon",
    "//sdk/fidl/fuchsia.modular",
    "//sdk/fidl/fuchsia.modular.testing",
    "//sdk/fidl/fuchsia.sys",
    "//third_party/dart-pkg/git/flutter/packages/flutter_driver",
    "//third_party/dart-pkg/git/flutter/packages/fuchsia_remote_debug_protocol",
    "//third_party/dart-pkg/pub/glob",
    "//third_party/dart-pkg/pub/test",
  ]
}

fuchsia_test_package("inspect-dart-integration-test-driver") {
  test_components = [ ":integration-test-component" ]

  test_specs = {
    environments = []

    # Flutter driver is only available in debug builds, so don't try to run in
    # release CI/CQ.
    if (is_debug) {
      environments += [ nuc_env ]
    }
  }
}
