TL;DR

  • Paidwen은 모든 풀 리퀘스트(PR)에서 실제 브라우저로 앱을 실행하고 사용자 여정을 재현해, 깨진 여정이 있으면 병합을 차단하고 실패 영상과 원인을 제공하는 자동화 품질 보증(QA) 도구임.
  • 여정은 몇 줄의 YAML로 정의하며, Paidwen은 클릭·입력·페이지 내용을 확인하고 기준 브랜치와 비교함.
  • 앱은 compose 파일이나 Dockerfile에서 새 데이터베이스와 시드 스크립트를 사용해 실행하며, 결제·이메일·저장소·인공지능(AI) API는 기본적으로 로컬 모의 응답을 반환함.
  • 모든 새 커밋에서 여정을 다시 실행하며, 기준 브랜치에서도 실패하는 여정은 해당 풀 리퀘스트의 실패로 처리하지 않음.
  • 코드는 GitHub Actions 실행기 밖으로 전송되지 않으며, Paidwen 서버는 판정 문구와 영상 링크만 받음. 공개 저장소는 무료임.

풀 리퀘스트마다 실제 브라우저로 사용자 여정 재현

  • Paidwen은 풀 리퀘스트마다 앱을 열어 실제 사용자처럼 계정을 만들고 로그인한 뒤 양식을 입력함.
  • 기능이 깨지면 풀 리퀘스트를 차단하고 무엇이 깨졌는지 보여주는 영상을 제공함.
  • 예시 풀 리퀘스트에서는 송장 금액 정렬 여정이 실패함. 전체 7개 여정 중 6개 통과, 1개 실패로, ‘가장 큰 금액 먼저’를 누른 뒤 /invoices?sort=amount 페이지에 $5,936.40이 표시되지 않음.
  • 문제의 원인은 가장 큰 송장이 2페이지에 남아 있는 것으로 제시됨. 비밀 정보나 취약한 의존성이 추가되지는 않음.

YAML로 여정 정의

  • 여정은 몇 줄의 YAML로 작성하며, Paidwen은 브라우저에서 클릭하고 입력하고 페이지 내용을 읽은 뒤 기준 브랜치와 비교함.
  • 예시 여정은 로그인 페이지로 이동해 이메일과 비밀번호를 입력하고 로그인한 다음, 송장 페이지에서 ‘가장 큰 금액 먼저’를 선택하고 $5,936.40이 보이는지 확인함.
  • npx paidwen init은 각 공개 페이지에 대한 첫 여정을 작성하며, npx paidwen record는 클릭을 기록해 여정을 만듦.
  • 여정이 기준 브랜치에서도 실패하면 해당 풀 리퀘스트의 실패로 계산하지 않음.

에이전트가 판정을 읽고 수정

Claude Code, Codex, Cursor, Copilot 지원

  • Paidwen은 동일한 여정으로 에이전트와 개발자가 작성한 풀 리퀘스트를 검증함.
  • 에이전트의 풀 리퀘스트는 브랜치 접두사, 작성자, Co-Authored-By 문구를 바탕으로 식별함.
  • npx paidwen verdict는 최근 판정을 복사해 붙여넣기 쉬운 형태로 출력함.

저장소별 검증 대시보드

  • 대시보드는 모든 저장소의 모든 검증 기록을 보관하며, 각 행에 풀 리퀘스트 판정, 여정, 소요 시간, 작성한 에이전트를 표시함.
  • 월간 요약에는 검증된 풀 리퀘스트 수, 실패 수, 병합 전에 중단된 수, 에이전트가 작성한 비율이 표시됨.
  • 검증별 페이지에는 판정, 영상, 커밋, 워크플로 실행 기록이 포함됨.
  • 판정은 한 번의 클릭으로 에이전트에 붙여넣을 수 있으며, 월간 보고서에는 저장소별·주별 검증된 풀 리퀘스트와 절약된 검토 시간이 포함됨.

코드는 GitHub Actions 실행기 밖으로 나가지 않음

  • 코드와 앱, 새 데이터베이스, Chromium, 서명된 Paidwen 엔진은 GitHub Actions 실행기 안에서 동작하며, GitHub는 작업이 끝난 뒤 해당 머신을 폐기함.
  • Paidwen 서버가 받는 정보는 판정 문구와 영상 링크이며, 코드를 읽거나 저장하지 않음.
  • GitHub 앱은 저장소 코드를 읽을 수 있는 권한을 갖지 않음.
  • 실행기는 고정된 공개 키와 서명이 일치하지 않는 엔진을 거부함.
  • 새 기여자의 포크에서는 관리자가 첫 검증을 시작함.
  • 재현은 결정론적인 Playwright 스크립트로 수행하며, 재현 과정에 AI 모델은 사용하지 않음.

공개 저장소는 무료

  • GitHub 앱을 설치하고 워크플로와 paidwen.yml을 추가하면 다음 풀 리퀘스트에서 판정을 받을 수 있음.
  • 가격 안내: See pricing