File size: 845 Bytes
a0ebf39 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | 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"]');
}
}
|