Организация файловой структуры в проектах на Protractor играет ключевую роль в поддерживаемости, масштабируемости и читаемости автоматизированных тестов. Продуманная структура позволяет быстро ориентироваться в проекте, минимизирует дублирование кода и упрощает интеграцию с CI/CD системами.
Разделение тестов и конфигурации Файлы
конфигурации должны храниться отдельно от тестов. Конфигурация
Protractor (protractor.conf.js) содержит:
capabilities,
directConnect, framework),Логическая организация тестов Тесты группируются по функциональным модулям или страницам приложения. Это облегчает навигацию и поддержку тестового покрытия. Например:
/tests
/login
login.spec.js
login.po.js
/dashboard
dashboard.spec.js
dashboard.po.jsPage Object Model (POM) Структура проекта должна
учитывать использование POM. Для каждой страницы или компонента
создаётся отдельный объект страницы (*.po.js). Это
позволяет отделить логику взаимодействия с элементами UI от тестов,
повышает повторное использование кода и упрощает поддержку.
Утилиты и общие функции Вспомогательные функции,
такие как кастомные ожидания, генерация тестовых данных или
вспомогательные селекторы, должны храниться в отдельной папке
/utils или /helpers. Пример:
/utils
waitHelper.js
testData.jsРесурсы и конфигурационные данные Файлы с
фикстурами, тестовыми данными или настройками окружения располагаются в
отдельной папке /resources или /data. Это
делает тесты более гибкими и позволяет быстро менять входные данные без
правки кода теста.
Пример оптимальной структуры для среднего проекта:
/project-root
/tests
/login
login.spec.js
login.po.js
/dashboard
dashboard.spec.js
dashboard.po.js
/utils
waitHelper.js
apiHelper.js
/data
users.json
config.json
/reports
junit/
html/
protractor.conf.js
package.json
Объяснение структуры:
/tests – все тестовые спецификации и соответствующие
Page Objects./utils – вспомогательные функции и библиотеки./data – фикстуры, JSON-конфигурации и любые внешние
данные для тестов./reports – результаты выполнения тестов, отчёты и
логи.protractor.conf.js – центральная конфигурация
Protractor.package.json – зависимости проекта и скрипты запуска
тестов.В protractor.conf.js рекомендуется использовать явное
указание всех путей и настроек:
exports.config = {
directConnect: true,
framework: 'jasmine',
specs: [
'./tests/**/*.spec.js'
],
capabilities: {
browserName: 'chrome'
},
jasmineNodeOpts: {
defaultTimeoutInterval: 30000
},
onPrepare: function () {
browser.manage().window().maximize();
}
};
Ключевые моменты:
specs использует шаблон с поддиректориями, что упрощает
добавление новых тестов без изменения конфигурации.onPrepare позволяет выполнить начальную настройку
окружения (например, увеличение окна браузера или подключение
дополнительных библиотек).*.spec.js
Пример: login.spec.js, dashboard.spec.js*.po.js Пример:
login.po.js, dashboard.po.jswaitHelper.js, apiHelper.jsusers.json,
config.jsonЕдинообразное именование упрощает автоматическую загрузку тестов, а также интеграцию с системами отчётности и CI/CD.
Для крупных проектов полезно создавать несколько уровней тестов:
/tests/e2e./tests/integration.Такое разделение повышает управляемость и снижает время выполнения тестов, поскольку CI/CD сможет запускать только нужный набор тестов.
Организация файловой структуры в Protractor напрямую влияет на эффективность разработки и сопровождения тестов. Чёткое разделение по функциональности, использование POM, хранение утилит и данных в отдельных папках делают проект масштабируемым и удобным для командной работы.