Odcinek 4: Robert w Waterloo, ON (lipiec 2019 r.)
Poprzednie odcinki
Jeśli pracujesz nad Blink, być może znasz narzędzie web_tests (dawniej LayoutTests).
Web-platform-tests (WPT) funkcjonuje w ramach zasady web_test/external/wpt
. WPT to
preferowany sposób testowania funkcji dostępnych w internecie, ponieważ jest udostępniany innym
przez GitHuba. Wyróżnia 2 główne typy testów: reftests oraz
testharness.js.
Narzędzie reftests pozwala wykonać i porównać zrzuty ekranu dwóch stron. Domyślnie zrzuty ekranu
są wykonywane po wywołaniu zdarzenia load
; jeśli dodasz zajęcia reftest-wait
do elementu <html>
, zrzut ekranu zostanie wykonany po usunięciu zajęć.
Wyłączenie testów oznacza zmniejszenie zasięgu testów. Pamiętaj o kwestiach związanych z czcionkami
jędrność skóry; zawsze używaj czcionki Ahem
.
testharness.js to platforma JavaScript do testowania różnych rozwiązań. oprócz renderowania. Przy pisaniu testów testharness.js zwróć uwagę na czas, i pamiętaj o porządkowaniu na całym świecie.
Nieregularny limit czasu i stany wycieku:
<script> promise_test(async t => { assert_equals(await slowLocalStorageTest(), "expected", "message"); localStorage.clear(); }); </script>
Lepszy test przy długim czasie oczekiwania czyszczenie:
<meta name="timeout" content="long"> <script> promise_test(async t => { t.add_cleanup(() => localStorage.clear()); assert_equals(await slowLocalStorageTest(), "expected", "message"); }); </script>
Jeśli potrzebujesz automatyzacji, która jest niedostępna w internecie, użyj tagu testdriver.js.
W test_driver.bless
możesz wykonać gest użytkownika, wygenerować złożone,
zaufane dane wejściowe z parametrem test_driver.action_sequence
itp.
WPT udostępnia też kilka przydatnych funkcji po stronie serwera za pomocą nazw plików.
Testy obejmujące wiele regionów (.any.js
i jego znajomi) uruchamiają te same testy w różnych
zakresy (window
, worker
itp.); .https.sub.html
prosi o wczytanie testu
przez HTTPS z obsługą zastępowania po stronie serwera jak poniżej:
var anotherOrigin = "https://{{hosts[][www1]}}:{{ports[https][0]}}/path/to/page.html";
Niektóre funkcje można też włączyć w ciągach zapytań.
Funkcja baz.html?pipe=sub|header(X-Key,val)|trickle(d1)
umożliwia zastąpienie, dodaje element X-Key: val
do nagłówków odpowiedzi i opóźnia ją o 1 sekundę. Wyszukaj „fajki”
na web-platform-tests.org.
WPT można też testować zachowania, które nie są jeszcze uwzględnione w specyfikacji.
nadaj testowi nazwę .tentative
. Jeśli potrzebujesz wewnętrznych interfejsów API Blink (np.
testRunner
, internals
), przeprowadź testy w jednym miejscu (web_tests/wpt_internal
).
Zmiany wprowadzone w WPT są automatycznie eksportowane do GitHuba. Zobaczysz
komentarze bota na liście zmian. Zmiany na GitHubie wprowadzone przez innych dostawców również
importowanych stale. Aby otrzymywać automatycznie zgłaszane błędy w przypadku nowych błędów
zostaną zaimportowane, utwórz plik OWNERS
w podkatalogu w WPT:
# TEAM: your-team@chromium.org
# COMPONENT: Blink>YourComponent
# WPT-NOTIFY: true
emails-here-will-be-cc@chromium.org
Dodatkowe materiały
- Chcesz dowiedzieć się, jak testy przebiegają w innych przeglądarkach i jak współdziałają jest Twoja cecha? Użyj polecenia wpt.fyi.
- Szukasz więcej dokumentacji dotyczącej interfejsów API, wskazówek, przykładów, wskazówek itp.? Wejdź na stronę web-platform-tests.org.