top of page
  • Zdjęcie autoraAdrian

Metoda cy.wait() w Cypress: Zrozumienie i Skuteczne Zastosowanie

Jedną z kluczowych funkcji w Cypress jest zdolność do sprawnego obsługiwania operacji asynchronicznych. W tym artykule przyjrzymy się czym jest metoda Cypress cy.wait(), analizując jej cel, sposób użycia i jak można ją łączyć z cy.intercept dla efektywnego testowania.


clock

Zrozumienie cy.wait()


Metoda cy.wait() stanowi podstawową część Cypressa, stworzoną do obsługi asynchronicznych zachowań w testach. Pozwala na zatrzymanie wykonania testu do momentu spełnienia określonego warunku. Jest to istotne, zwłaszcza podczas pracy z dynamiczną zawartością, żądaniami sieciowymi czy innymi operacjami asynchronicznymi.


Podstawowe Użycie cy.wait()


Podstawowa składnia cy.wait() polega na przekazaniu okresu czasu lub konkretnego warunku do oczekiwania. Na przykład:


// Poczekaj 1000 milisekund (1 sekunda)
cy.wait(1000);

// Poczekaj, aż element o identyfikatorze 'success-message' stanie się widoczny
cy.wait(() => {
  return cy.get('#success-message').should('be.visible');
});

W pierwszym przykładzie test zatrzymuje się na 1 sekundę. W drugim przykładzie oczekuje, aż element o identyfikatorze 'success-message' stanie się widoczny. Ta elastyczność czyni cy.wait() wszechstronnym narzędziem do obsługi różnych scenariuszy.


Łączenie z cy.intercept


Czasami konieczne jest oczekiwanie na zakończenie żądania sieciowego przed kontynuacją testu. Właśnie tutaj przychodzi z pomocą cy.intercept, umożliwiający przechwytywanie i kontrolowanie żądań HTTP generowanych przez aplikację.


Rozważmy poniższy przykład:


// Przechwytywanie żądania sieciowego
cy.intercept('GET', '/api/data').as('getData');

// Wywołaj akcję, która generuje żądanie sieciowe
cy.get('#load-data-button').click();

// Poczekaj na zakończenie przechwyconego żądania
cy.wait('@getData').its('response.statusCode').should('eq', 200);

// Kontynuuj test
cy.get('#data-container').should('be.visible');

W tym przykładzie metoda cy.intercept przechwytuje żądanie GET do '/api/data' i nadaje mu alias ('getData'). cy.wait('@getData') oczekuje na zakończenie tego konkretengo żądania przed kontynuacją testu. Zapewnia to synchronizację testu z zachowaniem aplikacji.


Łączenie cy.wait() z Sprawdzeniem Widoczności Elementu


Jak już wspomniano, metodę cy.wait() można łączyć z sprawdzaniem widoczności elementu dla jeszcze bardziej precyzyjnej kontroli. Przykład:


// Poczekaj, aż element o identyfikatorze 'success-message' stanie się widoczny
cy.wait(() => {
  return cy.get('#success-message').should('be.visible');
}).then(() => {
  // Wykonaj dodatkowe akcje/asercje po tym, jak element będzie widoczny
  cy.get('#success-message').contains('Sukces!');
});

W tym przypadku test czeka, aż element o identyfikatorze 'success-message' stanie się widoczny. Gdy to nastąpi, możesz wykonać dodatkowe akcje lub asercje. To podejście jest szczególnie przydatne w sytuacjach, gdzie musisz poczekać na określony stan interfejsu użytkownika przed kontynuacją testu.


Podsumowanie


Metoda cy.wait() w Cypress to cenne narzędzie do obsługi asynchronicznych operacji w testach. Bez względu na to, czy musisz poczekać określony czas, na widoczność elementu czy na zakończenie żądania sieciowego, cy.wait() zapewnia elastyczne i efektywne rozwiązanie. Połączenie z cy.intercept sprawia, że staje się potężnym narzędziem do synchronizacji testów z dynamicznym charakterem nowoczesnych aplikacji internetowych.

51 wyświetleń

Ostatnie posty

Zobacz wszystkie
bottom of page