@@ -1926,17 +1926,11 @@ func TestBrowsersTelemetrySet_WhitespaceTolerance(t *testing.T) {
19261926func TestBrowsersTelemetryStatus_PrintsCategories (t * testing.T ) {
19271927 setupStdoutCapture (t )
19281928 fake := & FakeBrowsersService {GetFunc : func (ctx context.Context , id string , query kernel.BrowserGetParams , opts ... option.RequestOption ) (* kernel.BrowserGetResponse , error ) {
1929- return & kernel.BrowserGetResponse {
1930- SessionID : id ,
1931- Telemetry : kernel.BrowserTelemetryConfig {
1932- Browser : kernel.BrowserTelemetryCategoriesConfig {
1933- Console : kernel.BrowserTelemetryCategoryConfig {Enabled : true },
1934- Interaction : kernel.BrowserTelemetryCategoryConfig {Enabled : false },
1935- Network : kernel.BrowserTelemetryCategoryConfig {Enabled : true },
1936- Page : kernel.BrowserTelemetryCategoryConfig {Enabled : false },
1937- },
1938- },
1939- }, nil
1929+ var resp kernel.BrowserGetResponse
1930+ if err := json .Unmarshal ([]byte (`{"session_id":"session123","telemetry":{"browser":{"console":{"enabled":true},"interaction":{"enabled":false},"network":{"enabled":true},"page":{"enabled":false}}}}` ), & resp ); err != nil {
1931+ t .Fatalf ("unmarshal: %v" , err )
1932+ }
1933+ return & resp , nil
19401934 }}
19411935 b := BrowsersCmd {browsers : fake }
19421936
@@ -1950,6 +1944,28 @@ func TestBrowsersTelemetryStatus_PrintsCategories(t *testing.T) {
19501944 assert .Contains (t , out , "page: off" )
19511945}
19521946
1947+ func TestBrowsersTelemetryStatus_VMDefaultsAllOn (t * testing.T ) {
1948+ setupStdoutCapture (t )
1949+ fake := & FakeBrowsersService {GetFunc : func (ctx context.Context , id string , query kernel.BrowserGetParams , opts ... option.RequestOption ) (* kernel.BrowserGetResponse , error ) {
1950+ // API returns browser:{} when using VM defaults — enabled field absent means true per SDK
1951+ var resp kernel.BrowserGetResponse
1952+ if err := json .Unmarshal ([]byte (`{"session_id":"session123","telemetry":{"browser":{}}}` ), & resp ); err != nil {
1953+ t .Fatalf ("unmarshal: %v" , err )
1954+ }
1955+ return & resp , nil
1956+ }}
1957+ b := BrowsersCmd {browsers : fake }
1958+
1959+ err := b .TelemetryStatus (context .Background (), BrowsersTelemetryStatusInput {Identifier : "session123" })
1960+
1961+ assert .NoError (t , err )
1962+ out := outBuf .String ()
1963+ assert .Contains (t , out , "console: on" )
1964+ assert .Contains (t , out , "interaction: on" )
1965+ assert .Contains (t , out , "network: on" )
1966+ assert .Contains (t , out , "page: on" )
1967+ }
1968+
19531969func TestTelemetryStream_UnknownCategoryErrors (t * testing.T ) {
19541970 b := BrowsersCmd {browsers : & FakeBrowsersService {}}
19551971
@@ -1978,39 +1994,55 @@ func TestTelemetryStream_UnknownTypeWarns(t *testing.T) {
19781994 assert .Contains (t , outBuf .String (), "unrecognized event type" )
19791995}
19801996
1981- func TestEventCategory (t * testing.T ) {
1982- cases := map [string ]string {
1983- "network_response" : "network" ,
1984- "monitor_screenshot" : "monitor" ,
1985- "console_log" : "console" ,
1986- "page_navigation" : "page" ,
1987- "interaction_click" : "interaction" ,
1988- "nounderscore" : "nounderscore" ,
1997+ func makeEvent (t * testing.T , raw string ) kernel.BrowserTelemetryEventUnion {
1998+ t .Helper ()
1999+ var ev kernel.BrowserTelemetryEventUnion
2000+ if err := json .Unmarshal ([]byte (raw ), & ev ); err != nil {
2001+ t .Fatalf ("makeEvent: %v" , err )
2002+ }
2003+ return ev
2004+ }
2005+
2006+ func TestEventCategoryFromRaw (t * testing.T ) {
2007+ cases := []struct {
2008+ raw string
2009+ want string
2010+ }{
2011+ // real category field present — used directly
2012+ {`{"type":"monitor_screenshot","category":"system","ts":0}` , "system" },
2013+ {`{"type":"network_response","category":"network","ts":0}` , "network" },
2014+ // no category field — falls back to type prefix
2015+ {`{"type":"console_log","ts":0}` , "console" },
2016+ {`{"type":"page_navigation","ts":0}` , "page" },
2017+ {`{"type":"nounderscore","ts":0}` , "nounderscore" },
19892018 }
1990- for input , want := range cases {
1991- assert .Equal (t , want , eventCategory (input ), "eventCategory(%q)" , input )
2019+ for _ , tc := range cases {
2020+ ev := makeEvent (t , tc .raw )
2021+ assert .Equal (t , tc .want , eventCategoryFromRaw (ev ), "raw=%s" , tc .raw )
19922022 }
19932023}
19942024
19952025func TestShouldEmit (t * testing.T ) {
19962026 cases := []struct {
19972027 name string
1998- eventType string
2028+ raw string
19992029 categories []string
20002030 types []string
20012031 want bool
20022032 }{
2003- {"no filters passes" , "network_response" , nil , nil , true },
2004- {"matching category passes" , "network_response" , []string {"network" }, nil , true },
2005- {"non-matching category drops" , "console_log" , []string {"network" }, nil , false },
2006- {"matching type passes" , "console_log" , nil , []string {"console_log" }, true },
2007- {"non-matching type drops" , "network_response" , nil , []string {"console_log" }, false },
2008- {"both filters pass when both match" , "network_response" , []string {"network" }, []string {"network_response" }, true },
2009- {"both filters drop when type misses" , "network_response" , []string {"network" }, []string {"console_log" }, false },
2033+ {"no filters passes" , `{"type":"network_response","category":"network","ts":0}` , nil , nil , true },
2034+ {"matching category passes" , `{"type":"network_response","category":"network","ts":0}` , []string {"network" }, nil , true },
2035+ {"non-matching category drops" , `{"type":"console_log","category":"console","ts":0}` , []string {"network" }, nil , false },
2036+ {"system category matches monitor_screenshot" , `{"type":"monitor_screenshot","category":"system","ts":0}` , []string {"system" }, nil , true },
2037+ {"matching type passes" , `{"type":"console_log","category":"console","ts":0}` , nil , []string {"console_log" }, true },
2038+ {"non-matching type drops" , `{"type":"network_response","category":"network","ts":0}` , nil , []string {"console_log" }, false },
2039+ {"both filters pass when both match" , `{"type":"network_response","category":"network","ts":0}` , []string {"network" }, []string {"network_response" }, true },
2040+ {"both filters drop when type misses" , `{"type":"network_response","category":"network","ts":0}` , []string {"network" }, []string {"console_log" }, false },
20102041 }
20112042 for _ , tc := range cases {
20122043 t .Run (tc .name , func (t * testing.T ) {
2013- assert .Equal (t , tc .want , shouldEmit (tc .eventType , tc .categories , tc .types ))
2044+ ev := makeEvent (t , tc .raw )
2045+ assert .Equal (t , tc .want , shouldEmit (ev , tc .categories , tc .types ))
20142046 })
20152047 }
20162048}
0 commit comments