Synthetic fixture — not the UIProof product or a customer UI

Review pattern

A zero-data state that doesn't say what "zero" means

A "0 projects" list rendered as a bare box is indistinguishable from a loading or broken state. Adding an explicit heading, one explanatory sentence, and a create action removes the ambiguity.

What was actually checked

Viewport 1024×700 · Chromium (Chrome for Testing) 153.0.8010.12

Before: empty state does not explain its scopePASS

hasHeading: false · hasExplanationNode: false · hasCallToAction: false · explanatory text length: 0

After: empty state explicitly explains its scopePASS

hasHeading: true · hasExplanationNode: true · hasCallToAction: true · explanatory text length: 162 characters

Reproduction

node review-pattern-evidence/02-empty-projects-scope/capture.mjs (Node + playwright-core; loads the fixtures below over file:// and screenshots both states)

Fixture: review-pattern-evidence v1, scenario 02, captured 2026-09-17

What this doesn't prove

  • Synthetic, hand-built HTML/CSS fixture — not a capture of the live UIProof product or any real customer UI.
  • Assertion is limited to static DOM content (node presence + text length) in a single rendered snapshot; it does not evaluate real loading states, real API failures, or i18n.
  • No network, no server, no auth, no email, no persistence is exercised or claimed. The "0 projects" count is hard-coded markup, not queried data.

Provenance: Hand-authored standalone HTML/CSS fixture, executed once via a disposable Playwright-managed Chromium; not derived from a real customer UI. Editorially approved by Controller review on 2026-09-17.

Read more in the visual release review guide, or use the release-review checklist on your own release.