Playwright

Business,man,computer,hand,close,up,futuristic,cyber,space,finance

Šta je Playwright?

Playwright je besplatan open-source framework razvijen od strane kompanije Microsoft koji je stupio na QA scenu 2020. godine. Koristi se za potrebe testiranja kako FE dela aplikacije (end to end testiranja) tako i za potrebe BE dela aplikacije, API testiranja.

Ubrzanim koracima za samo četiri godine Playwright je zauzeo svoje mesto medju najpopularnijim i najkorišćenijim alatima za automatizaciju u QA svetu uz tendenciju da zauzme vodeće mesto u skorijoj budućnosti.

Podrška

  • Playwright pruža podršku za sve popularne Web Browser-e današnjice, Google Chrome, Firefox, Safari. Testovi se izvršavaju na svim pomenutim Web Browser-ima paralelno čime mogu da se uhvate Bug-ovi prisutni na samo jednom od Web Browser-a
  • QA inženjeri mogu da koriste Playwright na svakom operativnom sistemu današnjice, macOS-u, Windows-u, Linux-u
  • Dva najpopularnija programska jezika u QA svetu, java i Javascript su podržana za Playwright. Pored pomenutih jezika Playwright podržava i Python i .NET jezike kao i tipiziran Javascript jezik, Typescript jezik.

Otpornost

  • Jedan od najvećih problema alata za automatizaciju je velika razlika u brzini izmedju izvršavanja koda/skripte za automatizaciju i učitavanja stranica Web Aplikacija koje ponekad mogu jako sporo da se učitavaju. Skripta pokušava da izvede odredjenu operaciju na stranici Web aplikacije u trenutku kad Web stranica još nije ni učitana pa zbog toga skripta ne može da izvede odredjeni korak u testu i prijavljuje da je test pao. Ponovnim pokretanjem na drugoj mašini taj isti test prolazi jer se usled raznih faktora Web stranica propisno, brže učitava nego na mašini gde test pada. Ovaj problem je poznat kao Flaky tests
  • Playwright rešava problem Flaky testova preko ugradjene Auto wait funkcije gde se pri izvršavanju određene akcije nad bilo kojim Web elementom prvo vrši provera da li je taj Web element ispunio određene uslove. Npr. pre akcije click proverava se dali je izmedju ostalog Web element nad kojim se vrši click akcija, Visible i Stable, i tek kad Web element postane vidljiv i stabilan vrši se akcija click. Na ovaj način rešava se problem sporog učitavanja Web stranice jer skripta čeka do trenutka kad Web element postane vidljiv i stabilan (dok se Web stranica ne učita) i tek onda se izvršava click akcija. Istovremeno, vreme čekanja na Web element da postane vidljiv i stabilan može da se ograniči tako da u slučajevima kad Web stranica se ne učitava test neće trajati beskonačno

Ugradjeni alati za lako detaljno pregledanje palih testova

  • Za razliku od mnogih drugih alata za automatizaciju gde za lak i jasan pregled palih testova QA mora sam da napiše kod koji će to omogućiti (što iziskuje veliko znanje i potrošnju vremena) Playwright već ima ugradjeno u sebi sve potrebno da QA lako i brzo vidi zašto je neki test pao
  • Prostim dodavanjem opcije screenshot: ‘only-on-failure’ u konfiguracioni file (playwright.config.ts) QA će imati sačuvan Screenshot Web stranice gde postoji problem u testu koji je pao
  • Prostim dodavanjem opcije video: ‘retain-on-failure’ u konfiguracioni file (playwright.config.ts) QA će imati sačuvan Video celog testa koji je pao, od pokretanja testa do trenutka gde je nastao problem
  • Trace viewer alat ugradjen u Playwright omogućava da QA vidi kompletno sve vezano za test preko GUI alata ugradjenog u Playwright. QA može da vidi u testu koji su sve lokatori upotrebljeni, screenshot za svaki trenutak testa, logove, nastale greške u testu, Network saobraćaj gde se vide upotrebljeni APIs i sve vezano za njih… i još mnogo korisnih informacija

Brzina izvršavanja testova

  • Playwright koristi WebSocket komunikacioni protokol koji omogućava da jednom otvorena komunikacija izmedju klijenta i servera ostane otvorena za sve vreme trajanja komunikacije/slanja podataka izmedju klijenta i servera
  • Drugi alati za automatizaciju (Selenium npr.) koriste HTTP protokol kod koga se komunikacija izmedju klijenta i servera otvara i zatvara pri svakoj akciji u testu pa je zbog činjenice da kod Playwright alata nema gubljenja vremena na velikom broju ponovnog uspostavljanja komunikacije na relaciji klijent server izvršavanje testova brže i pouzdanije

Generisanje koda od strane Playwright alata

  • Preko Codegen alata QA ima mogućnost da dobije napisan kod za željene korake u testu. QA izvršava proste akcije na FE delu aplikacije a Codegen alat sam piše kod koji QA može da prekopira u svoj projekat

Generisanje lokatora

  • Jedan od glavnih problema sa kojima se QA suočava je pravljenje validnih lokatora otpornih na promene u Aplikaciji na duže vreme
  • Playwright ima ugradjen Playwright inspector alat koji omogućava da QA brzo i lako napravi lokator za problematične Web elemente na kvalitetan način pri čemu će lokator biti validan na duže staze

Izolacija testova

  • Za svaki test pojedinačno Playwright kreira odvojen Browser context koji odgovara potpuno novo otvorenom prozoru Web Browser-a u kom se testovi izvršavaju zbog čega je svaki test skroz odvojen od drugih testova kad se vrši paralelno pokretanje velikog broja testova

Continuous integration (CI)

  • Playwright omogućava izvršavanje testova na bilo kom CI operateru
  • Za upotrebu GitHub Actions platforme Playwright je omogućio da QA već u toku Playwright instalacije u VS Code IDE može da postavi GitHub actions workflow. U toku instalacije Playwright-a prostom potvrdom na pitanje dali QA želi postavljanje GitHub actions workflow-a za projekat će biti kreiran playwright.yml fajl u okviru .github-workflows foldera i automatski će biti podešeno da se testovi izvršavaju pri svakom push/pull request

API testiranje

  • Playwright može da se koristi za testiranje REST API Aplikacije na kojoj QA radi
  • Upotrebom APIRequestContext klase omogućeno je da se šalju svi potrebni HTTP zahtevi, da se izvršavaju GET, POST, PATCH, PUT, DELETE HTTP metode

Docker

  • Jedan od čestih problema kako u razvoju softvera tako i u testiranju softvera je slučaj da nešto što radi na jednoj mašini ne radi iz raznih razloga na drugoj mašini (različiti operativni sistemi npr.)
  • Najčešće korišćeno rešenje za ovaj problem predstavlja upotreba Docker-a koji omogućava pakovanje koda u Docker container koji omogućava pokretanje koda nezavisno od karakteristika mašine (nezavisno od operativnog sistema mašine npr.) na kojoj se kod pokreće. Automatski testovi će raditi nezavisno dali mašina koristi npr. Linux ili Windows ili macOS operativni sistem
  • Playwright omogućava laku upotrebu već napravljenih Docker container za GitHub actions workflow preko playwright.yml fajla