오픈 소스 / 크레이트 (Crate)

브라우저 테스터 (또는 웹 브라우저 테스트 도구)

"browser-tester"는 순수 Rust로 구현된, 실제 브라우저와 유사한 테스트 실행 환경입니다. 이 도구는 실제 브라우저를 실행하지 않고도 DOM(문서 객체 모델)과 이벤트 동작을 검증합니다.

결정적 런타임 환경. DOM 테스트.

이 패키지가 잘하는 것.

browser-tester는 전체 브라우저 렌더링 호환성 테스트보다는 예측 가능한 폼/UI 동작 테스트에 중점을 둡니다.

러스트(Rust) 언어만 지원하는 런타임.

이 프로그램은 단일 Rust 프로세스 내에서 실행되며, 외부 브라우저, WebDriver 또는 Node.js와 같은 추가적인 요소에 의존하지 않습니다.

결정적 실행.

반복적인 테스트를 위해 설계된 시스템으로, 가짜 시계, 예측 가능한 난수 생성, 그리고 명시적인 타이머 제어 API를 제공합니다.

DOM 및 이벤트 테스트.

실제 브라우저와 유사한 기능을 지원합니다. 여기에는 선택자 사용, 인라인 스크립트 실행, 이벤트 전파, 그리고 DOM 업데이트 기능이 포함됩니다.

빠르고 정확한 현장 피드백.

폼 기반 UI 테스트에서 빠른 피드백 주기를 제공하며, 오류 발생 시 오류 메시지는 선택자 및 예상/실제 값에 집중하여 표시합니다.

빠른 시작 안내.

HTML 코드를 기반으로 테스트 환경을 구축하고, 상호 작용을 수행하며, DOM 결과 값을 검증합니다. 작은 테스트 환경부터 시작하여 타이머 또는 모의 API를 추가하여 기능을 확장할 수 있습니다.

설치합니다.

cargo 명령어를 사용하여 'browser_tester' 패키지를 추가합니다.

기본 예시.

주요 API 기능.

"Harness Actions + Assertions"은 "행동과 주장을 결합하라" 또는 "행동과 주장을 활용하라" 정도로 번역될 수 있습니다. 문맥에 따라 "행동과 주장을 통해 효과를 창출하라"와 같이 좀 더 구체적인 의미로 해석될 수도 있습니다.

핵심 DOM 테스트 기능: `Harness::from_html`, `type_text`, `set_checked`, `click`, `submit` 함수와 텍스트, 값, 선택 상태, 존재 여부 등을 검증하는 유틸리티 함수들.

결정적 타이머.

비동기 동작을 가짜 시계(fake clock)를 사용하여 제어할 수 있습니다. `advance_time`, `advance_time_to`, `flush` 및 타이머 검사 API를 사용하여 시간을 예측 가능하게 조정할 수 있습니다.

내장된 모의 테스트 기능.

테스트의 독립성을 유지하기 위해 `set_fetch_mock`, `enqueue_confirm_response`, `enqueue_prompt_response` 함수를 사용하여 테스트 환경에 필요한 데이터 응답과 대화 결과를 주입하십시오.

추적 및 진단 기능.

테스트 실패 시 추적 로그를 활성화하고 이벤트/타이머 흐름을 추출합니다. 이벤트 순서 및 기본 동작 문제를 디버깅하는 데 유용합니다.

실행 정책

  • `eval` 함수는 보안 및 예측 가능성을 유지하기 위해 의도적으로 지원하지 않습니다.
  • 이 런타임은 실제 브라우저와의 100% 완벽한 호환성을 목표로 하는 것이 아니라, 실제 테스트 시나리오에 초점을 맞추고 있습니다.
  • 외부 네트워크 입출력(I/O)은 이번 작업의 범위를 벗어납니다. 테스트 커버리지를 확보하기 위해 가짜 데이터(mock)를 사용하십시오.

테스트 스위트에 필요한 추가 브라우저 API가 있다면, 문제 해결을 위해 최소한의 테스트 환경을 포함하여 이슈를 제기하고, 해당 기능의 범위와 우선순위에 대해 논의해 주세요.