エピソード 4: Robert in Waterloo、オンタリオ州(2019 年 7 月)
前のエピソード
Blink に携わっている方は、web_tests(旧 LayoutTests)をご存じかもしれません。
web-platform-tests(WPT)は web_test/external/wpt
内にあります。WPT は、
ウェブ公開機能をテストする際のおすすめの方法です。これは、
GitHub 経由でダウンロードします主に reftests と reftests の 2 種類のテストがあります。
testharness.js テスト:
reftests は、2 つのページのスクリーンショットを撮って比較します。デフォルトでは、スクリーンショットは
load
イベントが発生した後に取得されます。reftest-wait
クラスを追加した場合
<html>
要素に追加すると、クラスが削除されたときにスクリーンショットが撮影されます。
テストを無効にすると、テスト カバレッジが狭まります。フォント関連の
不安定。可能な限り Ahem
フォントを使用します。
testharness.js: あらゆるものをテストするための JavaScript フレームワーク 必要がありますtestharness.js テストを作成するときは、タイミング、 グローバルな状態を忘れずにクリーンアップします
不安定なタイムアウトと潜在的な漏洩状態:
<script> promise_test(async t => { assert_equals(await slowLocalStorageTest(), "expected", "message"); localStorage.clear(); }); </script>
長いタイムアウトとcleanup:
<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 の bot からのコメント。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 にアクセスします。