grafana/k6 · error
unexpected event data type: %T, expected *NavigationEvent
Error message
unexpected event data type: %T, expected *NavigationEvent
What it means
Type-assertion guard in the page navigation wait: the value received on the waitForFrameNavigation channel is not a *NavigationEvent as expected, meaning an event of a different concrete type was emitted on that channel. This is an internal invariant violation rather than a user input error.
Source
Thrown at internal/js/modules/k6/browser/common/page.go:1578
}
p.logger.Debugf("Page:Reload", "timeoutCtx done: %v", err)
return err
}
var (
navigationEvent *NavigationEvent
err error
)
select {
case <-p.ctx.Done():
err = ContextErr(p.ctx)
case <-timeoutCtx.Done():
err = wrapTimeoutError(ContextErr(timeoutCtx))
case event := <-waitForFrameNavigation:
var ok bool
if navigationEvent, ok = event.(*NavigationEvent); !ok {
err = fmt.Errorf("unexpected event data type: %T, expected *NavigationEvent", event)
} else if navigationEvent != nil && navigationEvent.err != nil {
err = navigationEvent.err
}
}
if err != nil {
return nil, err
}
var resp *Response
// Sometimes the new document is not yet available when the navigation event is emitted.
newDocument := navigationEvent.newDocument
if newDocument != nil && newDocument.request != nil {
req := newDocument.request
req.responseMu.RLock()
resp = req.response
req.responseMu.RUnlock()
}View on GitHub (pinned to 01ffac6f24)
Solutions
- Retry the navigation (waitForNavigation) — usually a one-off event-ordering anomaly
- Report as a k6/browser bug with a reproducing script if it recurs
- Avoid concurrent navigation-triggering actions on the same page
Defensive patterns
Strategy: type-guard
When it happens
Trigger: Thrown at internal/js/modules/k6/browser/common/page.go:1578 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of grafana/k6@01ffac6f24 (2026-08-18).
Data as JSON: /api/errors/d79567c6ae3d63a9.
Report an issue: GitHub.