Protractor является фреймворком для энд-ту-энд тестирования Angular и не только. Правильная организация директорий проекта играет ключевую роль в масштабируемости, удобстве поддержки и читабельности тестового кода. В типичном проекте на Protractor выделяют несколько основных директорий и файлов, которые обеспечивают логичное разделение функциональности и данных тестирования.
e2e или
testsГлавная рабочая директория для тестов часто называется
e2e (end-to-end) или tests. Внутри нее
располагаются все остальные компоненты тестового проекта: тестовые
сценарии, конфигурации, вспомогательные модули и данные.
Структура может выглядеть следующим образом:
e2e/
├─ conf/
├─ specs/
├─ pages/
├─ data/
├─ utils/
└─ reports/
Каждая поддиректория имеет свою конкретную задачу и роль.
conf
(конфигурации)Здесь находятся файлы конфигурации Protractor, определяющие, какие браузеры использовать, какие тесты запускать, а также глобальные настройки фреймворка.
Пример содержимого:
conf/
└─ protractor.conf.js
Ключевые моменты файла конфигурации:
specs — список тестовых файлов или шаблонов для их
поиска.capabilities — описание браузеров и их свойств.framework — фреймворк, например jasmine
или mocha.onPrepare — функция, выполняемая перед запуском тестов,
например для настройки репортера.baseUrl — базовый URL приложения для тестов.specs (тестовые сценарии)Содержит все тестовые сценарии. Обычно файлы именуются по смыслу проверяемой функциональности.
Пример структуры:
specs/
├─ login.spec.js
├─ dashboard.spec.js
└─ userManagement.spec.js
Рекомендации по организации:
pages (Page Object Model)Использование шаблона Page Object повышает читаемость и поддерживаемость тестов. В этой директории размещаются классы или модули, описывающие элементы страниц и методы взаимодействия с ними.
Пример структуры:
pages/
├─ login.page.js
├─ dashboard.page.js
└─ userManagement.page.js
Ключевые принципы:
login(username, password)).data
(тестовые данные)Содержит все фикстуры, мок-данные и параметры тестов. Это позволяет легко изменять данные без модификации логики тестов.
Пример структуры:
data/
├─ users.json
└─ config.json
Особенности:
utils (вспомогательные функции)В ней располагаются общие утилиты для тестов: функции ожидания, генерации случайных данных, логгеры.
Пример структуры:
utils/
├─ waitHelper.js
├─ logger.js
└─ dataGenerator.js
Рекомендации:
reports
(отчёты)Используется для хранения результатов тестирования: логов, скриншотов и HTML-отчетов.
Пример структуры:
reports/
├─ screenshots/
└─ jasmine-report.html
Ключевые моменты:
В корне проекта обычно находятся:
package.json — управление зависимостями и скриптами
запуска..gitignore — исключение директорий, например
node_modules или reports.README.md — описание проекта и инструкции по запуску
тестов.specs, pages и
data.admin, user, api.Правильная структура директорий позволяет проекту оставаться упорядоченным, облегчает работу команде тестировщиков и упрощает интеграцию с инструментами автоматизации и CI/CD. Она становится основой для построения надежной и масштабируемой системы тестирования.