Folge 4: von Robert in Waterloo, ON (Juli 2019)
Vorherige Folgen
Wenn Sie an Blink arbeiten, kennen Sie vielleicht web_tests (früher LayoutTests).
Web-Plattformtests (WPT) befinden sich in web_test/external/wpt
. WPT ist die
Testmethode für im Web sichtbare Funktionen, da diese Funktion mit anderen
über GitHub. Es gibt zwei Haupttypen von Tests: Reftests und
testharness.js-Tests.
Bei Reftests werden Screenshots von zwei Seiten erstellt und verglichen. Standardmäßig werden Screenshots
werden verwendet, nachdem das load
-Ereignis ausgelöst wurde. wenn Sie eine reftest-wait
-Klasse hinzufügen
<html>
hinzufügen, wird der Screenshot erstellt, sobald der Kurs entfernt wurde.
Deaktivierte Tests führen zu einer geringeren Testabdeckung. Achten Sie auf schrift- und
Flockigkeit Verwenden Sie nach Möglichkeit die Schriftart Ahem
.
testharness.js ist ein JavaScript-Framework zum Testen jeglicher Art außer dem Rendering. Achten Sie beim Schreiben von testharness.js-Tests auf das Timing, und denken Sie daran, den globalen Zustand zu bereinigen.
Unzuverlässiges Zeitlimit und potenzielle Statuslecks:
<script> promise_test(async t => { assert_equals(await slowLocalStorageTest(), "expected", "message"); localStorage.clear(); }); </script>
Besserer Test mit langer Zeitüberschreitung und Bereinigung:
<meta name="timeout" content="long"> <script> promise_test(async t => { t.add_cleanup(() => localStorage.clear()); assert_equals(await slowLocalStorageTest(), "expected", "message"); }); </script>
Verwenden Sie testdriver.js, wenn Sie Automatisierung benötigen, die im Web ansonsten nicht verfügbar ist.
Sie können über test_driver.bless
eine Nutzergeste abrufen, komplexe
vertrauenswürdige Eingaben mit test_driver.action_sequence
usw.
WPT bietet über Dateinamen auch einige nützliche serverseitige Funktionen.
Multi-globale Tests (.any.js
und seine Freunde) führen die gleichen Tests in unterschiedlichen
Umfänge (window
, worker
usw.); .https.sub.html
bittet um das Laden des Tests
über HTTPS mit serverseitiger Unterstützung für Substitutionen wie unten dargestellt:
var anotherOrigin = "https://{{hosts[][www1]}}:{{ports[https][0]}}/path/to/page.html";
Einige Funktionen können auch in Abfragestrings aktiviert werden.
baz.html?pipe=sub|header(X-Key,val)|trickle(d1)
aktiviert die Ersetzung und fügt X-Key: val
hinzu
zu den Headern der Antwort hinzu und verzögert die Antwort um eine Sekunde. Nach „Pipes“ suchen
auf web-platform-tests.org.
WPT kann auch Verhaltensweisen testen, die noch nicht in den Spezifikationen enthalten sind.
Benennen Sie den Test als .tentative
. Wenn Sie interne Blink APIs benötigen (z.B.
testRunner
, internals
), setze deine Tests in web_tests/wpt_internal
ein.
An WPT vorgenommene Änderungen werden automatisch nach GitHub exportiert. Sie sehen
von einem Bot in Ihrem Änderungsprotokoll. Die GitHub-Änderungen anderer Anbieter sind auch
kontinuierlich importiert. Um automatisch gemeldete Fehler zu erhalten, wenn neue Fehler auftreten
erstellen Sie eine OWNERS
-Datei in einem Unterverzeichnis in WPT:
# TEAM: your-team@chromium.org
# COMPONENT: Blink>YourComponent
# WPT-NOTIFY: true
emails-here-will-be-cc@chromium.org
Zusätzliche Ressourcen
- möchten wissen, wie Ihre Tests in anderen Browsern ausgeführt werden und wie sie interoperabel sind. Ihre Funktion ist? Verwenden Sie wpt.fyi.
- Suchen Sie nach mehr Dokumentation zu APIs, Richtlinien, Beispielen, Tipps und mehr? Rufen Sie web-platform-tests.org auf.