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.