Для работы с Cypress необходим Node.js версии 14 и выше. Установка выполняется через npm:
npm install cypress --save-dev
После установки Cypress добавляется в
node_modules/.bin/cypress. Для инициализации проекта
используется команда:
npx cypress open
Она создаёт структуру папок cypress/ и
cypress.config.js, а также создаёт пример тестов в
cypress/e2e.
Тест Cypress строится на использовании функций describe
и it:
describe('Заполнение формы', () => {
it('Проверка ввода данных в текстовые поля', () => {
// шаги теста
});
});
describe — логическая группировка тестов.it — отдельный тестовый сценарий.Для выполнения действий над элементами используются команды Cypress,
начиная с cy.
Перед заполнением формы необходимо открыть страницу:
cy.visit('https://example.com/form');
Команда cy.visit() полностью загружает страницу и ждёт
завершения всех сетевых запросов.
Cypress предоставляет методы для поиска элементов:
cy.get('input[name="username"]')
cy.contains('Submit')
cy.get('form#login input[type="password"]')
Использование уникальных атрибутов (id,
name, data-*) повышает стабильность
тестов.
Для ввода текста используется команда type:
cy.get('input[name="username"]').type('admin');
cy.get('input[name="password"]').type('12345');
type имитирует ввод с клавиатуры.{enter}, {backspace}
для эмуляции специальных клавиш:cy.get('input[name="search"]').type('Cypress{enter}');
Флажки (checkbox) и радиокнопки (radio)
обрабатываются командами check и uncheck:
cy.get('input[type="checkbox"][name="subscribe"]').check();
cy.get('input[type="radio"][name="gender"][value="male"]').check();
check() устанавливает флажок или выбирает
радиокнопку.uncheck() снимает флажок (для радио не применимо).Для выбора значения из <select> используется
команда select:
cy.get('select[name="country"]').select('Russia');
value или
индекс опции.Для подтверждения правильности ввода применяются команды
should и expect:
cy.get('input[name="username"]').should('have.value', 'admin');
cy.get('input[type="checkbox"][name="subscribe"]').should('be.checked');
have.value — проверяет текстовое значение.be.checked / not.be.checked — проверяет
состояние флажка.be.visible — проверяет видимость элемента.Для нажатия кнопок используется команда click:
cy.get('button[type="submit"]').click();
click() имитирует клик мышью.cy.url().should('include', '/success');
cy.contains('Спасибо за регистрацию').should('be.visible');
Cypress автоматически ждёт появления элементов до 4 секунд по
умолчанию. Для явного ожидания используются команды should
и then:
cy.get('input[name="username"]').should('be.visible').type('admin');
cy.get('.loading').should('not.exist');
cy.wait() без
необходимости.it.before или beforeEach:beforeEach(() => {
cy.visit('https://example.com/form');
});
Cypress.Commands.add) для повышения читаемости.{ force: true }:cy.get('input[type="checkbox"]').check({ force: true });
cy.get().within():cy.get('.custom-select').within(() => {
cy.contains('Option 1').click();
});
cy.intercept() для контроля поведения формы:cy.intercept('POST', '/submit', { statusCode: 200 }).as('submitForm');
cy.get('button[type="submit"]').click();
cy.wait('@submitForm').its('response.statusCode').should('eq', 200);
data-testid или
id).cy.wait) и полагаться
на встроенные ожидания.Заполнение простых форм с Cypress включает взаимодействие с текстовыми полями, чекбоксами, радиокнопками и выпадающими списками, проверку состояния элементов, отправку форм и асинхронную проверку результатов. Правильная организация тестов, использование уникальных селекторов и встроенных ожиданий обеспечивает стабильность и повторяемость автоматизации.