Що таке Page Object у JavaScript (і автоматизації тестування)

Page Object — це патерн проєктування (шаблон), який використовується в автоматизованому тестуванні (наприклад, з WebDriver, Playwright або Cypress). Він дозволяє відокремити логіку взаємодії з елементами сторінки від самих тестів.


Простими словами

Page Object — це JavaScript-клас або модуль, який представляє одну вебсторінку або її частину. В ньому описано, як знайти елементи та які дії можна з ними виконати.


Приклад Page Object у JS (наприклад, Playwright)

jsCopyEdit// login.page.js
export class LoginPage {
  constructor(page) {
    this.page = page;
    this.usernameInput = page.locator('#username');
    this.passwordInput = page.locator('#password');
    this.loginButton = page.locator('#login');
  }

  async login(username, password) {
    await this.usernameInput.fill(username);
    await this.passwordInput.fill(password);
    await this.loginButton.click();
  }
}

Використання в тесті:

jsCopyEditimport { test } from '@playwright/test';
import { LoginPage } from './login.page.js';

test('коректний логін', async ({ page }) => {
  const loginPage = new LoginPage(page);
  await page.goto('https://example.com/login');
  await loginPage.login('user', 'password');
});

Навіщо використовувати Page Object:

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

Висновок:

Page Object — це “посередник” між тестом і вебсторінкою. Він інкапсулює всі селектори та дії, що спрощує й стандартизує автоматизоване тестування.