Правильная организация кода и единообразные соглашения об именах критически важны для поддерживаемости и масштабируемости тестов в Protractor. Несоблюдение конвенций приводит к трудностям при чтении кода, поиске тестов и их интеграции в CI/CD пайплайны.
Файлы с тестами должны отражать структуру приложения и суть проверяемого сценария. Чаще всего используется соглашение snake_case или kebab-case для удобства навигации в файловой системе.
Примеры:
login_spec.js — тесты для логина.user_profile_spec.js — тесты для профиля
пользователя.shopping_cart_e2e.js — end-to-end тесты корзины
покупок.Ключевые принципы:
_spec или _e2e указывает, что файл
содержит тесты.Методы тестов должны быть самодокументируемыми, чтобы их назначение было понятно без комментариев. В Protractor и Jasmine принято использовать camelCase для функций, отвечающих за действия или проверки.
Примеры методов:
function loginUser(username, password) { ... }
function addItemToCart(itemId) { ... }
function verifyUserProfileDetails(expectedName, expectedEmail) { ... }
Рекомендации по именованию:
clickButton, fillForm,
navigateToPage).verify или
expect (verifyLoginSuccess).clickLoginButton,
fillSearchInput).Для крупных проектов критично сохранять логическую структуру каталогов:
/e2e
/login
login_spec.js
loginPage.po.js
/cart
cart_spec.js
cartPage.po.js
Где:
*_spec.js — файлы с тестами.*Page.po.js — файлы с Page Object,
реализующие взаимодействие с элементами.Преимущества:
Page Objects должны называться существительным, обозначающим страницу или компонент. Методы внутри PO описывают действия на этой странице.
Примеры:
class LoginPage {
async enterUsername(username) { ... }
async enterPassword(password) { ... }
async clickLoginButton() { ... }
}
Рекомендации:
LoginPage, ShoppingCartPage).fillSearchBox, submitForm).cartAddItemButton, profileEditLink).В Protractor часто используются переменные для элементов страницы. Их именование должно быть понятным и отражать роль элемента.
Примеры:
const loginButton = element(by.id('login-btn'));
const usernameInput = element(by.css('.username-field'));
const errorMessage = element(by.xpath('//div[@class="error"]'));
Принципы:
loginButton, а не button1).camelCase) облегчает
чтение.menuItems, cartProducts).Префикс или постфикс могут дать дополнительный контекст:
_btn, _link, _input —
указывают на тип элемента._spec, _e2e — тестовый файл._po — Page Object.Примеры:
const submit_btn = element(by.id('submit'));
const cart_items = element.all(by.css('.cart-item'));
const login_po = new LoginPage();
Это упрощает поиск и понимание кода при масштабировании тестов.
Независимо от выбранной конвенции, критично поддерживать единый стиль по проекту:
Единообразное именование файлов, методов, Page Objects и переменных является фундаментом качественного тестового покрытия в Protractor.