feat(browser_list): añade campo headless por master
browser_list ahora reporta si cada Chromium master se lanzo en modo headless, detectado por el flag de arranque (--headless / --headless=new / --headless=old) leido del cmdline. Una sola llamada devuelve navegadores activos + CDP + headless, sin tener que conectar a cada pagina para fingerprintear. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -195,3 +195,31 @@ func TestParseCmdline(t *testing.T) {
|
||||
t.Errorf("cmdline vacio debe devolver nil")
|
||||
}
|
||||
}
|
||||
|
||||
// TestIsHeadless valida la deteccion de modo headless por el flag de lanzamiento:
|
||||
// --headless, --headless=new y --headless=old cuentan; su ausencia es headed.
|
||||
func TestIsHeadless(t *testing.T) {
|
||||
cases := []struct {
|
||||
name string
|
||||
args []string
|
||||
want bool
|
||||
}{
|
||||
{"sin flag (headed)", []string{"/usr/lib/chromium/chromium", "--user-data-dir=/tmp/x"}, false},
|
||||
{"--headless legacy", []string{"/usr/lib/chromium/chromium", "--headless", "--user-data-dir=/tmp/x"}, true},
|
||||
{"--headless=new", []string{"/usr/lib/chromium/chromium", "--headless=new"}, true},
|
||||
{"--headless=old", []string{"/usr/lib/chromium/chromium", "--headless=old"}, true},
|
||||
}
|
||||
for _, c := range cases {
|
||||
t.Run(c.name, func(t *testing.T) {
|
||||
if got := isHeadless(c.args); got != c.want {
|
||||
t.Errorf("isHeadless(%v) = %v, want %v", c.args, got, c.want)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// El master headed real (cmdline colapsado por espacios) debe reportar headless=false.
|
||||
headed := parseCmdline([]byte("/usr/lib/chromium/chromium --remote-debugging-port=9333 --user-data-dir=/tmp/browser_mcp_userdata"))
|
||||
if m, ok := parseChromiumMaster(1, headed); !ok || m.Headless {
|
||||
t.Errorf("master headed: ok=%v headless=%v, want ok=true headless=false", ok, m.Headless)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user