👨🏫 Porady
Dlaczego warto wybrać Playwright + TypeScript?
Często testerzy lub zespoły zadają sobie pytanie:
W jakiej technologi (języku programowania) wybrać narzędzie Playwright?
Najprostszą odpowiedzią będzie Playwright + TypeScript.
Kontekst projektu
Oczywiście wszystko zależy od zespołu, umiejętności i kontekstu projektu.
🙋♂️ W jakim języku pisany jest projekt?
🙋♂️ Jakie języki programowania zna zespół?
🙋♂️ Czy znane są ograniczenia związane z użyciem Playwright dla języków innych niż TS/JS?
Ten ostatni punkt jest bardzo ważny gdyż wielu początkujących z Playwright nie ma świadomości czym różni się Playwright z Python/Java/C# od Playwright dla Node.js (czyli dla TypeScript i JavaScript).
📌 Więcej o różnicach pomiędzy pomiędzy wersjami Playwright dla rożnych języków przeczytasz: 🔗Różnice między Playwright w TypeScript/JavaScript a Java, Python, C#
Zalety i wady zastosowania Playwright z TypeScript/JavaScript
Przy decyzji o wyborze języka warto rozważyć zalety pisania testów w Playwright i TypeScript/JavaScript:
Plusy:
⭐ Wsparcie zespołu
- W większości przypadków w projekcie na front-endzie (GUI) wykorzystuje się JavaScript lub TypeScript (często back-end to też TS/JS)
- Cały zespół pracuje z testami (QA i Dev)
- Często kod testów w Playwright jest w repozytorium front-end. Łatwo utrzymać aplikację w TypeScript z testami w TypeScript w jednym repozytorium
- Tester może lepiej zrozumieć język i stos w jakich pisany jest front-end
⭐ Test Runner
- Domyślnie dla TS/JS pobieramy Playwright jako Playwright Test (a w innych językach jedynie samo API Playwright, które dla TS/JS jest opakowane przez Playwright Test)
- Playwright Test Runner dostępny jest tylko w dla TS/JS.
- Oferuje on:
- automatyczne zrównoleglenie testów (ze wsparciem wielu przeglądarek)
- automatyczne raporty (ze zrzutami ekranu, wideo testu, trace, retry )
- web first assertions
- Visual Testing
- UI mode, który jest bardzo dużym ułatwieniem w pisaniu testów
- natywną integrację z shardami i GitHub Actions
- więcej poczytasz tutaj: 🔗Różnice między Playwright w TypeScript/JavaScript a Java, Python, C#
⭐ Przykłady implementacji i wyszukiwanie rozwiązań
- Najwięcej przykładów w sieci dotyczących Playwright znajdziesz właśnie dla stosu Node.js
- Dotyczy to:
- oficjalnej dokumentacji
- artykułów w sieci
- GitHub issues (to jest kopalnia fajnych skryptów)
- odpowiedzi na StackOverflow
⭐ Playwright jest natywnie rozwijany w TS
- Nowe wersje i poprawki najszybciej trafiają do wersji JavaScript/TypeScript
- Wersja w TS/JS posiada wszystkie funkcjonalności, a w innych językach może brakować niektórych funkcji (np. Visual Testing czy UI Mode)
⭐ Wsparcie pluginów dla Node
- W Node.js dostępnych jest bardzo wiele pluginów (Lighthouse, linter, Nx), które można od razy wykorzystać w Playwrighcie
⭐ VS Code
- Praca w VSC z użyciem natywnego pluginu przez cały zespół. Duże ułatwienie w komunikacji.
Minusy:
❌ Debugowanie ze względu na asynchroniczność. Zdecydowanie wygodniej zaawansowane debugowanie wygląda np. w Python + PyCharm
❌ Brak pewnych udogodnień w TypeScript np. w Python mamy named parameters
Zalecenia Twórców
Sami twórcy Playwright przyznają, że największe jest globalne użycie stosu Node.js i to będzie ich priorytet. Zalecają w pierwszej kolejności wybór stosu wspierającego TypeScript.
Warto wziąć pod uwagę ten element przy wyborze języka dla Playwright.
Szybkość wdrożenia i utrzymanie
Dodatkowym argumentem przemawiającym za użycie Type Script jest fakt, że użycie Test Runnera dostępnego tylko dla tego języka TS/JS może istotnie przyspieszyć pracę w tworzeniu frameworka testowego. Dzięki już zaimplementowanym udogodnieniom odpada nam:
- Pisanie tych funkcji i ich integracji z narzędziami
- Utrzymanie własnych rozwiązań
- Wdrażanie zmian i dodawanie nowych rozwiązań
Te zalety mogą być dobry powodem aby przejść z innego języka programowania testów automatycznych do TypeScript i finalnie zaoszczędzić czas na implementacji i rozwijaniu frameworka opartego o Playwright.
TypeScript czy JavaScript?
Na koniec możesz zapytać o wybór miedzy JavaScript a TypeScript. Tutaj wybór jest prosty.
TypeScript jest rozszerzeniem JavaScript dającym możliwość większej kontroli nad pisanym kodem.
✅ Zalety TS vs JS to miedzy innymi:
- statyczne typowanie (z podpowiadaniem składni dostępnym w IDE)
- łatwiejsze utrzymanie i czytelności kodu
- unikanie złych praktyk i podatnego na błędy kodu znanego z JavaScript
- podobieństwo do innych języków jak Java, C# czy Python (ze statycznym typowaniem)
❌ Minusem TypeScript będzie to, że mogą się zdarzyć biblioteki, które nie będą posiadały wsparcia do używania z kodem pisanym w TypeScript. Ze względu na rosnąca popularność TypeScript takie sytuacje zderzają się coraz rzadziej.
Popularność
BONUS: Oficjalne pobrania PW (dziennie) (stan na 2023Q2):
- TS/JS: ok 3800k - 🔗 https://www.npmjs.com/package/playwright-core
- Python: ok 50k - 🔗 https://pypistats.org/packages/playwright
- Java: brak danych - 🔗 https://mvnrepository.com/artifact/com.microsoft.playwright/playwright
Na koniec
Już wiesz jakie są wady i zalety wyboru TypeScript dla Playwright jednak pamiętaj, że ostateczna decyzja należy do Ciebie i twojego zespołu!