에피소드 4: 로버트 인 워털루, ON (2019년 7월)
이전 에피소드
Blink에서 작업하는 경우 web_tests (이전 명칭: LayoutTests)에 대해 알고 있을 수 있습니다. web-platform-tests (WPT)는 web_test/external/wpt
내에 있습니다. WPT는 웹 노출 기능을 테스트하는 데 선호되는 방법으로, GitHub를 통해 다른 브라우저와 공유됩니다. 이 테스트에는 두 가지 기본 테스트 유형인 reftests 및 testharness.js 테스트가 포함됩니다.
reftest는 두 페이지의 스크린샷을 찍어 비교합니다. 기본적으로 스크린샷은 load
이벤트가 실행된 후 캡처됩니다. <html>
요소에 reftest-wait
클래스를 추가하면 클래스가 삭제될 때 스크린샷이 생성됩니다.
테스트를 사용 중지하면 테스트 적용 범위가 감소합니다. 글꼴 관련 결함에 유의하세요. 가능하면 Ahem
글꼴을 사용하세요.
testharness.js는 렌더링을 제외한 모든 항목을 테스트하기 위한 JavaScript 프레임워크입니다. testharness.js 테스트를 작성할 때 타이밍에 주의를 기울이고 전역 상태를 정리해야 합니다.
불안정한 제한 시간 및 잠재적인 유출 상태:
<script> promise_test(async t => { assert_equals(await slowLocalStorageTest(), "expected", "message"); localStorage.clear(); }); </script>
긴 시간 초과와 정리로 더 나은 테스트:
<meta name="timeout" content="long"> <script> promise_test(async t => { t.add_cleanup(() => localStorage.clear()); assert_equals(await slowLocalStorageTest(), "expected", "message"); }); </script>
자동화가 필요한 경우 testdriver.js를 사용하세요. 다른 웹에서는 사용할 수 없습니다.
test_driver.bless
에서 사용자 동작을 가져오거나 test_driver.action_sequence
로 복잡하고 신뢰할 수 있는 입력을 생성하는 등의 작업을 할 수 있습니다.
WPT는 파일 이름을 통해 몇 가지 유용한 서버 측 기능도 제공합니다.
다중 전역 테스트 (.any.js
및 그 친구)는 다른 범위 (window
, worker
등)에서 동일한 테스트를 실행합니다. .https.sub.html
는 아래와 같은 서버 측 대체를 지원하는 HTTPS를 통해 테스트를 로드하도록 요청합니다.
var anotherOrigin = "https://{{hosts[][www1]}}:{{ports[https][0]}}/path/to/page.html";
일부 기능은 쿼리 문자열에서도 사용 설정할 수 있습니다.
baz.html?pipe=sub|header(X-Key,val)|trickle(d1)
는 대체를 사용 설정하고 응답 헤더에 X-Key: val
를 추가하며 응답하기 전에 1초 지연합니다. 자세한 내용은 web-platform-tests.org에서 '파이프'를 검색하세요.
WPT는 아직 사양에 포함되지 않은 동작도 테스트할 수 있습니다. 테스트 이름을 .tentative
로 지정하기만 하면 됩니다. Blink 내부 API (예: testRunner
, internals
)가 필요한 경우 web_tests/wpt_internal
에 테스트를 배치하세요.
WPT 변경사항은 GitHub로 자동으로 내보내집니다. CL에서 봇의 주석을 볼 수 있습니다. 다른 공급업체의 GitHub 변경사항도 지속적으로 가져옵니다. 새 실패를 가져올 때 자동으로 신고되는 버그를 수신하려면 WPT의 하위 디렉터리에 OWNERS
파일을 만듭니다.
# TEAM: your-team@chromium.org
# COMPONENT: Blink>YourComponent
# WPT-NOTIFY: true
emails-here-will-be-cc@chromium.org
추가 리소스
- 다른 브라우저에서 테스트가 어떻게 실행되는지, 기능이 얼마나 상호 운용되는지 알고 싶으신가요? wpt.fyi를 사용합니다.
- API, 가이드라인, 예시, 팁 등에 대한 문서를 더 찾고 계신가요? web-platform-tests.org를 방문합니다.