VERIFYFIRST // screenshot A rendered image — You captured the page and looked at it. WHAT IT CAPTURES One frame's worth of pixels, at one viewport size, at one moment. WHAT IT CANNOT SEE - Time. A still frame cannot distinguish 'renders one frame then stops' from 'renders one frame correctly'. - Whether scripts ran at all, as opposed to running and producing this. - Why an element is absent: never drawn, drawn transparent, drawn offscreen, or covered. - Which typeface actually resolved, when the fallback is also a real font. - Whether an asset arrived slowly or was requested late. KNOWN FAILURES (6) NS-001 The compositor-free browser reports frozen animation as no animation reads as A screenshot shows the element static. Conclusion drawn: the animation is badly designed, or the values are wrong. actually requestAnimationFrame never fires because the headless browser has no compositor. Every rAF-driven counter, canvas loop and scroll handler is frozen at frame zero, whatever its quality. check let n=0; requestAnimationFrame(()=>n++); setTimeout(()=>console.log('rAF fired:', n), 1000) NS-002 A var assignment silently overwrites a hoisted function of the same name reads as A canvas is blank and unanimated. Conclusion drawn: a rendering or design problem. actually The file already used `var start` as a timestamp. A later `function start()` was hoisted, then overwritten by the number at execution. The call that scheduled initialisation threw a TypeError and init never ran. The element sat at its untouched default size with zero painted pixels. check Read the element's backing store, not its appearance: canvas.width/height still at the 300x150 default means resize() never ran. NS-004 A relative font URL resolves one directory too deep and fails into a plausible fallback reads as Text renders in a serif. Conclusion drawn: the font loaded. actually A stylesheet at /assets/fonts.css requesting url('assets/fonts/x.woff2') resolves to /assets/assets/fonts/x.woff2 and 404s. The browser substitutes a system serif without complaint. check document.fonts.check('1em "Family Name"') or a 404 on the font path in the network log. NS-009 Assets are not slow, they are queued behind synchronous work reads as Images take seconds to appear. Conclusion drawn: the images are too large. actually Their request had not been issued. Heavy synchronous work earlier in the document held the main thread, and the fetch that would load them sat unsent behind it. check performance.getEntriesByType('resource') — startTime separates 'requested late' from 'transferred slowly'. NS-010 Reveal-on-scroll renders a blank page when the observer never fires reads as A page loads blank in an embedded or scripted context. Conclusion drawn: a rendering failure. actually Elements start at opacity 0 and are revealed by an IntersectionObserver callback. Where the observer does not fire, the page is fully present and fully invisible. check Compare element count against visible count: document.querySelectorAll('.reveal').length versus those with computed opacity above zero. NS-030 A transparent overlay takes the click the screenshot shows landing on the button reads as The screenshot shows the button unobscured and correctly placed, and the click was dispatched without error. Conclusion drawn: the button was clicked. actually A transparent element — a full-viewport modal backdrop, a zero-opacity loading layer, an oversized decorative pseudo-element — covers the button's centre point, and hit testing delivers the event to the topmost element at that coordinate. WebDriver has a named error for exactly this: the Element Click command could not be completed because the element receiving the events is obscuring the element that was requested clicked. check Ask the document what occupies the point: `const r = el.getBoundingClientRect(); document.elementFromPoint(r.left + r.width/2, r.top + r.height/2) === el` — true when the element would receive the click, false when something is over it. --- Full registry: https://verifyfirst.dev/registry.json This page: https://verifyfirst.dev/screenshot/ CC0-1.0. Every entry observed, none hypothetical.