Visual regression testing

시각 회귀 테스트

Compare earlier and current screenshots to find unintended visual changes.

···
html
<div class="stage"><div class="title">VISUAL REGRESSION</div><div class="canvas"><div class="compare"><div class="screen base"><div class="nav"></div><div class="card"></div><div class="card"></div></div><div class="screen current"><div class="nav"></div><div class="card shifted"></div><div class="card"></div></div><div class="wipe"></div></div><div class="caption">baseline <span>← compare →</span> current</div></div></div>
css
.stage{width:min(94vw,820px);height:min(88vh,330px);box-sizing:border-box;padding:clamp(9px,2.4vmin,18px);border:1px solid var(--line);border-radius:13px;background:var(--surface);display:flex;flex-direction:column;gap:clamp(7px,2vmin,14px);font:600 clamp(12px,2.5vmin,16px)/1.28 "Pretendard Variable",Pretendard,-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo",sans-serif;color:var(--fg);overflow:hidden}.title{color:var(--accent);letter-spacing:.035em;flex:none}.canvas{position:relative;flex:1;min-height:0;display:flex;align-items:center;justify-content:center}.muted{color:var(--muted)}.mono{font-family:ui-monospace,SFMono-Regular,monospace}.box{border:1px solid var(--line);border-radius:8px;background:var(--bg);padding:clamp(5px,1.4vmin,12px);text-align:center}.active{border-color:var(--accent)!important;color:var(--accent)!important;background:color-mix(in srgb,var(--accent) 12%,var(--surface))!important}.canvas{flex-direction:column;gap:clamp(7px,2vmin,12px)}.compare{position:relative;width:min(90%,400px);height:70%;min-height:95px;border:1px solid var(--line);border-radius:6px;overflow:hidden}.screen{position:absolute;inset:0;padding:9px;background:var(--bg)}.screen.current{clip-path:inset(0 0 0 50%);animation:reveal 3s ease-in-out infinite alternate}.nav{height:18%;background:var(--line);border-radius:3px;margin-bottom:8px}.card{width:72%;height:18%;border:2px solid var(--accent);border-radius:4px;margin:6px 0}.shifted{transform:translateX(10px);border-color:var(--accent-3)}.wipe{position:absolute;top:0;bottom:0;left:50%;width:2px;background:var(--accent);animation:slide 3s ease-in-out infinite alternate}@keyframes reveal{to{clip-path:inset(0 0 0 16%)}}@keyframes slide{to{left:16%}}.caption{display:flex;gap:8px;justify-content:space-between;width:min(90%,400px)}.caption span{color:var(--accent)}

Visual regression testing compares a screenshot with a baseline under the same conditions. It catches layout shifts, clipping, and missing elements that functional assertions can miss.

The demo slides between baseline and current layouts to expose a small offset. Fix fonts, viewport, time, and data to avoid noisy differences.

When to use

Use it after design system or responsive layout changes to catch visible regressions.

Open as page ↗