Episodio 4: por Robert in Waterloo, Ontario (julio de 2019)
Episodios anteriores
Si trabajas en Blink, es posible que conozcas web_tests (anteriormente, LayoutTests).
web-platform-tests (WPT) se encuentra dentro de web_test/external/wpt
. WPT es la
forma preferida de probar las funciones expuestas en la Web, ya que se comparten con otras
navegadores a través de GitHub. Tiene dos tipos principales de pruebas: reftests y
testharness.js.
Las pruebas de referencia toman y comparan capturas de pantalla de dos páginas. De forma predeterminada, las capturas de pantalla
se toman después de que se activa el evento load
si agregas una clase reftest-wait
al elemento <html>
, se tomará la captura de pantalla cuando se quite la clase.
Si inhabilitas las pruebas, disminuirá la cobertura de la prueba. Tenga en cuenta las fuentes
fragilidad; usa la fuente Ahem
cuando sea posible.
testharness.js es un framework de JavaScript para probar cualquier elemento. excepto la renderización. Cuando escribas pruebas testharness.js, presta atención al tiempo, y recuerda limpiar el estado global.
Tiempo de espera inestable y posibles estados filtrados:
<script> promise_test(async t => { assert_equals(await slowLocalStorageTest(), "expected", "message"); localStorage.clear(); }); </script>
Una prueba mejor con tiempos de espera prolongados y limpieza:
<meta name="timeout" content="long"> <script> promise_test(async t => { t.add_cleanup(() => localStorage.clear()); assert_equals(await slowLocalStorageTest(), "expected", "message"); }); </script>
Usa testdriver.js si necesitas automatización, que no estará disponible en la Web.
Puedes obtener un gesto del usuario de test_driver.bless
, generar
entradas confiables con test_driver.action_sequence
, etcétera
WPT también proporciona algunas funciones útiles del servidor por medio de nombres de archivos.
Las pruebas multiglobal (.any.js
y sus amigos) ejecutan las mismas pruebas en diferentes
alcances (window
, worker
, etc.); .https.sub.html
solicita que se cargue la prueba.
a través de HTTPS con soporte de sustitución del servidor, como se muestra a continuación:
var anotherOrigin = "https://{{hosts[][www1]}}:{{ports[https][0]}}/path/to/page.html";
Algunas funciones también se pueden habilitar en las cadenas de consulta.
baz.html?pipe=sub|header(X-Key,val)|trickle(d1)
habilita la sustitución y agrega X-Key: val
.
a los encabezados de la respuesta y tarda 1 segundo antes de responder. Busca "canalizaciones"
en web-platform-tests.org para obtener más información.
WPT también puede probar comportamientos que aún no están incluidos en las especificaciones. Solo
Asígnale el nombre .tentative
a la prueba. Si necesitas las APIs internas de Blink (p.ej.,
testRunner
, internals
), coloca las pruebas en web_tests/wpt_internal
.
Los cambios realizados en WPT se exportan automáticamente a GitHub. Verás lo siguiente:
comentarios de un bot en tu CL. Los cambios de GitHub de otros proveedores también
se importan continuamente. Para recibir errores presentados automáticamente cuando se producen fallas nuevas
crea un archivo OWNERS
en un subdirectorio en WPT:
# TEAM: your-team@chromium.org
# COMPONENT: Blink>YourComponent
# WPT-NOTIFY: true
emails-here-will-be-cc@chromium.org
Recursos adicionales
- Deseas saber cómo se ejecutan tus pruebas en otros navegadores y qué tan interoperable es tu atributo? Usa wpt.fyi.
- ¿Buscas más documentación sobre APIs, lineamientos, ejemplos, sugerencias y mucho más? Visita web-platform-tests.org.