//! orbok-ui test suite.
//!
//! This file is the module router. Tests live in submodules under `tests/`:
//!
//! | Module | Coverage |
//! |---|---|
//! | `i18n` | i18n catalog completeness, locale detection, parameterized messages |
//! | `state` | AppState transitions, theme/scale/motion, navigation, notices |
//! | `components` | RFC-033 adapter smoke tests and tone-mapping |
//! | `a11y` | RFC-034 contrast guard, keyboard map, RFC-035 CVD + scale |
//! | `smoke_views` | headless view-render smoke tests |
//!
//! `ALL_KEYS` is declared here because both `i18n` and tooling that
//! enumerates keys need a single canonical list.

pub mod a11y;
pub mod components;
pub mod i18n;
pub mod rfc041_search_state;
pub mod rfc045_location;
pub mod smoke_views;
pub mod state;

use crate::i18n::MessageKey;

/// Every MessageKey that must resolve to a non-empty string in every locale.
/// Update this list when adding or removing keys from the MessageKey enum.
pub const ALL_KEYS: &[MessageKey] = &[
    MessageKey::AppTitle,
    MessageKey::LocalOnlyBadge,
    MessageKey::NavSearch,
    MessageKey::NavSources,
    MessageKey::NavIndexing,
    MessageKey::NavStorage,
    MessageKey::NavModels,
    MessageKey::NavSettings,
    MessageKey::SearchPlaceholder,
    MessageKey::SearchButton,
    MessageKey::SearchNoSourcesTitle,
    MessageKey::SearchNoSourcesBody,
    MessageKey::SearchAddSource,
    MessageKey::SearchNoResults,
    MessageKey::SearchKeywordOnlyNotice,
    MessageKey::SearchModeLabel,
    MessageKey::SearchModeAuto,
    MessageKey::SearchModeExact,
    MessageKey::SearchModeConceptual,
    MessageKey::SourcesTitle,
    MessageKey::SourcesEmptyTitle,
    MessageKey::SourcesEmptyBody,
    MessageKey::SourcesAddFolder,
    MessageKey::SourcesStatusActive,
    MessageKey::SourcesStatusPaused,
    MessageKey::SourcesStatusMissing,
    MessageKey::IndexingTitle,
    MessageKey::IndexingIdle,
    MessageKey::IndexingHealthIndexed,
    MessageKey::IndexingHealthStale,
    MessageKey::IndexingHealthFailed,
    MessageKey::IndexingHealthQueued,
    MessageKey::StorageTitle,
    MessageKey::StorageIntro,
    MessageKey::StorageSafeCleanupHeading,
    MessageKey::StorageClearSnippets,
    MessageKey::StorageClearSearchCache,
    MessageKey::StorageDangerHeading,
    MessageKey::StorageResetCatalog,
    MessageKey::StorageResetWarning,
    MessageKey::StorageGroupSearchIndex,
    MessageKey::StorageGroupModels,
    MessageKey::StorageGroupCaches,
    MessageKey::ModelsTitle,
    MessageKey::ModelsEmbeddingRole,
    MessageKey::ModelsRerankerRole,
    MessageKey::ModelsStatusAvailable,
    MessageKey::ModelsStatusMissing,
    MessageKey::ModelsKeywordOnlyHint,
    MessageKey::SettingsTitle,
    MessageKey::SettingsLanguageHeading,
    MessageKey::SettingsThemeHeading,
    MessageKey::ThemeSystem,
    MessageKey::ThemeLight,
    MessageKey::ThemeDark,
    MessageKey::ThemeHighContrastLight,
    MessageKey::ThemeHighContrastDark,
    MessageKey::SettingsTextScaleHeading,
    MessageKey::TextScaleDefault,
    MessageKey::TextScaleLarge,
    MessageKey::TextScaleLarger,
    MessageKey::SettingsReduceMotion,
    MessageKey::SettingsReduceMotionHint,
    MessageKey::SettingsCvdNote,
    MessageKey::SettingsPrivacyHeading,
    MessageKey::SettingsPrivacyLocalOnly,
    MessageKey::SettingsAdvancedHeading,
    MessageKey::SettingsAdvancedOn,
    MessageKey::SettingsAdvancedOff,
    MessageKey::SettingsAdvancedHint,
    MessageKey::NoticeDownloadFailTitle,
    MessageKey::NoticeDownloadFailBody,
    MessageKey::NoticeFolderFailTitle,
    MessageKey::NoticeFolderFailBody,
    MessageKey::NoticeSearchFailTitle,
    MessageKey::NoticeSearchFailBody,
    MessageKey::NoticeFilesMissingTitle,
    MessageKey::NoticeFilesMissingBody,
    MessageKey::NoticeFolderAddedTitle,
    MessageKey::NoticeFolderAddedBody,
    MessageKey::NoticeSearchReadyTitle,
    MessageKey::NoticeSearchReadyBody,
    MessageKey::NoticePreviewsClearedTitle,
    MessageKey::NoticePreviewsClearedBody,
    MessageKey::NoticeActionTryAgain,
    MessageKey::NoticeActionChooseFolder,
    MessageKey::NoticeSensitiveSourceTitle,
    MessageKey::NoticeSensitiveSourceBody,
    MessageKey::NoticeDismiss,
    MessageKey::Cancel,
    MessageKey::Confirm,
    // RFC-041
    MessageKey::SearchNarrowResults,
    MessageKey::SearchNarrowedBy,
    MessageKey::SearchMoreWays,
    MessageKey::SearchClearFilters,
    MessageKey::SearchNoResultsFiltered,
    MessageKey::SearchNoResultsFilteredBody,
    MessageKey::SearchInThisFolder,
    MessageKey::SearchShowNearby,
    MessageKey::SearchShowSimilar,
    MessageKey::SearchResultsUpdating,
    MessageKey::SearchPreparingFolder,
    MessageKey::SearchPartialReadiness,
    MessageKey::FilterKind,
    MessageKey::FilterChanged,
    MessageKey::FilterSearchIn,
    MessageKey::FilterReadyStatus,
    MessageKey::FilterKindPdfs,
    MessageKey::FilterKindNotes,
    MessageKey::FilterKindCode,
    MessageKey::FilterKindDocuments,
    MessageKey::FilterKindSpreadsheets,
    MessageKey::FilterChangedToday,
    MessageKey::FilterChangedThisWeek,
    MessageKey::FilterChangedThisMonth,
    MessageKey::FilterChangedAnyTime,
    MessageKey::FilterAllFolders,
    // RFC-037
    MessageKey::SourceStateReady,
    MessageKey::SourceStatePreparing,
    MessageKey::SourceStateNeedsUpdate,
    MessageKey::SourceStatePaused,
    MessageKey::SourceStateFolderNotFound,
    MessageKey::SourceStateCannotOpen,
    MessageKey::SourceStateRemoved,
    MessageKey::SourceActionCheckAgain,
    MessageKey::SourceActionPrepareAgain,
    MessageKey::SourceActionChooseFolderAgain,
    MessageKey::SourceActionRemoveFromOrbok,
    MessageKey::SourceFolderNotFoundDetail,
    MessageKey::SourceFilesNotDeletedNotice,
    MessageKey::SourceManyFilesChanged,
    MessageKey::SourcePausePreparation,
    MessageKey::SourceResumePreparation,
    // RFC-038
    MessageKey::TrustNeedsUpdate,
    MessageKey::TrustFileNotFound,
    MessageKey::TrustStillBeingPrepared,
    MessageKey::TrustPartlyPrepared,
    MessageKey::TrustCannotOpen,
    MessageKey::TrustActionPrepareAgain,
    MessageKey::TrustActionCheckFolder,
    MessageKey::TrustActionRemoveFromResults,
    MessageKey::TrustActionOpenAnyway,
    MessageKey::TrustActionShowInFolder,
    MessageKey::TrustActionViewDetails,
    MessageKey::TrustFileChangedDetail,
    MessageKey::TrustFileNotFoundDetail,
    MessageKey::TrustPartlyPreparedDetail,
    MessageKey::TrustScannedPdfDetail,
    MessageKey::TrustSomePagesDetail,
    MessageKey::TrustSizeLimitDetail,
    MessageKey::TrustCannotOpenDetail,
    // RFC-043
    MessageKey::ModelCheckingFiles,
    MessageKey::ModelAlreadyReady,
    MessageKey::ModelNeedsDownload,
    MessageKey::ModelDownloadingBetterSearch,
    MessageKey::ModelFilesStayLocal,
    MessageKey::ModelDownloadFailed,
    MessageKey::ModelDownloadRetry,
    MessageKey::ModelRepairingFiles,
    MessageKey::ModelBasicSearchAvailable,
    MessageKey::ModelDownloadingWhatNeeded,
    // RFC-039
    MessageKey::PrivacyTitle,
    MessageKey::PrivacyLocalOnlyStatement,
    MessageKey::PrivacyModeStandard,
    MessageKey::PrivacyModeStrict,
    MessageKey::PrivacyModePortable,
    MessageKey::PrivacyModeStrictDescription,
    MessageKey::PrivacyModePortableDescription,
    MessageKey::PrivacyRememberSearches,
    MessageKey::PrivacyRememberSearchesHint,
    MessageKey::PrivacySearchesDisabledStrict,
    MessageKey::PrivacyTemporaryPreviews,
    MessageKey::PrivacyTemporaryPreviewsHint,
    MessageKey::PrivacyClearPreviews,
    MessageKey::PrivacyEnableStrictConfirm,
    MessageKey::PrivacyEnableStrictBody,
    MessageKey::PrivacyTurnOn,
    MessageKey::PrivacyTurnOnAndClear,
    MessageKey::PrivacyFilesNotDeleted,
    MessageKey::PrivacyModelDownloadNote,
    // RFC-040
    MessageKey::DiagnosticsTitle,
    MessageKey::DiagnosticsIntro,
    MessageKey::DiagnosticsCreateFile,
    MessageKey::DiagnosticsPreviewTitle,
    MessageKey::DiagnosticsIncludedLabel,
    MessageKey::DiagnosticsExcludedLabel,
    MessageKey::DiagnosticsOptInFolderNames,
    MessageKey::DiagnosticsOptInFolderNamesHint,
    MessageKey::DiagnosticsOptInSearchWords,
    MessageKey::DiagnosticsOptInSearchWordsHint,
    MessageKey::DiagnosticsFileCreated,
    MessageKey::DiagnosticsShowFile,
    MessageKey::DiagnosticsCreateFailed,
    // RFC-045
    MessageKey::SearchInLabel,
    MessageKey::SearchChooseFolder,
    MessageKey::SearchScopeOnly,
    MessageKey::SearchScopeSubfolders,
    MessageKey::SearchRecentFoldersLabel,
];
mod rfc041_search;
