Переходы между страницами — одна из ключевых задач при тестировании веб-приложений. Cypress предоставляет мощный набор инструментов для контроля навигации, проверки URL и состояния страницы после перехода. Основная цель — убедиться, что приложение корректно реагирует на действия пользователя и загружает нужные страницы без ошибок.
cy.visit()Метод cy.visit() используется для загрузки определенного
URL. Он полностью перезагружает страницу, что полезно для тестов,
начинающихся с чистого состояния приложения.
cy.visit('/login'); // переход на страницу авторизации
cy.url().should('include', '/login'); // проверка URL
cy.get('form').should('be.visible'); // проверка, что форма авторизации загружена
Ключевые моменты:
cy.visit() принимает как относительные, так и
абсолютные URL.wait() вручную в большинстве
случаев.Часто переход между страницами осуществляется через клики по ссылкам
или кнопкам. Для этого используются методы cy.get() и
cy.click().
cy.get('a[href="/dashboard"]').click();
cy.url().should('include', '/dashboard');
cy.get('h1').should('contain', 'Панель управления');
Важно: Cypress автоматически ожидает доступности элемента для клика.
Если элемент динамически появляется после загрузки, можно использовать
.should('be.visible') или .contains() для
более надежного выбора.
Для контроля переходов применяются следующие методы:
cy.url() — проверка текущего URL.cy.location() — доступ к объекту location, включая
pathname, search и hash.cy.hash() — проверка хэша в URL при переходах без
перезагрузки.Примеры:
cy.location('pathname').should('eq', '/dashboard');
cy.hash().should('eq', '#section1');
cy.url().should('match', /\/profile\/\d+/);
Эти проверки позволяют убедиться, что переход выполнен корректно, а URL соответствует ожидаемому шаблону.
В современных SPA (Single Page Application) переходы часто происходят без перезагрузки. Cypress поддерживает такой сценарий с использованием маршрутизатора приложения. Основные подходы:
cy.url() после действия.cy.get('button#profile-link').click();
cy.url().should('include', '/profile');
cy.get('.profile-header').should('be.visible');
cy.go() для навигации по историиCypress позволяет управлять историей браузера с помощью
cy.go(), что удобно для тестирования кнопок «Назад» и
«Вперед».
cy.visit('/page1');
cy.visit('/page2');
cy.go('back'); // переход на /page1
cy.url().should('include', '/page1');
cy.go('forward'); // возврат на /page2
Метод cy.go() принимает как строковые значения
'back' или 'forward', так и числовые аргументы
для перемещения на несколько шагов истории.
Редиректы могут быть серверными или клиентскими. Cypress автоматически отслеживает серверные редиректы, а для проверки клиентских следует контролировать URL после действия.
cy.visit('/old-page');
cy.url().should('include', '/new-page'); // серверный редирект
Для клиентских редиректов рекомендуется проверять одновременно URL и видимые элементы, чтобы убедиться, что контент загружен корректно.
Cypress использует встроенные ожидания, что снижает необходимость в
ручных таймерах. Однако при динамических переходах полезно проверять
элементы, уникальные для целевой страницы, через
.should('be.visible') или .contains().
cy.get('a#dynamic-page-link').click();
cy.get('.dynamic-content', { timeout: 10000 }).should('exist');
cy.location('search') для контроля параметров URL.cy.setCookie('auth', 'token123');
cy.visit('/private');
cy.url().should('include', '/private');
cy.url(), чтобы убедиться в полной загрузке контента.cy.go() позволяет имитировать поведение
пользователя при навигации по истории.Эти подходы обеспечивают стабильность и предсказуемость тестов, а также позволяют выявлять ошибки переходов и редиректов на ранних этапах разработки.