Що таке «page object pattern»?
Page Object Pattern - це підхід в автоматизації UI-тестів, за якого елементи сторінки і дії з ними виносяться в окремий клас (об'єкт сторінки). Тест при цьому не працює напряму з селекторами, а викликає методи цього об'єкта.
Навіщо він потрібен
- ізолює селектори в одному місці
- зменшує дублювання коду
- спрощує підтримку тестів при змінах у верстці
- робить тести більш читабельними
Структура
- Клас сторінки (Page Object): містить селектори і методи:
loginPage.login(email, pass),loginPage.submit() - Тест: викликає лише методи сторінки, без знань про деталі DOM
Схематично
Page Object
js
class LoginPage {
constructor(page) {
this.page = page;
this.emailInput = '#email';
this.passwordInput = '#password';
this.submitButton = '#submit';
}
async login(email, password) {
await this.page.fill(this.emailInput, email);
await this.page.fill(this.passwordInput, password);
await this.page.click(this.submitButton);
}
}Тест
js
test('логін працює', async ({ page }) => {
const loginPage = new LoginPage(page);
await page.goto('/login');
await loginPage.login('user@mail.com', '123456');
await expect(page.getByText('Ласкаво просимо')).toBeVisible();
});Суть в одному реченні: Page Object Pattern - це шар-обгортка над сторінкою, щоб тести оперували бізнес-діями, а не DOM-локаторами.
Коротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.