# Copyright 2016 The Chromium 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("//ios/chrome/test/earl_grey/chrome_ios_eg_test.gni")

group("all_tests") {
  testonly = true
  deps = [
    ":ios_chrome_adaptive_toolbar_egtests",
    ":ios_chrome_autofill_automation_egtests",
    ":ios_chrome_bookmarks_egtests",
    ":ios_chrome_device_check_egtests",
    ":ios_chrome_external_url_egtests",
    ":ios_chrome_flaky_egtests",
    ":ios_chrome_integration_egtests",
    ":ios_chrome_multitasking_egtests",
    ":ios_chrome_payments_egtests",
    ":ios_chrome_perf_egtests",
    ":ios_chrome_reading_list_egtests",
    ":ios_chrome_settings_egtests",
    ":ios_chrome_smoke_egtests",
    ":ios_chrome_tab_grid_egtests",
    ":ios_chrome_ui_egtests",
    ":ios_chrome_unified_consent_egtests",
    ":ios_chrome_web_egtests",
  ]
}

chrome_ios_eg_test("ios_chrome_integration_egtests") {
  deps = [
    "//ios/chrome/browser/autofill:eg_tests",
    "//ios/chrome/browser/browser_state:eg_tests",
    "//ios/chrome/browser/context_menu:eg_tests",
    "//ios/chrome/browser/device_sharing:eg_tests",
    "//ios/chrome/browser/feature_engagement:eg_tests",
    "//ios/chrome/browser/metrics:eg_tests",
    "//ios/chrome/browser/net:eg_tests",
    "//ios/chrome/browser/ntp_tiles:eg_tests",
    "//ios/chrome/browser/passwords:eg_tests",
    "//ios/chrome/browser/prerender:eg_tests",
  ]
}

chrome_ios_eg_test("ios_chrome_adaptive_toolbar_egtests") {
  deps = [
    ":test_support",
    "//ios/chrome/browser/ui/toolbar/adaptive:eg_tests",
  ]
  hooks_target = "//ios/chrome/browser/ui/toolbar/adaptive:hooks"
}

chrome_ios_eg_test("ios_chrome_autofill_automation_egtests") {
  deps = [
    ":test_support",
    "//ios/chrome/browser/autofill/automation:eg_tests",
  ]
}

chrome_ios_eg_test("ios_chrome_payments_egtests") {
  deps = [
    ":test_support",
    "//components/payments/core:payments_test_bundle_data",
    "//ios/chrome/browser/ui/payments:eg_tests",
  ]
}

chrome_ios_eg_test("ios_chrome_reading_list_egtests") {
  deps = [
    ":test_support",
    "//ios/chrome/browser/ui/reading_list:eg_tests",
  ]
}

chrome_ios_eg_test("ios_chrome_bookmarks_egtests") {
  deps = [
    "//ios/chrome/browser/ui/bookmarks:eg_tests",
  ]
}

chrome_ios_eg_test("ios_chrome_settings_egtests") {
  deps = [
    "//ios/chrome/browser/ui/settings:eg_tests",
  ]
}

chrome_ios_eg_test("ios_chrome_tab_grid_egtests") {
  deps = [
    ":test_support",
    "//ios/chrome/browser/ui/tab_grid:eg_tests",
  ]
  hooks_target = "//ios/chrome/browser/ui/tab_grid:hooks"
}

chrome_ios_eg_test("ios_chrome_ui_egtests") {
  deps = [
    "//ios/chrome/browser/ui:eg_tests",
    "//ios/chrome/browser/ui/activity_services:eg_tests",
    "//ios/chrome/browser/ui/alert_coordinator:eg_tests",
    "//ios/chrome/browser/ui/content_suggestions:eg_tests",
    "//ios/chrome/browser/ui/dialogs:eg_tests",
    "//ios/chrome/browser/ui/download:eg_tests",
    "//ios/chrome/browser/ui/find_bar:eg_tests",
    "//ios/chrome/browser/ui/first_run:eg_tests",
    "//ios/chrome/browser/ui/fullscreen:eg_tests",
    "//ios/chrome/browser/ui/history:eg_tests",
    "//ios/chrome/browser/ui/history_popup:eg_tests",
    "//ios/chrome/browser/ui/infobars:eg_tests",
    "//ios/chrome/browser/ui/ntp:eg_tests",
    "//ios/chrome/browser/ui/ntp/recent_tabs:eg_tests",
    "//ios/chrome/browser/ui/print:eg_tests",
    "//ios/chrome/browser/ui/qr_scanner:eg_tests",
    "//ios/chrome/browser/ui/sad_tab:eg_tests",
    "//ios/chrome/browser/ui/safe_mode:eg_tests",
    "//ios/chrome/browser/ui/settings/sync_utils:eg_tests",
    "//ios/chrome/browser/ui/signin_interaction:eg_tests",
    "//ios/chrome/browser/ui/stack_view:eg_tests",
    "//ios/chrome/browser/ui/tab_switcher:eg_tests",
    "//ios/chrome/browser/ui/tabs:eg_tests",
    "//ios/chrome/browser/ui/toolbar:eg_tests",
    "//ios/chrome/browser/ui/tools_menu:eg_tests",
    "//ios/chrome/browser/ui/webui:eg_tests",
  ]
}

chrome_ios_eg_test("ios_chrome_web_egtests") {
  deps = [
    "//ios/chrome/browser/web:eg_tests",
  ]
}

chrome_ios_eg_test("ios_chrome_multitasking_egtests") {
  configs += [ "//build/config/compiler:enable_arc" ]
  sources = [
    "//ios/chrome/app/multitasking_test_application_delegate.h",
    "//ios/chrome/app/multitasking_test_application_delegate.mm",
  ]

  deps = [
    ":test_support",
    "//base",
    "//ios/chrome/app:app_internal",
    "//ios/chrome/app/application_delegate:application_delegate_internal",

    # Depends on all EarlGrey test suites to create multitasking tests suite.
    ":ios_chrome_bookmarks_egtests_deps_group",
    ":ios_chrome_integration_egtests_deps_group",
    ":ios_chrome_settings_egtests_deps_group",
    ":ios_chrome_ui_egtests_deps_group",
    ":ios_chrome_web_egtests_deps_group",
  ]

  eg_main_application_delegate = "MultitaskingTestApplicationDelegate"
}

chrome_ios_eg_test("ios_chrome_perf_egtests") {
  deps = [
    "//ios/chrome/test/perf:eg_tests",
  ]
}

chrome_ios_eg_test("ios_chrome_device_check_egtests") {
  configs += [ "//build/config/compiler:enable_arc" ]
  sources = [
    "device_check_egtest.mm",
  ]
  deps = [
    ":test_support",
    "//ios/third_party/earl_grey:earl_grey+link",
    "//url",
  ]
}

chrome_ios_eg_test("ios_chrome_flaky_egtests") {
  deps = [
    ":test_support",
    "//base",

    # Depends on all EarlGrey test suites to run all the FLAKY_ tests found.
    # When adding a new test application, please follow the same pattern.
    ":ios_chrome_bookmarks_egtests_deps_group",
    ":ios_chrome_integration_egtests_deps_group",
    ":ios_chrome_settings_egtests_deps_group",
    ":ios_chrome_ui_egtests_deps_group",
    ":ios_chrome_web_egtests_deps_group",
  ]
}

chrome_ios_eg_test("ios_chrome_smoke_egtests") {
  configs += [ "//build/config/compiler:enable_arc" ]
  sources = [
    "smoke_egtest.mm",
  ]
  deps = [
    ":test_support",
    "//ios/chrome/test/app:test_support",
    "//ios/third_party/earl_grey:earl_grey+link",
  ]
  libs = [ "XCTest.framework" ]
}

chrome_ios_eg_test("ios_chrome_external_url_egtests") {
  deps = [
    "//ios/chrome/browser/metrics:external_url_eg_tests",
    "//ios/chrome/browser/translate:external_url_eg_tests",
  ]
}

chrome_ios_eg_test("ios_chrome_unified_consent_egtests") {
  deps = [
    "//ios/chrome/browser/ui/settings:unified_consent_eg_tests",
  ]
}

source_set("test_support") {
  configs += [ "//build/config/compiler:enable_arc" ]
  testonly = true
  sources = [
    "accessibility_util.h",
    "accessibility_util.mm",
    "chrome_actions.h",
    "chrome_actions.mm",
    "chrome_earl_grey.h",
    "chrome_earl_grey.mm",
    "chrome_earl_grey_ui.h",
    "chrome_earl_grey_ui.mm",
    "chrome_matchers.h",
    "chrome_matchers.mm",
    "chrome_test_case.h",
    "chrome_test_case.mm",
  ]

  deps = [
    "//base",
    "//base/test:test_support",
    "//components/signin/core/browser",
    "//components/strings",
    "//components/unified_consent",
    "//ios/chrome/app/strings",
    "//ios/chrome/browser/ui",
    "//ios/chrome/browser/ui/authentication:authentication",
    "//ios/chrome/browser/ui/authentication:authentication_ui",
    "//ios/chrome/browser/ui/bookmarks:bookmarks_ui",
    "//ios/chrome/browser/ui/collection_view/cells",
    "//ios/chrome/browser/ui/commands:commands",
    "//ios/chrome/browser/ui/content_suggestions:content_suggestions_ui",
    "//ios/chrome/browser/ui/location_bar:location_bar",
    "//ios/chrome/browser/ui/omnibox:omnibox_internal",
    "//ios/chrome/browser/ui/payments:payments_ui",
    "//ios/chrome/browser/ui/popup_menu:constants",
    "//ios/chrome/browser/ui/settings:settings",
    "//ios/chrome/browser/ui/settings/cells",
    "//ios/chrome/browser/ui/static_content",
    "//ios/chrome/browser/ui/toolbar/buttons",
    "//ios/chrome/browser/ui/toolbar/legacy",
    "//ios/chrome/browser/ui/toolbar/public",
    "//ios/chrome/browser/ui/tools_menu",
    "//ios/chrome/browser/ui/tools_menu/public",
    "//ios/chrome/test/app:test_support",
    "//ios/testing/earl_grey:earl_grey_support",
    "//ios/third_party/material_components_ios",
    "//ios/web",
    "//ios/web:earl_grey_test_support",
    "//ios/web/public/test/http_server",
    "//ui/base",
    "//ui/base:test_support",
    "//url",
  ]

  public_deps = [
    "//build/config/ios:xctest",
    "//ios/third_party/earl_grey:earl_grey+link",
    "//ios/web/public/test",
    "//ios/web/public/test/fakes",
    "//net:test_support",
  ]

  libs = [
    "OCHamcrest.framework",
    "WebKit.framework",
    "XCTest.framework",
  ]
}

source_set("hooks") {
  configs += [ "//build/config/compiler:enable_arc" ]
  testonly = true
  sources = [
    "eg_tests_hook.mm",
  ]
  deps = [
    "//ios/chrome/app:tests_hook",
  ]
}
