Teraz Ty – agregujemy akcje

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

Prezentacja

Teraz Ty - agregujemy akcje w Playwright i Page Object Model

Dodatkowe materiały

Bazujemy na kodzie lekcji L09_pom_aggregate_refactor

Treść zadania

Zrefaktoryzuj testy automatyczne z pliku pulpit.spec.ts, aby wykorzystywały wzorzec POM z agregacją akcji. Innymi słowy – przygotuj metody, które będą odzwierciedlać akcje użytkownika.

A dokładniej:

  1. Przeanalizuj testy pulpitu, które znajdują się w pulpit.spec.ts.
  2. Na podstawie analizy w pulpit.page.ts przygotuj metody, które będą odwzorowywać kompleksowe akcje użytkownika na stronie.
  3. Wykorzystaj zaimplementowane metody w testach w pulpit.spec.ts.
  4. Sprawdź swoje zmiany uruchamiając wszystkie testy.

Podczas rozwiązywania tego zadania wzoruj się na naszej poprzednich lekcji.

Wykorzystaj tutaj całą zdobytą we wcześniejszych lekcjach wiedzę 🙂

Poniżej znajdziesz podpowiedzi do tego zadania, ale zachęcam Cię do samodzielnej implementacji i tylko posiłkowania się podpowiedziami 😉

Podpowiedzi

Na samym początku...
  1. refaktoryzacji podlegają testy z pliku pulpit.spec.ts z katalogu tests – przed zmianami uruchom je i zobacz, czy kończą się powodzeniem,
  2. po każdym zmienionym teście, uruchom go i sprawdź, czy Twoje zmiany były poprawne.
Nazewnictwo
  1. jako nazwę metody do szybkiego przelewu sugerujemy executeQuickPayment
  2. jako nazwę metody do doładowania telefonu sugerujemy executeMobileTopUp
Nazewnictwo

Zauważ, że testy successful mobile top-up oraz correct balance after successful mobile top-up mają takie same kroki – w obu z nich wykonujemy doładowanie telefonu.

Oznacza to, że w klasie PulpitPage będziemy mogli przygotować jedną metodę do doładowania, a następnie wykorzystać ją w obu tych testach.

Nie zapomnij o...
  1. Każda metoda, która zawiera w sobie wykorzystanie await, musi być oznaczona słowem kluczowym async. Dzięki temu metoda będzie mogła poprawnie obsługiwać operacje asynchroniczne.
  2. Wywoływanie metod async z await

    Metody oznaczone jako async powinny być wywoływane z użyciem słowa kluczowego await.

    Co się stanie, jeśli tego nie zrobimy?

    • Metoda zostanie uruchomiona asynchronicznie, ale testy (lub inny kod) mogą kontynuować swoje działanie, zanim metoda zakończy swoje wykonanie.
    • W rezultacie może to prowadzić do nieprzewidzianych sytuacji, takich jak niespójne dane czy losowe błędy.
    • await pozwala upewnić się, że wykonanie kodu czeka na zakończenie operacji asynchronicznej, co minimalizuje ryzyko takich problemów.

    Pamiętaj, że użycie async i await razem zapewnia kontrolę nad kolejnością wykonywania operacji.

2 komentarze

  1. Czy w sekcji rozwijanej `Nie zapomnij o…` nie ma błędu w zdaniu “w przeciwnym wypadku metody będa uruchamiane asynchronicznie, a testy mogą kończyć się losowymi błędami.” ?
    Powinno chyba być “metody będa uruchamiane synchronicznie”?
    Pozdrawiam 🙂

    Avatar Paweł Maryniak
    1. Hej!
      Dzięki za zwrócenie uwagi! Faktycznie, sformułowanie może być mylące.

      Metody oznaczone jako async zawsze są uruchamiane asynchronicznie.
      Ale problem, o którym w tamtej sekcji opisujemy, dotyczy braku użycia await.
      Czyli bez await metody/funkcje są uruchamiane asynchronicznie (czyli nie czekamy na ich wynik) 😉
      W efekcie może to prowadzić do niespójnych wyników i losowych błędów w testach.

      Dzięki Twojej sugestii mogę to lepiej sformułować – dzięki za feedback! 😀

      Krzysiek Kijas Krzysiek Kijas

Dodaj komentarz

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