<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/">
  <channel>
    <title>Visual Testing · 인재덕</title>
    <link>https://jared.lynskey.co.nz/ko/tags/visual-testing/</link>
    <description>소프트웨어 엔지니어링과 개발 조직 리더십에 대한 이야기. 성과 리뷰, 채용과 팀 확장, CI/CD, 데브옵스 모니터링, 에이전틱 AI. 서울에서 씁니다.</description>
    <generator>Hugo</generator>
    <language>ko</language>
    <copyright>© 2026 인재덕</copyright>
    <lastBuildDate>Wed, 28 Oct 2026 00:00:00 +1300</lastBuildDate>
    <atom:link href="https://jared.lynskey.co.nz/ko/tags/visual-testing/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Playwright로 하는 시각적 회귀 테스트: 소규모 팀일수록 필요한 이유</title>
      <link>https://jared.lynskey.co.nz/ko/posts/2024/2024-06-09-playwright-tests/</link>
      <guid isPermaLink="true">https://jared.lynskey.co.nz/ko/posts/2024/2024-06-09-playwright-tests/</guid>
      <pubDate>Sun, 09 Jun 2024 00:30:03 +0000</pubDate>
      <dc:creator>Jared Lynskey</dc:creator>
      <category>Visual Testing</category>
      <category>Small Teams</category>
      <category>UI Testing</category>
      <category>Playwright</category>
      <description>Playwright로 하는 시각적 회귀 테스트(비주얼 리그레션 테스트) 이야기. 스크린샷 비교가 작은 팀이 굴릴 수 있는 테스트 중 투자 대비 효과가 가장 좋은 이유를 정리했습니다.</description>
      <content:encoded><![CDATA[<p>CSS 한 줄을 고쳤을 뿐인데, 전혀 다른 페이지의 버튼이 조용히 무너져 있습니다. 테스트는 하나도 실패하지 않았고, 리뷰에서도 못 잡았고, 일주일 뒤 사용자 제보로 알게 되죠. 작은 팀이라면 다들 겪어본 버그일 겁니다.</p>
<p>교과서적인 답은 &ldquo;유닛 테스트를 더 쓰세요&quot;입니다. 저도 소규모 개발팀을 맡고 있지만, 솔직히 모든 컴포넌트와 레이아웃 상태에 유닛 테스트를 쓸 여유는 없습니다. 대신 기대는 게 비주얼 테스팅입니다. 페이지 스크린샷을 찍고, 정상 상태의 베이스라인과 비교해서, 움직이면 안 되는 픽셀이 움직이면 빌드에서 알려주는 방식이죠. 들어가는 노력을 생각하면 이만한 게 없습니다.</p>

<h2 class="relative group">스크린샷이 제 몫을 하는 이유
    <div id="스크린샷이-제-몫을-하는-이유" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%ec%8a%a4%ed%81%ac%eb%a6%b0%ec%83%b7%ec%9d%b4-%ec%a0%9c-%eb%aa%ab%ec%9d%84-%ed%95%98%eb%8a%94-%ec%9d%b4%ec%9c%a0" aria-label="앵커">#</a>
    </span>
    
</h2>
<p>매력은 &ldquo;안 써도 되는 것들&quot;에 있습니다. 비주얼 테스트는 개별 요소에 어서션(assertion)을 다는 게 아니라 페이지 전체를 통째로 판정합니다. 레이아웃 밀림, 색상 변화, 반응형 깨짐, 요소 겹침. 코드 리뷰에서 놓치기 쉽고 유닛 테스트로 커버하자면 고행이 되는 것들인데, 이게 전부 PR 안의 diff로 나타납니다.</p>
<p>유지보수도 거의 제로입니다. 베이스라인을 한 번 잡아두면 PR마다 자동으로 돌고, 매번 같은 결과가 나옵니다. 의도한 UI 변경이면 베이스라인을 업데이트하고 넘어가면 되고, 의도하지 않은 변경이면 diff가 PR에 떠 있으니 사이트 절반을 클릭하며 돌아다닐 필요가 없죠.</p>

<h2 class="relative group">유닛 테스트를 대체하지는 않습니다
    <div id="유닛-테스트를-대체하지는-않습니다" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%ec%9c%a0%eb%8b%9b-%ed%85%8c%ec%8a%a4%ed%8a%b8%eb%a5%bc-%eb%8c%80%ec%b2%b4%ed%95%98%ec%a7%80%eb%8a%94-%ec%95%8a%ec%8a%b5%eb%8b%88%eb%8b%a4" aria-label="앵커">#</a>
    </span>
    
</h2>
<p>유닛 테스트는 로직을, 스크린샷은 외관을 검증합니다. 결국엔 둘 다 필요합니다. 다만 작은 팀이라 처음 몇 시간을 어디에 쓸지 골라야 한다면, 셋업 시간 대비 커버리지는 비주얼 테스트가 최고입니다. 제 기준은 이렇습니다. 깨지면 정말 아픈 비즈니스 로직에는 유닛 테스트, 나머지는 비주얼 테스트.</p>
<p>시스템은 이게 전부입니다. 베이스라인, PR마다 뜨는 diff, 그리고 가끔 &ldquo;네, 의도한 변경 맞습니다&rdquo; 클릭 한 번. 그런 것치고는 기대 이상으로 많이 잡아줍니다.</p>

<h2 class="relative group">추가 정보 및 유용한 링크
    <div id="추가-정보-및-유용한-링크" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%ec%b6%94%ea%b0%80-%ec%a0%95%eb%b3%b4-%eb%b0%8f-%ec%9c%a0%ec%9a%a9%ed%95%9c-%eb%a7%81%ed%81%ac" aria-label="앵커">#</a>
    </span>
    
</h2>

<h3 class="relative group">Visual Testing with Playwright
    <div id="visual-testing-with-playwright" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#visual-testing-with-playwright" aria-label="앵커">#</a>
    </span>
    
</h3>
<p>Playwright 스냅샷 테스트 문서입니다. 전체 페이지나 특정 요소를 캡처해 베이스라인과 비교하는 방법, 의도적인 UI 변경 시 베이스라인을 갱신하는 방법을 다룹니다.
<a href="https://playwright.dev/docs/test-snapshots"  target="_blank" rel="noreferrer">Visual Testing with Playwright</a></p>

<h3 class="relative group">Best Practices for Testing with Playwright
    <div id="best-practices-for-testing-with-playwright" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#best-practices-for-testing-with-playwright" aria-label="앵커">#</a>
    </span>
    
</h3>
<p>데이터베이스를 건드리는 테스트에 대한 Playwright의 권장 사항입니다. 테스트 데이터 격리, 테스트 후 정리, 테스트 간 독립성 유지가 핵심입니다.
<a href="https://playwright.dev/docs/best-practices#testing-with-a-database"  target="_blank" rel="noreferrer">Best Practices for Testing with Playwright</a></p>
]]></content:encoded>
      <media:content url="https://jared.lynskey.co.nz/en/posts/2024/2024-06-09-playwright-tests/featured.jpg" medium="image" type="image/jpeg" />
    </item>
  </channel>
</rss>
