👨‍🏫 Porady

Playwright a testy REST API - jakie narzędzia wybrać?

Language
date
Jul 11, 2023
slug
playwright-rest-api-testing-narzedzia-i-biblioteki
author
status
Public
tags
Playwright
REST API
JavaScript
TypeScript
Porady
Automatyzacja
summary
Jak podejść do testów REST API z Playwright? Jakie są dostępne narzędzie i biblioteki?
type
Post
thumbnail
playwright-rest-api.jpg
updatedAt
Oct 5, 2023 10:46 AM
category
👨‍🏫 Porady
Przy projektowaniu testów automatycznych REST API + UI należy zastanowić się nad wyborem narzędzi i technologii.
Po wyborze Playwrighta do testów UI może pojawić się pytanie:
Jak podejść do testowania REST API? Z jakich narzędzi skorzystać? Co brać pod uwagę?
W tym poście pokrótce przejdę przez dostępne narzędzia i biblioteki i omówię potencjalne opcje😉
 

Dostępne narzędzia

 
Do testów REST API w JavaScript/TypeScript możesz wykorzystać:
 
Inne, mniej popularne biblioteki do komunikacji z REST API:
 
Do testów REST API + UI w JS/TS można wykorzystać:
  • czysty Playwright
  • połączenie np. Playwright + Supertest lub Playwright + PactumJS
 
Poniżej rozpisze te opcje👇

Opcja: czysty Playwright

 
Playwright posiada bogaty zbiór modułów, które pozwalają na testowanie REST API. W znacznej większości przypadków powinny one wystarczyć do automatyzacji przypadków testowych w projekcie. Więcej znajdziesz w oficjalnej dokumentacji: 🔗https://playwright.dev/docs/api-testing
 
✅ Zalety:
  • jedno narzędzie do testów UI i API:
  • łatwiejsza integracja pomiędzy testami UI a API w obrębie jednego narzędzia
  • mniej bibliotek do nauki i poznania
  • łatwiejsza aktualizacja do nowszych wersji
 
❌ Wady:
  • może nie spełniać Twoich wszystkich potrzeb. Może to mieć miejsce przy bardziej specyficznych scenariuszach. Taki scenariusz może być bardzo trudny do automatyzacji przez brak potrzebnych funkcji lub jakieś ograniczenia narzędzia
 

Opcja: Playwright + biblioteka do (testowania/komunikacji) REST API

 
Playwright w bardzo prosty sposób integruje się z istniejącymi frameworkami i innymi bibliotekami. Dlatego do komunikacji z REST API możemy wykorzystać zewnętrzną, dedykowaną bibliotekę.
 
✅ Zalety:
  • dedykowane narzędzie do REST API, które prawdopodobnie posiada wszystko czego potrzebujesz do testów/komunikacji z REST API
  • możemy już posiadać doświadczenie w pracy z daną biblioteką, co ułatwi nam jej wykorzystanie w projekcie
 
❌ Wady:
  • wiele narzędzi do utrzymania i nauki
  • aktualizacja do nowych wersji może być trudniejsza - w skrajnych przypadkach biblioteki mogą nie być ze sobą zgodne
  • każda z bibliotek ma swoja filozofię i sposób wykorzystania, który trzeba poznać, żeby móc efektywnie z niej korzystać
 

Jakie podejście wybrać?

 
Każda opcja ma swoje wady i zalety.
Dlatego dodatkowo przy każdej z opcji rozważ:
  • potrzeby projektowe
  • zakres testów i typy testów, jakie planujecie przeprowadzać
  • skillset i doświadczenie zespołu w pracy z narzędziami i językami programowania
  • czy jest możliwe wsparcie developerów podczas nauki narzędzi lub pisania testów?
  • rozpisz kilka przypadków użycia (również takich trudniejszych!) i przygotuj niewielki POC (Proof of Concept) z wykorzystaniem danego rozwiązania i biblioteki
  • sprawdź popularność i wsparcie danego narzędzia - czy ma ugruntowaną pozycję na rynku, stabilne wydania, duże community etc. - wtedy znacznie łatwiej o znalezienie rozwiązania
  • inne korzyści i koszta związane z wprowadzeniem danego rozwiązania (np. potrzeba szkoleń, czas na wdrożenie się, potencjalny dług techniczny etc.)
 
Rozpisanie powyższych punktów pomoże Ci w wyborze podejścia dostosowanego do Ciebie, Twojego zespołu oraz projektu😉
💡
PS. W repozytorium Playwright zgłaszane są pomysły na usprawnienia. Jednym z nich jest usprawnienie testowania REST API. Usprawnienie dotyczy pracy z tematami autoryzacji, proxy, tworzenia zapytań, debugowania i walidacji danych. Jako przykład rozwiązania, na którym autorzy mogą się wzorować, podawane jest dojrzałe rozwiązanie - wspomniany wcześniej supertest.
 
Polecamy zapoznać się i zagłosować na [Feature] (REST) API Testing Capabilitys Improvement#21930: 🔗 https://github.com/microsoft/playwright/issues/21930