Épisode 4:Robert à Waterloo, Ontario (juillet 2019)
Épisodes précédents
Si vous travaillez sur Blink, vous connaissez peut-être web_tests (anciennement LayoutTests).
Le protocole web-platform-tests (WPT) se trouve dans web_test/external/wpt
. WPT est le
méthode privilégiée pour tester les fonctionnalités exposées sur le Web, car elles sont partagées avec d'autres
via GitHub. Il comporte deux principaux types de tests: reftests et
testharness.js.
reftests prend et compare des captures d'écran de deux pages. Par défaut, les captures d'écran
sont prises après le déclenchement de l'événement load
; si vous ajoutez une classe reftest-wait
à l'élément <html>
, la capture d'écran sera effectuée lorsque la classe sera supprimée.
Si les tests sont désactivés, la couverture des tests diminue. Gardez à l'esprit que les règles
desquamation ; utilisez la police Ahem
lorsque cela est possible.
testharness.js est un framework JavaScript permettant de tester tous les éléments à l'exception du rendu. Lorsque vous écrivez des tests testharness.js, faites attention au timing, et n'oubliez pas de nettoyer l'état global.
Délai d'inactivité irrégulier et fuite potentielle:
<script> promise_test(async t => { assert_equals(await slowLocalStorageTest(), "expected", "message"); localStorage.clear(); }); </script>
Un meilleur test avec un long délai d'inactivité et cleanup:
<meta name="timeout" content="long"> <script> promise_test(async t => { t.add_cleanup(() => localStorage.clear()); assert_equals(await slowLocalStorageTest(), "expected", "message"); }); </script>
Utilisez testdriver.js si vous avez besoin d'automatisations qui ne sont pas disponibles sur le Web.
Vous pouvez obtenir un geste de l'utilisateur à partir de test_driver.bless
, générer
entrées fiables avec test_driver.action_sequence
, etc.
WPT fournit également des fonctionnalités utiles côté serveur via des noms de fichiers.
Les tests multi-mondials (.any.js
et ses amis) exécutent les mêmes tests dans différents
les champs d'application (window
, worker
, etc.) ; .https.sub.html
demande le chargement du test.
via HTTPS avec une compatibilité de substitution côté serveur, comme ci-dessous:
var anotherOrigin = "https://{{hosts[][www1]}}:{{ports[https][0]}}/path/to/page.html";
Certaines fonctionnalités peuvent également être activées dans des chaînes de requête.
baz.html?pipe=sub|header(X-Key,val)|trickle(d1)
active la substitution, ajoute X-Key: val
aux en-têtes de la réponse, et retarde une seconde avant de répondre. Rechercher "pipes"
sur web-platform-tests.org pour en savoir plus.
WPT peut également tester des comportements qui ne sont pas encore inclus dans les spécifications.
Nommez le test .tentative
. Si vous avez besoin des API internes Blink (par exemple,
testRunner
, internals
), placez vos tests dans web_tests/wpt_internal
.
Les modifications apportées à WPT sont automatiquement exportées vers GitHub. Vous verrez
les commentaires d'un bot de votre CL. Les modifications GitHub apportées par d'autres fournisseurs sont également
est importée en continu. Pour recevoir les bugs automatiquement signalés en cas de nouveaux échecs
sont importés, créez un fichier OWNERS
dans un sous-répertoire dans WPT:
# TEAM: your-team@chromium.org
# COMPONENT: Blink>YourComponent
# WPT-NOTIFY: true
emails-here-will-be-cc@chromium.org
Autres ressources
- Vous voulez savoir comment vos tests s'exécutent sur d'autres navigateurs et dans quelle mesure ils sont interopérables. votre caractéristique ? Utilisez wpt.fyi.
- Vous recherchez plus de documentation sur les API, des consignes, des exemples, des conseils et plus encore ? Accédez à web-platform-tests.org.