import type { Page, Locator } from '@playwright/test'; export class ClassroomPage { readonly page: Page; readonly loadingText: Locator; readonly sidebarScenes: Locator; constructor(page: Page) { this.page = page; this.loadingText = page.getByText('Loading classroom...'); this.sidebarScenes = page.locator('[data-testid="scene-item"]'); } async goto(stageId: string) { await this.page.goto(`/classroom/${stageId}`); } async waitForLoaded() { await this.loadingText.waitFor({ state: 'hidden', timeout: 15_000 }); } async clickScene(index: number) { await this.sidebarScenes.nth(index).click(); } /** Get scene title — it's the second span (first is the number badge) */ getSceneTitle(index: number) { return this.sidebarScenes.nth(index).locator('[data-testid="scene-title"]'); } }