import type { Page, Locator } from '@playwright/test'; export class HostDashboard { readonly page: Page; readonly statsSection: Locator; readonly lockEventButton: Locator; readonly unlockEventButton: Locator; readonly releaseGalleryButton: Locator; readonly userSearchInput: Locator; constructor(page: Page) { this.page = page; this.statsSection = page.locator('[data-testid="host-stats"]'); this.lockEventButton = page.getByRole('button', { name: /uploads sperren|event sperren|sperren/i }).first(); this.unlockEventButton = page.getByRole('button', { name: /uploads freigeben|entsperren/i }).first(); this.releaseGalleryButton = page.getByRole('button', { name: /galerie freigeben/i }); this.userSearchInput = page.getByPlaceholder(/suche|search/i).first(); } async goto() { await this.page.goto('/host'); } userRow(displayName: string): Locator { return this.page.locator('tr,li,div', { hasText: displayName }).filter({ has: this.page.getByRole('button') }).first(); } async banUser(displayName: string, hideUploads = false) { const row = this.userRow(displayName); await row.getByRole('button', { name: /sperren/i }).first().click(); if (hideUploads) { await this.page.getByRole('checkbox', { name: /ausblenden/i }).check(); } await this.page.getByRole('button', { name: /bestätigen|sperren/i }).last().click(); } }