Episodio 4: di Robert a Waterloo, ON (luglio 2019)
Puntate precedenti
Se lavori su Blink, potresti conoscere web_tests (in precedenza LayoutTests).
web-platform-tests (WPT) è disponibile all'interno di web_test/external/wpt
. Il WPT è
il modo migliore per testare le funzionalità esposte al web così come vengono condivise con altre
tramite GitHub. Prevede due tipi principali di test: reftest e
testharness.js.
reftests esegue e confronta screenshot di due pagine. Per impostazione predefinita, gli screenshot
vengono eseguite dopo l'attivazione dell'evento load
. se aggiungi una classe reftest-wait
all'elemento <html>
, lo screenshot verrà acquisito quando il corso viene rimosso.
Se i test vengono disattivati, la copertura dei test sarà ridotta. Fai attenzione ai caratteri
screpolatura; Se possibile, utilizza il carattere Ahem
.
testharness.js è un framework JavaScript per testare qualsiasi cosa tranne il rendering. Quando scrivi i test testharness.js, presta attenzione alle tempistiche, e ricordati di ripulire lo stato globale.
Timeout irregolare e potenziali stati di fuga:
<script> promise_test(async t => { assert_equals(await slowLocalStorageTest(), "expected", "message"); localStorage.clear(); }); </script>
Un test migliore con timeout pulizia:
<meta name="timeout" content="long"> <script> promise_test(async t => { t.add_cleanup(() => localStorage.clear()); assert_equals(await slowLocalStorageTest(), "expected", "message"); }); </script>
Utilizza testdriver.js se hai bisogno dell'automazione, altrimenti non è disponibile sul web.
Puoi ricevere un gesto dell'utente da test_driver.bless
, generare
input attendibili con test_driver.action_sequence
e così via.
WPT fornisce anche alcune utili funzionalità lato server tramite i nomi dei file.
I test multiglobali (.any.js
e i suoi amici) eseguono gli stessi test in diversi
ambiti (window
, worker
e così via); .https.sub.html
richiede il caricamento del test
tramite HTTPS con il supporto della sostituzione lato server come indicato di seguito:
var anotherOrigin = "https://{{hosts[][www1]}}:{{ports[https][0]}}/path/to/page.html";
Alcune funzionalità possono essere abilitate anche nelle stringhe di query.
baz.html?pipe=sub|header(X-Key,val)|trickle(d1)
consente la sostituzione, aggiunge X-Key: val
alle intestazioni della risposta e ritarda di 1 secondo prima di rispondere. Cerca "pipe"
su web-platform-tests.org per ulteriori informazioni.
WPT può anche testare comportamenti che non sono ancora inclusi nelle specifiche; solo
assegna al test il nome .tentative
. Se hai bisogno delle API interne Blink (ad es.
testRunner
, internals
), esegui i test in web_tests/wpt_internal
.
Le modifiche apportate a WPT vengono esportate automaticamente in GitHub. Vedrai
commenti di un bot nel tuo CL. Anche le modifiche a GitHub introdotte da altri fornitori
importati continuamente. Per ricevere bug segnalati automaticamente quando nuovi errori
, crea un file OWNERS
in una sottodirectory in WPT:
# TEAM: your-team@chromium.org
# COMPONENT: Blink>YourComponent
# WPT-NOTIFY: true
emails-here-will-be-cc@chromium.org
Risorse aggiuntive
- Desiderano scoprire come i test vengono eseguiti su altri browser e quanto sono interoperabili la tua caratteristica? Utilizza wpt.fyi.
- Cerchi ulteriore documentazione sulle API, linee guida, esempi, suggerimenti e altro ancora? Visita il sito web-platform-tests.org.