Cypress — это популярная среда сквозного тестирования JavaScript, которая позволяет разработчикам писать надежные и эффективные тесты для веб-приложений. Хотя Cypress предоставляет богатый набор встроенных команд, иногда вам может потребоваться извлечь значение из команды и использовать его для дальнейших утверждений или действий. В этой статье мы рассмотрим различные методы возврата значений из команд Cypress, а также приведем практические примеры кода.
Метод 1: использование переменных
Один простой подход — сохранить значение в переменной в цепочке команд Cypress. Вот пример:
let valueToReturn;
cy.get('.element').then(($element) => {
valueToReturn = $element.text();
});
// Access the value outside the command chain
cy.wrap(valueToReturn).should('contain', 'expectedValue');
Метод 2: использование псевдонимов
Cypress предоставляет псевдонимы для хранения значений и ссылки на них позже в тесте. Псевдонимы можно создавать с помощью ключевого слова as. Вот пример:
cy.get('.element').invoke('text').as('textValue');
// Access the value using the alias
cy.get('@textValue').should('contain', 'expectedValue');
Метод 3: использование пользовательских команд
Вы можете создавать собственные команды Cypress для инкапсуляции логики извлечения и возврата значений. Такой подход способствует повторному использованию и читабельности кода. Вот пример:
Cypress.Commands.add('getTextValue', () => {
return cy.get('.element').invoke('text');
});
// Usage of the custom command
cy.getTextValue().then((textValue) => {
expect(textValue).to.contain('expectedValue');
});
Метод 4: использование промисов и Async/Await
Команды Cypress возвращают обещания, поэтому вы можете использовать синтаксис async/await JavaScript для обработки асинхронных операций. Вот пример:
const getTextValue = () => {
return new Cypress.Promise((resolve) => {
cy.get('.element').invoke('text').then((textValue) => {
resolve(textValue);
});
});
};
// Usage of the function with async/await
cy.wrap(await getTextValue()).should('contain', 'expectedValue');
Метод 5: использование журнала команд Cypress
Cypress предоставляет объект журнала команд, доступ к которому можно получить с помощью cy.log(). Вы можете записать значение и затем использовать его в тесте. Вот пример:
let valueToReturn;
cy.get('.element').then(($element) => {
valueToReturn = $element.text();
cy.log(valueToReturn);
});
// Access the value using command log
cy.get('.log').should('contain', 'expectedValue');
Возврат значений из команд Cypress необходим для создания комплексных тестов. В этой статье мы рассмотрели несколько методов достижения этой цели, включая использование переменных, псевдонимов, пользовательских команд, обещаний с async/await и журнала команд Cypress. Используя эти методы, вы можете повысить гибкость и эффективность тестов Cypress.