에피소드 4: 로버트, 온타루 워털루 (2019년 7월)
이전 에피소드
Blink 관련 작업을 한다면 web_tests (이전 명칭: LayoutTests)를 알고 있을 것입니다.
web-platform-tests (WPT)는 web_test/external/wpt
내에 있습니다. WPT란
다른 사람들과 공유되므로 웹에 노출된 기능을 테스트하는 가장 좋은 방법입니다.
GitHub를 통해 애플리케이션을
확인할 수 있습니다 여기에는 두 가지 주요 테스트 유형인 reftests와
testharness.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://{{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로 내보내집니다. 보시는 바와 같이
봇의 댓글이 표시됩니다. 다른 공급업체의 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를 방문하세요.