Analiza testów z Trace Viewer

TIP: Ta lekcja jest częścią rozwijanego Programu Testy Automatyczne z Playwright 🎭

Prezentacja

Analiza testów z Trace Viewer

Dodatkowe materiały

TIP: W tej lekcji wspominamy o API – jeśli interesuje Ciebie poznanie tego tematu zajrzyj na Podstawy Testowania REST API – Od teorii, przez testy manualne, po automatyzację w JavaScript!
TIP: Od tej lekcji używamy Prettier do formatowania kodu.

Sugerujemy 2 opcje:

  1. Kontynuuj jeśli: wiesz czym jest Prettier i jak go używać.
  2. Uzupełnij wiedzę ze specjalnego bonusu: Formatowanie kodu z Prettier

Kod do tej lekcji znajduje się tu: GitHub

Pamiętaj, aby po każdej większej modyfikacji uruchamiać testy 😉

Przygotowanie testu który będzie kończył się niepowodzeniem

W pierwszym teście z pliku pulpit.spec.ts uszkadzamy oczekiwaną wartość dodając frazę BUG:

const expectedTransferReceiver = 'BUG Chuck Demobankowy';

Dodajemy również opcję only do testu aby uruchamiał się tylko on.

Po uruchomieniu test powinien zakończyć się niepowodzeniem.

Dodanie wideo do raportów

W pliku playwright.config.ts dodajemy taki wpis w bloku use: video: 'retain-on-failure'.

Tak będzie wyglądał teraz ten blok:

  use: {
	/* Maximum time each action such as `click()` can take. Defaults to 0 (no limit). */
	actionTimeout: 0,
	/* Base URL to use in actions like `await page.goto('/')`. */
	// baseURL: 'http://localhost:3000',

	/* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */
	trace: 'on-first-retry’,
	video: 'retain-on-failure',
  },

Po uruchomieniu testów powinieneś otrzymać wideo z zapisem testu!

Włączenie opcji Trace Viewer

W pliku playwright.config.ts zmieniamy w bloku use: ustawienie dla opcji trace: 'retain-on-failure'. Dzięki temu Trace Viewer będzie dostępny w raportach dla naszych testów.

Tak będzie wyglądał teraz ten blok:

  use: {
	/* Maximum time each action such as `click()` can take. Defaults to 0 (no limit). */
	actionTimeout: 0,
	/* Base URL to use in actions like `await page.goto('/')`. */
	// baseURL: 'http://localhost:3000',

	/* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */
	trace: 'retain-on-failure’,
	video: 'retain-on-failure',
  },

Po uruchomieniu testów powinieneś otrzymać możliwość podglądu testu w narzędziu Trace Viewer.

Playwright Trace Viewer i opis jego opcji

W widoku Trace Viewer zwróć uwagę na:

  1. Timeline, czyli pasek postępu akcji u góry.
  2. Poszczególne Akcje i szczegółowe kroki ich wykonania.
  3. Stan strony podczas testu, przed i po teście.
  4. Logi związane z wykonaniem akcji (w szczegółach danej akcji).

Trace Viewer – jak go uruchomić?

Aby uruchomić Trace Viewer i podejrzeć plik trace.zip, wystarczy użyć w konsoli polecenia:

npx playwright show-trace trace.zip

gdzie trace.zip to ścieżka do pliku .zip.

Trace Viewer ograniczenia

Napraw wartości, które uszkodziliśmy na potrzeby poprzednich testów.

Uszkadzamy lokator, np. dla selektora password-input-lol:

 await page.getByTestId('password-input-lol').fill(userPassword);

W Trace Viewer możesz zauważyć, że brakuje informacji o czasie trwania testu i momentu Timeoutu.

Bugi które zidentyfikowaliśmy i zgłosiliśmy twórcom Playwright:

8 komentarzy

  1. Cześć, mam taki problem że gdy testy nie odpalają się w przeglądarce to mimo timeouta nadal się kręcą czy to z terminala czy z testing. Zaś 2 problem jaki mam to w momencie gdy odpalam testy z przeglądarką i się wysypią to i tak w raportach nie mam trace i video, a niby mam wszystko skonfigurowane poprawnie.

    Avatar Mateusz
    1. Hej,
      Jak wygląda Twój projekt i konfiguracja?
      Z jakich wersji narzędzi korzystasz (VSCode, wtyczka Playwright, node.js, Playwright i inne paczki w package.json)?

      Spakuj proszę cały swój projekt i podeślij nam na adres kontaktowy – zobaczę wtedy u siebie jak to wygląda 🙂

      Krzysiek Kijas Krzysiek Kijas
  2. Nawiązując do sytuacji w lekcji opisanej w minucie 15:40 , kiedy strona się jeszcze nie do końca załadowała, a już wykonywaliśmy akcję w PW – w jaki sposób kod w PW powinieniem być w tym wypadku zrefaktorowany żeby prawidłowo obsłużyć ten flow ? Czy po prostu będzie to w kolejnych lekcjach 🙂 ?

    Avatar Łukasz Glegoła
    1. Hej Łukasz!
      Oczekiwanie na element na nowej stronie jest ok strategia i jeśli realizuje założony cel nie trzeba tego refaktorować.

      Sprawdzenie załadowania się nowej strony, można również zrealizować za pomocą różnych strategi, np. za pomocą takiego czekania:

      await page.waitForURL('**/target.html')
      await page.waitForLoadState(); 
      

      W kursie podstawowym opieramy się na strategii oczekiwania na dany element i to załatwia nam po części oczekiwanie na załadowanie się strony.

      Pozdrawiam

      Przemek Przemek
  3. też macie brak kolorów w timeline? wszystkie fragmenty są na szaro i szukałam buga w zgłoszeniach jednak nie natrafiłam
    Playwright 1.36., sprawdzone na: opera, chrome w wersji ciemnej i jasne 🙂

    Avatar Karolina Zakrzewska
    1. Niestety zabrali nam kolory z TraceViewer 🙁 Na (nie)pocieszenie dodam, że w UI mode te paski są całkowicie niedostępne wiec dobrze, że tego nie zabrali z TraceViewer.

      Przemek Barański Przemek Barański
  4. Oglądając kolejne super wideo zdziwiłem się trochę bo mam wersję 1.30 ale u mnie z jakiegoś powodu nie ma tego przycisku “Open snapshot in new tab” a bardzo by się przydał 🙂 znacie może powód? Może to jakaś nowość?

    Avatar Paweł

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *