Playwright v1.61

Playwright v1.61
Po wydaniu wersji 1.60 twórcy Playwrighta nie zwalniają tempa. Wersja 1.61 jest wprawdzie mniejsza objętościowo, ale za to eliminuje ograniczenia, które dotąd potrafiły uprzykrzyć życie: logowanie przez passkeye, bezpośredni dostęp do pamięci przeglądarki czy zapisywanie ruchu na WebSocketach.

Wirtualny authenticator i passkeye (WebAuthn)

Logowanie oparte na passkeyach było do tej pory drogą przez mękę – wymagało fizycznego klucza (np. YubiKey) albo wsparcia ze strony systemu operacyjnego. Wersja 1.61 wprowadza wirtualny authenticator dostępny przez browserContext.credentials. Pozwala on zarejestrować passkey i odpowiadać na wywołania navigator.credentials.create() oraz navigator.credentials.get() wprost na stronie – bez zewnętrznego sprzętu i na wszystkich przeglądarkach. 

Funkcja działa na dwa sposoby: możemy wgrać do kontekstu klucz, który backend przygotował dla testowego użytkownika, wywołujemy credentials.create() z jego danymi, a potem credential.install(). Od tej chwili strona, która przy logowaniu sięga po navigator.credentials.get(), dostanie odpowiedź z naszym podstawowym passkeyem. Drugą opcją jest pozwolenie aplikacji zarejestrować passkey raz w teście przygotowawczym, odczytanie go przez credentials.get() i przekazanie gotowego tokenu do kolejnych testów. 

Bezpośredni dostęp do pamięci (Web Storage) 

Do dyspozycji dostajemy nowe API WebStorage, dostępne przez page.localStorage oraz page.sessionStorage, które pozwala na bezpośredni odczyt i zapis pamięci strony dla bieżącego originu. 

Zamiast obchodzić temat i pisać boilerplate za pomocą page.evaluate(), możemy po prostu wywołać setItem(), getItem() czy items(), żeby pobrać całą zawartość. To drobiazg, który wyraźnie ułatwia przygotowanie stanu aplikacji przed testem oraz weryfikację danych przechowywanych w przeglądarce. 

Nowości w obszarze sieci

Pojawiły się dwie zmiany, które warto odnotować:

  1. Wsparcie dla WebSocketów w śladach. To spora zmiana – nagrania HAR i Trace Viewer obsługują teraz żądania WebSocket. Wcześniej ten ruch wymykał się automatycznemu zapisowi, a teraz obraz komunikacji aplikacji z serwerem staje się kompletny.
  2. Spójność w API żądań. W API żądań (APIRequest) do obiektu odpowiedzi dodano metody apiResponse.securityDetails() oraz apiResponse.serverAddr(). To lustrzane odbicie znanych już z odpowiedzi przeglądarkowych response.securityDetails()response.serverAddr(). Do szczegółów certyfikatu i adresu serwera sięgamy teraz identycznie, niezależnie od tego, jak wysłaliśmy żądanie.

Przeglądarka i screencast

W browserType.connectOverCDP() doszła opcja artifactsDir. Wskazujemy w niej, gdzie mają trafić artefakty (ślady, pobrane pliki) przy podpinaniu się do już uruchomionej przeglądarki. Funkcja screencast.showActions() zyskała opcję cursor, która steruje sposobem rysowania kursora przy akcjach wskaźnika. I wreszcie callback onFrame w screencast.start() zwraca teraz znacznik czasu (timestamp) informujący, kiedy dokładnie przeglądarka wyrenderowała daną klatkę. 

Usprawnienia w test runnerze

W samym runnerze uzbierało się sporo ułatwień diagnostycznych i konfiguracyjnych:

  1. Opcja testOptions.video obsługuje teraz ten sam zestaw trybów co tracing: on-all-retries, retain-on-first-failure oraz retain-on-failure-and-retries. Dzięki temu nagrywanie wideo dopasujemy dokładnie do tych przebiegów, które faktycznie nas interesują. 
  2. Pojawiło się wsparcie dla expect.soft.poll(…), które sprawnie łączy miękkie asercje z automatycznym odpytywaniem (pollingiem).
  3. testInfo.errors rozbija teraz każdy podbłąd z AggregateError na osobny, czytelny wpis. Dodano też wygodny skrót -G dla flagi --grep-invert
  4. Nowe fullConfig.argv daje migawkę process.argv z procesu runnera (przydatne do odczytywania własnych argumentów przekazanych po separatorze --). Z kolei fullConfig.failOnFlakyTests odbija ustawienie z pliku konfiguracyjnego, ułatwiając reporterom wyjaśnienie, dlaczego uruchomienie zawierające niestabilne testy zakończyło się porażką.

Aktualizacja środowiska i silników

Playwright v1.61 dodaje oficjalne wsparcie dla Ubuntu 26.04. Tradycyjnie podbito też wersje silników przeglądarek, na których uruchamiane są testy:

  • Chromium 149.0.7827.55 (oraz stabilne kanały Google Chrome 149 i Microsoft Edge 149),
  • Mozilla Firefox 151.0,
  • WebKit 26.5.
Która z nowości w Playwright v1.61 rozwiąże Twój największy ból projektowy?
Która z nowości w Playwright v1.61 rozwiąże Twój największy ból projektowy?
0 %
Wirtualny authenticator i łatwiejsze testowanie passkey
33.33 %
Bezpośredni dostęp do pamięci przeglądarki (Web Storage API) bez boilerplate'u
66.67 %
Pełny ślad i obsługa WebSocketów w Trace Vieworze
0 %
Nowe opcje konfiguracji wideo i obsługi błędów w test runnerze
0 %
Żadna, czekam na inne usprawnienia w kolejnych wersjach.
Łącznie głosów: 3
Źródła:
https://playwright.dev/docs/release-notes

To powinno Cię zainteresować

string(19) "/api/discussions/69" string(3) "GET" string(2) "[]" array(3) { [0]=> string(24) "Accept: application/json" [1]=> string(121) "Authorization: Token dfJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.ghJ1aWQiOjEsImV4cCI6MTc5OTk5OTk5OX0.dGhpcy1pcy1hLWZha2Utc2lnbmF" [2]=> string(30) "Content-Type: application/json" }