grafana/k6 · error
getting page title: %w
Error message
getting page title: %w
What it means
Page.Title evaluates () => document.title in the main frame; this error wraps an evaluation failure, meaning the expression could not run: execution context destroyed by navigation, page closing, or renderer crash. The title value itself is irrelevant — the call to evaluate failed.
Source
Thrown at internal/js/modules/k6/browser/common/page.go:1790
p.logger.Debugf("Page:TextContent", "sid:%v selector:%s", p.sessionID(), selector)
return p.MainFrame().TextContent(selector, popts)
}
// Timeout will return the default timeout or the one set by the user.
// It's an internal method not to be exposed as a JS API.
func (p *Page) Timeout() time.Duration {
return p.defaultTimeout()
}
// Title returns the page title.
func (p *Page) Title() (string, error) {
p.logger.Debugf("Page:Title", "sid:%v", p.sessionID())
js := `() => document.title`
v, err := p.Evaluate(js)
if err != nil {
return "", fmt.Errorf("getting page title: %w", err)
}
s, ok := v.(string)
if !ok {
return "", fmt.Errorf("getting page title: expected string, got %T", v)
}
return s, nil
}
// ThrottleCPU will slow the CPU down from chrome's perspective to simulate
// a test being run on a slower device.
func (p *Page) ThrottleCPU(cpuProfile CPUProfile) error {
p.logger.Debugf("Page:ThrottleCPU", "sid:%v", p.sessionID())
p.frameSessionsMu.RLock()
defer p.frameSessionsMu.RUnlock()
for _, fs := range p.frameSessions {View on GitHub (pinned to 93accf6570)
Solutions
- Await a load state first: await page.waitForLoadState() before page.title()
- Retry once after a short delay — a fresh execution context usually resolves it
- Ensure the page is not closing when reading the title
Example fix
// before
await page.goto('https://example.com/');
const t = await page.title(); // may race redirect/context swap
// after
await page.goto('https://example.com/');
await page.waitForLoadState('domcontentloaded');
const t = await page.title(); Defensive patterns
Strategy: retry
Validate before calling
if (page.isClosed()) throw new Error('page closed before title read');
await page.waitForLoadState('domcontentloaded'); Try / catch
let title;
for (let i = 0; i < 2; i++) {
try { title = await page.title(); break; }
catch (e) { if (!/getting page title/.test(e.message)) throw e; await page.waitForTimeout(200); }
} Prevention
- Read the title only after a load state settles, especially across redirects
- Do not call page.title() during close/teardown
When it happens
Trigger: page.title() during page.goto (context torn down and recreated), on an about:blank page being replaced, or after the page/renderer died.
Common situations: Calling page.title() immediately after goto without awaiting load; racing a redirect chain; calling at iteration teardown.
Related errors
- missing required argument 'url'
- errorText
- getting document element: %w
- disposing document element: %w
- getting node in frame: %w
AI-assisted analysis of grafana/k6@93accf6570 (2026-08-15).
Data as JSON: /api/errors/6cc7e1d4b7a1db30.
Report an issue: GitHub.