grafana/k6 · error

browser closed

Error message

browser closed

What it means

Browser.Close uses this sentinel error as the cancellation reason passed to browserCancelFn when shutting down the browser. It is the normal shutdown signal propagated through the context so all pending CDP operations and goroutines terminate promptly; seeing it usually just means the browser was closed while work was in flight.

Source

Thrown at internal/js/modules/k6/browser/common/browser.go:583

			Err: errors.New("can't fetch the page for unknown reason"),
		}
	}

	return page, err
}

// Close shuts down the browser.
func (b *Browser) Close() {
	if !b.closing.CompareAndSwap(false, true) {
		b.logger.Warnf(
			"Browser:Close",
			"Please call browser.close only once, and do not use the browser after calling close.",
		)
		return
	}
	// This will help with some cleanup in the connection and event loop above in
	// initEvents().
	defer b.browserCancelFn(errors.New("browser closed"))
	defer func() {
		if err := b.browserProc.Cleanup(); err != nil {
			b.logger.Errorf("Browser:Close", "cleaning up the user data directory: %v", err)
		}
	}()
	defer func() {
		for _, fn := range b.runOnClose {
			if err := fn(); err != nil {
				b.logger.Errorf("Browser:Close", "running cleanup function: %v", err)
			}
		}
	}()
	// Close and drain all open pages to ensure their goroutines
	// (frame sessions, network managers) are properly waited on
	// before the browser process is terminated.
	for _, p := range b.getPages() {
		if err := p.Close(); err != nil {
			b.logger.Debugf("Browser:Close", "closing page: %v", err)

View on GitHub (pinned to 94169daab2)

Solutions

  1. Treat as expected during shutdown; ensure browser.close() is called once and the browser isn't used afterwards
  2. Structure scripts so no browser operations race the final close
  3. Ignore or log at debug level if seen right after browser.close()
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at internal/js/modules/k6/browser/common/browser.go:582 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of grafana/k6@94169daab2 (2026-08-18). Data as JSON: /api/errors/b831f9e63043b93f. Report an issue: GitHub.