import { BasePage } from './base-page'; export class UserPage extends BasePage { private readonly selectors = { pageTitle: '.page-title', userAvatar: '.user-avatar', userName: '.user-name', userBio: '.user-bio', statValue: '.stat-value', statLabel: '.stat-label', menuItem: '.menu-item', menuTitle: '.menu-title', menuSubtitle: '.menu-subtitle', settingsItem: '.settings-item', settingsLabel: '.settings-label', settingsValue: '.settings-value', }; async navigate() { await this.page.goto(`${this.baseURL}/pages/user/index`); await this.waitForLoad(); } async getPageTitle(): Promise { return await this.getText(this.selectors.pageTitle); } async isUserAvatarVisible(): Promise { return await this.isVisible(this.selectors.userAvatar); } async getUserName(): Promise { return await this.getText(this.selectors.userName); } async getUserBio(): Promise { return await this.getText(this.selectors.userBio); } async getStatValues(): Promise { const elements = await this.page.$$(this.selectors.statValue); const values: string[] = []; for (const element of elements) { values.push(await element.textContent() || ''); } return values; } async getStatLabels(): Promise { const elements = await this.page.$$(this.selectors.statLabel); const labels: string[] = []; for (const element of elements) { labels.push(await element.textContent() || ''); } return labels; } async clickMenuItem(index: number) { const menuItems = await this.page.$$(this.selectors.menuItem); if (menuItems[index]) { await menuItems[index].click(); } } async getMenuItemTitle(index: number): Promise { const menuItems = await this.page.$$(this.selectors.menuItem); if (menuItems[index]) { const titleElement = await menuItems[index].$(this.selectors.menuTitle); return await titleElement?.textContent() || ''; } return ''; } async getMenuItemSubtitle(index: number): Promise { const menuItems = await this.page.$$(this.selectors.menuItem); if (menuItems[index]) { const subtitleElement = await menuItems[index].$(this.selectors.menuSubtitle); return await subtitleElement?.textContent() || ''; } return ''; } async clickSettingsItem(index: number) { const settingsItems = await this.page.$$(this.selectors.settingsItem); if (settingsItems[index]) { await settingsItems[index].click(); } } async getSettingsLabel(index: number): Promise { const settingsItems = await this.page.$$(this.selectors.settingsItem); if (settingsItems[index]) { const labelElement = await settingsItems[index].$(this.selectors.settingsLabel); return await labelElement?.textContent() || ''; } return ''; } async getSettingsValue(index: number): Promise { const settingsItems = await this.page.$$(this.selectors.settingsItem); if (settingsItems[index]) { const valueElement = await settingsItems[index].$(this.selectors.settingsValue); return await valueElement?.textContent() || ''; } return ''; } }