diff --git a/browser/leakless.go b/browser/leakless.go new file mode 100644 index 0000000..f1f6944 --- /dev/null +++ b/browser/leakless.go @@ -0,0 +1,7 @@ +package browser + +import "runtime" + +func launcherLeakless() bool { + return runtime.GOOS != "windows" +} diff --git a/browser/pool.go b/browser/pool.go index 675d00c..5a8d289 100644 --- a/browser/pool.go +++ b/browser/pool.go @@ -165,7 +165,7 @@ func (p *Pool) getBrowser() (*rod.Browser, error) { controlURL := p.opts.ControlURL if controlURL == "" { - l := launcher.New(). + l := launcher.New().Leakless(launcherLeakless()). Headless(p.opts.Headless). Set("disable-blink-features", "AutomationControlled"). Set("disable-gpu", "") diff --git a/browser/pool_test.go b/browser/pool_test.go index d7822cf..4c14a78 100644 --- a/browser/pool_test.go +++ b/browser/pool_test.go @@ -6,6 +6,7 @@ import ( "net/http" "net/http/httptest" "os" + "runtime" "strings" "testing" "time" @@ -83,6 +84,14 @@ func TestDisableSandboxContainer(t *testing.T) { } } +func TestLauncherLeaklessDisabledOnWindows(t *testing.T) { + got := launcherLeakless() + want := runtime.GOOS != "windows" + if got != want { + t.Errorf("launcherLeakless() = %v on %s; want %v", got, runtime.GOOS, want) + } +} + func TestRenderCapturesFinalDOM(t *testing.T) { if testing.Short() { t.Skip("render test drives Chrome; skipped under -short")