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 — це “посередник” між тестом і вебсторінкою. Він інкапсулює всі селектори та дії, що спрощує й стандартизує автоматизоване тестування.