Chromium Chronicle #4: WPT を使用してウェブ プラットフォームの機能をテストする

エピソード 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 とその友だち)は、同じテストを異なる スコープ(windowworker など).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( testRunnerinternals など)では、テストを 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 にアクセスします。