VizDiff

VizDiff

vizdiff.io · 코딩

VizDiff는 Storybook을 위한 자체 호스팅 시각적 회귀 테스트 도구입니다. CI에서 컴포넌트를 캡처하고 픽셀 변화를 표시하며, 병합 전에 GitLab이나 GitHub에 상태 검사를 올립니다.

VizDiff 미리보기

VizDiff 소개

What Is VizDiff

VizDiff는 코드 리뷰만으로는 놓치는 인터페이스 변화를 잡아냅니다. 이미 있는 Storybook 설정 위에서 동작하고, 커밋마다 모든 스토리를 캡처한 뒤 새 이미지 묶음을 저장된 기준선과 비교합니다. 달라진 부분은 모두 표시되어 사람이 승인하거나 반려합니다.

이 도구는 자체 인프라에서 실행됩니다. 공유 클라우드 계정이 없고 스크린샷은 자신의 스토리지 버킷에 남습니다. 인터페이스를 제3자에게 넘기지 않는 시각적 회귀 테스트입니다. 팀이 이미 GitLab이나 GitHub에서 Storybook을 빌드한다면, VizDiff는 이사를 요구하는 대신 기존 파이프라인에 들어갑니다.

가장 큰 제약은 범위입니다. VizDiff는 Storybook 스토리를 이해하고 그 밖에는 거의 다루지 않으므로, 전체 페이지나 앱 흐름을 테스트하는 팀에는 더 넓은 도구가 필요합니다. 또한 직접 배포하고 운영하는 전제이므로, 아무것도 운영하고 싶지 않다면 후보에서 빠집니다.

Getting Started

  1. ID 제공자를 통해 VizDiff에 로그인합니다(GitLab에서는 Microsoft Entra나 SSO, GitHub에서는 GitHub OAuth).
  2. 프로젝트를 추가하고 해당 저장소용으로 생성된 Project Token을 복사합니다.
  3. 토큰을 VIZDIFF_PROJECT_TOKEN으로 CI 시크릿이나 변수에 저장합니다.
  4. 파이프라인에 업로드 단계를 넣고 Storybook 빌드 디렉터리(예: storybook-static)를 가리킵니다.
  5. 병합 요청을 열고 VizDiff에서 캡처된 스크린샷을 검토한 뒤 빌드를 승인하거나 반려합니다.

제품 정보

VizDiff의 요금, 지원 플랫폼, 성능을 한눈에 확인해 보세요.

무료 플랜예
유료 플랜$0 (open source under MIT)
플랫폼Web (self-hosted via Docker or Helm)
개발사vizdiff.io
카테고리코딩
출시일Mar 2023
최근 업데이트Jul 2025
웹사이트 방문 수N/A
웹사이트 글로벌 순위N/A
API 제공 여부예

추천 대상

이 도구가 가장 잘 맞는 사용자, 작업, 상황입니다.

사용자

  • Storybook에서 컴포넌트 라이브러리를 만들며 병합 전에 회귀를 잡고 싶은 프런트엔드 팀
  • 이미 CI 파이프라인을 돌리고 있고 별도 클라우드 계정을 늘리고 싶지 않은 GitLab이나 GitHub 사용자
  • 데이터 규정이 엄격해 스크린샷을 자사 인프라에 남겨야 하는 조직
  • 작은 컴포넌트 프로젝트에서 Docker 배포를 직접 띄울 수 있는 개인 개발자

작업

  • 코드가 메인 브랜치에 들어가기 전에 풀 리퀘스트에서 시각적 회귀를 잡기
  • 두 Storybook 빌드 사이에 어떤 스토리가 바뀌었는지 보고 하나씩 확인하기
  • 팀 전체가 비교할 승인된 스크린샷 기준선을 함께 유지하기
  • 승인되지 않은 인터페이스 변경을 가져오는 커밋에서 병합을 자동으로 막기

활용 상황

  • 디자인 시스템 컴포넌트를 다시 만들며 어떤 화면이 함께 흔들렸는지 정확히 보고 싶을 때
  • 작은 스타일 변경이 수십 개 스토리로 번지는, 계속 커지는 컴포넌트 라이브러리를 유지할 때
  • 리뷰어가 앱을 로컬에서 띄울 수 없는 분산 팀에서 인터페이스를 눈으로 확인할 때
  • 단위 테스트가 초록이어도 UI 결함이 계속 새는 릴리스 과정을 다잡을 때

주요 기능

Storybook Integration

VizDiff는 팀이 이미 작성한 스토리를 읽으므로 따로 유지할 테스트 모음이 없습니다. 파이프라인이 Storybook을 빌드하면 CLI가 결과를 업로드하고 도구가 스토리마다 스크린샷 한 장을 렌더링합니다. Storybook에 컴포넌트를 추가하면 별도 설정 없이 다음 비교에 나타납니다.

GitLab and GitHub Status Checks

이 도구는 GitLab 병합 요청에 커밋 상태를, GitHub 풀 리퀘스트에 검사를 올립니다. GitLab 시각적 테스트와 GitHub 시각적 테스트가 같은 흐름에 올라탑니다. 스크린샷이 렌더링되는 동안, 그리고 새로 생기거나 바뀐 것을 누군가 검토하는 동안 이 검사는 대기 상태로 남습니다. 바뀐 게 없으면 스스로 성공으로 바뀌므로, 일상적인 커밋은 아무도 손대지 않고 통과합니다.

Pixel-Level Diff Views

바뀐 스토리는 Old, New, Diff, 2-Up 네 가지 보기를 갖춘 비교 대화상자에서 열립니다. Diff 보기는 픽셀 차이 도구처럼 움직인 픽셀을 강조하고, 2-Up 모드는 두 버전을 나란히 놓습니다. 화살표 키로 다음으로 넘어갈 수 있어, 한 브랜치가 수십 개 스토리를 건드릴 때 특히 유용합니다.

Shared Baselines

승인된 스크린샷은 다음 빌드가 비교되는 기준선이 되고, 팀 전체가 같은 묶음으로 작업합니다. 스크린샷은 자신의 S3 호환 버킷에 저장되므로 참조 이미지가 인프라를 벗어나지 않습니다. 승인된 스크린샷이 있는 커밋에서 브랜치를 따면 비교가 의미를 유지하고, 전부 새 것으로 초기화되지 않습니다.

Self-Hosted Deployment

VizDiff는 MIT 라이선스 오픈 소스 프로젝트로 배포되며, api, worker, frontend 세 서비스로 PostgreSQL과 직접 마련한 버킷 위에서 돌아갑니다. 버전이 붙은 다중 아키텍처 이미지가 GitHub Container Registry에 올라가고, Docker Compose 파일과 Helm 차트가 모두 설치를 담당합니다. 공급업체 계정도, 사용자당 요금도 없습니다.

장단점

장점

  • 스크린샷과 기준선이 자신의 인프라에 남아 데이터 정책이 엄격한 팀에 맞습니다
  • 파이프라인이 이미 만드는 Storybook 빌드에서 동작하므로 도입은 거의 CI 수정만으로 끝납니다
  • 상태 검사가 병합을 스스로 막고, 바뀐 게 없으면 스스로 풀립니다
  • MIT 라이선스 오픈 소스로 사용자당 요금 협상이 필요 없습니다
  • UI 회귀 테스트가 뒤에서 조용히 돌아, 리뷰어는 뭔가 움직였을 때만 보면 됩니다
  • GitLab과 GitHub를 모두 지원하며 자체 호스팅 GitLab 인스턴스도 포함합니다

단점

  • 설치하려면 배포를 운영하고 유지해야 하므로 Docker, PostgreSQL, 스토리지 버킷이 필요합니다
  • Storybook 스토리만 테스트하므로 전체 페이지와 여러 단계 흐름은 범위 밖입니다
  • 브랜치에서 첫 실행은 기준선만 만들기 때문에, 초기 커밋은 모든 것을 새 것으로 보여 줍니다
  • 로그인이 외부 ID 제공자에 의존하므로 완전히 로컬인 팀은 연결할 것이 더 많습니다

자주 묻는 질문

CI 파이프라인이 돌 때마다 모든 Storybook 스토리를 캡처하고, 결과를 승인된 기준선과 비교해 어떤 것이 바뀌었는지 알려 줍니다. 그 변화는 병합 요청이나 풀 리퀘스트의 상태 검사로 나타나고, 거기서 동료가 승인하거나 반려합니다.