Chromium Chronicle #4: WPT로 웹 플랫폼 기능 테스트

에피소드 4: 로버트, 온타루 워털루 (2019년 7월)
이전 에피소드

Blink 관련 작업을 한다면 web_tests (이전 명칭: LayoutTests)를 알고 있을 것입니다. web-platform-tests (WPT)는 web_test/external/wpt 내에 있습니다. WPT란 다른 사람들과 공유되므로 웹에 노출된 기능을 테스트하는 가장 좋은 방법입니다. GitHub를 통해 애플리케이션을 확인할 수 있습니다 여기에는 두 가지 주요 테스트 유형인 refteststestharness.js 테스트를 실행합니다.

reftests는 두 페이지의 스크린샷을 찍고 비교합니다. 기본적으로 스크린샷은 load 이벤트가 실행된 후 실행됩니다. reftest-wait 클래스를 추가하는 경우 <html> 요소에 추가하면 클래스가 삭제될 때 스크린샷이 촬영됩니다. 테스트를 중지하면 테스트 적용 범위가 줄어듭니다. 글꼴 관련 결함 가능하면 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://&#123;&#123;hosts[][www1]}}:&#123;&#123;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로 내보내집니다. 보시는 바와 같이 봇의 댓글이 표시됩니다. 다른 공급업체의 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를 방문하세요.