Для начала работы с Cypress требуется Node.js версии 14 или выше. Cypress устанавливается через npm или yarn. Наиболее распространённая команда для установки:
npm install cypress --save-dev
После установки Cypress добавляет в проект собственную структуру каталогов. Основные папки:
Конфигурация Cypress хранится в файле cypress.config.js,
где можно задать базовый URL, таймауты, настройки браузеров и другие
глобальные параметры. Пример базовой конфигурации:
const { defineConfig } = require('cypress')
module.exports = defineConfig({
e2e: {
baseUrl: 'http://localhost:3000',
setupNodeEvents(on, config) {
// место для подключения плагинов
},
defaultCommandTimeout: 8000
}
})
Cypress можно запускать двумя способами: через графический интерфейс Cypress Test Runner или в режиме командной строки headless.
Графический интерфейс запускается командой:
npx cypress open
После этого откроется окно, где отображаются все тесты, а также
возможность выбрать браузер (Chrome, Edge, Firefox). При первом запуске
автоматически создаются примерные тесты в папке
cypress/e2e.
Headless режим подходит для CI/CD и запуска тестов без GUI:
npx cypress run
В этом режиме тесты выполняются в фоне, а результаты выводятся в терминал.
Тесты в Cypress организуются с использованием функций
describe, it и хуков before,
beforeEach, afterEach, after.
Пример простого теста:
describe('Главная страница', () => {
before(() => {
cy.visit('/') // переход на базовый URL
})
it('Отображается заголовок', () => {
cy.get('h1').should('contain', 'Добро пожаловать')
})
it('Содержит кнопку входа', () => {
cy.get('button.login').should('be.visible')
})
})
Ключевые моменты:
cy.visit() – открывает страницу по заданному URL.cy.get() – выбор DOM-элемента с последующими проверками
(should).Cypress автоматически ждёт появления элементов, поэтому нет
необходимости ставить явные wait. Поддерживаются
действия:
cy.get('selector').click()cy.get('input').type('текст')cy.get('select').select('option')Для проверки состояния элементов применяются цепочки команд:
cy.get('input').should('have.value', 'тест')
cy.get('button').should('be.enabled')
Для тестирования часто нужны статические данные. Они хранятся в
cypress/fixtures и загружаются командой:
cy.fixture('user.json').then((user) => {
cy.get('input[name="username"]').type(user.username)
})
Фикстуры удобно использовать для имитации API-запросов, тестовых форм и повторяющихся данных.
Cypress предоставляет встроенное логирование. Любую команду можно
проследить в Test Runner. Для дополнительных проверок
используют cy.log():
cy.get('button').click()
cy.log('Кнопка была нажата')
Для сложных случаев доступна консоль браузера через
cy.debug() или debugger.
Для автоматического запуска тестов на сервере используют команду:
npx cypress run --record --key <project-record-key>
Cypress поддерживает параллельное выполнение тестов, скриншоты и
видео по завершении. Конфигурация этих функций задаётся в
cypress.config.js.
Cypress по умолчанию использует Chromium, но поддерживаются Firefox и Edge. Выбор браузера в CLI:
npx cypress run --browser firefox
Графический интерфейс позволяет выбрать любой установленные браузеры и следить за прогрессом выполнения тестов визуально.
Cypress автоматически ожидает завершения команд и появление элементов, но при необходимости можно настраивать таймауты:
cy.get('button.submit', { timeout: 10000 }).click()
Для асинхронных операций применяются cy.wait() или
перехват сетевых запросов с cy.intercept().
Запуск Cypress в первый раз включает установку, настройку проекта, запуск GUI или headless режима, создание первых тестов и проверку работы базовых команд. Эти шаги формируют фундамент для последующего освоения сложных сценариев тестирования.