grafana/k6

browser: add locator.isInViewport() method

Chiusa

#6022 aperta il 29 mag 2026

 (2 commenti) (0 reazioni) (0 assegnatari)Go (1537 fork)batch import
browserfeaturegood first issuehacktoberfesttriage

Metriche repository

Star
 (30.564 stelle)
Metriche merge PR
 (Merge medio 11g 15h) (47 PR mergiate in 30 g)

Descrizione

Feature Description

k6/browser has no way to detect whether an element intersects the visible viewport. A CTA button can be attached, isVisible() === true, and clickable from k6's perspective, yet rendered below the fold so real users never see it — a silent failure on mobile/responsive sites.

Playwright exposes locator.isInViewport(ratio?) for exactly this case. We don't have an equivalent.

Computing the answer in userland from Locator.BoundingBox() + Page.ViewportSize() is tempting but wrong — it misses scrollable containers, CSS transforms, clip-path, iframes, and DPR/zoom. These are the cases that pushed Playwright off geometry math and onto IntersectionObserver.

Suggested Solution

locator.isInViewport(options?: { ratio?: number, timeout?: number }): Promise<boolean>

Implementation would mirror Playwright's approach — inject IntersectionObserver via Runtime.callFunctionOn — using the existing evalWithScript pattern already used by checkElementState, dispatchEvent, selectOption, etc.

Already existing or connected issues / PRs (optional)

Guida contributor