Playwright v1.62

Playwright v1.62
Test komponentu ze stanem i logiką w jednym pliku po pół roku niemal zawsze staje się nie do ogarnięcia. Wersja 1.62 narzędzia Playwright rozdziela component testing na dwa osobne elementy. To główna nowość. Poza nią dostajemy zrzuty ekranu w formacie WebP, przerywanie akcji w trakcie wykonania i garść porządków przy uruchamianiu testów.

Nowy podział w testowaniu komponentów

Do tej pory w jednym teście łączono dwa zadania: przygotowanie stanu komponentu oraz sprawdzanie jego działania. Wersja 1.62.1 wprowadza tu wyraźny podział. Komponent osadzony w konkretnym scenariuszu – z ustalonymi właściwościami, danymi testowymi czy dostawcami kontekstu – tworzy osobny byt, określany jako "story", działający na dedykowanej stronie ("gallery"), za której udostępnienie odpowiadamy sami.

Do testu trafia nowa funkcja pomocnicza. Przechodzi ona do gallery i ładuje wybraną story po jej ID, zwracając uchwyt do elementu osadzonego w jej korzeniu. Przy użyciu tego uchwytu da się potem odświeżyć komponent z nowymi właściwościami lub go usunąć – bez wychodzenia z testu.

Ta zmiana wykracza daleko poza dodanie nowej funkcji; modyfikuje samą logikę tworzenia testów. Definicja scenariusza przestaje być sklejona z kodem sprawdzającym. W projektach z rozbudowaną bazą testów komponentowych zmiana wymusi realny refaktor części z nich.

Przerywanie akcji w trakcie wykonywania

Wywoływane akcje oraz oczekujące sprawdzenia można od teraz przerwać w dowolnej chwili z zewnątrz. Przydaje się to w testach z logiką warunkową. Zamiast czekać na upłynięcie całego limitu czasu, można po prostu zrezygnować z czekania na dany element, gdy sytuacja na stronie ulegnie zmianie.

Trzeba tylko uważać na jeden szczegół: ręczne przerwanie nie eliminuje domyślnego timeoutu, a jedynie go uzupełnia. Żeby jedynym powodem zatrzymania było własne polecenie, wbudowany limit czasu trzeba wyłączyć osobną opcją.

WebP w zrzutach ekranu

Zarówno zrzuty wzorcowe do porównań wizualnych, jak i zwykłe zrzuty ekranu da się od teraz zapisywać w formacie WebP. W testach wizualnych kompresja działa bezstratnie, bo najważniejsza jest wierność obrazu, a nie rozmiar pliku. Przy pojedynczych zrzutach można już jednak świadomie zrezygnować z części jakości na rzecz mniejszego rozmiaru. Sprawdzi się to przy załącznikach do raportów, gdy trzeba oszczędzać miejsce na dysku w CI.

Trzy zmiany w uruchamianiu testów

Twórcy własnych narzędzi do raportowania zyskują nowy hook, działający przed właściwym przebiegiem testów. Da się w nim oznaczyć wybrane testy jako pominięte, zanim jeszcze wystartują. 

Inaczej można też obsłużyć powtórki. Do tej pory nieudany test powtarzał się od razu na pierwszym wolnym stanowisku roboczym, w trakcie trwania reszty zestawu. Teraz wszystkie ponowne próby da się przenieść na sam koniec i wykonać sekwencyjnie. Flaky test nie obciąża wtedy zasobów podczas głównego przebiegu i nie wprowadza szumu do raportów.

Drobna zmiana dotyczy też raportu HTML. Grupowanie plików można ustawić raz na stałe w pliku konfiguracyjnym, zamiast przełączać je za każdym razem w interfejsie.

Mniejsze zmiany

Stan sesji (storage state) można teraz zapisywać razem z wirtualnymi passkeys. Dzięki temu logowania przez klucze dostępu nie trzeba odtwarzać od zera w każdym nowym kontekście przeglądarki. Akcje na elementach da się pozbawić automatycznego przewijania do widoku, gdy nie jest ono potrzebne. Odpowiedzi z API zwracają też szczegółowe dane o czasie ładowania zasobów, a funkcje przekazywane do wykonania w przeglądarce czy skryptach startowych nie wymagają już ręcznej konwersji na tekst.

Samo zaplecze narzędziowe również doczekało się zmian. Serwer Playwright MCP oraz CLI wchodzą teraz w skład standardowej instalacji. Nie trzeba dodawać ich jako osobnej zależności, żeby podpiąć agenta AI pod przeglądarkę.

Bezpieczeństwo i wsparcie platform

Schowek systemowy w trybie headless nie jest już współdzielony z systemem operacyjnym. Testy operujące na schowku w przeglądarce nie odczytają ani nie nadpiszą danych skopiowanych na maszynie, która je uruchamia. Zmiana podnosi przede wszystkim stabilność środowisk CI, gdzie równoległe procesy mogły wcześniej wchodzić sobie w drogę.

Wraz z tym wydaniem kończy się wsparcie dla Debiana 11 – osoby budujące na nim testy muszą zaplanować migrację środowiska.

Wersje silników w tej aktualizacji to Chromium 151.0.7922.34 (oraz stabilne Google Chrome 151 i Microsoft Edge 151), Mozilla Firefox 153.0 i WebKit 26.5.

Co obecnie sprawia Wam największy kłopot w testach Playwright?
Co obecnie sprawia Wam największy kłopot w testach Playwright?
33.33 %
Utrzymanie rozrośniętych testów komponentowych
33.33 %
Męczące i zasobożerne flaky tests w trakcje przebiegu zestawu
0 %
Zbyt długa praca testów z powodu czekania na timeouty
33.33 %
Duży rozmiar artefaktów i raportów po wizualnych testach
Łącznie głosów: 3
Źródła:
https://playwright.dev/docs/release-notes

To powinno Cię zainteresować