Testowanie złożonych komponentów UI to jedno z najtrudniejszych zadań w automatyzacji.
Historia kwestii: W miarę rozwoju front-endu, pojawienia się SPA, drag&drop, dynamicznych tabel i responsywnych UI, praca ręczna staje się męcząca i nieefektywna. Automatyzacja ratuje przed rutynowymi sprawdzeniami, jednak pełne pokrycie wymaga przemyślanych strategii.
Problem:
Rozwiązanie:
Używać specjalistycznych narzędzi: Selenium, Cypress, Playwright do elastycznej pracy z UI, a do „wizualnego” testowania – Percy, Applitools.
Stosować Page Object Model do oddzielania logiki i lokalizatorów, używać dynamicznych oczekiwań (waits, retries).
Dla złożonych interaktywnych elementów – wchodzić w interakcje przez niskopoziomowe API przeglądarki (na przykład przez skrypty JS lub WebDriver Actions):
# Drag & Drop za pomocą Selenium WebDriver from selenium.webdriver import ActionChains action = ActionChains(driver) action.click_and_hold(source).move_to_element(target).release().perform()
Kluczowe cechy:
Czy wystarczy testować UI tylko przy "klikaniu" po elementach (kliknięciach i wprowadzaniu)?
Nie. Należy sprawdzać ukryte stany, podpowiedzi, renderowanie w różnych rozdzielczościach, a nawet obecność animacji czy błędów w układzie.
Czy można używać tylko Xpath do wyszukiwania wszystkich elementów?
Nie. Xpath nie zawsze jest czytelny, jest wolny, może łamać się przy zmianie struktury. Używaj selektorów CSS, data-test-id, automationId – są bardziej stabilne.
Czy wizualne testy automatyczne gwarantują, że komponenty są funkcjonalne?
Nie. Testy wizualne wychwytują błędy UI, ale nie sprawdzają logiki biznesowej, klikalności i prawidłowej interakcji.
Zautomatyzowaliśmy złożoną, wielowarstwową tabelę za pomocą Selenium wyłącznie przez Xpath. Każde wydanie łamało lokalizatory, testy automatyczne masowo się nie udawały. Nie było testów wizualnych, błędy w układzie nie były wychwytywane.
Zalety:
Wady:
Do testowania komponentu drag-and-drop użyliśmy Playwrighta i mockowaliśmy zdarzenia w przeglądarce. Do walidacji wyglądu – Percy. Warstwy UI pokryliśmy wzorcem Page Object.
Zalety:
Wady: