Communitygithub.com

Vincenius/wwebdev

wweb.dev 페이지를 빌드하고 서빙하여 실제 브라우저에서 렌더링된 화면으로 변경 사항을 검증합니다.

wwebdev란 무엇인가요?

이 스킬은 정적 Astro 사이트(wweb.dev)를 빌드하고 로컬 서버로 제공한 후, 실제 브라우저를 통해 수정된 내용이 올바르게 렌더링되는지 확인하는 과정을 자동화합니다. 정적 사이트이지만 React 'islands'가 포함되어 있어 브라우저에서 JavaScript가 실행된 후의 최종 UI 상태를 검증하는 것이 중요합니다. 로컬 서버를 실행한 후, Playwright-core를 이용해 시스템 크롬을 headless 모드로 제어하며 페이지를 탐색하고 상호작용합니다. 특히 `client:visible` 방식으로 렌더링되는 Island 컴포넌트가 나타날 때까지 대기한 후, 생성 도구의 CSS 출력(injected style)이나 textarea의 HTML/CSS 코드를 확인하고, 다양한 뷰포트(1440px, ~480px)에서 스크린샷을 캡처합니다. 이는 Vite의 자산 인라인 제한, CSP 정책 등으로 인해 CLI나 단순 HTML 스냅샷만으로는 발견하기 어려운 오류를 실제 브라우저 환경에서 조기에 발견하는 데 효과적입니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Vincenius/wwebdev/tree/HEAD/.claude/skills/verify

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

wweb.dev 변경 사항 검증

완전 정적 Asto 사이트(React Islands 포함) — 검증은 빌드된 페이지를 브라우저에서 로드하고 하이드레이션된 Islands와 상호작용하는 것을 의미합니다.

빌드 + 서빙

yarn install          # 서버 의존성이 없는 경우 (server.mjs는 compression/express 필요)
yarn build            # 정적 빌드 → dist/ (TZ=UTC 포함)
yarn serve            # 프로덕션 서버 (http://localhost:4321, astro preview 아님)

node server.mjs는 Yarn PnP 관련 설정에서 직접 실패합니다 — 항상 yarn serve를 통해 실행하세요. 백그라운드에서 실행하고 curl -s -o /dev/null -w "%{http_code}" http://localhost:4321/<route>로 확인합니다.

페이지 구동하기

리포지토리에 Playwright가 없습니다. 임시 디렉토리에 playwright-core를 설치하고 시스템 Chrome을 사용하세요 (chromium.launch({ channel: 'chrome', headless: true })) — 브라우저 다운로드가 필요 없습니다. Islands는 client:visible이므로 Island가 렌더링한 선택자가 나타날 때까지 기다린 후 어설션하고, 애니메이션에는 ~1초의 시간을 줍니다.

생성 도구에 유용한 검사:

  • 주입된 <style> 출력의 계산된 스타일 (animation-name, position, size)
  • 복사 가능한 HTML/CSS 코드를 위한 textarea .inputValue()
  • 1440px 및 ~480px에서의 스크린샷 (여러 도구 사이드바가 모바일에서 column-reverse로 전환됨)

주의사항

  • 콘솔에 오류가 없어야 합니다. Vite 에셋 인라인은 비활성화되어 있습니다 (assetsInlineLimit: 0 in astro.config.mjs) — data-URI 폰트가 CSP font-src 'self'를 위반하기 때문입니다. data-URI CSP 오류가 다시 나타나면 해당 설정이 손실된 것입니다.
  • yarn test:parity는 test/baseline/ (프로덕션 HTML 스냅샷)이 필요하며 이는 체크인되지 않았습니다. 이 없으면 harness가 ENOENT 오류를 발생시킵니다. 어쨌든 브라우저 검증을 대체하지는 않습니다.

관련 스킬