package uiaselector import ( "strings" "testing" ) func TestDefaultCatalogContainsInitialN13Selectors(t *testing.T) { catalog := DefaultCatalog() wantIDs := []string{ "main_window", "main_plugin_tab", "home_page_window", "tab_page_content", "left_panel", "roster_panel", "roster_view", "fuzzy_query_panel", "fuzzy_query_window", "fuzzy_search_edit", } byID := map[string]Selector{} for _, selector := range catalog { byID[selector.ID] = selector } for _, id := range wantIDs { selector, ok := byID[id] if !ok { t.Fatalf("DefaultCatalog missing selector %q", id) } if selector.AllowedUse != AllowedUseReadOnlyLocate { t.Fatalf("selector %q allowed_use = %q, want %q", id, selector.AllowedUse, AllowedUseReadOnlyLocate) } if selector.Required.AutomationID == "" { t.Fatalf("selector %q must require automation_id", id) } if selector.Required.ControlType == "" { t.Fatalf("selector %q must require control_type", id) } if selector.StabilityScore < 80 { t.Fatalf("selector %q stability_score = %d, want >= 80", id, selector.StabilityScore) } } } func TestDefaultCatalogDoesNotDescribeActionTools(t *testing.T) { for _, selector := range DefaultCatalog() { if selector.AllowedUse != AllowedUseReadOnlyLocate { t.Fatalf("selector %q allowed_use = %q, want read-only", selector.ID, selector.AllowedUse) } lower := strings.ToLower(selector.ID + " " + selector.Description) for _, forbidden := range []string{"send", "upload", "download", "receive", "conversation", "login", "file_transfer"} { if strings.Contains(lower, forbidden) { t.Fatalf("selector %q contains action word %q", selector.ID, forbidden) } } } }