Cypress 6.0 zwiększa zakres możliwości obsługi sieci
Cypress jest narzędziem do pisania testów End-To-End. W tym tygodniu pojawiła się jego nowa aktualizacja – Cypress 6.0. Zawiera ona wiele zmian w zakresie obsługi sieci.
Przełomowe zmiany
Jedną z ważniejszych zmian jest zwracanie przez Cypress błędu podczas asercji elementu nieistniejącego w DOM. Dlatego też asercje tj. not.visible, not.contains, not.have.class mogą się nie udać, jeśli korzysta się z nich na nieistniejących w DOM elementach. Kolejną zmianą jest usunięcie opcji experimentalNetworkStubbing i przestarzałych błędów dotyczących interfejsów API. Twórcy Cypress zaktualizowali także kody stanu HTTP. Ostatnią przełomową zmianą jest prawidłowe triggerowanie zdarzeń w elementach wewnętrznych, przy korzystaniu z .type() i .click() na elementach wewnątrz elementu contenteditable.
Polecenie cy.intercept w Cypress 6.0
Jednak najważniejszą nowością jest polecenie cy.intercept, dzięki któremu zwiększa się zakres możliwości obsługi sieci. Jest to następca wcześniejszego cy.route. W przeciwieństwie do niego nie wymaga użycia cy.server. Ponadto cy.intercept nie korzysta ze skróconego wzorca łańcuchowego jak cy.route. Nowe polecenie oferuje większą elastyczność i kontrolę nad obsługą warstwy sieciowej oraz dodaje obsługę przechwytywania wywołań pobierania czy ładowania stron. Może także być używane do zarządzania zachowaniem żądań http w warstwie sieciowej. Dzięki cy.intercept otrzymujemy dwa mechanizmy – routeMatcher i routeHandler.
cy.intercept(routeMatcher, routeHandler?)
Pierwszy z nich deklaruje szczegółowe dopasowanie wywołań sieciowych. Może także przechwycić i śledzić żądanie skierowane do określonego adresu URL. Następnie routeHandler definiuje, co powinno się stać z przechwyceniem.
Poprawki
W związku z nowym poleceniem cy.intercept wprowadzono kilka zmian. Po pierwsze, przechwycone requesty i odpowiedzi JSON są automatycznie analizowane przez cy.intercept. Dlatego też nie trzeba już ręcznie wykonywać JSON.parse. Zmieniono także typ udostępniony przez cy.wait(alias), aby wspierać obsługę nowego polecenia.
Ficzery w Cypress 6.0
Przede wszystkim interfejs CLI wyświetla teraz ostrzeżenie podczas przekazywania nieprawidłowych kluczy konfiguracyjnych. Kolejnym dodatkiem jest także wyświetlanie przez komendę cypress version aktualną wersję frameworka Electron i Node.js. Ponadto komenda ta akceptuje flagę –component, która drukuje wersje konkretnych składników Cypress.
Podsumowanie
Pełna lista poprawek i nowości jest dostępna w dzienniku zmian 6.0. W łatwiejszej migracji pomoże przygotowany przewodnik.
Źródło: Cypress Blog