Playwright v1.60. Nowości

Playwright v1.60. Nowości
Wersja Playwright 1.60 przynosi solidną paczkę nowości, które mają ułatwić nam codzienne testowanie aplikacji internetowych. Twórcy skupili się zarówno na symulacji zaawansowanych akcji użytkownika, jak i na lepszej diagnostyce defektów oraz wygodniejszym zarządzaniu testami. Oto przegląd najważniejszych zmian.

Symulacja zewnętrznego Drag-and-Drop

Do tej pory testowanie stref upuszczania plików bywało uciążliwe. Nowa metoda locator.drop() pozwala zasymulować przeciągnięcie i upuszczenie plików lub danych ze schowka bezpośrednio z poziomu zewnętrznego systemu. Playwright wysyła pod maską zdarzenia dragenter, dragover oraz drop z syntetycznym obiektem DataTransfer w kontekście strony, co działa we wszystkich przeglądarkach i pozwala na sprawne testowanie obszarów uploadu.

Nagrywanie plików HAR bezpośrednio w Tracingu

Wersja 1.60 wprowadza natywne API do rejestrowania plików HAR podczas śledzenia za pomocą funkcji tracing.startHar() oraz tracing.stopHar(). Oferują one te same opcje filtrowania adresów URL, trybów i zawartości co tradycyjne recordHar. Co ważne, dzięki wykorzystaniu mechanizmu Disposable, możemy w prosty sposób kontrolować cykl życia nagrania za pomocą bloku await using, a plik HAR zostanie automatycznie sfinalizowany, gdy zmienna wyjdzie poza zasięg.  

Aria Snapshots 

Aria Snapshots zyskują na sile, ponieważ metoda expect(page).toMatchAriaSnapshot() działa teraz bezpośrednio na poziomie całego obiektu Page. Odpowiada to asercji na elemencie body. Dodatkowo w funkcjach locator.ariaSnapshot() oraz page.ariaSnapshot() pojawiła się nowa opcja boxes. Po jej włączeniu do snapshotu dopisywane są współrzędne i wymiary elementów, co bywa użyteczne przy współpracy z modelami AI.  

Natychmiastowe przerywanie testów

Zdarza się, że w trakcie wykonywania hooka, fixture czy obsługi routingu wykryjemy defekt krytyczny, przez który dalsze kroki nie mają sensu. Nowa metoda test.abort() pozwala natychmiast przerwać wykonywany test i opcjonalnie przekazać komunikat wyjaśniający przyczynę awarii. Warto z niej korzystać zawsze wtedy, gdy wykryjemy nieodwracalny defekt i chcemy natychmiast oznaczyć test jako oblany.  

Usprawnienia w lokalizatorach i asercjach

W metodach lokalizujących po roli dodano opcję description, która pozwala na dopasowanie elementu po jego dostępnym opisie. Z kolei asercja badająca style CSS zyskała opcję pseudo, dzięki czemu bez problemu wyciągniemy computed styles z pseudo-elementów przed lub po danym obiekcie. Zmiany dotknęły też wizualnego debugowania, ponieważ metoda locator.highlight() pozwala teraz przekazać własny styl inline do nakładki wyróżniającej, a nowa funkcja page.hideHighlight() służy do szybkiego czyszczenia wszystkich podświetleń.  

Obsługa sieci i cyklu życia stron

W kontekście sieciowym trzeba wspomnieć o metodzie webSocketRoute.protocols(), która zwraca podprotokoły WebSocket żądane przez stronę. Ponadto obiekt BrowserContext lustrzanie odbija teraz zdarzenia cyklu życia powiązanych z nim stron, co pozwala na nasłuchiwanie zdarzeń takich jak pobieranie plików, operacje na ramkach czy zamykanie i ładowanie stron bezpośrednio z poziomu kontekstu. Dodatkowo funkcja browserType.connectOverCDP() oferuje nową flagę noDefaults, która wyłącza domyślne nadpisywanie ustawień Playwrighta w głównym kontekście, dzięki czemu podpięcie się pod codzienną przeglądarkę użytkownika nie zaburza jej stanu.  

Łatwiejsza diagnostyka i raportowanie defektów

Utrzymanie testów i analiza defektów stają się prostsze. Właściwość consoleMessage.location() zwraca teraz czytelne właściwości linii i kolumny, zastępując dotychczasowe, przestarzałe pola. Identycznie działa nowa metoda webError.location(). Pojawiło się też pole testInfoError.errorContext, które automatycznie dostarcza dodatkowe dane diagnostyczne w momencie wywrotki testu, na przykład snapshot ARIA z momentu awarii asercji. Sam HTML Reporter oraz Trace Viewer również doczekały się poprawek; polecenie do pokazywania raportów akceptuje teraz bezpośrednio pliki ZIP bez konieczności ich wcześniejszego rozpakowywania, a w panelu sieciowym Trace Viewera pojawił się wygodny przełącznik formatowania dla treści żądań i odpowiedzi JSON oraz formularzy.  

Porządki w kodzie 

Wersja 1.60 to także czas na usunięcie przestarzałych metod. Z kodu zniknęły funkcje pobierania referencji ARIA na rzecz standardowego pipeline'u snapshotów. Usunięto również przestarzałą opcję handle w metodach BrowserContext.exposeBinding() oraz Page.exposeBinding(), opcję konfiguracji loggera przy połączeniach na rzecz tracingu oraz stare opcje ścieżki i rozmiaru wideo, które zostały w pełni zastąpione przez dedykowany mechanizm nagrywania filmów. Zmieniono także reguły uruchamiania testów; runner zgłosi teraz defekt, jeśli konfiguracja spróbuje nadpisać stałą fixture lub gdy zadeklarujemy zerową bądź ujemną liczbę workerów.

Aktualizacja silników przeglądarek

Na koniec pojawia się tradycyjne podbicie wersji przeglądarek, na których Playwright wykonuje testy. Najnowsze wydanie bazuje na Chromium 148, Mozilla Firefox 150 oraz WebKit 26.4. Całość została dodatkowo zweryfikowana pod kątem stabilnych kanałów Google Chrome 147 oraz Microsoft Edge 147.  

Źródła:
https://playwright.dev/docs/release-notes

To powinno Cię zainteresować