A screenshot diff can't accept a UI change for you: a task template with visual reference, test plan and reviewer verdict A developer published a task-template workflow for handing UI changes to coding agents that pairs an automated screenshot diff with a human reviewer verdict, arguing that a pixel diff is a valid test but not a valid acceptance decision. The worked example runs headless Chrome and pixelmatch 7.1.0 across three toast states at 375 px and 1280 px with a 0.5% changed-pixel threshold, and shows two one-line CSS deviations producing different failure signatures — a dropped two-line clamp failing the long-message state at 20.89% and 5.17% changed pixels, versus a padding change caught elsewhere. The writeup also flags that headless Chrome will not lay out a 375 px window, so narrow screenshots must be rendered in a fixed-width frame and cropped. Teams handing UI changes to coding agents often add a screenshot diff to the acceptance criteria. The thinking goes: the agent can't judge whether the result looks right, so let pixels decide. That's half right. A diff is a good test, but it's a bad verdict. This tutorial builds a small, real example to show where the line is. It has a task template with a visual reference, a test plan that includes an automated screenshot diff, and a reviewer verdict. Then it runs a worked handoff with two implementations of the same change. The component and the task are invented. The diff script and every number in it are real, run with headless Chrome and pixelmatch 7.1.0. Drafted with AI assistance and reviewed by hand. A "Draft saved" toast at the bottom of the screen. The designer's reference covers three states a short message, a long message, and a message with an Undo action at two widths, 375 px and 1280 px. The long message must stop at two lines with an ellipsis. The preparer writes this before anyone runs an agent: T-512 "Draft saved" toast: new layout Visual reference reference/toast.html, approved by: design Mira , 2026-10-06 States: default, long, undo Widths: 375, 1280 Exact: colours, radius, padding, Undo placement Rule: message clamps at 2 lines, ellipsis, at every width Test plan Automated runner attaches output - unit: toast renders each state - visual: node check.mjs