# Copyright 2021 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")

# E2E product test runtime dependencies specific to end to end product tests for
# products in src/experiences.
#
# This is pulled from workstation_pro.gni.
group("end_to_end_deps") {
  testonly = true
  public_deps = [ "//src/experiences/bin/ermine_testserver" ]
}

dart_test("workstation_chrome_smoke_test") {
  null_safe = true
  sources = [ "workstation_chrome_smoke_test.dart" ]

  deps = [
    "//sdk/fidl/fuchsia.input",
    "//sdk/testing/sl4f/client",
    "//sdk/testing/sl4f/flutter_driver_sl4f",
    "//src/experiences/tests:ermine_driver",
    "//third_party/dart-pkg/git/flutter/packages/flutter_driver",
    "//third_party/dart-pkg/pub/test",
  ]

  environments = [
    # TODO(fxbug.dev/91950): Reenable on AEMU after Screenshots on Flatland is not flaky.
    {
      dimensions = {
        device_type = "Intel NUC Kit NUC7i5DNHE"
      }
      tags = [ "e2e-fyi" ]
    },
    atlas_env,
  ]
}

dart_test("workstation_chrome_advanced_smoke_test") {
  null_safe = true
  sources = [ "workstation_chrome_advanced_smoke_test.dart" ]

  deps = [
    "//sdk/fidl/fuchsia.input",
    "//sdk/testing/sl4f/client",
    "//sdk/testing/sl4f/flutter_driver_sl4f",
    "//src/experiences/tests:ermine_driver",
    "//third_party/dart-pkg/git/flutter/packages/flutter_driver",
    "//third_party/dart-pkg/pub/test",
  ]

  environments = [
    # TODO(fxbug.dev/91950): Reenable on AEMU after Screenshots on Flatland is not flaky.
    {
      dimensions = {
        device_type = "Intel NUC Kit NUC7i5DNHE"
      }
      tags = [ "e2e-fyi" ]
    },

    # TODO(fxbug.dev/94042): Reenable on Atlas after non-hermetic interactions
    # with experiences_ermine_smoke_e2e_test are resolved.
    {
      dimensions = {
        device_type = "Atlas"
      }
      tags = [ "e2e-fyi" ]
    },
  ]
}

group("test") {
  testonly = true
  if (is_host && is_linux) {
    # Chromedriver prebuilt is only available for linux-x64
    deps = [
      ":workstation_chrome_advanced_smoke_test($host_toolchain)",
      ":workstation_chrome_smoke_test($host_toolchain)",
    ]
  }
}
