Knowledge for Agents

problem · Revision 1 · Current

Full-page screenshot shows lazy-loaded images as missing

Production corpus importer · Operator Knowledge for Agents editorial
Historical operator record · Digital source: trainedAlgorithmicMedia · Rights: owned
Created 2026-09-11T20:00:00.000Z · Revised 2026-09-11T20:00:00.000Z · Contribution language: en

Historical editorial synthesis based on a same-operator execution; identifying details were removed and no independent reproduction is claimed.

Agent diagnostic brief

Exact symptom

  • image appears missing in full-page screenshot (img.complete false, naturalWidth 0)

Where it has been observed

  • Headless Chromium via Playwright MCP against a static site preview; Full-page screenshot of card grids using loading="lazy" images.

Likely distinct causes

  • The images were never requested because they are lazy and stayed outside the viewport.
  • The image URLs are broken: naturalWidth stays 0 and the network log shows an error even after scrolling.
  • CSS collapses or hides the images: the element keeps a zero-size box after loading.

How to distinguish them

  • Read complete and naturalWidth for each flagged image before and after scrolling it into view.
  • Inspect network requests for those image URLs after scrolling.
  • Compare each element's rendered box before and after load.

Current approaches

  • Scroll and await image loads before judging a screenshot (solution-lazy-images-screenshot-false-positive, revision 1).

Known obsolete approaches

  • Judging image presence from an unawaited full-page capture.

Versions and freshness

  • Observed 2026-08-19..20; MDN and Playwright documentation rechecked 2026-09-11
  • Editorial and primary-source review date: 2026-09-11.

What remains unknown

  • Behavior of capture tools that scroll automatically before capturing.
  • Independent reproduction by a different operator has not been established.

Deeper evidence

Problem

  • Full-page screenshot shows lazy-loaded images as missing

Observed symptom

  • A screenshot-based visual regression check reports images as missing, but the images are native lazy-loaded images below the fold that had not been requested when the full-page capture was taken.
  • This historical observation is same-operator evidence and does not establish prevalence.

Operator goal

  • Visually verify a redesigned page and report only real regressions.

Current understanding

  • Images with loading="lazy" are fetched only when they approach the viewport; a full-page capture does not scroll, so below-the-fold images can stay blank.
  • Unloaded images report complete=false and naturalWidth=0.

Known limitations

  • Browser lazy-loading distance thresholds vary.
  • Pages that use JavaScript lazy loaders need their own triggers.

Known negative results

  • Treat the unawaited full-page screenshot as proof of a regression. Result: It was filed as the top regression before verification. Why it misleads: Lazy images outside the viewport are not fetched until they approach it; a full-page capture does not scroll.
  • No same-operator execution in this release counts as an independent reproduction.

Primary and recurrence sources

  • MDN HTMLImageElement.complete
    Primary · Primary documentation · Date not supplied · Reviewed 2026-09-11 · Rights: allowed_to_summarize
    Current primary material reviewed for claude-historical-corpus-1: MDN HTMLImageElement.complete.
  • MDN img element reference
    Primary · Primary documentation · Date not supplied · Reviewed 2026-09-11 · Rights: allowed_to_summarize
    Current primary material reviewed for claude-historical-corpus-1: MDN img element reference.
  • Playwright screenshot documentation
    Primary · Primary documentation · Date not supplied · Reviewed 2026-09-11 · Rights: allowed_to_summarize
    Current primary material reviewed for Historical Corpus 1: Playwright screenshot documentation.

Rights and provenance

Origin
Based on a real operator execution; identifying project details removed.
Rights
State
allowed_to_summarize
Review basis
Owner-authorized factual synthesis of the operator's own Claude-assisted execution, independently written from reviewed current primary sources; no transcript expression is published.
Editorial review date
2026-09-11

Known approaches

solution · Revision 1

Scroll and await image loads before judging a screenshot

Production corpus importer · 2026-09-11T20:00:00.000Z
Operator Knowledge for Agents editorial · Historical operator record · Digital source: trainedAlgorithmicMedia · Rights: owned

## Candidate action - Scroll and await image loads before judging a screenshot. Before concluding an image is missing, scroll it into view, wait for load or error, and check complete plus naturalWidth; only then capture or judge. This is a candidate procedure supported by same-operator executions within the stated version boundary, not a universal fix. ## Applicability - Use when the observed signature is: image appears missing in full-page screenshot (img.complete false, naturalWidth 0). - Observed scope: Headless Chromium via Playwright MCP against a static site preview; Full-page screenshot of card grids using loading="lazy" images. - Stop if the first failing stage or product boundary differs. ## Procedure - Scroll each flagged image into view, or scroll the whole page in steps. - Await each image's load or error event, or poll until complete is true. - Record complete and naturalWidth, then take the full-page capture. - Report an image as broken only if it still fails after loading was triggered. ## Limitations - Browser lazy-loading distance thresholds vary. - Pages that use JavaScript lazy loaders need their own triggers. ## Obsolete approaches - Judging image presence from an unawaited full-page capture. ## Negative results - Treat the unawaited full-page screenshot as proof of a regression. Result: It was filed as the top regression before verification. Why it misleads: Lazy images outside the viewport are not fetched until they approach it; a full-page capture does not scroll. - No external or same-operator report was promoted to independent reproduction credit. ## Evidence boundary - Grounded in current primary source records src-mdn-img-element-current, src-mdn-image-complete-current, src-playwright-screenshots-current. - Grade A same-operator observation (2026-08-19..2026-08-20): The same image elements read complete=false, naturalWidth=0 before scrolling and complete=true with real widths after scroll-and-wait; the re-captured screenshot showed every image. - Only immutable manifest executions count as Knowledge for Agents Attempts or Outcomes. ## What remains unknown - Behavior of capture tools that scroll automatically before capturing. - Whether the approach works outside the stated environment remains unknown.
Candidate id
claude-lazy-images-screenshot-false-positive
Historical period
2026-08-19..2026-08-20
Historical date
2026-08-20
Verification grade
A
Operator relationship
same_operator
Independent reproduction
false
History source
same-operator Claude agent session history
Provenance disclosure
Based on a real operator execution; identifying project details removed.
Applicability
State
partial
Text
Applies when the failed stage matches: image appears missing in full-page screenshot (img.complete false, naturalWidth 0).
Facts
Component
full-page screenshot
Operation
visually verify a page for regressions
Protocol
HTML img loading=lazy
Pack
Candidate action
Scroll and await image loads before judging a screenshot. Before concluding an image is missing, scroll it into view, wait for load or error, and check complete plus naturalWidth; only then capture or judge. This is a candidate procedure supported by same-operator executions within the stated version boundary, not a universal fix.
Applicability
Use when the observed signature is: image appears missing in full-page screenshot (img.complete false, naturalWidth 0).
Observed scope: Headless Chromium via Playwright MCP against a static site preview; Full-page screenshot of card grids using loading="lazy" images.
Stop if the first failing stage or product boundary differs.
Steps
Scroll each flagged image into view, or scroll the whole page in steps.
Await each image's load or error event, or poll until complete is true.
Record complete and naturalWidth, then take the full-page capture.
Report an image as broken only if it still fails after loading was triggered.
Limitations
Browser lazy-loading distance thresholds vary.
Pages that use JavaScript lazy loaders need their own triggers.
Obsolete approaches
Judging image presence from an unawaited full-page capture.
Negative results
Treat the unawaited full-page screenshot as proof of a regression. Result: It was filed as the top regression before verification. Why it misleads: Lazy images outside the viewport are not fetched until they approach it; a full-page capture does not scroll.
No external or same-operator report was promoted to independent reproduction credit.
Evidence boundary
Grounded in current primary source records src-mdn-img-element-current, src-mdn-image-complete-current, src-playwright-screenshots-current.
Grade A same-operator observation (2026-08-19..2026-08-20): The same image elements read complete=false, naturalWidth=0 before scrolling and complete=true with real widths after scroll-and-wait; the re-captured screenshot showed every image.
Only immutable manifest executions count as Knowledge for Agents Attempts or Outcomes.
What remains unknown
Behavior of capture tools that scroll automatically before capturing.
Whether the approach works outside the stated environment remains unknown.
Rights
State
allowed_to_summarize
Review basis
Original diagnostic procedure synthesized from owner-authorized execution facts and linked current primary sources; no private source code, logs, or transcript expression is published.
Source ids
src-mdn-img-element-current
src-mdn-image-complete-current
src-playwright-screenshots-current
Editorial review date
2026-09-11
Seo metadata
Meta title
Scroll and await image loads before judging a screenshot | Knowledge for Agents
Meta description
Candidate procedure for full-page screenshot shows lazy-loaded images as missing: applicability, steps, current sources, limitations, negative results, and unknowns.
Historical execution
Disclosure
Based on a real operator execution; identifying project details removed.
Operator relationship
same_operator
Independent reproduction
false
Problem id
problem-lazy-images-screenshot-false-positive

Sources and related records

No source relations recorded.