Skip to content

hkjang/GitFrame

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GitFrame CLI 🎥

웹 프로젝트를 자동으로 빌드·실행하고, YAML 시나리오에 따라 브라우저 동작을 검증한 뒤, 그 결과를 고화질 데모 영상으로 자동 패키징하는 개발자용 CLI 도구입니다.

License: Apache 2.0 Node.js Playwright FFmpeg

한국어 | English


🎬 데모 영상 예시 (Sample Videos)

아래는 GitFrame CLI로 실제 Go 프로젝트들에서 완전 자동으로 생성된 3분 분량의 데모 영상들입니다.

프로젝트 설명 바로가기
SQLON Operations Platform AI Database 통합 운영 플랫폼 — 18개 화면 플레이백 (세션 관리, 워크로드, 보안, DBA, Text2SQL 등) ▶️ 영상 보기
JAMYPG Operations Platform PostgreSQL NL2SQL 통합 운영 플랫폼 — 18개 화면 플레이백 (DBA 코파일럿, OpenMetadata, 품질 게이트 등) ▶️ 영상 보기
Vibe Coders Gateway AI 코딩 프록시 게이트웨이 — 18개 화면 플레이백 (MCP 라우팅, Red Team, 비용 대시보드 등) ▶️ 영상 보기
AutoForge Robotics 로보틱스 공정 제어 및 대시보드 — 로드맵 추적 및 자동화 모니터링 데모 ▶️ 영상 보기
AgeForge BioOS 노화 디지털 트윈 및 개입 설계 플랫폼 — 15개 뷰 순환 및 시뮬레이션 데모 ▶️ 영상 보기

모든 영상은 1440×900 해상도, 30fps, 한글 자막 포함 / 별도의 화면 캡처 프로그램 없이 GitFrame 단 하나의 명령어로 생성되었습니다.


🚀 GitFrame이란?

GitFrame은 웹 프로젝트를 자동으로 실행하고, 정의된 브라우저 시나리오(YAML)에 따라 웹 앱의 동작을 테스트하고 검증하며, 그 과정을 데모 영상(MP4), 자막(SRT), 썸네일, 실행 리포트 및 Playwright Trace 등으로 자동 패키징해 주는 로컬 개발자용 CLI 도구입니다.

핵심 기능

  • 프로젝트 자동 감지 — Node.js, Python, Go, Java, Docker Compose 자동 분류 및 빌드/실행 명령 추천
  • 격리된 실행 환경 — 임시 워크스페이스에서 독립적으로 빌드·실행하여 원본 프로젝트에 영향 없음
  • Playwright 자동화 — 고해상도 헤드리스 브라우저로 시나리오 검증 및 화면 녹화 동시 수행
  • FFmpeg 비디오 렌더링 — 인트로 카드, 브라우저 녹화본, 아웃트로 카드를 자동 병합하여 MP4 최종 출력
  • 한글 자막 지원 — 각 시나리오 단계의 caption 필드가 자동으로 SRT 자막으로 컴파일
  • 진단 아티팩트 패키징 — HTML 리포트, Playwright Trace, 스크린샷, 결과 JSON을 일괄 생성

🛠️ 설치 및 설정 방법 (Installation)

1단계: 의존성 패키지 설치

npm install

2단계: Playwright 브라우저 바이너리 설치

npm run install-browsers

3단계: 시스템 라이브러리 설치 (최초 1회, Linux/WSL 환경)

# Playwright 필수 시스템 패키지 설치
npx playwright install-deps

# 한글 폰트 설치 (한글이 깨지지 않도록)
sudo apt-get install -y fonts-nanum fonts-noto-color-emoji

4단계 (선택): TypeScript 컴파일

npm run build

⚡ 빠른 시작 (Quick Start)

1. 기존 프로젝트에 GitFrame 초기화

cd /path/to/my-web-project
npx gitframe init

.gitframe/gitframe.yaml.gitframe/demo.yaml 샘플 파일이 자동 생성됩니다.

2. 프로젝트 설정 확인 (gitframe.yaml 수정)

project:
  language: "go"                        # node | python | go | java | compose | static
  install: "go mod download"
  build: "go build -o server ./cmd/app"
  start: "./server"
  port: 8080
scenarioFile: ".gitframe/demo.yaml"
outputDir: "output"
video:
  width: 1440
  height: 900
  fps: 30
intro:
  title: "My Web App"
  subtitle: "GitFrame Demo"
  duration: 3
outro:
  title: "Thank You"
  subtitle: "Generated by GitFrame"
  duration: 2
captions: true

3. 브라우저 시나리오 정의 (demo.yaml 수정)

start_url: "http://localhost:8080"
steps:
  - id: step-1
    action: goto
    url: "/dashboard"
    caption: "메인 대시보드로 이동합니다"

  - id: step-2
    action: pause
    milliseconds: 5000

  - id: step-3
    action: click
    selector:
      role: "button"
      name: "데이터 불러오기"
    caption: "데이터 로드 버튼을 클릭합니다"

  - id: final
    action: screenshot
    name: "finished"
    caption: "시나리오가 완료되었습니다"

4. 데모 영상 렌더링 실행

# WSL/리눅스 환경에서 라이브러리 경로 지정 후 실행
LD_LIBRARY_PATH=./lib/usr/lib/x86_64-linux-gnu node ./dist/cli/index.js render --output output

# macOS 등 일반 환경에서
npx gitframe render --output output

5. 결과 확인

output/
├── *.mp4            ← 최종 데모 영상
├── *-thumbnail.png  ← 대표 썸네일
├── subtitles.srt    ← 한글 자막
├── report.html      ← HTML 검증 리포트
├── result.json      ← 결과 JSON
└── trace.zip        ← Playwright Trace

💻 CLI 명령어 체계 (Commands)

gitframe
├── init      ← 프로젝트에 GitFrame 설정 파일 초기화
├── inspect   ← 프로젝트 언어/포트 자동 감지 및 추천 명령어 출력
├── run       ← 로컬 웹 서버 백그라운드 구동 + 헬스체크 대기
├── record    ← 헤디드 브라우저로 수동 조작을 녹화하여 YAML 시나리오로 변환
├── test      ← 시나리오 순수 검증 (영상 렌더링 없음, 빠른 반복 개발용)
├── render    ← 격리 빌드 → 플레이백 녹화 → FFmpeg 비디오 렌더링 풀파이프라인
├── create    ← 원격 Git 저장소 Clone 후 전 과정 원스톱 처리
├── clean     ← /tmp의 gitframe-* 격리 작업공간 일괄 청소
└── doctor    ← 의존성 도구(Git/Node/Playwright/FFmpeg/Docker) 설치 상태 진단

gitframe render 내부 파이프라인

[프로젝트 복사] → [의존성 설치] → [빌드] → [서버 구동] → [헬스체크]
      ↓
[Playwright 시나리오 플레이백] → [화면 녹화(WebM)] → [Playwright Trace 저장]
      ↓
[FFmpeg: WebM → MP4 트랜스코딩] → [인트로/아웃트로 생성] → [자막 컴파일]
      ↓
[최종 MP4 병합] → [썸네일 추출] → [HTML 리포트 생성] → [임시공간 청소]

📂 최종 출력 아티팩트 목록 (Artifacts)

출력 파일 설명 필수 여부
*.mp4 최종 데모 영상 (인트로 + 브라우저 녹화 + 아웃트로 병합)
raw/browser-recording.webm 브라우저 원본 녹화 비디오 파일
*-thumbnail.png 비디오 대표 썸네일 이미지
subtitles.srt 시나리오 caption 기반 한글 자막
result.json 실행 및 테스트 검증 상세 결과 리포트
scenario.json 실행에 활용된 YAML 시나리오의 JSON 변환 구조
report.html 시각화된 검증 결과 웹 리포트
logs/ 의존성 설치, 빌드, 서버 구동 통합 로그
screenshots/ 시나리오 내 캡처(또는 실패 시점) 이미지 디렉터리
trace.zip Playwright Trace Viewer 지원 추적 데이터 파일

📝 시나리오 예제 및 스키마

자세한 시나리오 작성 문법은 아래를 참고하세요.

지원 액션 (Actions)

액션 설명
goto URL로 이동
click 요소 클릭
fill 입력 필드에 텍스트 입력
pause 지정 시간(ms) 대기
assertVisible 요소가 화면에 표시되는지 검증
assertText 요소의 텍스트 내용 일치 여부 검증
waitFor 요소가 나타날 때까지 대기
screenshot 스크린샷 캡처 및 저장
scroll 지정한 픽셀 수만큼 브라우저 창 또는 특정 요소 스크롤
dragAndDrop 특정 요소를 시작점 좌표에서 끝점 좌표까지 마우스 드래그 앤 드롭 선택

우선순위 선택자 (Locator Strategy)

testId > role + name > label > placeholder > text > CSS 순서로 지능적으로 요소를 탐색합니다.


❓ 문제 해결 (Troubleshooting)

증상 원인 해결 방법
한글 폰트 깨짐 리눅스 환경에 나눔 폰트 미설치 sudo apt-get install -y fonts-nanum
이모지가 □로 보임 Noto Color Emoji 폰트 미설치 sudo apt-get install -y fonts-noto-color-emoji
libnspr4.so 오류 WSL 환경 공유 라이브러리 누락 LD_LIBRARY_PATH=./lib/usr/lib/x86_64-linux-gnu node ./dist/cli/index.js render
drawtext FFmpeg 오류 FFmpeg 빌드 옵션에서 폰트 필터 미지원 GitFrame이 자동으로 단색 카드 모드로 폴백 처리

📄 라이선스 (License)

This project is licensed under the Apache License 2.0. See the LICENSE file for details.

About

GitFrame은 웹 프로젝트를 자동으로 실행하고, 정의된 브라우저 시나리오(YAML)에 따라 웹 앱의 동작을 테스트하고 검증하며, 그 과정을 데모 영상(MP4), 자막(SRT), 썸네일, 실행 로그 및 Playwright Trace 등으로 자동 패키징해 주는 로컬 개발자용 CLI 도구입니다.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages