👨‍🏫 Porady

Różnice między Playwright w TypeScript/JavaScript a Java, Python, C#

Language
date
Jun 19, 2023
slug
playwright-typescript-a-inne-jezyki-java-python
author
status
Public
tags
TypeScript
Porady
Playwright
summary
Playwright dla wszystkich języków nie jest taki sam. Warto poznać róznice nim zaczniesz testować.
type
Post
thumbnail
playwright-wersja-typescript-java-python-javascript.jpg
updatedAt
Nov 20, 2023 12:53 PM
category
👨‍🏫 Porady
Czy Playwright dla Java ,TypeScript, JavaScript, Python jest identyczny?
Zdecydowanie NIE!
Koniecznie zapoznaj się z różnicami, aby dokonać najlepszego wyboru dla twojego projektu... i nie wpaść w spirale utrzymania własnych rozwiązań, które są dostępne od ręki w innym języku.

Tajemniczy playwright test

Pobierając Playwright dla projektu w TypeScript lub JavaScript (dla stosu Node.js) tak na prawdę pobieramy Playwright Test.
Jest to rozszerzona wersja, można powiedzieć: framework lub nakładka, oparta o podstawową bibliotekę/paczkę Playwright.
 
notion image
 
Playwright Test jest niedostępny w innych językach (po za TypeScript lub JavaScript).
  • Co się kryje za Playwright Test?
  • Czemu warto się nim zainteresować nim wybierzemy w jakim stosie technologicznym chcemy się uczyć/używać Playwright?
  • Dlaczego jest to szczególnie ważne jeśli dopiero zaczynamy swoją pracę z Playwright framework?

Czy Playwright Test można użyć w innych językach niż TS/JS?

Krótko odpowiadając: nie. Ale można zaimplementować samodzielnie jego funkcje.
Niestety nie ma oficjalnej matrycy porównawczej, która wskazywała by jak uzyskać efekty znane z Playwright Test w innych językach (z niezbędnym kodem).
Wiemy jedynie, że w językach takich jak Java, Python i C# jesteśmy uzależnieni od integracji zewnętrznych narzędzi, czy implementacji własnych rozwiązań. 📌Więcej o tym dlaczego warto wybrać Type Script i Playwright przeczytasz tu: 🔗

Przegląd funkcji Playwright Test

Przygotowałem mały przegląd głównych funkcji Playwright Test. Dzięki temu możesz się zastanowić i skonsultować w zespole czy takie funkcje są przydatne i czy wolisz użyć gotowych rozwiązań od twórców Playwright (czy też zdecydować o samodzielnej implementację tych funkcji).

✅ Plusy Playwright Test

Poniżej wymieniam funkcje, które są domyślnie są wspierane w TS/JS w ramach Playwright Tests:
  1. Test Runner - narzędzie, które wykorzystujące i rozszerzające bibliotekę podstawową Playwright. Daje dostęp do pewnych funkcji, które nie są znajdziemy “out of the box” w innych językach korzystając z Playwright. Test Runner to rozwiązanie służące do wytwarzania i uruchamiania testów. Znanymi test runnerami są Jest w świcie JS/TS czy PyTest w Pythonie. Test Runner jest tworzony i rozwijany przez twórców Playwright i jest w pełni zintegrowany z Playwright. Dzięki temu dostajemy gotowe rozwiązanie bez potrzeby integracji zewnętrznych test runnerów.
  1. Parallel run - testy równoległe, konfigurowalne ustawieniem liczby workerów, domyślnie liczba workerów wykonujących niezależnie twoje testy jest równa połowie logicznych procesorów. Na Windows sprawdzisz liczbę tych procesorów w Task Manger w zakładce Performance, klikając CPU. Dla CI (Ciągłej Integracji) możemy łatwo wyłączyć tę funkcję, z tego względu, że powinieneś użyć kolejnej, którą opisujemy:
  1. Sharding - uruchomienie i dystrybucja testów na kilku maszynach jednocześnie, przydatne dla uruchamianiu testów na serwerze Ciągłej Integracji (GH Actions lub GitLab CI)
  1. Raporty - domyślnie otrzymujemy dedykowane raporty, które za pomocą bardzo prostej konfiguracji możemy wzbogacić o: - Trace Viewer: genialne narzędzie do podglądu testu, z akcjami, lokatorami, requestami i graficznym podglądem tych akcji na stronie (możemy nawet podglądnąć akcje w kilku oknach na raz np. jak testujemy otwarcie nowego taba) - Artefakty jak wideo czy screenshot, - Test Retry (flaky test) - funkcja umożliwiająca śledzenie ponowionych testów przydatna na serwerze CI Standardowo zawierają też: - Podsumowanie: Testy zakończone sukcesem, porażką, pominięte, flaky - Informacje o teście jak nazwa, tagi, projekty (np. rodzaj użytej przeglądarki) - w przypadku błędu, log błędu - akcje, hooks i inne elementy dostępne w widoku pojedynczego testu
  1. UI mode - narzędzie do uruchamiania testów i automatycznego uruchamiania zmienionych testów, z Trace, podglądem ruchu sieciowego, wiadomościami na konsoli, kodem testów oraz wyborem danych projektów (profili jak np Chrome, FF lub grup testów etc)
  1. Visual Comparison - porównywanie screenshotów strony lub jej elementów dla różnych urządzeń, dołączane do raportów, z heat mapą zmian i podglądem różnic
  1. Projects - używane domyślnie do definiowania urządzeń na których mają uruchamiać się testy. Możemy też definiować konteksty zależne, np. projekt wymagający sesji jest zależny od projektu z setupem sesji, uruchamiając projekt zależny automatycznie uruchamiane są niezbędne projekty nadrzędne.
  1. Timeouts - ustawienie globalnego/dedykowanego timeout dla testów, asercji, akcji, slow motion
  1. Przechowywanie sesji, stanu przeglądarki - wystarczy zapisać w jednym teście i podłaczyć kolejne testy poprzez projekt zależny (nie trzeba fixtures, wstrzykiwania w testach etc.)
  1. Testy zależne jako: synchronicznie uruchamiane dla grupy (describe) lub jako Test Steps w danym teście
  1. Custom testy jak: test retires, fixme(conditional), slow(conditional) gdzie conditional może być danym projektem (Chromium, FF)
  1. Pluginy - do VSC mamy plugin który pomaga w uruchomianiu testów dla danych projektów
  1. Soft asercje - rodzaj asercji która nie powoduje przerwania testu
  1. Web First Asertions - specjalne asercje będące portem z Testing Library wbudowane w Playwright Test
  1. Debugging - powyższe funkcje można debuggować z poziomu VSC, są brakepointy, podgląd zmiennych, kontrola przeglądarki. Dzięki temu debugowanie można urozmaicić o różne narzędzia dodatkowe z Playwright Test
  1. Global Setup and Teardown - łatwe w konfiguracji i automatycznie integrowane pliki z globalnymi ustawieniami

❌Minusy Playwright Test

Wymienię jeszcze minusy stosu dla stosowanie Playwright Test (odrobinę związany z samym TypeScript i domyślnym ekosystemem VSC i samą biblioteką Playwright):
  • Debugowanie asynchronicznego kodu TS/JS niestety nie pozwala w locie na wykonywanie akcji gdy debugger jest zatrzymany. Tego typu problemy nie występują synchronicznych językach jak Java czy Python.
  • Brak named parameters takich jakie znamy w Pythonie
  • Refaktoryzacja w natywnym środowisku: VSC nie jest tak dobra jak w IntelliJ i pochodnych IDE (ale możemy pisać w TS i używać IntelliJ) jednak sugeruję się tutaj zalecanym rozwiązaniem dla Playwright Test (VSC + wtyczka)
  • Globalnie wciąż mało testerów pisze w TypeScript co może być wadą Playwright Test (potrzeba przejścia z innego jezyka). Zauważę, że można też pisać w JavaScript ale jeśli idziemy w zalecania to rozpatrujmy Playwright Test z TypeScript.
  • Obsługa BDD. Oczywiście można użyć Playwrighta jako natywnej biblioteki nawet i w stosie Node.js, ale jednak tutaj się skupiam na Playwright Test. W tym narzędziu nie mamy obsługi BDD. Obecnie trwa ewaluacja takiej funkcji dla Playwright Test jednak nie wiemy kiedy i czy twórcy Playwright zdecydują się na wprowadzenie BDD.
Więcej o tym dlaczego wybrać Playwright + Type Script wspominamy tutaj: 🔗https://playwright.info/dlaczego-playwright-typescript

❓ Czy Playwright Test to dobry wybór w porównaniu do biblioteki Playwright w innych językach?

✅ Zdecydowanie TAK dla:

  • Chcących szybko stworzyć framework do testów automatycznych z wymienionymi funkcjami
  • Początkujących z Playwright
  • Uczących się TypeScript
  • Chcących wykorzystać wymienione funkcje bez potrzeby ich pisania lub integracji z innymi narzędziami (np. raporty)
  • Zainteresowanym użyciem dedykowanych funkcji niedostępnych w innych językach (UI Mode, Visual Comparison)

❌ Kiedy zrezygnować z Playwright Test?

  • Nie są nam potrzebne funkcje z Playwright Test
  • Samodzielnie je potrafimy zaimplementować w innym języku programowania
  • Samodzielnie chcemy integrować zewnętrzne narzędzia i utrzymywać własne rozwiązania
  • Posiadamy wystarczającą wiedzę programistyczną aby uzupełniać braki występujące pomiędzy Playwright Test a Playwright w danym języku

Czy znasz jakieś inne wady lub zalety stosowania Playwright Test? Daj znać 🔗 tutaj.