Playwright или Selenium: аутоматско чекање доноси мерљиву предност

|Аутор: Уредништво QUASA|5 мин читања
Playwright или Selenium: аутоматско чекање доноси мерљиву предност

За нови пакет веб E2E тестова, Playwright има предност када апликација често мења стање елемената: његове провере пре радње чекају да циљ клика буде видљив, стабилан, да прима догађаје показивача и да буде омогућен. То уклања потребу за посебним чекањем на многим уобичајеним местима у тесту. За тим који већ има стабилан Selenium пакет, одлука зависи и од цене преноса постојећих сценарија.

Playwright је био бржи у конкретном објављеном мерењу, али измерена разлика није доказ да ју је изазвало аутоматско чекање. У упоредном истраживању просечно учитавање слике на HP рачунару трајало је 0,043 секунде уз Playwright и 0,055 секунди уз Selenium, а на Dell рачунару 0,031 према 0,032 секунде. То је резултат једне врсте операције у испитаном окружењу, а не време извршавања целог тестног пакета.

Шта аутоматско чекање мења у тесту

Разлика се види када је дугме привремено онемогућено, када га прекрива други елемент или док се помера. Playwright пре клика проверава да ли је циљ спреман и наставља чим потребни услови прођу, у оквиру задатог времена. Аутор теста зато не мора на сваком таквом месту да погађа трајање паузе. Ако елемент остане недоступан, радња истиче и тест добија грешку; аутоматско чекање не претвара стварни проблем у успешан корак.

Спреман циљ клика није исто што и успешна пословна радња. Након слања обрасца тест и даље треба да утврди, на пример, да ли се појавило очекивано стање поруџбине. Playwright може поново да покушава проверу услова док се он не испуни или док не истекне време, што помаже када се резултат приказује асинхроно. Чекање пре радње и провера њеног исхода решавају различите делове истог сценарија.

Selenium такође може да сачека динамичку страницу. Документација Selenium-а о чекањима разликује implicit чекање при проналажењу елемента и explicit чекање одређеног услова; упозорава да њихово мешање може довести до непредвидивог времена истека. Проналазак елемента сам по себи не значи да је он већ спреман за жељену радњу, па аутор теста бира услов који одговара промени на страници. Фиксна пауза је слабија замена: може бити прекратка када је апликација спора и предуга када је већ спремна.

Шта објављени бројеви заиста мере

Објављена мерења учитавања слике за Playwright и Selenium показују већу разлику на HP него на Dell рачунару.

Разлика у учитавању слике била је приметнија на HP рачунару него на Dell рачунару. У раду су коришћене скрипте у Python-у, исти прегледач на обе машине и наизменична покретања током дана. Рачунари су се разликовали и по складишту података: HP је имао чврсти диск, а Dell SSD. Такво окружење омогућава поређење забележених покретања, али не издваја само ефекат механизма чекања од осталих разлика у извршавању.

Важна је и врста задатка. При учитавању почетне странице Playwright је у истом раду имао краће просечно време успешних покушаја, али су забележени и грешка и истек времена; просек успешних покушаја те исходе не обухвата. Зато брзину корака и стабилност сценарија треба посматрати одвојено. Тим који често мора да понови или истражује пало покретање може изгубити више времена него што добија бржим успешним покушајем.

Матрица избора за нови и постојећи пакет

Почетно стање тестова мења вредност исте техничке предности:

  • Нови пројекат: Playwright је логичан први кандидат ако су кључни токови динамичке веб интеракције. Уграђене провере стања поједностављују писање сценарија, а тим може од почетка да постави локаторе и провере исхода у складу с новим алатом.
  • Постојећи стабилан Selenium пакет: задржавање има смисла док проба на сопственој апликацији не покаже добитак који оправдава пренос. Покривеност, помоћне функције и већ подешено извршавање имају вредност коју мерење једног корака не обухвата.
  • Постојећи нестабилан пакет: прво треба раздвојити падове због чекања од падова изазваних тестним подацима или грешком апликације. За прву групу упоредиви су Selenium сценарио с одговарајућим explicit чекањима и исти сценарио написан у Playwright-у.

Ова матрица не претпоставља да је један алат увек бржи. Код новог пакета мањи напор за писање чекања може бити пресудан и пре него што се види разлика у трајању извршавања. Код постојећег пакета већ уложен рад помера праг који миграција треба да достигне.

Цена миграције и покривеност прегледача

Постојећи Selenium Grid и пренос једног тестног тока у Playwright показују шта тим мора да урачуна у миграцију.

Прелазак није замена назива једне наредбе другим. Треба пренети локаторе, провере, припрему налога и података, пријаву, извештавање о падовима и поставку у CI-ју. Ако пакет користи Selenium Grid за паралелно покретање на удаљеним машинама, различитим верзијама прегледача или платформама, проба мора да обухвати и ту покривеност. Краће време једног теста није уштеда ако нова поставка сузи оно што пакет проверава.

Трошак има и прелазни период у ком тим одржава два начина извршавања. Тада се исти проблем може појавити у различитим извештајима, а заједничке помоћне функције морају да добију замену или да остану у старом пакету. Поступан пренос критичних сценарија омогућава да се провери да ли нова верзија открива исте грешке пре него што се уклони стара. Вредност преласка зато треба изразити и кроз радне сате потребне за писање и одржавање, поред времена које CI добија по покретању.

Мала проба на сопственој апликацији

Исти сценарио у Playwright-у и Selenium-у раздваја трајање успешних покретања од истека времена и падова апликације.

Поновљива проба треба да обухвати динамички елемент, уобичајен кориснички ток и сценарио који већ повремено пада. Обе верзије треба да полазе од истих података, користе исти прегледач и проверавају исти пословни исход. Време мерења треба ограничити истим почетком и крајем сценарија, како једна верзија не би изоставила припрему коју друга обавља.

  1. Забележите верзије алата и прегледача, машину, услове мреже и степен паралелног извршавања. Мерите трајање целог сценарија и пакета, не само једног клика.
  2. Поновите покретања под истим условима. Одвојено бележите трајање успешних покушаја, истеке времена, грешке апликације и проблеме с тестним подацима.
  3. У Selenium верзији замените фиксне паузе условним чекањима пре поређења. Тако се предност Playwright-а не приписује лоше подешеном полазном тесту.
  4. Упишите време потребно за пренос сценарија и за отклањање сваког пада. Упоредите ту цену с добитком у извршавању и стабилности.

Ако Playwright у тој проби скрати покретање или смањи падове због тајминга уз прихватљив трошак преноса, тим има основ за постепену миграцију. Ако стабилан Selenium пакет даје сличан резултат, постојећа покривеност остаје јак разлог да се преписивање не пожурује.

Прочитајте и:

Подели:

Претплатите се на наш билтен

Добијајте најновије вести о Web3, AI-у и криптовалутама директно у пријемно сандуче.

0