원문 캡처 · github.com
원문 캡처 · github.com

Sedum은 자연어와 TypeScript를 함께 써 브라우저 테스트를 작성하고, 모델 호출 비용을 낮춰 모든 풀 리퀘스트(PR)에서 실행하도록 설계한 오픈소스 도구다. 현재 사전 알파(pre-alpha) 단계이며, 첫 알파 버전은 sedum-cli로 배포됐다.

테스트에서는 ai(...)에 “장바구니 링크를 클릭한다” 같은 문장을 전달해 페이지 요소를 찾고 조작한다. 나머지 코드는 일반 Playwright 코드로 작성할 수 있어 테스트 데이터 생성, API 호출, 보조 함수도 함께 쓸 수 있다. TypeScript 외에 코드 없이 문장을 나열하는 YAML 형식도 지원한다.

Sedum은 TypeSafe의 Jev 모델을 두 작업에만 사용한다고 설명한다. 문장이 가리키는 요소를 찾고, 페이지에서 특정 주장이 성립하는지 판단하는 일이다. 모델은 자유 형식 텍스트 대신 확률을 반환하며, 클릭·입력·대기와 테스트 판정 및 종료 코드는 Playwright에서 처리한다. 비밀번호와 토큰은 secret()으로 감싸면 입력에는 쓰이지만 모델에 전송되거나 보고서에 표시되지 않는다고 프로젝트 측은 밝혔다.

프로젝트 측이 제시한 비교에서는 20명 규모 팀이 하루 약 20회 실행하는 10단계 테스트 50개의 월 비용이 단계별 과금 플랫폼의 4,875달러와 비교해 Sedum에서 38~91달러로 추산됐다. 91달러는 캐시를 끈 경우의 Jev 공개 토큰 가격을 적용한 값이다. saucedemo.com의 17단계 결제 테스트는 캐시를 끄고 노트북 한 대에서 각각 다섯 번 실행해 Sedum 14초, 비교 대상 69초로 측정했다. 전체 측정 방법은 sedum.dev에서 확인할 수 있다. 이 수치는 프로젝트가 제시한 조건에 따른 비교다.

사용하려면 Node.js 20.19 이상과 TypeSafe API 키 또는 호환 제공자의 키가 필요하다. Linux와 macOS는 검증됐으며 Windows 지원은 실험 단계다. 테스트 형식은 1.0 이전에 바뀔 수 있다. 호환 제공자를 쓸 때는 TYPESAFE_BASE_URL과 TYPESAFE_API_KEY를 설정하고, 모델 이름이 기본값과 다르면 TYPESAFE_DEFAULT_MODEL도 지정한다.

실패한 테스트는 마크다운 보고서로 내보내 코딩 에이전트가 수정에 참고하도록 할 수 있다. 보고서에는 우선순위가 높은 문제, 테스트 문장과 파일·줄, 점수, 모델이 판단한 페이지 텍스트, 검토한 요소와 스크린샷 등이 담긴다. 페이지 텍스트는 신뢰할 수 없는 내용으로 표시된다고 프로젝트 측은 설명한다.

최근 추가된 기능은 TypeScript 테스트, 프로젝트 초기화, 병렬 실행과 샤딩, JUnit 보고서다. 0.1 알파에는 GitHub Action과 테스트 실행 전 애플리케이션을 시작하는 기능을 계획하고 있다. 목표를 제시하고 Sedum이 동작을 정하게 하는 목표 기반 테스트는 현재 YAML에서만 사용할 수 있다.

자세한 내용은 TypeScript 테스트와 YAML 형식, CI 실행 안내, 확률 기반 테스트, 개인정보 안내에서 확인할 수 있다. 소스 빌드와 보안 취약점 신고 방법은 CONTRIBUTING.md와 SECURITY.md에 안내돼 있다.