Алиасы в Cypress представляют собой мощный инструмент для упрощения работы с данными, элементами DOM и асинхронными операциями. Использование алиасов позволяет повторно обращаться к данным, сохранять результаты запросов или элементы страницы и создавать более читаемые и поддерживаемые тесты.
Cypress позволяет назначать алиасы любым найденным элементам через
команду .as(). Это упрощает многократное использование
элементов в разных шагах теста без повторного поиска.
cy.get('form#login').as('loginForm');
cy.get('@loginForm').within(() => {
cy.get('input[name="username"]').type('admin');
cy.get('input[name="password"]').type('password');
cy.get('button[type="submit"]').click();
});
Ключевые моменты:
cy.get('селектор').as('имя') — сохраняет найденный
элемент под алиасом.@имя.Cypress часто используется для тестирования взаимодействия с API. Результаты запросов удобно сохранять в алиас, чтобы использовать их в последующих шагах.
cy.request('GET', '/api/users').as('usersList');
cy.get('@usersList').then((response) => {
expect(response.status).to.eq(200);
expect(response.body).to.have.length.greaterThan(0);
});
Особенности использования:
status, body и headers..then(), чтобы гарантировать доступ к значениям после
завершения запроса.Cypress интегрируется с методами cy.intercept и
позволяет отслеживать сетевые запросы через алиасы.
cy.intercept('POST', '/api/login').as('loginRequest');
cy.get('button[type="submit"]').click();
cy.wait('@loginRequest').its('response.statusCode').should('eq', 200);
Заметки по работе с алиасами intercept:
cy.wait('@имя') ожидает завершения запроса и
возвращает данные для проверки.statusCode, тело запроса, параметры
и заголовки.Иногда необходимо хранить промежуточные результаты вычислений или динамические данные для повторного использования.
cy.get('input[name="quantity"]').invoke('val').then((quantity) => {
cy.wrap(quantity).as('currentQuantity');
});
cy.get('@currentQuantity').then((qty) => {
const doubled = qty * 2;
cy.log(`Удвоенное значение: ${doubled}`);
});
Особенности:
cy.wrap(value).as('имя').before и beforeEachДля подготовки данных до выполнения тестов удобно создавать алиасы в
хуках before и beforeEach.
beforeEach(() => {
cy.request('GET', '/api/products').as('products');
});
it('Проверка первого продукта', () => {
cy.get('@products').then((response) => {
expect(response.body[0]).to.have.property('name');
});
});
Важно:
beforeEach, доступен в каждом
тесте.before также будет доступен в тестах, но если
тесты изменяют данные, рекомендуется использовать
beforeEach для гарантии свежего состояния.it) или хуками..then() или cy.wrap().Алиасы в Cypress позволяют:
cy.intercept.before и
beforeEach.Правильное применение алиасов делает тесты более компактными, читабельными и поддерживаемыми, снижая дублирование кода и обеспечивая надежное управление асинхронными данными.