From 58b57d8f3cc4082c58fae921ba6e128c0a937969 Mon Sep 17 00:00:00 2001 From: PJ Date: Mon, 1 Jun 2026 17:20:09 +0530 Subject: [PATCH] test(verifier): unsupported verbs collected deduped in first-seen order --- internal/verifier/verifier_test.go | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/internal/verifier/verifier_test.go b/internal/verifier/verifier_test.go index bbc9d81..2923ea0 100644 --- a/internal/verifier/verifier_test.go +++ b/internal/verifier/verifier_test.go @@ -1232,3 +1232,27 @@ func TestOverrideExtractorValues_PropagatesNestedObjectFields(t *testing.T) { t.Errorf("scalar field missing: card.current.balance = %d, want 12345", got) } } + +// TestUnsupportedVerbs_CollectedDedupedInOrder drives the real host binding the +// shared picker invokes (__sanderlingHost__.reportUnsupported) and asserts the +// verifier collects each verb once, in first-seen order, for the run report. +func TestUnsupportedVerbs_CollectedDedupedInOrder(t *testing.T) { + verifier := newVerifier(t) + report, ok := goja.AssertFunction( + verifier.runtime.GlobalObject().Get("__sanderlingHost__"). + ToObject(verifier.runtime).Get("reportUnsupported"), + ) + if !ok { + t.Fatal("reportUnsupported host binding missing") + } + for _, verb := range []string{"scrolls", "swipes", "scrolls", "longPresses"} { + if _, err := report(goja.Undefined(), verifier.runtime.ToValue(verb)); err != nil { + t.Fatalf("reportUnsupported(%q): %v", verb, err) + } + } + got := verifier.UnsupportedVerbs() + want := []string{"scrolls", "swipes", "longPresses"} + if !slices.Equal(got, want) { + t.Errorf("UnsupportedVerbs = %v, want %v", got, want) + } +}