From 9b1fbdf60f8b83f4be20b400179deb3a4fd6a199 Mon Sep 17 00:00:00 2001 From: PJ Date: Sun, 16 Aug 2026 01:23:17 +0530 Subject: [PATCH] fix(chrome): keep a log entry the level scale cannot rank Claude-Session: https://claude.ai/code/session_01ShuAy8q8ZfPi8KHxwc8JpQ --- internal/driver/chrome/driver.go | 10 ++++++++- internal/driver/chrome/logs_test.go | 33 +++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 internal/driver/chrome/logs_test.go diff --git a/internal/driver/chrome/driver.go b/internal/driver/chrome/driver.go index fac3554..37d48a8 100644 --- a/internal/driver/chrome/driver.go +++ b/internal/driver/chrome/driver.go @@ -712,9 +712,17 @@ func (d *Driver) Metrics(ctx context.Context, _ string) (driver.Metrics, error) }, nil } +// meetsLevel keeps an entry whose level the scale cannot rank. Ranking an +// unknown level below every threshold drops it, and a dropped entry is +// indistinguishable from a quiet app: the caller sees silence and reports it as +// health. func meetsLevel(level, minLevel string) bool { order := map[string]int{"V": 0, "D": 1, "I": 2, "W": 3, "E": 4, "F": 5} - return order[level] >= order[minLevel] + rank, ranked := order[level] + if !ranked { + return true + } + return rank >= order[minLevel] } func pngDimensions(png []byte) (int, int) { diff --git a/internal/driver/chrome/logs_test.go b/internal/driver/chrome/logs_test.go new file mode 100644 index 0000000..3457b9a --- /dev/null +++ b/internal/driver/chrome/logs_test.go @@ -0,0 +1,33 @@ +package chrome + +import "testing" + +// A level the scale does not name is unknown, not verbose. Ranking it below +// every threshold is what silently emptied the web log channel: the entries +// existed, the filter dropped them, and the run reported nothing. Evidence the +// filter cannot rank has to reach the caller, who can at least see it. +func TestMeetsLevel(t *testing.T) { + cases := []struct { + level string + minLevel string + want bool + }{ + {"E", "E", true}, + {"F", "E", true}, + {"W", "E", false}, + {"I", "E", false}, + {"D", "E", false}, + {"V", "E", false}, + {"W", "W", true}, + {"I", "W", false}, + {"D", "V", true}, + {"ERROR", "E", true}, + {"WARNING", "E", true}, + {"", "E", true}, + } + for _, tc := range cases { + if got := meetsLevel(tc.level, tc.minLevel); got != tc.want { + t.Errorf("meetsLevel(%q, %q) = %v, want %v", tc.level, tc.minLevel, got, tc.want) + } + } +}