grafana/k6 · error

checking is visible

Error message

checking is %q visible: %w

What it means

Wrapped failure from Frame.isVisible while resolving visibility of the element matched by the locator's selector (strict mode forced via FrameIsVisibleOptions). Fires when the selector matches multiple elements (strict violation) or the visibility evaluation fails — a hidden element returns (false, nil), not this error.

Solutions

  1. Narrow the selector so it matches at most one element
  2. Note visibility is checked immediately with no auto-wait; wait for the element first if it may not exist yet
  3. Distinguish the returned error from a legitimate false (hidden) result
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at internal/js/modules/k6/browser/common/locator.go:283 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/3dc2b9313d4c7744. Report an issue: GitHub.

Appendix: source

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

	l.log.Debugf("Locator:IsInViewport", "fid:%s furl:%q sel:%q opts:%+v", l.frame.ID(), l.frame.URL(), l.selector, opts)

	opts.Strict = true
	inViewport, err := l.frame.isInViewport(l.selector, opts)
	if err != nil {
		return false, fmt.Errorf("checking is %q in viewport: %w", l.selector, err)
	}

	return inViewport, nil
}

// IsVisible returns true if the element matches the locator's
// selector and is visible. Otherwise, returns false.
func (l *Locator) IsVisible() (bool, error) {
	l.log.Debugf("Locator:IsVisible", "fid:%s furl:%q sel:%q", l.frame.ID(), l.frame.URL(), l.selector)

	visible, err := l.frame.isVisible(l.selector, &FrameIsVisibleOptions{Strict: true})
	if err != nil {
		return false, fmt.Errorf("checking is %q visible: %w", l.selector, err)
	}

	return visible, nil
}

// IsHidden returns true if the element matches the locator's
// selector and is hidden. Otherwise, returns false.
func (l *Locator) IsHidden() (bool, error) {
	l.log.Debugf("Locator:IsHidden", "fid:%s furl:%q sel:%q", l.frame.ID(), l.frame.URL(), l.selector)

	hidden, err := l.frame.isHidden(l.selector, &FrameIsHiddenOptions{Strict: true})
	if err != nil {
		return false, fmt.Errorf("checking is %q hidden: %w", l.selector, err)
	}

	return hidden, nil
}

View on GitHub (pinned to 01ffac6f24)