Skip to main content

Що таке «page object pattern»?

Page Object Pattern - це підхід в автоматизації UI-тестів, за якого елементи сторінки і дії з ними виносяться в окремий клас (об'єкт сторінки). Тест при цьому не працює напряму з селекторами, а викликає методи цього об'єкта.

Навіщо він потрібен

  • ізолює селектори в одному місці
  • зменшує дублювання коду
  • спрощує підтримку тестів при змінах у верстці
  • робить тести більш читабельними

Структура

  1. Клас сторінки (Page Object): містить селектори і методи: loginPage.login(email, pass), loginPage.submit()
  2. Тест: викликає лише методи сторінки, без знань про деталі 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

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.