Files
AutomatedAssessmentFeedback…/tests/bdd/pages/ResultsPage.ts
T
2025-04-24 10:02:33 +01:00

92 lines
3.0 KiB
TypeScript

import type { Page } from '@playwright/test';
export class ResultsPage {
readonly page: Page;
constructor(page: Page) {
this.page = page;
}
headingSelector = '[data-testid="results-heading"]';
feedbackSelector = '[data-testid="feedback"]';
gradeSelector = '[data-testid="feedback"] div:has(span:has-text("Grade:"))';
strengthsSelector = '[data-testid="feedback"] div:has(span:has-text("Strengths:"))';
areasForImprovementSelector = '[data-testid="feedback"] div:has(span:has-text("Areas for Improvement:"))';
individualizedActivitySelector = '[data-testid="feedback"] div:has(span:has-text("Individualized Activity:"))';
reflectionQuestionSelector = '[data-testid="feedback"] div:has(span:has-text("Reflection Question:"))';
teacherSuggestionSelector = '[data-testid="feedback"] div:has(span:has-text("Teacher Suggestion:"))';
spellingAndGrammarSelector = '[data-testid="feedback"] div:has(span:has-text("Spelling and Grammar:"))';
reasoningSummarySelector = '[data-testid="feedback"] details > summary';
reasoningTextSelector = '[data-testid="feedback"] details > div';
backToUploadSelector = 'a[aria-label="Back to upload page"]';
noResultsSelector = 'div[aria-live="polite"][role="status"]';
clearHistorySelector = 'button[aria-label="Clear all assessment history"]';
async navigateTo() {
await this.page.goto('http://localhost:5173/results');
}
async getHeadingText() {
return this.page.textContent(this.headingSelector);
}
async waitForHeadingVisible(timeout = 60000) {
await this.page.waitForSelector(this.headingSelector, { state: 'visible', timeout });
}
async isFeedbackVisible() {
return this.page.isVisible(this.feedbackSelector);
}
async waitForFeedbackVisible(timeout = 60000) {
await this.page.waitForSelector(this.feedbackSelector, { state: 'visible', timeout });
}
async getGrade() {
return this.page.textContent(this.gradeSelector);
}
async getStrengths() {
return this.page.textContent(this.strengthsSelector);
}
async getAreasForImprovement() {
return this.page.textContent(this.areasForImprovementSelector);
}
async getIndividualizedActivity() {
return this.page.textContent(this.individualizedActivitySelector);
}
async getReflectionQuestion() {
return this.page.textContent(this.reflectionQuestionSelector);
}
async getTeacherSuggestion() {
return this.page.textContent(this.teacherSuggestionSelector);
}
async getSpellingAndGrammar() {
return this.page.textContent(this.spellingAndGrammarSelector);
}
async expandReasoning() {
await this.page.click(this.reasoningSummarySelector);
}
async getReasoning() {
return this.page.textContent(this.reasoningTextSelector);
}
async clickBackToUpload() {
await this.page.click(this.backToUploadSelector);
}
async isNoResultsMessageVisible() {
return this.page.isVisible(this.noResultsSelector);
}
async clearHistory() {
await this.page.click(this.clearHistorySelector);
}
}