grafana/k6 · error
mouse down: %w
Error message
mouse down: %w
What it means
Root-level error from the internal Mouse.down(): the CDP Input.dispatchMouseEvent(mousePressed) call itself failed. This is a raw Chrome DevTools Protocol failure, typically meaning the session/target is gone (page closed, browser crashed, connection lost) rather than anything about coordinates or the page content.
Source
Thrown at internal/js/modules/k6/browser/common/mouse.go:92
return nil
}
// Down will trigger a MouseDown event in the browser.
func (m *Mouse) Down(opts *MouseDownUpOptions) error {
if err := m.down(opts); err != nil {
return fmt.Errorf("pressing the mouse button on x:%f y:%f: %w", m.x, m.y, err)
}
return nil
}
func (m *Mouse) down(opts *MouseDownUpOptions) error {
m.button = input.MouseButton(opts.Button)
action := input.DispatchMouseEvent(input.MousePressed, m.x, m.y).
WithButton(input.MouseButton(opts.Button)).
WithModifiers(input.Modifier(m.keyboard.modifiers)).
WithClickCount(opts.ClickCount)
if err := action.Do(cdp.WithExecutor(m.ctx, m.session)); err != nil {
return fmt.Errorf("mouse down: %w", err)
}
return nil
}
// Up will trigger a MouseUp event in the browser.
func (m *Mouse) Up(opts *MouseDownUpOptions) error {
if err := m.up(opts); err != nil {
return fmt.Errorf("releasing the mouse button on x:%f y:%f: %w", m.x, m.y, err)
}
return nil
}
func (m *Mouse) up(opts *MouseDownUpOptions) error {
m.button = input.None
action := input.DispatchMouseEvent(input.MouseReleased, m.x, m.y).
WithButton(input.MouseButton(opts.Button)).
WithModifiers(input.Modifier(m.keyboard.modifiers)).
WithClickCount(opts.ClickCount)View on GitHub (pinned to 93accf6570)
Solutions
- Check browser health: verify the Chromium process is alive and not OOM-killed (dmesg/container logs)
- Guard all mouse input with page.isClosed() and re-create the page on failure
- Reduce concurrent VUs/pages if the browser runs out of resources
- If using a remote/external browser (K6_BROWSER_EXECUTABLE_PATH or websocket endpoint), verify connectivity and version compatibility
Example fix
// before
await page.mouse.down();
// after
if (page.isClosed()) { throw new Error('page closed before mouse.down'); }
await page.mouse.down(); Defensive patterns
Strategy: try-catch
Validate before calling
if (page.isClosed()) throw new Error('page closed');
await page.mouse.down(); Try / catch
try {
await page.mouse.down();
} catch (e) {
// raw CDP failure: treat as fatal session loss
if (/target closed|connection|context destroyed/i.test(e.message)) {
throw new Error('browser session lost during mouse down');
}
throw e;
} Prevention
- Monitor Chromium memory in long browser tests
- Never dispatch input after a prior unhandled error
- Run one gesture at a time per page
When it happens
Trigger: action.Do(cdp.WithExecutor(...)) for mousePressed returning an error: DevTools session closed, target (page) destroyed, browser process crash, or websocket to the browser dropped.
Common situations: Browser crashed under load (many VUs, out of memory); test continuing to interact after page.close(); containerized Chromium killed by OOM; network hiccup between k6 and a remote browser (CDP over websocket).
Related errors
- mouse up: %w
- mouse move: %w
- evaluating pointer action: %w
- run if waiting for debugger to attach: %w
- internal error while enabling %T: %w
AI-assisted analysis of grafana/k6@93accf6570 (2026-08-15).
Data as JSON: /api/errors/f90c43eb4ea511df.
Report an issue: GitHub.