Cypress имеет чётко организованную структуру директорий, которая обеспечивает удобство разработки, масштабируемость тестового проекта и лёгкость интеграции с CI/CD. Понимание этой структуры критично для правильной организации тестов и управления конфигурациями.
При инициализации проекта Cypress создаёт несколько основных папок и файлов в корне:
cypress/Директория cypress/ является основным рабочим
пространством. Она содержит несколько стандартных подпапок:
e2e/ Хранит файлы end-to-end тестов. Обычно
здесь создаются файлы с тестами по функциональности приложения. Файлы
имеют расширение .cy.js, .cy.ts или
.spec.js.
Пример структуры:
cypress/e2e/
├─ login.cy.js
├─ dashboard.cy.js
└─ settings.cy.jsfixtures/ Содержит статические данные,
используемые в тестах, например JSON-файлы с тестовыми пользователями,
конфигурациями или ответами от API. Эти файлы удобно подключать через
команду cy.fixture('filename.json').
Пример структуры:
cypress/fixtures/
├─ user.json
└─ products.jsonsupport/ Предназначена для вспомогательных функций, кастомных команд и глобальных настроек. Обычно содержит файлы:
Cypress.Commands.add.Использование support/ позволяет избежать дублирования
кода в тестах и централизованно управлять повторно используемыми
действиями.
plugins/ (опционально, в старых версиях
Cypress) Директория для Node.js плагинов и кастомных задач, которые
выполняются на стороне сервера, например обработка файлов или интеграция
с внешними инструментами. В новых версиях плагины чаще подключаются
через cypress.config.js.
Для масштабируемых проектов рекомендуется создавать дополнительные уровни вложенности:
Пример структуры большого проекта:
cypress/
├─ e2e/
│ ├─ auth/
│ │ └─ login.cy.js
│ ├─ dashboard/
│ │ └─ dashboard.cy.js
│ └─ settings/
│ └─ settings.cy.js
├─ fixtures/
│ ├─ user.json
│ └─ products.json
├─ support/
│ ├─ commands.js
│ └─ e2e.js
├─ pages/
│ ├─ LoginPage.js
│ └─ DashboardPage.js
├─ api/
│ └─ userApi.js
└─ utils/
└─ helpers.js
cypress.config.js/ts – основной конфигурационный файл, где задаются:
baseUrl – базовый URL приложения;viewportWidth и viewportHeight – размеры
окна браузера;defaultCommandTimeout – таймаут по умолчанию для
команд;env – переменные окружения для разных сред (dev,
staging, prod);e2e – настройки для запуска end-to-end тестов, включая
путь к файлам тестов.Пример конфигурации:
import { defineConfig } from 'cypress'
export default defineConfig({
e2e: {
baseUrl: 'https://example.com',
specPattern: 'cypress/e2e/**/*.cy.js',
supportFile: 'cypress/support/e2e.js',
},
viewportWidth: 1280,
viewportHeight: 720,
defaultCommandTimeout: 8000,
env: {
login_email: 'test@example.com'
}
})
auth, dashboard, settings) для
удобного поиска и поддержки.support/commands.js выносить повторяющиеся действия,
например авторизацию, заполнение форм, проверку элементов.fixtures/ использовать для статических данных и
шаблонов, чтобы избежать хардкода значений в тестах.pages/ и api/ повышают читаемость и
позволяют использовать паттерн Page Object для UI и модульные подходы
для API.Структура директорий в Cypress напрямую влияет на эффективность тестирования и качество поддерживаемого кода. Правильная организация обеспечивает удобство навигации, переиспользуемость компонентов и стабильность тестового процесса.