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.
Redakcja testerzy.pl