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

# WARNING: if you wish to disable a tast test that runs in a ChromeOS SDK
# build, this is the wrong file to edit. You need to mark those tests as
# "informational" in their source .go files.

# To disable a specific test in chrome_all_tast_tests, add it the following
# list and cite a bug.
tast_disabled_tests_from_chrome_all = [
  # crbug.com/1184931
  "health.ProbeBatteryMetrics",

  # b/196705842
  "apps.LaunchGalleryLanguage",

  # crbug.com/1242415
  "hwsec.AttestationEnrollOnly",
  "hwsec.ChapsAttributePolicy",
  "hwsec.ChapsPKCS1V15",
  "policy.AccessibilityPolicies.sticky_keys",
  "policy.AllowDinosaurEasterEgg",
  "policy.DisableScreenshotsExtension",

  # crbug.com/1238654
  "lockscreen.KeyboardShortcut",
  "apps.SystemWebAppsReinstall.all_apps_stable",
  "apps.SystemWebAppsReinstall.default_enabled_apps_stable",
  "camera.EncodeAccelJPEG",

  # crbug.com/1247485
  "inputs.PhysicalKeyboardInputFields.us_en",
  "inputs.VirtualKeyboardAccent",

  # crbug.com/1247177
  "inputs.PhysicalKeyboardEnglishTyping",
  "inputs.PhysicalKeyboardEmoji",

  # https://crbug.com/1252352
  "quicksettings.SignInScreen.battery",
  "quicksettings.SignInScreen.noaudio_nobattery",
  "quicksettings.SignInScreen.audio",

  # crbug.com/1263234
  "quicksettings.ManagedDeviceInfo",

  # crbug.com/1273743
  "crostini.Launcher.local_wayland_bullseye_stable",
  "crostini.Launcher.local_wayland_buster_stable",
  "crostini.Launcher.local_x11_bullseye_stable",
  "crostini.Launcher.system_wayland_bullseye_stable",
  "crostini.Launcher.system_wayland_buster_stable",
  "crostini.Launcher.system_x11_bullseye_stable",
  "crostini.Launcher.system_x11_buster_stable",

  # crbug.com/1259127
  "ui.TabletOperations",

  # crbug.com/1257474
  "shelf.OpenCloseSwitchApps",

  # crbug.com/1239838
  "graphics.FPS",

  # crbug.com/1186991
  "launcher.SearchBuiltInApps",

  # crbug.com/1263233
  "security.SharedFilesystemState",

  # https://crbug.com/1269876: Flaky.
  "arc.TextToSpeech",

  # https://crbug.com/1269880: Flaky.
  "ui.ChromeCrashReporterMetrics.success_crashpad",

  # https://crbug.com/1276549: Flaky.
  "ui.ChromeCrashLoop.breakpad",
  "ui.ChromeCrashLoop.breakpad_mock_consent",
  "ui.ChromeCrashReporterMetrics.success_breakpad",
  "ui.ChromeCrashReporterMetrics.miss_breakpad",

  # https://crbug.com/1269075: Flaky.
  "shelf.AutoHideSmoke.clamshell_mode",

  # https://crbug.com/1269124: Flaky.
  "quicksettings.LockScreen.no_battery",

  # https://crbug.com/1273485: Flaky.
  "printer.ProxyAdd.epson_software_collate",
  "printer.ProxyAdd.epson_software_uncollated",

  # https://crbug.com/1279285: Flaky.
  "policy.AllowWakeLocks",

  # https://crbug.com/1285206
  "policy.DeveloperToolsAvailability",

  # https://crbug.com/1281645
  "quicksettings.LockScreen",

  # https://crbug.com/1282372
  "security.SELinuxFilesARC",
  "security.NetworkListenersARC",
  "security.SELinuxProcessesARC",

  # https://crbug.com/1282369
  "apps.LaunchHelpAppOffline",

  # https://crbug.com/1282366
  "inputs.VirtualKeyboardDeadKeys.french",
  "inputs.VirtualKeyboardSystemLanguages.es",
  "inputs.VirtualKeyboardFloat.clamshell",

  # https://crbug.com/1282370
  "arc.Boot.vm_with_per_vcpu_core_scheduling",

  # https://crbug.com/1282481
  "quicksettings.OpenSettings",

  # http://b/212644512
  "security.SELinuxFilesDataDir",

  # https://crbug.com/1283300 (http://b/212637568)
  "inputs.PhysicalKeyboardCapsLock",
  "inputs.PhysicalKeyboardChangeInput",
  "inputs.PhysicalKeyboardAutocorrect.en_us_1",
  "inputs.PhysicalKeyboardDeadKeys.us_intl_acute",

  # https://crbug.com/1260046
  "wmp.WindowCycle",

  # b/217362120
  "security.SELinuxFilesARC.vm",

  # b/217100326
  "arc.SettingsBridge",
  "arc.SettingsBridge.vm",

  # https://crbug.com/1296656
  "inputs.VirtualKeyboardEnglishSettings",
  "inputs.VirtualKeyboardTypingOmnibox.guest",
  "inputs.PhysicalKeyboardAutocorrect.en_us_2",
  "inputs.VirtualKeyboardAutoShift",

  # https://crbug.com/1297028
  "arc.StandardizedKeyboardCopyPaste",
  "arc.StandardizedKeyboardCopyPaste.tablet_mode",
]

# To disable a specific test in lacros_all_tast_tests, add it the following
# list and cite a bug.
tast_disabled_tests_from_lacros_all = [
  # crbug.com/1250036
  "a11y.Smoke.lacros",
  "a11y.Smoke.lacros_rootfs",
]
