package uiaselector import "testing" func TestMatchSelectorFindsKnownN12RNodes(t *testing.T) { root, err := LoadDumpFile("testdata/n12r-2026-07-09-uia-redacted.json") if err != nil { t.Fatalf("LoadDumpFile: %v", err) } tests := []struct { selectorID string path string control string autoID string }{ {selectorID: "main_window", path: "root", control: "Window", autoID: "frmMain"}, {selectorID: "left_panel", path: "root/4", control: "Pane", autoID: "panelLeft"}, {selectorID: "fuzzy_search_edit", path: "root/4/1/0/0/2", control: "Edit", autoID: "skinAlphaTxt"}, } for _, tt := range tests { result := MatchSelector(root, DefaultCatalog(), tt.selectorID) if !result.OK { t.Fatalf("%s OK=false: %#v", tt.selectorID, result.Error) } if !result.Matched { t.Fatalf("%s matched=false", tt.selectorID) } if result.MatchCount != 1 { t.Fatalf("%s match_count = %d, want 1", tt.selectorID, result.MatchCount) } match := result.Matches[0] if match.Path != tt.path || match.ControlType != tt.control || match.AutomationID != tt.autoID { t.Fatalf("%s match = %#v", tt.selectorID, match) } } } func TestMatchSelectorDoesNotReturnVisibleText(t *testing.T) { root, err := LoadDumpFile("testdata/n12r-2026-07-09-uia-redacted.json") if err != nil { t.Fatalf("LoadDumpFile: %v", err) } result := MatchSelector(root, DefaultCatalog(), "main_window") if !result.OK || !result.Matched || len(result.Matches) != 1 { t.Fatalf("unexpected result: %#v", result) } match := result.Matches[0] if match.Name != "" { t.Fatalf("match returned visible name text %q", match.Name) } if !match.HasName { t.Fatalf("main_window should report has_name=true") } if match.NameLength == 0 { t.Fatalf("main_window should report non-zero name_length") } } func TestMatchSelectorUnknownSelectorIsStructuredFailure(t *testing.T) { root, err := LoadDumpFile("testdata/n12r-2026-07-09-uia-redacted.json") if err != nil { t.Fatalf("LoadDumpFile: %v", err) } result := MatchSelector(root, DefaultCatalog(), "missing_selector") if result.OK { t.Fatalf("OK=true for missing selector: %#v", result) } if result.Error.Code != "UNKNOWN_SELECTOR" { t.Fatalf("error code = %q, want UNKNOWN_SELECTOR", result.Error.Code) } }